반응형

좋은 프로그래머가 되는 24가지 방법

http://techit.co.kr/9411


1. 프로그래밍에 열정이 있어야 한다. 열정이 없고 즐기지 못하면 평생 지속하기 어려운 일이다. 지금 환경이 있는 열정도 꺾어버릴 만큼 열악하다면 심각하게 변화를 생각해야 한다.


2. 프로그래밍 기초 원리를 이해해야 한다. 원리를 모르면 근본적인 해결능력이 떨어지고 수준 높은 개발을 하기 어렵다.


3. 문제 해결 능력을 키워야 한다. 개발자의 가장 중요한 핵심 역량이다.


4. 창의적인 사람이 되라. 대부분의 좋은 해결책은 창의력에서 나온다.


5. 다른 사람의 소스코드를 이해할 수 있는 능력을 키워야 한다. 다른 사람의 소스코드에서 많은 것을 배울 수 있다.


6. 수학을 잘 해야 한다. 수학을 못하면 값싼 쉬운 개발 밖에 못한다. 수학에 관심을 가지고 재미를 느껴보는 것도 한 방법이다.


7. 좋은 커뮤니케이션 스킬을 갖도록 노력해야 한다. 프로그래밍은 컴퓨터와 얘기하는 것이 아니고 사람들과 얘기하는 것이다.


8. 협업 능력을 키워라. 다른 사람과 일을 나눠서 할 수 있어야 내 몸값이 비싸진다. 혼자 일하는 것만 잘하면 평생 혼자 일해야 한다.


9. 논쟁(debate) 능력을 키워야 한다. 고급 개발자가 될 수록 토론하는 일이 늘어날 것이며, 좋은 토론이 좋은 소프트웨어를 만든다.


10. OOP를 완전히 이해해야 한다. OOP는 좋은 Architecture의 핵심이고, 협업능력을 키울 수 있게 해준다.


11. 남이 이해할 수 있는 문서를 작성할 수 있어야 한다. 문서 작성은 평생 따라다니는 중요한 업무이다. 문서작성을 못하는 개발자는 값싼 개발밖에 못한다.


12. 적어도 한가지의 개발언어는 완전히 마스터를 해야 한다. 마스터한 개발언어로는 어떠한 문제도 풀 수 있어야 한다. 모든 개발언어는 원리가 비슷하므로 다른 개발언어도 쉽게 배울 수 있다.


13. 적어도 한가지의 스크립트 언어를 구사할 수 있어야 한다. 간단한 툴은 쉽게 만들어 쓸 수 있다. 스크립트 언어로 쉽게 할 수 있는 일을 C언어로 작성하고 있다면 당장 Python을 공부해라.


14. 비즈니스를 이해해야 한다. 훌륭한 아키텍트가 될 것이다. 좋은 Architect는 비즈니스 전략에서 나온다. 비즈니스에 관심이 없다면 당장 돌아가는 Software는 만들 수 있어도 좋은 Architecture는 못 만든다.


15. 주변에 나보다 훨씬 뛰어난 프로그래머를 둬라. 끊임 없이 배울 수 있다. 주위의 뛰어난 개발자를 경쟁상대라고 생각하지 말고 스승으로 생각해라. 그도 나를 스승으로 생각할 것이다.


16. 끊임 없이 새로운 기술을 익혀라. 전쟁에서 쓸 무기가 많아질 것이다. 몇 가지 소수의 익숙한 기술만 고집하면 도태될 수 있다.


17. 습관적으로 주석을 달아야 한다. 주석은 남을 위해서 다는 것이 아니고 프로그래밍의 일부이다. 주석이 없어도 이해가 가능한 코드를 작성하는 것이 좋지만 그래도 주석은 꼭 필요하고 Doxygen등의 주석을 꼭 이용해라.


18. 남이 이해하기 쉬운 코드를 작성해야 한다. 나중에 내 발목을 잡지 않을 것이다. 내가 좀더 위로 올라가기 위해서는 아래가 자유로워야 한다.


19. 리뷰와 친해져야 한다. 평생 리뷰를 하며 사는 것이 프로그래머의 인생이다. 리뷰를 하지 않으면 발전하기 어렵다. 리뷰는 지금 프로젝트의 문제도 해결해줄 뿐만 아니라 내 프로그래머 인생의 가장 좋은 스승이다.


20. 건강을 유지해라. 건강을 잃으면 실력이고 뭐고 다 필요 없다. 야근도 좋지만 좋은 음식을 먹고 꾸준히 운동도 하자.


21. 좋은 의자를 사라. 건강을 지켜주고 효율을 높여준다. 프로그래머에게 의자는 침대보다 오래 머무르는 곳이다. 비싸고 좋은 의자일수록 좋다.


22. 인생을 즐길 줄 알아야 한다. 프로그래머로 오래 지속하고 싶으면 인생 자체를 즐기는 다양한 방법을 익혀야 한다.


23. 소프트웨어 공학을 익혀라. 주먹구구식 개발에서 벗어나게 해주고 프로그래밍이 더 이상 노동이 아니고 즐겁게 개발을 하게 해준다. 스펙과 설계문서를 작성하고 좋은 개발시스템하에서 적절한 프로세스를 적용해서 개발하는 것이 가장 빠르게 소프트웨어를 개발할 수 있는 방법이라는 것을 경험하고 깨달아야 한다.


24. 높은 연봉을 받을 수 있도록 꾸준히 노력하라. 위의 23가지 방법들을 따라 한다면 저절로 연봉이 높아질 것이다.좋은 프로그래머가 되기 위해서는 주변의 환경도 중요하지만 본인의 의지나 습관도 매우 중요하다. 주어진 환경에 수동적으로 적응하기 보다는 좋은 프로그래머가 되기 위한 자신만의 방법들을 만들어 나가면 좋겠다.



반응형
반응형

왠만하면 후기 안쓰는데. 책 초반부의 인용구만 조금 정리해 보겠다.

알지 못하며 그 사실도 모르는 자, 바보로다. - 그를 멀리하라!
알지 못하나 그 사실을 아는 자, 못 배운 자로다. - 그를 가르치라!
알고 있으나 그 사실을 모르는 자, 잠든 자로다. - 그를 깨우라!
알고 있으며 그 사실을 아는 자, 깨우친 자로다. - 그를 따르라!
- 이자벨 버턴 부인(Lady Isabel Burton)(1831~1896)이 저서 "The Life of Captain Sir Richard F.Burton" 중에서 인용한 아랍 속담

이 책의 목표는 우리가 전문 소프트웨어 개발이라는 분야의 새내기로서 맞닥뜨리게 될 힘든 결정의 시기에 도움을 주고자 하는 것이다.
초년병 시절에 봤었더라면 조금 더 도움이 되지 않았을까 하는 생각이 드는군.

패턴 언어는 그것을 사용하는 각 사람에게 새롭고 독특한 건물을 무한히 다양하게 창조할 수 있는 힘을 부여한다. 이것은 그가 통상적으로 사용하는 언어가 그에게 무한히 다양한 문장을 창조하는 힘을 주는 것과 마찬가지다.
- 크리스토퍼 알렉산더, "The Timeless Way of Building", p.167

소프트웨어 장인정신 선언

뜻을 품은 소프트웨어 장인으로서, 우리는 소프트웨어 개발을 수련하고 다른 이들의 학습을
돕는 것으로 전문적인 소프트웨어 개발의 기대치를 높이고 있다. 이와 같은 작업을 통해 우리는 아래와 같은 결론에 이르렀다.

   우리는 동작하는 것을 넘어서 잘 짜인 소프트웨어에,
   변화에 대응할 뿐 아니라 지속적으로 가치를 더하는 일에,
   개인들 그리고 그 사이의 상호작용에 더해서 전문가들의 공동체에,
   고객과의 공동 작업 뿐 아니라 생산적인 파트너십에 가치를 둔다.
   즉, 우리는 왼편의 항목을 추구함에 있어서 오른편의 내용이 필수불가결함을 알게 되었다.

-------------------------------------------------------------------------------------------------------------------------

견습과정은, 기예를 통달하겠다는 필생의 열정을 서서히 불어넣는다는 점에서 중요하다.
이는 끊임없이 배우고자 하는 열정을 점점 쌓이게 하며, 그런 과정 속에서 견습생은 탁월한 개발자가 될 수 있다. - 피트 맥브린, "Software Craftsmanship"


견습과정이란 무엇인가?
학습 상황이란 본질적으로, 자기가 무엇을 하고 있는지 정말로 알고 있는 누군가르 ㄹ도우면서 배워가는 상황이다. - 크리스토퍼 알렉산더 외, "A Pattern Language", p.413

우리는 견습 개발자들을 양성하는 데 필요한 시간을 감수해야 한다. 왜냐하면 우리가 당면한 문제는 희소함이 아니라 풍부함에 있기 때문이다. (중략)
오늘날 개발자들은 필요 이상으로 많지만, 좋은 개발자는 부족하다.
- 피트 맥브린, "Software Craftsmanship", p.93

특정한 기술 분야에 집착하지 말고, 개별 상황에 알맞은 해법을 고를 수 있도록 광범위한 배경 지식과 경험을 충분히 쌓아두어야 한다. - "실용주의 프로그래머", p.xviii

첫 번째 언어
훌 륭한 표기법은 두뇌로부터 모든 불필요한 일을 덜어줌으로서 좀 더 높은 수준의 문제에 자유롭게 집중할 수 있도록 해주면, 실제로 인류의 지적 능력을 고양시킨다. 어떤 업계든 그 속에서 쓰이는 기술적인 용어들은 사용법을 훈련 받은 사람들이 아니면 이해하기 힘든데, 이 용어들이 어렵기 때문에 그런 것은 아니다. 오히려 그런 용어들은 언제나 일을 더 쉽게 만들 목족으로 고안되어 왔다.
 - 알프레드 노스 화이트헤드, "An Introduction to Mathmatics"

흰 띠를 매라!
대개 발걸음 하나하나마다 새로 시작한다는 느낌이 들어야 한다.
이것이 초심이며, "되고 있음"의 상태다.
- 순류 스트키(Shunryu Suzuki), "Zen Mind, Beginner's Mind"
 
위 로 오르기 위해서는 당신이 이미 잘 하는 것을 내려놓아야 한다. 그리고 골짜기로 미끄러져 내리기도 하면서 단단히 디디고 선 곳을 떠나야 한다. 만약에 이미 잘 하는 것을 내려놓지 않는다면, 꾸준히 진전할지는 몰라도 고지에는 결코 오를 수 없을 것이다.
- 제리 와인버그, "Becoming a Technical leader", p.42

열정을 드러내라

장 인들은 소프트웨어 개발이라는 기예를 기꺼이 배우고자 하는 열성적인 견습생만 채용한다.  견습생들은 소프트웨어 장인정신 개념에서 필수적인 부분이다. 그들은 일에 대한 의욕과 배움에 대한 추진력을 가지고 와서는 다른 모든 이들에게 퍼뜨리기 때문이다.
- 피트 맥브린, "Software Craftsmanship"

전반적인 이해력은 서로 다른 여러 수준의 경험이 상호 연관될 때 더욱 높아질 수 있다. 그 무엇도 당연하게 여기지 않는 신참들과, 알 것은 다 안다고 생각하는 고참들이 더 자주 밀접하게 소통할 때가 거기에 해당된다.
- 칼 와익,칼린 로버츠, "Collective Mind in Organizations", p.366

견 습생은 장인들로부터 배움을 얻지만, 장인도 견습생에게서 배운다. 열정이 있는 초보자는 장인을 스스로 일신하게 할 뿐 아니라 외부에서 들여온 새로운 아이디어로 장인의 의욕을 불러일으킨다. 잘 선택된 견습생은 마스터마저도 더욱 생산적이 되게 할 수 있다.
- 피트 맥브린, "Software Craftsmanship"

구체적인 기술
지식을 가진 것, 그리고 그 지식을 써서 소프트웨어를 만들어 내는 역량과 실무 능력을 갖춘 것은 다르다. 여기에 장인정신의 역할이 있다.
- 피트 맥브린, "Software Craftsmanship"

무지를 드러내라
내일 나는 더 어리석게 보일 필요가 있으며, 거기에 대한 느낌도 더 나아질 걱이다. 가만히 있으면서 일이 어떻게 돌아가나 살피는 것은 별로 효과가 없는 것 같다.
- 제이크 스크럭스(Jake Scruggs), "My Apprenticeship at object mentor"

무지에 맞서라
만 일 우리가 독립성을 가치 있게 여긴다면, 현재 체제의 지식, 가치, 사고방식에 내 생각을 맞추려는 경향이 점점 늘어가는 것이 불안하다면, 우리는 자신의 유일함에 대해 스스로 방향을 잡아가는 법에 대해, 자발적으로 학습하는 법에 대해 배울 수 있는 환경을 조성하고자 할 것이다.  - 칼 로저스(Carl Rogers), "On Becoming a Person"

깊은 쪽
무참한 실패를 맛본 적이 한 번도 없다면, 당신은 뭔가 가치 있는 일을 시도했던 적이 한 번도 없었다고 봐야 한다.
 - 크리스토퍼 호킨스, "So You Want To Be a Software Consultand?"

한발 물러서라
당 신이 가려는 곳을 바라본 다음에 지금 어디쯤 있는지를 보면, 항상 터무니 없다는 생각이 들 겁니다. 그러고 나서 당신이 걸어왔던 길을 돌아보고 있노라면 그 속에서 어떤 패턴 같은 것이 드러날 거예요. 그 패턴으로 당신의 앞길을 비추어 본다면, 가끔은 그 무엇인가를 찾아낼 수 있을 겁니다.
 - 로버트 퍼식(Robert Pirsig), "Zen and the Art of Motorcycle Maintenance"

반응형

+ Recent posts