Medium - The Differences Between a Junior, Mid-Level, and Senior Developer

원문 - Daan

Trend 파악을 Medium 기고문 요약 포스팅 - 초급, 중급, 고급 개발자의 차이에 대하여, 그리고 다음 레벨을 위해 당신히 할 수 있는 것들

500x400

초급, 중급, 고급 개발자들은 단순히 적당한 연차만 가지고 있는게 아닙니다. 신입 개발자가 고급 개발자보다 더 나이가 많을 수도 있죠. 차이는 기술에 있습니다. 이것은 고급 개발자가 모든 것에 전문가가 되어야 한다는 말보다는 고급 개발자는 초급, 중급 개발자에 비해 더욱 뛰어난 기술을 가지고 있다는 말이 적합하겠네요.

그러나 코딩 기술말고도 초급, 중급과 고급 개발자를 나누는 차이점이 있습니다. 그것에 대해 알아봅시다.

Knowledge

명백하게 고급 개발자는 초중급 개발자보다 더욱 지식이 많습니다. 디자인 패턴과 아키텍쳐, 테스트 자동화, 성능, 보안 등에 관하여 알아가는 것은 초급 개발자에게 중급과 고급 개발자와의 갭을 줄여줄겁니다.

소프트웨어 개발에 있어서 어떻게 일이 완료되어야 하는지 아는 것은 중요합니다. 그러나 이런 것들을 아는 것만으로는 고급 개발자가 되기엔 부족하죠. 지식은 개발자들 사이의 큰 차이점이 아닙니다. 단지 하나의 사실일 뿐이죠.

Coding

많은 사람들의 생각과 달리 코딩은 컴퓨터와 대화를 하는 것이 아닙니다. 코딩은 사람과 대화를 하고 컴퓨터에게 지시를 내리는 것입니다. 결국에 코드는 컴파일 되어 0과 1로 번역되죠.

코드는 다른 개발자들이 이해할 수 있어야 합니다. 새로운 팀원이 와도 본적이 없는 코드를 열고 새로운 기능을 추가하거나 버그를 잡을 수 있어야 하죠. 이것이 초급 개발자와 고급 개발자의 큰 차이입니다.

코딩 스킬에 있어서는 중급 개발자를 비교하는 것은 제외하도록 하겠습니다. 명백하게 중급 개발자들은 초급 개발자와 고급 개발자 사이에 위치해 있지만 고급 개발자 쪽에 더 치우쳐 있습니다. 중급 개발자들은 대개 개발의 전체 사이클을 경험해 봤을겁니다. 그들은 간단한 실수를 많이 저질렀을테고 거기서 많이 배웠겠죠.

How to sniff out the junior Developer

초급 개발자들은 경험이 없습니다. 어떤 이들은 졸업 후에 바로 정규직으로 일을 시작하죠. 초급 개발자들의 마인드는 주로 단지 동작만 하는 코드를 만들어 내려고 합니다. 동작하는 소프트웨어와 좋은 소프트웨어를 같은 것으로 생각하는 것이죠.

직관적인 코딩은 매우 어렵습니다. 특히나 초급개발자는 절대로 하면 안돼죠. 초급 개발자는 화려한 코드를 작성합니다. 당신은 초급 개발자의 기발한 인라인 코드나 지나치게 복잡한 추상화를 볼 수 있을겁니다. 이것이 초급 개발자들이 자신의 실력을 뽐내는 방식이지만 옳지 않습니다.

초급 개발자들은 인간적인 요소보다는 컴퓨터 쪽에만 초점을 맞춰서 코딩을 하죠.

And what about the senior developer?

만약 고급 개발자가 작성한 코드를 본다면 이런 생각을 할겁니다: 이게 전부인가? 나머지 코드는 어딨지? 고급 개발자는 간단하고 직관적이고 심지어 약간 멍청해보이는 코드를 작성합니다. 이것은 개발자가 가질 수 있는 가장 큰 특성 중에 하나입니다. 고급 개발자는 KISS 원칙을 준수합니다: Keep it simple, stupid.

고급 개발자는 초급 개발자와 달리 그들의 코드에 대해 생각합니다. 고급 개발자들은 유지보수와 확장성을 생각하며 코드를 작성합니다. 이것이 초급 개발자와 고급개발자의 가장 큰 차이점인데, 고급 개발자는 함께 일하는 사람들을 생각하는 반면 초급 개발자는 컴퓨터만 생각하는거죠.

More Than Just Coding Skills

코딩 스킬을 배제해도 누가 어떤 레벨의 개발자인지 구분할 수 있는 몇 가지 요소가 있습니다.

초급 개발자들은 일반적으로 가장 간단한 작업이나 영향이 적은 일을 수행합니다. 그들은 아키텍쳐 디자인을 하지 않죠. 중급 개발자도 솔루션을 설계하지 않고 업무를 수행합니다. 초급 개발자들의 차이점은 관련된 업무를 반복하면서 점점 지시를 덜 받으면서 업무를 수행하는 것이죠. 고급 개발자는 하나의 응용프로그램을 완전히 개발할 수 있습니다.

이것은 고급 개발자가 아무런 질문할 거리가 없다는 것이 아닙니다. 모든 개발자는 매일 많은 질문을 가지고 있고 그것은 변하지 않죠. 고급 개발자도 차이가 없습니다.

차이점이 있다면 고급 개발자들은 어떻게 정확한 질문을 하는지 알고 어떻게 처리해야 하는지 안다는 것이죠. 중급 개발자들은 그들이 수행하는 일상 업무와 연관이 있는 경우 정확한 질문을 할 수 있지만 더욱 복잡한 업무에는 도움이 필요합니다.

고급 개발자는 어떻게 적절한 행동을 취하며 질문을 따라가는지 알고 있습니다. 이것은 고급 개발자가 다른 사람들의 도움이 필요하지 않다는 것이 아닙니다. 때때로 해당 분야의 경험이 있는 다른 개발자에게 도움을 요청하는 것이 최선의 방법일 때가 있죠.

당신은 신입 개발자가 적합한 질문을 바로 할 거라고 생각하면 안됩니다. 초급 개발자는 경험이 없기 때문에 경험이 있는 선임 개발자로부터 가이드가 필요합니다. 신입 개발자들에게는 필수적인 자원들이나 올바른 방향에 대한 지시가 필요합니다.

Getting to the Next level

우리는 모두 자기개발을 통해 더 나은 개발자고 되고 싶어합니다. 그러나 다음 레벨로 가기 위한 단계는 무엇일까요?

Junior to mid-Level

초급 개발자는 경험이 없기 때문에 최소한 두어번쯤은 전체 개발 사이클을 경험하는 것이 중요합니다. 이 것은 당신을 많이 곤란하게 만들겠지만 다음번에는 어떻게 그것을 피하는지 배울게 될 것입니다.

코딩에 관해서는 간단하게 작성하는 법을 배워야 합니다. 다른 사람이 당신이 작업한 코드에 대해서 작업을 한다고 생각하세요. 그리고 디버깅을 하는 법에 대해서도 배워야 합니다. 이것은 프로세스에서 어떤 일이 일어나는지 이해하는데 도움이 될 것입니다.

Mid-level to senior

중급 개발자에서 고급개발자가 되는 것은 꽤나 힘듭니다. 어떤 개발자는 중급개발자에서 남은 커리어 전체를 보내게 될 것입니다.

고급 개발자는 어떤 코너들을 잘라야하고 어떤 코너를 자르면 안되는지 정확히 알고 있습니다. 이것들은 과거의 실수들을 통해 어렵게 배운 것이죠.

만약 고급 개발자가 되고 싶다면 일을 맡았을 때 다른 사람들은 어떻게 고치는 지 모른다고 생각하고 일에 착수하세요. 당신은 일이 어떻게 완수되는지 훨씬 더 많이 알아야 할 것입니다.

고급 개발자로서 당신의 역할은 경험이 적은 개발자들을 돕는 것 입니다. 당신은 다른 개발자들이 무엇가를 해결하지 못할 때 기댈 수 있는 최후의 방어책입니다.

그리고 당연하겠지만 기술 스택에 있어서 전문가가 되어야 합니다. 이것은 코딩 스킬을 넘어서는 것이죠. 당신의 회사에서 사용하는 모든 도구와 응용프로그램에 대해서 알아야 합니다.

Conclusion

초급, 중급, 고급 개발자의 차이는 단순히 연차의 차이가 아닙니다. 당연하게도 고급 개발자가 초중급 개발자보다 더 좋은 기술을 가지고 있다고 하는게 맞겠죠. 그러나 지식은 가장 중요한 요소가 아닙니다.

고급 개발자는 쉬운 코드를 작성하고 초급 개발자와는 마인드가 다르죠. 그러나 이것은 단지 코딩 스킬입니다. 어떤 질문을 해야하고 어떻게 그 질문을 팔로우 업하는지가 필수적입니다. 그리고 고급 개발자들은 모든 상황에 있어서 어떻게 해야하는지 그들의 풍부한 경험으로부터 아는 것이죠.

초급 개발자가 성장하기 위해서는 간단하게 코드를 작성하는데 집중을 하고 개발 사이클을 여러번 경험해야 합니다. 중급 개발자가 고급 개발자가 되기 위해서는 단순히 일상 업무를 고치는 데서 더욱 많은 것을 배워야 하죠. 가장 어려운 업무를 맡아야 하고 기술 스택에 있어서 전문가가 되어야 합니다. 고급 개발자의 또 다른 직무는 경험의 적은 개발자들의 든든한 버팀목이 되어주는 것입니다.

Martin Fowler의 격언으로 기사를 끝내겠습니다.

“컴퓨터가 이해하는 코드를 작성하는 것은 바보라도 할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 작성한다.”

Summary

  • 초급, 중급, 고급 개발자의 차이와 중급 개발자로 성장하는 방법에 대하여,
  • 최대한 읽기 쉬운 코드를 작성하도록 노력하고 전체적인 개발 사이클을 경험하도록 하자.
  • SW 개발은 협업이 필수적이므로 항상 팀원을 생각하며 코딩을 하자.

© 2019. All rights reserved.

Powered by Hydejack v8.1.1