프로그래머 지망생에게 드리는 충고

반응형

출처 : http://blog.naver.com/itioma/40031775262

지금까지 공부하면서 느낀 점을 말하려고 합니다.

이제 막 이 일에 발을 들인 분들에게 하는 이야기이니

이미 현역에 종사하시는 분들은 이 글을 읽을 필요 없습니다.

 

프로그래밍 스킬에 대한 얘기는 치워버리고

바람직한 자세에 대한 말만 하겠습니다.

 

 

 

1. 자기를 비하하지 마라.

 

   "제가 초보라서.. ㅠ.ㅠ"

   "저 혼자선 아무리 해도 안되네요.. 고수님들아 도움졈"

   이런 말 하지 마라. 자신의 무능력을 드러내는 것 외에 아무 도움도 되지 않는다.

   설마 답변해줄 누군가의 동정심을 유발하기 위해서라면,

   동시에 누군가의 답변은 영원히 듣지 못하게 된다는 걸 기억해라.

   (예를 들자면 나같은 사람.. 나는 자비가 없다. 그리고 징징대는 사람을 싫어한다.)

   (오죽 싫어하면 이게 1번일까... 흠흠)

   차라리 거만해져라. 모르는것도 대충 살펴보고 아는척 하면서 잘난척도 해봐라.

   아기처럼 손가락 빨면서 눈치만 보고 있는 것보단 낫다.

   거만떨다가 초고수를 잘못만나 무참하게 깨진다 해도 최소한 좋은 경험은 될 것이다.

 

   아, 두번째 예문이 잘못된 이유는 '아무리 해도'에 있다.

   대체 얼마나 노력해봤길래 '아무리 해도'가 나오냐.

   한달간 식음을 전폐하고 컴퓨터랑 씨름하고 있는 중인가? 아니라면 그 말은 쓰지 마라.

 

 

2. 시간을 넉넉히 투자해라.

 

   프로그램을 짜다 보면 수많은 문제가 생긴다.

   당신이 이제 막 입문한 사람이라면 코드 한 줄을 짤때마다 에러가 10개씩 날 수도 있다.

   그럴 때 당신은 어떻게 하는가?

   만약 잽싼 손놀림으로 익스플로러를 켜서 유명사이트마다 도움요청글을 복사해 붙이고 있다면

   당신은 실격이다. 그냥 프로그래머 하지 마라.

 

   원인모를 에러가 생겼다면 당신 자신에게 최소한 한나절의 시간은 주어라.

   소스를 이잡듯이 뒤지고 머리를 쥐어뜯어 가면서 모니터를 보고 으르렁거려라.

   옆에서 볼때 미친놈처럼 보여도 상관없다. 프로그래밍에 미쳐본 적이 없다면 역시 실격이니까.

 

   에러는 없는데 뭔가 새로운 접근법이 필요하다면

   최소한 3일의 시간은 주어라.

   그 3일 동안 혼자서 문제를 해결하지 못한다면 당신 목이 날아간다고 생각해라.

   고수 한명 붙잡고 일일이 물어보고 싶은 생각이 굴뚝같겠지만, 절대로 그러지 마라.

   인터넷을 쓴다면 오로지 검색만 해라. 모든 자료를 당신 스스로 읽고 분석해라.

 

   그럴 만한 시간의 여유가 없다면? 실격이다 실격!

 

 

3. 모니터 앞에 없는 시간을 더 소중하게 여겨라.

 

    잠깐 산수를 해보자. 당신의 영문타자속도는 분당 몇타인가?

    그리고 당신이 오늘 짜야 할 소스코드의 길이는 대략 얼마?

    그럼 필요한 소스를 타자치는데 들어갈 시간은 얼마?

    그리고 당신이 오늘 깨어있는 시간은 얼마? (16시간은 되지 않나?)

 

    두 시간을 비교해봐라. 놀랍지 않은가?

    당신이 오늘 모니터 앞에 앉아 프로그램을 입력하는데 필요한 시간은

    당신에게 오늘 주어진 시간의 1%도 채 안될것이다.

    (아니라면 다때려치우고 타자연습부터 하기바란다.)

    그럼 나머지 99%의 시간에 당신에게 가장 필요한 것은 무엇인가?

    키보드와 모니터인가? 아니다. 당신의 두뇌이다.

    생각해라.

    밥을 먹으면서, 길을 걸으면서, 버스를 타면서, 학교수업을 들으면서.

    아무튼 깨어있기만 한다면 계속 생각해라.

    무엇을? 당신이 오늘 짜야 할 소스코드의 내용을.

    필요하다면 종이와 펜을 들고 다니면서 실컷 낙서해라.

    그 소스를 컴퓨터로 옮기는데 필요한 시간은 하루의 1%면 충분하다.

 

    (거의 유일한 예외는 횡단보도를 건널때이다. 이때는 딴거 생각하지 말고 차조심.)

 

 

4. 자기가 모르는 분야를 비난하지 마라.

 

    (1번과 반대되는 내용이니까 1번에 해당된 사람이라면 이건 볼 필요 없다.)

    포럼을 둘러보다 보면 어떤 언어나 이론의 장단점을 가지고 싸우는 사람이 있다.

    당신이 구사하는 프로그래밍 언어가 세상에서 제일 잘난 언어라고 생각하는가?

    흠, 뭐 그렇다 치고, 그럼 당신이 구사하지 않는 프로그래밍 언어는

    뭔가 좀 구리고 뒤떨어지는 언어라고 생각하는가?

    아 참, '구사하지 않는 것'인가 '구사하지 못하는 것'인가?

    당신이 '초보들이나 쓰는 것'으로 비하하고 있는 그것에 대해

    얼마나 알고 있는가?

    그 분야의 전문가들에게 어디가 어떻게 잘못되었는지를 일목요연하게 짚어서

    반론의 여지가 없는 논설과 테스트 결과를 보여줄 수 있는가?

    그럴 수 없다면 당신은 한낱 키보드 워리어일 뿐이다.

   

    위에서 '프로그래밍 언어'를 '프로그래밍 패러다임'이나 '특정 라이브러리' 등등으로

    바꿔서 읽어보는 것을 잊지 말기 바란다.

    그리고 자기가 잘 모르는 것은 일단 적대시하고 보는것이 인간의 본능이란 것도.

    아는 것이 힘이요 평화이다.

 

 

5. 겉모습에 집착하지 마라.

 

    확실히 이것저것을 알고있으면 자랑할 거리도 많고 말을 할 때도 자세가 나온다.

    그러나 프로그래밍의 본질은 컴퓨터와 대화하는 것.

    컴퓨터에게 '나는 이런 라이브러리도 알고 저런 툴도 안다?' 하고 자랑해서 뭐할텐가.

    지금 당신이 하는 프로젝트에 가장 필요한 지식이 무엇인지 파악하고,

    일단 그것부터 집중해서 익혀라.

    당신이 프로그래밍을 시작한지 2년 이상이 지나지 않았다면

    당신에게 가장 필요한것은 언제나 알고리즘, 자료구조 등등의 기본기와 코딩경험이다.

    물론 삐까번쩍한 그래픽 엔진이나 남들이 모르는 API 함수를 살짝 배워서

    일단 겉보기에 그럴싸한 프로그램을 만들면 기분이 좋겠지.

    그러나 비싸고 좋은 검(보석도 좀 박히고 말야..)을 쓴다고 검술이 향상되지는 않는다.

    당신에게 가장 중요한 것은 목검, 혹은 나뭇가지만 들어도 좋으니 꾸준히 초식을 연마하는 것.

    명검을 구입하는 것은 일단 고수로 성장한 다음에 생각해도 늦지 않다.

 

 

6. 이 죽일놈의 영어

 

    영어를 못하시나요? 그리고 잘하고 싶은 마음도 없나요? 그럼 실격.

 

    아니 나한테 뭐라고 하지 마시고 일단 당신이 짜고 있는 소스를 보라니깐요.

    거기 적혀있는 단어들은 무슨 언어인가요? 영어 아닌가요?

    혹시 변수명을 어떻게 정해야 할지 몰라 a, b, c, d 순으로 붙이고,

    입력함수는 무조건 input(),

    출력함수는 무조건 print(),

    물체를 이동하는 함수는 move().

    이렇게 이름짓고 있지는 않나요?

    그렇다면 당신은 실제로 입력함수, 출력함수, 이동함수밖에 못만드는 프로그래머가 됩니다.

 

    그보다 복잡한 일을 하는 함수를 만들자니 어떻게 이름을 지어야 할지조차 모르겠나요?

    영어를 알기쉽게 구사하는 쪽엔 도통 소질이 없으니

    일단 코드는 동작만 잘되도록 암호같이 짜놓고 한글주석을 들입다 붙여대지는 않나요?

    그럼 외국 프로그래머들이 갓 작성한 싱싱한 공짜 엑기스 팁들도 못보시겠네요.

    어익후! 에러메시지가 뜨면 이게 무슨 에러인지도 못알아보겠네요?

    프로그래머에게 영어는 필수입니다.

 

 

7. 아무것도 외우지 마라.

 

    외우기 보단 이해를 해라... 뭐 이런 정도의 차원을 넘어서,

    진짜로 아무것도 외우려 하지 마라.

    눈앞에 컴퓨터 관련 책이 있다. 여기 있는 내용들을 내가 알아야 돼. 어떻게 하지?

    처음부터 끝까지 순서대로 읽으면서 밑줄 좍좍그어서 다외우려 든다면 당신은 하수다.

    고수들은 책이 주어지면 그 책의 대략적인 구조와 목차만 파악해둔다.

    그리고는 책꽂이에 도로 꽂아버리지.

    왜냐? 당장은 필요없으니까.

 

    컴퓨터를 갖고놀다가 문제가 생겼을 때

    하수는 "아 이거 전에 외웠는데! 젠장 까먹었어!!" 하고 울부짖지만

    고수는 "이 내용은 어느 책 몇페이지에 있지. 낄낄" 하고 바로 찾아서 해결해낸다.

 

    한줄요약하자면 이렇다.

    "니 책 누가 안뺏어가니까 요점만 파악하고 필요할 때 언제라도 다시 봐 ㅇㅋ?"

 

    그러나 이 책은 빌린 책이라서 언젠가 돌려줘야 한다면 좀 난감하다.

    필요한 책은 사서 보라는 말이 괜히 있는게 아닌것이다.

 

    그리고 이 팁을 수행하기에 가장 큰 난관이 여러분에게 있다는 것을 나도 잘 알고있다.

    학교시험이지. 책을 통째로 외우지 않고서는 좋은 성적이 나오지 않는 우스꽝스런 시험.

    그래서 나는 시험을 오픈북으로 보는 교수를 존경한다.

 

    아, '책'은 '웹사이트'로, '책꽂이'는 '즐겨찾기'로 바꿔서 한 중간까지만 다시 읽어봐라.

 

    (추가: 사실 오해의 여지가 있는 말인데, 기초문법까지도 외우지 말란 소리는 아닙니다. ^-^;)

 

 

 

기왕이면 10개 채우려고 했는데

행운의 숫자 7이 뭔가 있어보이는거 같아서 이만 씁니다.

그럼 수고.

링크 허용되어 있으니까 필요하면 링크를 사용하세요.

저는 블로그 폭파하는 일 없으니 안심하셔도 됩니다.

'My Life > Good Writing' 카테고리의 다른 글

천재의 노력  (0) 2009.07.20
레오나르도 다빈치  (0) 2009.07.16
목숨을 걸어도 사람은 쉽게 죽지 않는다.  (2) 2009.07.16
에디슨  (2) 2009.07.16
강수진  (0) 2009.07.16
TAGS.

Comments