훌륭한 소프트웨어 엔지니어란?

JS·2023년 2월 4일
0

Brain Setup

목록 보기
18/18
post-thumbnail

훌륭한 개발자를 정의할 수 있는 걸까?

어떤 개발자가 좋은 개발자인걸까?
세상엔 수많은 유형의 인간군상들이 존재하고 어떤이에겐 생각하는 것 조차 끔직할 정도로 마음에 들지 않겠지만 누군가에겐 소중한 사람일 수 있을 것이다

개발자도 마찬가지일 것이다. 바다는 모든 자연환경의 요소가 미세하게 서로 영향을주며 환경을 만들어낸다. 프로그래밍의 세계도 마찬가지라고 생각한다. 정답에 가까운 것은 존재하지만, 결코 정답일 수 없다고 생각한다. 무한이라는 개념이 있지만 결코 우리가 무한에 도달할 수는 없는 것처럼

세상에는 다양한 고객과 그 니즈를 충족시켜주는 기업들이 존재한다. 이렇게 기업이 이슈를 해결하는 모델 중 애자일 모형(Agile Model)이 존재한다.

이 모델은 신속한 방법 작용을 반복하여 고객과 소통하며 이슈를 해결하는 모델이다. 이 모델에서는 크게 4가지의 과정이 진행된다

  1. 가설
  2. 프로토타입
  3. 검증
  4. 스케일

초반 가설과 프로토타입의 단계에서는 코드의 퀄리티보다는 얼마나 빠른 시간내에 구현을 해내는가가 가장 중요한 사항이다. 때문에 이 단계에서는 모든 경우의 수를 치밀하게 계산하고 설계하는 개발자 보다는 문제를 신속하게 파악하고 빠른 학습능력으로 최소 기능의 젶무을 런칭하는 능력이 중요하다

검증과 스케일 단계에서는 이러한 프로토타입이 시장의 평가를 받아 좋은 반응을 이끌어낸다면 중·장기적인 비전을 가지고 체계적이고 안전한 코드를 작성하는 개발자가 필요할 것이다. 여기에는 디테일이 중요해질 것이다

프로그래밍의 본질

단순한 코딩을 하는 것과 프로그래밍을 하는 것은 본질적인 차이가 있다. 코더는 생각 없이 입력받은 그대로 코드를 작성하는 사람일 뿐이며 프로그래머는 이슈에 대하여 다각도로 바라보며 관점을 디자인하는 일이다

이를 뒤집으면 훌륭한 프로그래머란 어떤 사람인지 유추해낼 수 있다

훌륭한 소프트웨어 엔지니어

문제에 따른 접근 방식이 다르다

어떤 문제는 뛰어난 개발 능력으로 코딩을 잘해야 풀 수 있으며, 어떤 문제는 탁월한 커뮤니케이션 능력으로 다른팀과의 협력으로 풀어나갈 수 있고, 어떤 문제는 협상하며 설득의 과정을 반복해야 하며 어떤 문제는 장인정신을 가지고 깊게 들어가 체계적으로 설계를 해야 풀 수 있다

이렇게 각각의 상황에 따라 적용해야하는 개발자의 특징은 전혀 다르다. 훌륭한 개발자는 주어진 문제에 대해 최상의 해결책을 도출해내고 그에 맞는 도구를 챙겨 그 상황에 최적화된 모습을 갖추는 것을 의미한다

개발자가 꼽은 개발자 역량 2위는 '개발 실력'...1위는?

위의 기사를 보면, 개발자로서 중요한 능력 순위로 보면 커뮤니케이션, 프로젝트 경험, 성장 가능성, 개발 경력 등이 존재한다

단순하게 개발만 잘해서는 안되며 커뮤니케이션 능력도 중요하다. 무조건 다각형이 되어야 한다는 것은 아니지만 다른 분야에 대한 이해도 필요하며, 인문학적 소양이 뒷받침 되어야 한다 생각한다


Reference

profile
게임 프로그래머 지망생

0개의 댓글