Good programmer 1 - 내가 관리할 수 있는 코드량은?
몇 달 전에 누가 나에게 이런 질문을 했습니다.
- ( )( )( )님 코인 만들 줄 아십니까?
- 아니요
- 개발자 아닌가요?
- ㅠ.ㅠ
안 만드는 아니 못 만드는 이유는 수천 가지가 넘기 때문에,
누군가 나에게 "당신은 조잡한 코드를 작성하며, 당신은 초급에서 벗어나지 못한다"라고 한다면, 화가 날 것입니다. 이는 마치 "넌 맞춤법도 못 맞추냐?" 내지는 "넌 음정하나 못 맞추냐?"라는 말로 들릴 수 있기 때문입니다. 도미쏠 할때 음정을 틀리는 사람은 별로 없을 겁니다. 하지만 "햇볕은 쨍쨍 모래알은 반짝" 은 좀 다르죠. 아이러니하게도 잘 맞추려고 할 수록 음정은 이상해지고, 좋은 코드를 내려고 할 수록 엉성한 것만 보입니다.
코딩의 질과는 다르게, 이제 양에 대한 이야기를 해 보겠습니다.
컴퓨터 소프트웨어 전공을 했다면,
대학교 1학년때 2000라인을 넘어야 하며,
대학교 4학년때라면 20000 라인 정도의 코드를 작성해 본 경험이 있어야 합니다.
그리고 3-4명이 같이 프로젝트를 진행하여 20000 라인 정도의 코드를 생산해 냈다면 좋은 경험이 될 것입니다.
대학시절에 이정도 작성하면 졸업시에 이미 초급은 아닙니다.
왜냐하면 스킬 향상없이 이 정도 코드량을 만들고 코드가 동작하는 것은 기적에 가깝기 때문입니다.
그리고 이정도 코드량을 통해서 얻는 것이 없다면 죄송한 말씀이지만 적성에 안맞는다고 볼 수 있을 것입니다.
프로젝트가 성공하지 않았다 치더라도, 그 정도까지 가 본 것으로도 좋은 경험이 될 수 있습니다.
프로젝트가 항상 성공하면, 그건 조작이지 성공이 아닐 겁니다.
아이러니하게도 국내 프로젝트는 거의 100% 성공하며, 모든 목표도 100% 달성합니다.
실패를 통해 성공에 다가갈 수 있다면 100% 라고 보아도 괜찮겠지만 말입니다.
몇년전에 본 블로그에서 흥미로운 글을 하나 보았고 여기에 소개합니다.
https://www.teamten.com/lawrence/writings/norris-numbers.html
My friend Clift Norris has identified a fundamental constant that I call Norris’ number, the average amount of code an untrained programmer can write before he or she hits a wall. Clift estimates this as 1,500 lines. Beyond that the code becomes so tangled that the author cannot debug or modify it without herculean effort.
번역해 보면,
내 친구 Norris 는 어떤 기본적인 값에 대해 정의했는데, 나는 이것을 Norris's Number 라고 부른다. 그 값은 숙련되지 않은 프로그래머가 장벽을 만나기 전까지 작성할 수 있는 평균적인 코드량인데, Clift Norris 는 1,500 라인이라고 추정하였다. 그 이상의 코드를 작성하면, 코드가 얼키고 섞여서 매우 큰 노력(헤라클레스의 힘에 비유) 없이는 디버깅하거나 수정하기 어렵다.
이후의 이야기는 대략 다음과 같습니다만, 재밌는 이야기가 많으니 가볍게 읽어 보십시오.
- 2만, 20만 라인을 극복하기 위해서는 스킬의 전환이 필요하지만, 가르치기는 어렵다. (Dijkstra)
- 모든 코드는 잠재적인 버그를 가지고 있으며, 간단한 것이 최고다.
- 교과서에서는 수백라인의 예제만 보여줄 분, 3만 라인의 코드를 보여주는 교과서는 없다.
- 마지막으로 순수 함수형 스타일이 이 20만 라인의 장벽을 뛰어넘도록 도와주리라 기대한다고 적혀있는데 저도 얼마간은 동의합니다.
Good Programmer 라는 제목으로 몇개의 글을 더 작성하려고 합니다.
주제는 다음과 같습니다만, 제목은 다소 바뀔 소지가 있습니다.
- 내가 관리할 수 있는 코드량은?
- HOWTO be Professional
- Practice 프랙티스 1
- Practice 프랙티스 2
잘 읽고 갑니다. 대학교 때 논게 후회가 많이 되네요..
팔로우하고 갈게요!
대학때 안 논 사람이 어디있나요?
위에 올린 이야기는 다소 이상적인 이야기인 것 같네요.
나중에 취미로 다시 도전해 보세요...
다음 글이 기대됩니다. 1~2만줄은 커녕 몇백줄만 되도 햇갈리거든요... ㅠ.ㅠ
무심히 하면 됩니다. 욕심내지 말고....
그 번뇌가 ... 끊어지질 않습니다. ㅋㅋㅋ
프로그래머로서 흥미로운 글입니다.
요즘에 저도 이런 문제는 아닌데.. 어떤 계단에서 막혔다는 게 느껴져용
그걸 넘으면 좀 더 고수가 될 것 같은...데
파워업하고싶어!
여행을 추천합니다.
패키지만 잔뜩 만들고.. 막상하려고 하면 뒤죽박죽.. 코딩은 노력이 99%라고 하는데 열심히 해봐야할거 같습니다.
리팩토링이라는 말을 들어보셨는지요?
간단간단하게 직관적으로 코딩하자는 python이 인기를 끄는 요즘 생각해 볼만한 주제네요. 팔로우 맺고 갑니다~
간단간단하게 코딩하는 것은 매우 바람직한 일입니다.
만일 그렇게 하고 있다면 "조금 더 나아가기"를 시도할 때입니다.