초보자는 반드시 Kotlin을 배워야 합니다.
예상 가능한 일이었죠.
음, 좋은 개발자가 된다는 것은 매우 복잡한
질문입니다. '좋다'의 정의부터 시작해야 하죠.
좋은 프로그래머나 개발자가 되려면 여러 가지
자질이 필요합니다. 우선, 세부사항에 대한 주의력이
필요합니다. 프로그래밍은 모두 작은 세부사항에 관한 것입니다.
일상적인 대화나 텍스트에서는
쉼표를 빠뜨리거나 단어를 바꿔 말해도 별로 중요하지 않지만,
개발과 관련 없는 일상생활에서는 그다지 중요하지 않습니다. 하지만 프로그래밍에서는,
개발 외의 삶에서는 그렇게 중요하지 않습니다. 그러나 프로그래밍에서는,
코드의 한 글자나 어딘가에서
하나만 빗나가도
제대로 작동하는 코드와 작동하지 않는 코드의 차이를 만들 수 있습니다.
그래서 작은 세부사항에 대한 주의력이 전문 개발자를
다르게 만드는 요소입니다.
그리고 이는 좋은 소프트웨어 개발자가 되는 데
필요한 자질입니다. 저는 매우 훌륭하면서도
동시에 매우 주니어한 개발자들과 일하는 것을 즐깁니다.
그들은 아마 아는 게 별로 없겠죠, 맞죠?
하지만 그들이 접근하는 방식은
당면한 과제와 그들의 학습 방식,
그들이 호기심 많고 열정적으로
일하는 방식은 놀라운 경험이며 그들을 기여자로서 사랑합니다
그들은 훌륭한 개발자입니다. 그저 훌륭한 주니어 개발자일 뿐입니다. 첫 번째로
말씀드릴 것은 이 질문의 위대함이
반드시 경험과 동일시되지 않는다는 점입니다,
특히 경력 연수와는 관계없습니다. 이에 대해 생각해보면,
첫 번째로 말씀드릴 것은, 다시 한 번,
이는 제 개인적인 의견이며 정답은 아닙니다만, 첫 번째로 말씀드릴 것은
기초입니다.
라이브러리 리스트나 맵 같은 데이터 구조를 사용할 때,
그것이 어떻게 작동하는지 아시나요? 어떤 종류의 알고리즘이
거기에 구현되어 있나요? 왜 빠른가요? 사용 중인
런타임에서 메모리가 어떻게 관리되는지 아시나요?
동시성을 관리하기 위해 어떤 작업들이
내부적으로 수행되는지, 예를 들어 동기화된 스레드
등에 대해 아시나요? 일반적으로 내부에서 어떻게 작동하는지 아시나요?
이를 살펴보면 더 나은 엔지니어가 될 수 있습니다.
다른 사람들이 내린 엔지니어링 결정으로부터 배우게 되기 때문입니다.
이는 당신의 마음을 분석적으로 단련시키며, 이는 당신의
코드 작업에 정말 필요합니다. 또한 당신을 단순히 지식이 풍부하게 만듭니다.
당신이 연결고리를 찾고 이해하는 것이 훨씬 쉽습니다.
12년 전 한 스타트업 CTO와의 인터뷰를 기억합니다.
그가 했던 질문을 저도 이후 면접에서 자주 사용했습니다.
질문은 간단합니다.
웹 개발자라면, 웹페이지에 버튼이 있다고 상상해보세요.
그 버튼을 클릭하면 다음 페이지가 나옵니다. 그 사이에 무슨 일이 일어날까요?
잠시 생각해보세요. 이 양파는 5개 또는
1000개의 층을 가질 수 있습니다.
5분 동안 답변할 수도 있고, 1시간을 써도
절반도 끝내지 못할 수 있습니다. 많은 일들이 일어나기 때문입니다.
어느 수준에서 멈추고 설명할지에 따라 다릅니다.
그 양파의 더 많은 층을 설명할수록,
시스템을 더 잘 이해하고 더 나은 웹 개발자가 될 것입니다.
네트워크 프로토콜이나 데이터베이스 아키텍처 같은 것들이죠.
오늘날 많은 소프트웨어가 오픈소스이기 때문에,
사용하는 기술의 내부를 들여다볼 수 있습니다.
그렇게 해야 합니다.
관련 책을 읽고 발표를 보면서 이런 소프트웨어가
어떻게 작동하는지 알아야 합니다.
이렇게 하면 얻을 수 있는 주요 이점은
문제를 더 자신감 있고 빠르게 해결할 수 있다는 것입니다.
단순히 찔러보는 것보다 훨씬 효과적입니다.
이렇게 하면 되나? 하고 시도해 보는 거죠.
안 되네요. 다른 방법을 시도해 봐야겠어요.
특정 기술이나 관행에 자신의 정체성을 묶지 마세요.
많은 사람들이 자신을 코틀린 개발자, 파이썬 개발자,
또는 안드로이드 개발자라고 말하는 걸 봅니다.
그리고 그렇게 말하는 사람들은 다른 개발자들을
자신과 다르다고 여기죠. 때로는 그들을
경쟁자나 적으로 보기도 합니다.
또는 그들이 바보라고 생각하기도 하죠.
그들이 하는 일을 모르고 대신 세상에서
가장 좋은 언어인 코틀린을 써야 한다고 말하기도 합니다.
이는 건강하지 않습니다.
좋지 않죠. 그보다는
자신을 개발자로 정의하고 도구를 배우는 게 훨씬 낫습니다.
어떤 도구들이 있는지, 어떤 경우에
도움이 되는지 배우고 작업에 가장 적합한
도구를 사용하세요. 그리고 자신의 정체성을
다른 것에 기반을 두세요. 경력 동안 많은
다양한 언어를 배워야 할 겁니다. 그리고 그건 멋진 일이죠.
각 언어는 다릅니다. 각각 새로운 것을 가르쳐주고
전반적인 프로그래밍 접근 방식을 바꿀 수 있습니다.
예를 들어, 제가 코딩할 때 매우 다른 코드를 작성했습니다.
자바를 배웠을 때, 그리고 Objective C를 배웠을 때 변화가 있었습니다.
Swift를 처음 접했을 때도 다시 한 번 변화가 있었고
각 언어는 저에게 흔적을 남겼습니다.
따라서 다양한 프로그래밍 언어를 배우고 받아들이며
열린 마음을 가지세요. 불필요한 것을 배우는 것을 두려워하지 마세요.
예를 들어, Kotlin에 대해 말하자면,
Kotlin을 배우기 시작하는 사람들의 흔한 질문은
"Java를 꼭 배워야 하나요?"입니다. 그리고 이런
"꼭 배워야 하나요?"라는 표현은 좋은 접근이 아닙니다.
"Java를 배우면 더 나은 Kotlin 개발자가 될 수 있을까요?"라고 물어보는 게 좋습니다.
네, 당연히 그렇습니다. 다양한 라이브러리의 API를 더 쉽게 이해할 수 있게 될 것이고,
아마 사용하고 싶어 할 것입니다. 전체 환경이 어떻게 작동하는지
더 잘 이해하게 될 것입니다.
Kotlin의 일부 기능이 왜 그렇게 되어 있는지, 다른 방식이 아닌지
더 잘 이해하게 될 것입니다. 그러니 꼭 필요하지 않은 것을
배우는 것을 두려워하지 마세요.
엔지니어로서 경력을 쌓아감에 따라, 컨설턴트 엔지니어든
제품 엔지니어든 상관없이,
점점 더 많은 사람들과 일하게 될 것입니다.
필연적으로 요구사항, 스토리, 코멘트를 읽게 될 것이고,
같은 것을 작성하게 될 것입니다.
말하고, 소통하고, 설명하게 될 것입니다.
발표하게 될 겁니다. 사람들과 많이 일하게 될 거예요.
때로는 코드보다 사람들과 더 많이 일할 수도 있죠, 특히 하루 중 시간을
분 단위로 측정한다면 말이에요.
우수한 엔지니어들은 또한 사람들과 일하는 데
모든 면에서 뛰어납니다.
한 가지 경력에만 매달리지 마세요. 평생
소프트웨어 개발자로만 일할 운명은 아닙니다.
저를 예로 들어볼게요. 저는 정보 보안
전문가가 되었다가, 안드로이드 개발자가 되었고,
iOS 개발로 전환했어요. 그 다음 팀 리더가 되었고,
백엔드 개발도 했죠. 그 후 매니저가 되었다가 제품 관리자가 되었어요. 지금은
프로그래밍 언어 개발을 이끌고 있습니다.
이게 실제로 아주 좋은 거예요.
각 역할에서 다른 기술을 배우게 되고,
그 기술들이 주요 분야로 돌아갈 때 도움이 될 수 있거든요.
예를 들어, 제품 관리자가 되면
무엇을, 왜, 누구를 위해 만드는지 더 잘 이해하게 됩니다.
이는 스태프 플러스 엔지니어가 되는 데 크게 도움이 돼요.
단순히 코드를 작성하는 것이 아니라 비즈니스 요구 사항에 대해 생각하게 되니까요.
또는 팀 리더가 되었다가 그만두기로 결정한다면,
다른 필수적인 기술들을 배우게 될 거예요.
이는 당신에게 다른 중요한 기술들을 가르쳐 줄 겁니다.
시간 관리나 다른 사람의 시간을 계획하는 방법,
또는 불확실한 상황에서
결정을 내리는 방법 같은
기술들이 있죠. 한 가지 경력에만 매달리지 마세요.
인생은 길어요. 여러 가지를 시도해보고
자신에게 가장 잘 맞는 것을 찾으세요.
젊을 때는 하루에 20시간이나
18시간 정도 일할 수 있다고 느껴요.
그리고 소프트웨어를 작성하는 것은
정말 재미있죠. 결국 여러분은 본업과
취미 프로젝트로, 한 가지 일에 8시간을 쓰고
다른 일에 또 8시간을 쓰게 될 수 있어요.
이것도 재미있죠. 저도 젊었을 때 조금 그랬어요.
하지만 그것에만 집중하지 말고,
다른 것들에 눈을 감지 않는 것이 중요해요.
시간을 보내는 다른 재미있는 방법들, 몸과 감정 상태,
마음을 돌보는 다른 방법들,
책을 읽고, 산책을 하고, 운동을 하는 것도 좋아요.
이 모든 것들 사이에서 건강한 균형을 찾는 것이
여러분의 생산성을 유지하고 소프트웨어 개발이 주는 기쁨을
오랫동안 지속할 수 있게 해줄 거예요.
계속 새로운 것을 배우고, 더 깊이, 더 넓게 나아가세요.
요즘 일이 어떻게 처리되는지 보세요. 새로운 큰
트렌드가 있다면 그것을 살펴보세요. 요즘은 생성형
AI가 그렇죠. 그것을 살펴보세요. 최신 동향을 파악하는 데 도움이 될 겁니다.
더 나은 엔지니어가 되는 데도 도움이 되고, 더 높은 목표를 세우는 데도 도움이 됩니다.
일반적으로 많은 사람들이 자신을 과소평가하고 성공할 수 있었던
일들을 시도조차 하지 않습니다. 그러나 당신은
그렇게 해야 합니다. 시도해야 하고, 자신의 능력 밖이라고 느끼는
일들을 실험해봐야 합니다. 자신이 충분히 좋지 않다고 생각하는
직업에도 지원해야 합니다.
그리고 그 면접을 준비하고 할 수 있는 직업을 얻어야 합니다.
그것이 제가 줄 수 있는 최고의 조언이며
배우세요.