이 글은 개발자들이 성장하면서 겪는 어려움을 적은 글이다. 참 길다. 그리고 좀 뒤에는 전문적인 용어도 조금 나온다. 급한 분들은 다 skip하고 저 아래 그림을 일단 보시고, 그림 다음에 있는 각 단계별 설명에서 각 문단의 첫번째 문장 정도를 훑고 넘어가면서 공감 또는 이해를 해주시면 감사하겠다.

---

서론: 소프트웨어는 이제 매우 중요해졌다. '이제'라고 하기엔 그 중요성이 너무 늦게 발견되었지만 말이다. 누구나 소프트웨어를 배우는 것이 좋겠다고 한다. 그 이유는 예전에 썼던 글에서 이야기했다.

     왜 모두가 소프트웨어를 배워야 하는가? <-- CLICK

모두가 소프트웨어를 배워야 한다는 것은 모두가 개발자가 되어야 한다는 뜻은 전혀 아니다. 가벼운 코딩을 통해 소프트웨어를 경험하는 것은 모든 사람이 발레나 심각한 요가 자세가 아닌 스트레칭을 배우는 것과 비슷하다. 스트레칭을 통해 있는지도 몰랐던 근육들이 내 몸 안에서 움직이고 있다는 것을 느끼는 것처럼 누구나 소프트웨어를 배우고, 가능하면 코딩도 해봐야, 그토록 중요하다는 소프트웨어가 뭔지 몸으로 느껴보고, 소프트웨어 개발자들과의 소통 능력을 키우기 위함이다.

그렇다면 소프트웨어 개발자가 되는 것은 어떻게 다른가? 개발자란 소프트웨어가 결국 현실화하려는 가치를 코딩이라는 도구로 구현하는 사람을 말하며, 대개는 그것을 직업으로 삼는 경우를 특히 의미한다. 그런데, 좋은 훌륭한 개발자가 되기는 쉽지 않다.

프로그래머와 개발자는 어떻게 다른가? 라는 질문도 흔히 한다. 내 답은, 프로그래머는 프로그램을 어떤 이유에서든 짜는 사람을 말하고, 개발자는 고객이 있는, 즉 의식적으로 사용자를 고려하면서 프로그램을 짜는 사람을 말한다. 학교에서 주어진 프로그래밍 과제를 하면서, 또는 책에 있는 연습 문제를 풀면서 프로그램을 짜는 학생들을 개발자라고 부르기 어렵다. (이 해석에 대해 논란이 있을 수 있다.)

이 글에서는 흔히 개발자가 밟는 발전 단계를 이야기하고