회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
AWS 이용 중이라면 최대 700만 원 지원받으세요
본문은 요즘IT와 세계 최대 빅데이터 기반의 번역/현지화(Localization) 기업 Sprok DTS에서 함께 만든 해외 번역 콘텐츠입니다. 필자인 Ben ‘The Hosk’ Hosking는 소프트웨어 개발자로 경력을 시작해, 현재는 솔루션 아키텍트로 활동하고 있습니다. 이번 글은 영리한 개발자와 현명한 개발자의 차이점이 무엇인지, 필자의 개인적 견해가 담겨 있습니다.
회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!
확인
본문은 요즘IT와 세계 최대 빅데이터 기반의 번역/현지화(Localization) 기업 Sprok DTS에서 함께 만든 해외 번역 콘텐츠입니다. 필자인 Ben ‘The Hosk’ Hosking는 소프트웨어 개발자로 경력을 시작해, 현재는 솔루션 아키텍트로 활동하고 있습니다. 이번 글은 영리한 개발자와 현명한 개발자의 차이점이 무엇인지, 필자의 개인적 견해가 담겨 있습니다.
“스스로 지혜롭다고 생각하는 사람보다 더 어리석은 사람은 없습니다. 자신이 바보라고 의심하는 사람보다 현명한 사람은 없습니다.”
마르그리트 드 발루아(Marguerite de Valois) 왕비
대부분의 개발자는 코드 작성에 있어서는 영리하지만, 여러 상황에서 영리함은 강점이자 약점일 수 있습니다. 상식과 물정에 밝고 경험이 풍부하다면, 개발자가 문제를 해결하기보다 피하는 데 도움이 될 수 있습니다. 언제 코드가 필요한지, 언제 요구 사항을 거부해야 할지를 알기 때문입니다. 침묵할 때, 싸울 때, 도망가서 숨을 때를 알기 때문에 현명한(시니어) 개발자는 영리한(주니어) 개발자보다 유리합니다.
개발자는 업무 시간 중 50%만 코드 작성에 할애합니다.
일반적으로 시니어 개발자는 현명하고, 주니어 개발자는 영리하긴 하지만 아직 현명함을 갖추기에는 시행착오가 부족합니다. 주니어 개발자와 시니어 개발자는 경험, 지식 및 기술 면에서 다릅니다.
차이를 만드는 것이 경험입니다. 일단 개발자가 실수를 하면, 그 실수를 피하기를 희망하지만 향후에 다시 같은 실수를 반복하게 됩니다. 그러나 이것은 그들에게 새로운 실수를 범할 기회를 제공하고, 시간이 지남에 따라 개발자는 더 많은 실수를 피하는 방법을 알게 됩니다.
소프트웨어 개발에서의 실수는 그 결과와 고통이 먼 미래에나 발견되기 때문에 미리 예상하기 어려울 수 있습니다. 간단한 실수라면, 빠른 피드백을 제공받아 신속하게 찾아 수정하는 것이 가능합니다.
값을 하드 코딩하는 일 따위의 실수는 더 교묘해서, 처음에는 문제가 없어 보입니다. 그러나 나중에 값을 변경하려면 전체 릴리스를 수행해야 하며 이 결정에 대해 여러 번 대가를 지불하게 됩니다.
“영리한 사람은 문제를 해결하고, 현명한 사람은 그것을 피해 간다.”
알버트 아인슈타인(Albert Einstein)
모든 개발자는 코드를 작성하기를 원합니다. 그것이 그들이 잘하는 일이고 즐기는 일이기 때문입니다. 그러나 코드를 작성해야 할 때, 코드를 작성할 필요가 전혀 없을 때를 명확히 하고 식별하는 것이 시니어 개발자가 익히는 기술입니다.
주니어 개발자는 모든 요구사항과 문제점을 코드로 마술처럼 해결할 수 있다고 믿습니다. 코드는 일단 생성되면, 전체 개발팀의 책임이 되기 때문에 코드 작성은 마지막 옵션이 되어야 합니다. 코드를 생성한 후에는 유지 관리가 필요하며 코드 기반에 복잡성을 더하게 됩니다.
단기적으로는 코드가 훌륭한 솔루션이지만, 장기적으로는 시간이 더 오래 걸리고 복잡성을 증가시키며 유지 관리 비용도 추가됩니다. 따라서 코드를 적게 생성하는 것이 더 효율적이며, 실패 가능성이 줄어듭니다. 시니어 개발자는 반드시 필요할 때와 요구사항의 유효성을 검증한 때만 코드를 작성한다는 사실을 알고 있습니다.
현명한 개발자라면 필수적인 요구 사항만을 포함한 채, 있으면 좋을 법한 요구 사항에 대해서는 무시하는 방식으로 코드 생성을 줄입니다. 코드를 작성하는 대신 업무 프로세스를 변경하여 요구 사항을 달성할 수도 있습니다. 모든 것을 자동화할 필요가 없으며, 때로는 수동 선택이 최선의 선택입니다.
“당신은 잡을 때를 알고, 접을 때를 알고, 떠날 때를 알고, 도망갈 때를 알아야 합니다.”
케니 로저스(Kenny Rogers)
현명한(시니어) 개발자는 언제 코드를 작성해야 하고, 코드를 작성하는 대신 언제 검증하고 점검해야 하는지 알고 있습니다. 주니어 개발자는 코드 작성에 능숙하며 이러한 기술을 최대한 자주 사용하기를 원합니다.
이것은 결과 면에서 차이를 나타내지만, 주니어(영리한) 개발자와 시니어(현명한) 개발자 사이에는 더 큰 차별점이 있는데, 그것은 코드 작성이 필요한 시점을 아는 것입니다.
주니어 개발자는 그 업무에 코드가 필요한 이유와 수행해야 하는 작업을 이해하기에 앞서 당장 코드를 만들고 싶어 하는 경향이 있습니다. 시니어 개발자는 여러 변수를 찾아보고 요구 사항을 검증합니다. 그것이 잘못된 작업이라면, 코드를 얼마나 잘 만드는지의 여부는 중요하지 않습니다.
검증된 요구 사항으로 코드를 작성하여 소프트웨어를 더 빠르게 만들 수 있습니다. 업데이트된 종속 코드, 관련 코드, 문서, 테스트, 빌드, 문서와 같이, 코드에는 많은 오버헤드가 있습니다. 때때로 개발자는 느린 속도로 시작하지만 올바른 소프트웨어를 만듦으로써 나중에 속도를 더 빠르게 하기도 합니다.
“가장 중요한 원칙은 스스로 자기 꾀에 넘어가는 일이 있어서는 안된다는 것이다. 당신이 가장 쉽게 속일 수 있는 사람이 당신 자신이기 때문이다.”
리처드 P. 파인만(Richard P. Feynman)
목수는 나무를 두 번 측정해서 한 번에 자릅니다. 그렇게 신중한 개발자는 매우 드뭅니다. 현명한(시니어) 개발자는 자신은 소프트웨어를 만드는 데 있어 전문가이고, 사용자는 각자가 하는 일에 있어 전문가임을 이해합니다. 소프트웨어를 만드는 것은 비즈니스 전문가와 기술 전문가 간의 협업입니다.
주니어 개발자는 몇 가지 요구 사항은 잊어버리고 몇 가지는 경청하고, 또 어떤 경우는 듣지도 않고 기술 솔루션 만들기로 바로 이동하기도 합니다. 시니어 개발자는 소프트웨어의 목적을 이해할 수 있도록 해당 업무의 목표와 프로세스에 집중합니다. 업무 목적, 팀과 개인의 역할을 파악한 후에야 필요에 맞는 소프트웨어를 만들 수 있기 때문입니다.
주니어 개발자가 요구 사항을 읽고 만족스러운 경로를 만들어 낼 수 있을 만큼의 수준에 도달할 때가 일반적인 실수를 범하기 시작하는 때입니다. 이후 경로 문제점과 예외사항이 나타나면, 주니어 개발자는 버그를 하나씩 수정하기 위해 코드를 계속 변경해야 합니다.
처음에는 빠르게 진행되는 것처럼 보였지만 차례대로 발생하는 버그로 뒤처집니다. 우수한 시니어 개발자는 코드를 한 번에 만들어 무사히 환경을 통과합니다. 이는 시니어 개발자가 질문할 때, 경청할 때, 말할 때를 잘 구분하기 때문입니다.
“침묵은 삶의 많은 고통을 통해서 배운 교훈이다.”
세네카(Seneca)
소프트웨어 개발을 위해서는 한 팀이 필요하고 각자가 자신이 맡은 바를 수행해야 합니다. 도움을 제공하는 것은 양날의 검과 같아, 단기적으로는 남을 도울 수 있지만 장기적으로는 자신에게 해를 끼칠 수 있습니다. 다른 사람의 일을 많이 해 줄수록 자신의 일을 하는 데 필요한 시간이 줄어들기 때문입니다.
현명한 개발자는 프로젝트의 각 영역을 처리하는 사람들이 자기가 맡은 일에 집중하도록 합니다. 개발자는 업무를 처리하는 사람들의 시간을 보호해 주고 그들을 위해 책임과 결정을 내려야 합니다.
주니어 개발자들에게는 다른 사람의 일을 해주다가, 막상 자신의 업무를 할 시간이 부족한 경우가 흔합니다. 이런 식으로 장시간 근무를 오래 지속하면, 어느 날 번아웃이 올 수 있습니다.
“어제의 나는 똑똑해서 세상을 바꾸고자 했으나, 오늘의 나는 현명해서 나 자신을 바꾸고 있다”
루미(Rumi)
일이 잘못되어 문제가 발생하고, 계획이 잘못되어 디자인이 변경되곤 합니다. 당신은 현실과 싸울 수 없습니다. 환경에 적응하고 변화하세요. 주니어 개발자는 현실과 싸우고, 시니어 개발자는 현실에 맞춰 일합니다.
온갖 문제와 버그, 이슈들을 막을 수는 없지만 그에 대비하고 재앙으로 끝나지 않도록 할 수 있습니다. 기술 재해에는 준비된 개발자가 필요합니다. 영리한 사람과 현명한 사람의 차이점은 결코 대단한 것에 있지 않습니다.
<원문>
The Difference Between The Clever Developer & The Wise Developer
위 번역글의 원 저작권은 Ben ‘The Hosk’ Hosking에게 있으며, 요즘IT는 해당 글로 수익을 창출하지 않습니다.