주니어 개발자가 기억 & 주의해야 할 점


이번에는 주니어 개발자가 기억해야 할 것과 주의해야 할 점에 대해 정리해봅시다.


주니어 개발자가 기억해야 할 것

프로그래머는 복잡성(complexity)와 항상 싸워야 한다.

함수, 클래스, 모듈로 나누고 주석도 잘 쓰면 복잡성이 내려간다.

복잡성을 낮춰야 하는 이유와 방법

  • 큰 프로그램을 작성하기 위해 필요
  • 유지보수를 위해 필요
    • 코드를 작성하고 한참 뒤에 코드를 추가하거나 수정할 때
  • 협업을 위해서 필요하다.
  • 다른 프로그래머가 사용하기 쉽도록 프로그램의 구조 자체를 잘 짜야 한다.

    (다른 개발자가 작성한 프로그램을 파악하기 위해서 전체 코드를 다 읽어봐야 한다면 시간이 너무 오래 걸린다.)

  • 디자인 패턴이 잘 짜여진 React.js, Angular.js, Vue.js와 같은
    프레임워크 또는 라이브러리를 사용하면,
    프로젝트의 복잡도를 관리하기 보다 수월해질 수 있으며,
    장기적인 관점으로 보았을 때 유지보수를 하는데 도움이 되는 것 같다.

협업을 하는 다양한 방식

  • ex1) 주로 대기업에서 사용하는 협업 방식: 폭포수(waterfall) 개발 방법론
  • 절차: 기획 -> 디자인 -> HTML -> CSS -> JS
    • 장점: 쇼핑몰 만드는 것처럼 크게 변경할 부분이 없는 경우(비슷한 방식을 반복하는 경우)에는 속도가 더 빠르다.
    • 단점: 속도가 느리다. 앞 단계에서 결정된 사항을 바꾸기 어렵다.
    • 3개월 프로젝트 시간이 주어지면, 1개월 기획, 1개월 디자인, 1개월 개발로 나눌 수 있다.
  • ex2) 주로 스타트업 기업에서 사용하는 협업 방식: 애자일(Agile)(기능별로 나누는 방식)
    • 로그인
    • 게임판
    • 점수판
    • 3개월 프로젝트 시간이 주어진다면, 2주 동안 6번 로그인, 게임판, 점수판 기능을 기획부터 JS까지 반복하자.
  • Developer들도 기획이나 디자인 단계에 참여해서 의견을 내고 서로 질문을 주고 받는다.

    • 장점: 개발 단계에서 수정 사항이 생겨도 결정된 사항을 바꾸기 쉽기 때문에 실험적인 도전을 할 수 있다.
      • 제품을 빨리 만들고 수정 사항을 반영해서 바꾸기에 적합하다.
    • 단점: 개발자들이 기획이나 디자인 단계에도 참여하기 때문에 개발자들이 시간을 굉장히 많이 소비하게 된다.
    • 전문 영역이라는 게 부족해지게 된다. -> 그 결과로 제품의 퀄리티가 떨어질 수 있다.
  • 취업 전에 애자일(Agile) 도서를 꼭 1권 이상 읽고 취업할 것을 추천

주니어 개발자가 프로젝트 진행시 주의할 점

  • 프로젝트를 할 때는 해야 하는 일하고 싶은 일을 구분해야 한다.
  • 주니어 개발자 때는 소요 시간을 예상하기 쉽지 않다.
  • 할 일 목록을 쭉 적어놓고 일정을 잡기
  • 자신이 예상한 시간에 X 2 X 3을 해서 예상 시간 산정하기

    • ex) 내 예상으로는 3시간 걸리는 기능이라면 9시간 소요될 것으로 예상하고 일정 잡기
    • 버그를 잡는 데 시간이 오래 걸릴 수 있다. 기술 a를 적용할 수 있다고 생각했는데,
      a를 적용 못해서 기술 b를 새로 배워서 적용해야 하는 경우가 분명히 생긴다.
    • 꼭 해야 되는 일부터 해야 한다.
    • MVP(Minimum Viable Product)(최소 기능 제품)을 먼저 만든 후에 그 뒤에 하고 싶은 기능을 만든다.
    • MVP를 세워뒀다고 해도 시간이 부족할 수 있다.
      항상 플랜 B를 세워둬야 한다.
      이것보다 기능이 적어도 기능이 있어서 클라이언트에게 납품할 수 있는 결과물을 넘겨줘야 하기 때문에 어느 선까지는 꼭 만들 것인지 정해둬야 한다.
  • ex) 목표: 오목 게임

  • 꼭 구현해야 하는 기능
    • 클릭 반응
    • 승자 판별