본문 바로가기

Developer

선배 개발자가 보내준 글. 개발자는...



기본 실력이 뛰어난 개발자일수록(주니어때는 특히) 

1) "특정 모듈을 완벽하게 구현"하려는 경향이 있는데, 

실제로는 2) "전체 시스템이 개괄적으로라도 돌아가게 빨리 만드는게" 훨씬 더 중요하다. 

물론 3) "설계는 잘 하는게" 중요하다.


2번의 중요도가 100이라면, 

3번의 중요도는 50이고, 

1번의 중요도는 10 정도 된다. 

3번은 전체 시스템 자체가 실제로 쓸모있다고 판명된 경우에만 중요해지는데, 그러니까 그 부분에 확신이 크다면 3번에 투자하는게 맞다.


1번은 투자의 대상이라기 보다는 기본 실력으로 커버하는게 맞는 영역이다. 아직 기본 실력이 부족하다면 1번에 투자하는게 맞는데, 이건 (설사 프로젝트의 명시적인 목적은 그게 아니더라도) 무언가를 만드는 과정이라기 보다는 학습 과정이라고 보아야 한다.

이건 내가 TDD 혹은 유닛 테스팅에 대한 강조가 잘못됐다고 생각하는 이유이기도 하다. 

이런 마인드셋은 1번의 중요도가 대단히 큰 것처럼 만들어서 2번, 그리고 특히 3번을 소홀하게 만드는 경향이 있다.


프로그래밍에서 설계란 현실 세계에서의 연애와 비슷하다. 

설계를 책으로 배우는 것은 연애를 책으로 배우는 것과 비슷하다. 

연애를 많이 해본 사람이 연애를 잘하는 것처럼, 새로운 시스템을 많이 만들어본 사람이 설계를 잘한다.


반면에 큰 시스템의 일부만을 작업해온 사람, 또는 몇 년째 하나의 시스템만을 붙잡고 있는 사람은 설계를 잘할 수가 없다. 

설계란 (세상의 다른 많은 일처럼) 시행착오를 많이 겪어야만 잘하게 될 수 있는 일이다.