종이와 펜을 치우고 바로 키보드를 잡는 것

gnujina의 이미지

...이 프로그래밍에 있어서 더 높은 생산성을 가져온다고 생각하시는지 궁금합니다.

저는 당연히 필요한 자료구조를 생각하고 알고리즘 부터 디자인한 후 키워질을 시작하죠.

저에게 다량의 영감을 준 해커와 화가라는 책에서 몇 구절 발췌해봅니다.

-----------------------------------------------------------------
바로 대학에서는 어떤 문제를 풀 때에 그것을 우선 종이 위에서 완전하게 푼 다음 컴퓨터 앞에 앉아야한다고 배웠다. 하지만 나는 프로그래밍을 그런 식으로 하지 않았다. 그 당시 나는 분명히 몇 장의 종이보다는 컴퓨터 앞에서 프로그래밍하는 것을 더 즐겼다.

소설가 화가 그리고 건축가의 작업이 그런 것처럼, 프로그램이란 전체 모습을 미리 알 수 있는 것이 아니라 작성하면서 이해하게 되는 존재이다.

프로그래밍은 무릎을 얌전히 모으고 차 한 잔 마실동안 타이핑을 하며 컴파일러라는 나이든 숙모와 대화를 나누는 것이 아니라, 마음껏 내갈기고 더럽히고 사방에 떡칠을 하며 벽화를 그려내는 것과 같은 것이다.

뛰어난 프로그래머였던 그래이엄은 자기 자신도 프로그래밍을 할 때 키보드를 붙잡고 코딩부터 시작한다고 고백했다. 그가 밝힌 방법은 우선 가볍게 키보드를 두드리면서 코드의 전체 윤곽을 잡고, 다시 처음으로 돌아가서 조금씩 각 부분의 디테일을 살려 나가는 방식으로 프로그램을 작성하는 것이었다. 그는 코딩이 설계에 앞서는 이와 같은 방식을 조금도 이상하게 여기지 않았다. 오히려 그는 모든 예술적 창조가 대개 이와 비슷한 과정을 거치면서 이루어지며 그림을 그리는 과정도 이와 다르지 않다고 말했다. 그리고 미술에서는 그것을 ‘스케치’라는 자연스러운 이름으로 부른다고 지적했다.
-----------------------------------------------------------------

익명 사용자의 이미지

예술가들이 조형물을 만드는 방법에도 뼈대에 살을 붙여 나가는 방법도 있고 큰 덩어리를 깎아 내는 방법도 있죠.

주어진 재료, 환경, 만들고자 하는 대상 등을 고려하여 적절한 방법을 고려하면 되지 않을까요?

익명 사용자의 이미지

고수는 어떻게 해도 상관없습니다. 하수는 종이에 써서, 그려서 모양을 잡고 시작하는게 좋은거죠.

화가 비유를 드는 구절이 인용되었으니 비슷한 얘기를 하면, 꼬마들이 물감가지고 장난친다고 해서 추상미술이라고 인정하지 않아요. 추상화가들도 다 뎃생부터 하면서 기초를 닦은 다음에 자신의 아이디어를 표현하는 방식으로 추상적인 방법을 사용하는거죠. 소동파 얘기 나오면 항상 나오는 수/파/리의 과정이라는게 그런겁니다. 고수가 그런 중간과정을 생략하고 마지막 부분만 가지고 "나는 이렇게 한다"라고 설명한다고 해서 하수가 그거 흉내내면 그냥 웃음거리죠. 또는 천재라서 자기 마음대로 해도 되는 사람이 있는데, 보통 우리같은 범재들이 천재 흉내내면 그냥 바보취급 받는거죠.

semmal의 이미지

실력에 상관없이 코드는 상상력을 방해한다고 생각합니다.

더 나은 상상을 위해서, 코드의 힘을 빌려야 할 경우는 있지만, 그건 이미 첫번째 상상을 끝냈을 때의 이야기지요.

코드부터 잡으면 나무만 보다가 숲을 놓치는 경우가 많다고 봅니다.

------------------------------
How many legs does a dog have?

ifree의 이미지

이런 거침없는 코딩 방법은 소수의 천재 코더들에게나 해당하는 이야기이고,
보통의 코더는 가능하면 키보드에서 떨어져서 생각을 많이 하는게 좋습니다.

winner의 이미지

Coding을 직접 해야 실력이 좋아질 때가 있고, 책을 읽어야 실력이 좋아질 때가 있듯, 생산성도 마찬가지죠. 균형이 중요합니다. 자신에게 부족한 것이 무엇인지, 필요한 것인지 무엇인지 아는 것이 실력입니다.

익명 사용자의 이미지

컴퓨터는 프로그래밍만 하라고 있는게 아닙니다.

컴퓨터를 종이와 팬으로 사용할 수도 있습니다.

세벌의 이미지

용어 질문 드려요. 키워질?

익명 사용자의 이미지

is not.. keywork worriar?

세벌의 이미지

영어라 더 모르겠-.-

sisuc의 이미지

학생 때 교수님이 말씀하셨습니다.

"너희들은 참 좋은 세상에 사는 것이다. 나때는 코딩이 하고 싶어도 학교에 컴퓨터가 한두대 밖에 없어서

하고싶은 코딩을 종이와 연필에 써서 몇번이나 검증한 후 그것을 다시 교수님에게 보여드려 틀린곳은 없는지

재차 확인 받은후 OK사인을 받아야 그제서야 컴퓨터 앞에 앉아서 종이에 쓴대로 코딩을 할 수 있었다"

위의 예로 볼 때

종이에다 먼저 구상하는것은

컴퓨터가 보급되기 전의 코딩방식으로부터

파생되어진 방법이 아닌가 생각을 해봅니다.

그것이 여러 교재에 실려 나오고 예전 선배 프로그래머들이 그렇게 했으니까

그게 정석인듯이 말이죠..

즉, 자기가 편한 방법으로 하면 되지 않을까요..?


저도 먼저 키보드부터 잡는 스타일이지만,

막힐때는 오히려 연필과 종이를 꺼내어 그림도 그려보고 할 때도 있습니다.

위대한 한글

익명_사용자의 이미지

Quote:
종이와 펜을 치우고 바로 키보드를 잡는 것 ...
저는 당연히 필요한 자료구조를 생각하고 알고리즘 부터 디자인한 후 키워질을 시작하죠.

생각하고 디자인을 하는데,. 꼭 종이와 펜이 필요한것이 아닙니다. 저도 가끔 구상이 잘 안떠오를 때, 종이와 펜이 아닌,
키보드와 화면의 메모장에 생각을 쭉 써보고, 그려도 보고, 정리도 합니다.

그게 바로 제 코드의 주석입니다.

구현하기전에 제가 생각한 디자인과 구현하고자 하는 목표를 위에서 설명한같이 화면에 쓰고, 그린 후에,
잘 정리해서 헤더파일등에 주석으로 붙여놓습니다.

그리고, 그 아이디어에 맞춰서 함수 정의등 프로토타입을 정의하죠.
그 후에, 구현을 하는것입니다.
구현하다가 제가 구상한 디자인에 문제가 있다고 느끼거나 수정사항이 필요할 때 마다, 주석도 수정합니다.

구현전에 구상을 하는것은 좋지만, 꼭 종이와 펜이 될 필요는 없습니다.

차라리 주제를

Quote:
코딩을 시작하기전에 구상을 하는것이 좋은가

로 하시면 모두다 당연하다고 대답 할 것입니다.

궁금하신 주제가

Quote:
코딩 전 구상을 위한 도구로 종이와 펜이 효율적인가?

로 하신다면...뭐..개인 취향이죠
snowall의 이미지

저는 대체로 코딩부터 시작하는편이네요. 코딩하다가 이상하면 종이에 써보고 다시 코딩하고...

머릿속에 한국어로 쓰여져 있는 코드를 잊어먹기 전에 목적언어로 번역하는게 일입니다.

피할 수 있을때 즐겨라! http://melotopia.net/b

cleansugar의 이미지

TDD 참고

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com