성장 트렌지스터(학습편)

David Ha (Hyeonsu)
7 min readOct 16, 2021

어머니께선 취미로 다육 및 각종 다양한 식물을 기르시는데 단 하나의 식물도 죽은적이 없어서 어머니께 물었습니다.

“어떻게 하면 식물이 죽지도 않고 건강하게 잘 자랄 수가 있어요?”

어머니께서 말씀하시길

“좋은 흙과 충분한 물 그리고 충분히 햇빛만 쬐어주면 알아서 잘자란단다.”

개발자도 마찬가지입니다.

개발자가 성장하기 위해선 환경도 무시할 수 없습니다.

커뮤니티 서비스 개발능력을 키울려면 커뮤니티 서비스를 개발하는 회사에 몸을 담가야하고, 엄청 많은 트래픽을 감당할 수 있는 능력을 키울려면 수 많은 유저들이 사용하는 서비스를 만드는 회사에서 일해야지 실력이 무럭무럭자랍니다.

물론 제 최근 관심사인 주니어개발자들도 마찬가지입니다.

좋은 선배 또는 동료개발자들과 함께 일을 하며, 양질의 피드백을 꾸준히 받고, 자유로운 분위기 속에서 업무를 주도적으로 맡아서 진행하다보면 성장한다고 생각을 했었습니다.

하지만 제가 간과하고 있던것이 있었는데,

어머니는 물과 좋은 토양 그리고 충분한 햇빛은 줬지만

식물이 뿌리를 뻗고 흙을 헤쳐나와서 잎사귀를 하늘로 뻗어 올리는데까지는 식물이 자기 본능에 충실하게 DNA에 따라서 성장한 것이지 어머니까 식물의 뿌리를 뽑아주고 잎사귀를 손으로 뽑아낸게 아닌것입니다.

튼튼한 DNA를 가진 식물이라면 환경이 좋은 안좋든 무슨 상관이겠는가, 결국 튼튼한 DNA를 가진 식물은 흙이든 물이든 바위든 어디든 잘 자란다. 마치 바위속의 난초처럼.

이번 글에서는

지난 한달간 주니어 개발자들과 길지만 짧았던 시간동안 주고받았던 피드백중에서 다른 주니어 개발자들이 학습하고 성장하는데 있어서 도움이 될 수 있는 좋은 경험들을 풀어보고자합니다.

Computer Science 기초적인건 뼈에 새겨놓아보아요!

주니어개발자와 어떤 테크니컬 이슈를 두고 커뮤니케이션을 하는 과정에서 최대한 주니어개발자들의 눈높이에 맞춰서 대화를 진행을 했었다. 하지만, 학부시절 교과서에 잘 적혀있는 내용인데도 주니어개발자가 모르고 있다보니 대화가 이어지는게 수월하진 않았습니다.

  • 우리는 단순 기획자의 문서나 입에서 나오는 요구사항을 코드로 술술적는 단순 코더가 아니라 엔지니어라는 사실을 잊어서는 안됩니다.
  • 단순히 교수님 과제나 시험 그리고 취업 면접용으로 공부만하지 말고 배운 지식을 어디다 응용할 지 좀 써먹어보면서 학습을 해봅시다.

어떤 업무만 열심히해서 완료하면 성장? NO

회사일로 불을 태워가면서 야근도 하고 주말에도 일하는 경우가 잦았다. (강요하지는 않았다.) 옆에서 보면 일을 끝내기 위해서 앞만보고 달리는 모습처럼 보이는데 이럴 때일 수록 ?명상을 하면서 본질을 찾아봅시다.

어떤 문제 때문에 일이 안풀리고 야근을 하게 되는지 주말에도 일을 하게 되는지.

결국, 그 본질은 ~일을 해결하기 위해서 ~것이 필요한데 그 필요한 것이 본인에게 없다는 사실을 깨닫게 됩니다.

그렇다면 그것을 일에서가 아닌 다른 방식으로 풀어보는게 더 빠를 것이다. 빌드 타임 상대적으로 느린 회사 프로젝트보다 차라리 일찍퇴근해서 샤워하고 산뜻한 기분으로 샘플 프로젝트를 파놓고 빠르게 부족한 부분을 채우고 기술을 연마해서 다음날 아침에 상쾌한 기분으로 숙련했던 기술을 시전해보면 좋을 것입니다.

그렇게 반복하다보면 자기만의 능력이 될 것임을 의심할 여지가 없습니다!

개발관련 개념상식들은 틈틈히 줍줍해보아요!

몰라서 해결이 안되는 상황은 알겠지만 무엇을 모르는지 모르는 상황이면 매우 난감합니다. iOS, Android등 어떤 플랫폼이던 관련해서 어느정도 일반적인 상식들을 틈틈이 접하고 찾아보면 해결의 실마리를 찾을 수 있을 뿐만아니라 동료들과 커뮤니케이션 하는데에 있어서도 도움이 될 것입니다!

어떤 문제를 해결 할 때 본질적인 문제점을 중심에 두고 가설을 세우거나 다양한 생각을 하는 연습을 많이해보세요!

초창기 서비스의 경우 프로젝트의 규모도 작을 뿐더러 파악해야할 로직들이 그렇게 많지는 않다. 하지만, 빠르게 성장하고 규모가 커진서비스중 특히 아직 정제되지 않은 서비스이거나 사연이 많은 로직일 수록 단순히 보이는 것만 문제를 해결하다보면 예상치못한 사이드 이펙트를 마주하게 됩니다.

이럴수록 빠르게 문제를 해결하는 방법으로 접근하는거 보다는 이 문제에 대한 본질적인 문제점을 우선 찾아서 해결하기에 앞서 여러 가설들과 다양한 생각을 해보면 사이드 이펙트를 피하면서 혹은 최소화하면서 해결할 수 있는 좋은 해결방법을 찾을 수 있을것입니다.

그리고 일외적으로도 충분히 연습을 할 수 있는 방법이 있는데, 개인적으로 가장 좋은 방법은 본인이 즐겨사용하는 서비스의 기능 일부분만 클론코딩을 해서 유저입장에서 더 나은 방식으로 코드를 개선해보는 것입니다.

깊은 물속으로 들어가는 것에 두려워하지마세요!

주로 다음과 같은 상황에서 주니어 개발자들이 당황하는 모습들을 보았습니다.

  • 빌드/컴파일과정에서 마추진 에러로그
  • 동료가 작성한 로직을 사용했는데 원치않는 동작을 할 때
  • 오픈소스를 사용했을 때 발생한 알 수 없는 에러 및 버그

위와 같은 케이스를 주니어 개발자 시각에서 보면 어떤 원인으로 발생하는지 원인을 알 수 없기 때문에 흉가에서 발견한 귀신같이 느껴질 수 밖에 없을것입니다.

흉가에서 귀신을 발견하더라도 당황하지말고 귀신이 정말 귀신인건지 아니면 바람에 흩날리는 하얀 천인지 침착하게 살펴보듯이, 위와 같은 문제점들도 당황하지말고 에러문구를 천천히 읽어서 검색을 해보거나 동료들과 이야기를 해보자. 그리고 응용한 로직이 오동작을 한다면 그 로직이 어떤 의도를 가지고 동작하는지 용기를 내서 파고 들어가봅시다.

느려도 괜찮아! 방향만 잘 잡아서 꾸준히 걸어가자

주니어 개발자에게 뛰어난 퍼포먼스와 빠른 개발 그리고 뛰어난 엔지니어링 실력을 요구하진 않습니다. 시니어 개발자들도 누구나 여러분과 같은 길을 걸어왔고 그런 과정을 거쳐왔기 때문에 너무 조급해 할 필요는 없습니다.

한로니님의 글에 따르면

괜찮은 개발자, 일을 잘하는 개발자 혹은 시니어 개발자는 비단 개발만 잘하는 사람을 뜻하지는 않습니다. 일정 수준의 기술에 도달해야 함은 물론이고, 불확실 속에서 일정을 추정하고, 이해당사자들과 원활히 의사소통하고, 일정의 압박 속에서도 무너지지 않아야 하며 작업물에 대한 신뢰와 책임을 요구합니다.

이기 때문에 올바른 방향으로 꾸준히 걸어가면 어느순간엔 일정 수준의 기술에 도달할 것이고, 수 많은 동료들과 서비스를 만들어나가면서 좋은 커뮤니케이션을 하다보면 위에서 정의하는 괜찮은 개발자로서 성장할 수 있을것이라 믿어 의심치않습니다.

반복되는 잘못된 행동을 인지해가면서 방향을 조율하다보면 여러분은 누군가에게 선망을 받는 개발자가 되어있을 것이라 생각하면서 응원으로 이 글을 마무리해보겠습니다.

다음 이야기

이번 글에서는 주니어 개발자들이 잘 성장할 수있는 학습편을 적어보았습니다.

다음글에서는 반대로 선배 혹은 시니어 개발자들이 주니어 개발자들을 이끌고 성장시키는 과정에 있어서 좋은 행동과 올바르지 못한 행동들에 대해서 적어보고자 합니다.

읽어주셔서 감사합니다.

--

--