데일리 미션/Article

Article : 영리한 개발자와 현명한 개발자의 차이

pipiiiiii 2023. 12. 20. 19:31

https://yozm.wishket.com/magazine/detail/1769/

 

영리한 개발자와 현명한 개발자의 차이점 | 요즘IT

대부분의 개발자는 코드 작성에 있어서는 영리하지만, 여러 상황에서 영리함은 강점이자 약점일 수 있습니다. 상식과 물정에 밝고 경험이 풍부하다면, 개발자가 문제를 해결하기보다 피하는 데

yozm.wishket.com

 

<아티클 내용 요약>

- 대부분의 개발자는 코드 작성에 있어서는 영리하지만, 여러 상황에서 영리함은 강점이자 약점일 수 있다. 

- 상식과 물정에 밝고 경험이 풍부하다면, 개발자가 문제를 해결하기보다 피하는 데 도움이 될 수 있다. 침묵할 때, 싸울 때, 도망가서 숨을 때를 아는 현명한(시니어) 개발자는 영리한(주니어) 개발자보다 유리하다. 

 

영리함과 현명함의 차이

- 개발자는 업무 시간 중 50%만 코드 작성에 할애한다. 

  • 주니어 개발자는 간단한 요구 사항을 받아 복잡한 코드로 만든다.
  • 시니어 개발자는 복잡한 요구 사항을 받아 간단한 코드로 만들 수 있다.

- 일반적으로 시니어 개발자는 현명하고, 주니어 개발자는 영리하다. 주니어 개발자가 현명함을 갖추려면 시행착오가 필요하다. 현명함과 영리함의 차이를 만드는 것은 시행착오는 경험이다. 경험은 실수를 마주하고 부딪히는 시간들이 쌓이면서 생기는 것이다. 

 

문제를 해결하기보다는 문제를 만들지 않기

- 코드를 작성할 때, 코드를 작성할 필요가 전혀 없을 때를 명확히 하고 식별하는 것이 시니어 개발자가 익히는 기술이다. 

- 주니어 개발자는 모든 요구사항과 문제점을 코드로 마술처럼 해결할 수 있다고 믿는다. 그러나 코드는 일단 생성되면 전체 개발팀의 책임이 되기 때문에 코드 작성은 마지막 옵션이 되어야 합니다. 

- 단기적으로는 코드가 훌륭한 솔루션이지만, 장기적으로는 시간이 더 오래 걸리고 복잡성을 증가시키며, 유지 관리 비용도 추가된다. 따라서 코드를 적게 생성하는 것이 더 효율적이며, 실패 가능성이 줄어든다. 

- 현명한 개발자라면 필수적인 요구 사항만을 포함한 채, 있으면 좋을 법한 요구 사항에 대해서는 무시하는 방식으로 코드 생성을 줄인다. 

 

코드 생성이 필요할 때

- 현명한(시니어) 개발자는 언제 코드를 작성해야 하고, 코드를 작성하는 대신 언제 검증하고 점검해야 하는지 알고 있다. 주니어 개발자는 코드 작성에 대한 기술을 최대한 자주 사용하기를 원한다. 

- 이것은 결과 면에서 차이를 나타내는데, 더 큰 차별점은 코드 작성이 필요한 시점을 아는 것이다. 

 

단순성

- 시니어 개발자는 여러 변수를 찾아보고 요구 사항을 검증한 후 코드를 만든다. 

- 검증된 요구 사항으로 코드를 빠르게 작성하여 소프트웨어를 더 빠르게 만들 수도 있지만, 느린 속도로 시작해도 올바른 소프트웨어를 만들어 나중에 문제없이 소프트웨어 속도를 더 빠르게 할 수 있다. 

 

질문할 때, 경청할 때, 말할 때를 구분하기

- 주니어 개발자는 몇 가지 요구 사항은 잊어버리고 몇 가지는 경청하고, 또 어떤 경우는 듣지도 않고 기술 솔루션 만들기로 바로 이동하기도 한다. 시니어 개발자는 소프트웨어의 목적을 이해할 수 있도록 해당 업무의 목표와 프로세스에 집중한다. 업무 목적, 팀과 개인의 역할을 파악해야 필요에 맞는 소프트웨어를 만들 수 있기 때문이다. 

- 주니어 개발자가 요구 사항을 읽고 만족스러운 경로를 만들어 낼 수 있을 때가 실수를 범하기 시작하는 때다. 이후 문제점과 예외사항이 나타나면, 버그를 하나씩 수정하기 위해 코드를 계속 변경해야 한다. 처음에는 빠르게 진행되는 것처럼 보이지만 후에 발생하는 버그를 처리하다 보면 뒤처지게 된다. 

- 시니어 개발자는 코드를 한 번에 만들어 무사히 통과한다. 이는 시니어 개발자가 질문할 때, 경청할 때, 말할 때를 잘 구분하기 때문이다. 

 

자신이 맡은 바를 다하기

- 개발을 위해서는 한 팀이 필요하고, 각자가 맡은 바를 수행해야 한다. 

- 현명한 개발자는 프로젝트의 각 영역을 처리하는 사람들이 자기가 맡은 일에 집중하도록 한다. 

- 주니어 개발자들은 다른 사람의 일을 해주다가 자신의 업무를 할 시간이 부족한 경우가 흔하다. 도움을 주는 것은 양날의 검과 같아, 단기적으로는 남을 도울 수 있지만 장기적으로는 자신에게 해를 끼칠 수 있다. 다른 사람의 일을 도와줄수록 자신의 일을 하는 데 필요한 시간이 줄어들기 때문이다. 이런 식으로 장기간 근무를 오래 하면 어느 날 번아웃이 올 수 있다. 

 

현실적으로 대처하기

- 일이 잘못되어 문제가 발생하고, 계획이 잘못되어 변경되곤 한다. 현실과 싸울 수 없기 때문에 적응하고 변화해야 한다. 

- 주니어 개발자는 현실과 싸우고, 시니어 개발자는 현실에 맞춰 일한다. 

- 영리한 사람과 현명한 사람의 차이점은 결코 대단한 것에 있지 않다. 

 

<알게 된 개념>

- 제목은 영리한 개발자와 현명한 개발자의 차이지만 내용을 읽어보니 모든 직무에 다 해당되는 말이라고 생각한다.

무슨 업무든 ARTICLE에 나와있는 내용을 접목시켜 스스로를 돌아보고 정돈해서 일을 해야 한다고 본다. 지금의 나는 주니어도 되지 못하지만 앞으로 주니어가 되면 이 글을 자주 읽어 스스로를 돌아볼 수 있도록 해야겠다.