메뉴 건너뛰기

박영식 홈페이지

[도서] 코딩호러의 이펙티브 프로그래밍

lispro062015.10.23 00:37조회 수 172댓글 0

    • 글자 크기

사람들은효과적으로 글을 쓰는 방법을 익히면서 평생을 보낸다. 이 과정에는 속임수가 없다. 글을 쓰는 능력은 돈을 주고 살 수도 없다. 스스로 열심히 익히는 방법 외에는 다른 방법이 없다.


바로 그렇기 때문에 글을 쓰는 것을 두려워하는 사람들은 블로그를 시작해야 한다.


그것은 일종의 운동과 같다. 아무리 몸매가 엉망인 사람이라도 매주 몇 번씩 운동을 열심히 하다 보면 몸매가 차츰 나아지기 마련이다. 자신의 블로그에 짧은 글이나마 일주일에 몇 차례씩 글을 올리면 글쓰기 능력도 차츰 나아진다. 글을 쓰는 것이 무서워서 글쓰기를 회피하면 엉망인 몸매로 평생을 살아가야 한다. 30쪽


초보 프로그래머 혹은 실력은 있지만 열정이 부족한 프로그래머는 원격근무를 하면서 성과를 내기가 어렵다. 적어도 전형적인 관리자나 투덜거리는 팀 리더가 그들의 목 뒤에 콧김을 내뿜지 않으면 말이다. 상처에서 피 대신 1과 0이라는 비트가 흘러내리지 않는 사람, 혹은 스스로 성과를 낼 수 있는 사람이라는 확실한 증거가 있는 사람이 아니라면 그런 사람과 원격근무를 통해 일할 생각은 하지 않는 것이 좋다. 163쪽


사용자는 미쳤다. 자동화된 테스트 스위트는 실제 베타 테스터들이 현실 세계에서 수행하는 베타 테스팅에 미치지 못한다. 사용자는 예측 불가능하기 때문이다. 사용자들은 자기가 선호하는 코드의 경로를 갖기 마련이다. 사용자들은 자신의 PC에 이상한 소프트웨어를 설치해 놓고 있다. 사용자는 미쳤다. 여기에 논쟁의 여지가 없다. 이러한 사용자들에 비해 컴퓨터는 지나칠 정도로 이성적이다. 293쪽


당신의 애플리케이션이나 웹사이트가 사용자의 행동을 유용하고 의미 있는 방식으로 수집하게 만들어라. 사용자의 피드백만 듣고 행동을 결정하지 말아야 한다. 사용자가 제공하는 피드백에 연결 지을 수 있는 실제 행동 데이터를 반드시 가지고 있어야 한다. 사용자의 피드백을 무시하는 것은 궁극적으로 당신을 실패로 몰아넣을지도 모른다. 하지만 모든 사용자의 요청에 맹목적으로 반응하는 것은 당신을 확실한 실패로 몰아 넣는다. 316쪽


사용자는 정말 "왜 그렇게 한 거지? 제대로 정신을 갖고 이런 행동을 한 것인가?"라는 생각이 들 만한 행위를 한다. 그래서 입력에 대한 로그를 수집하는 건 참으로 중요하다. 이미 그것을 하고 있는 나로써는 상당히 흥미로운 대목이었으며, OS와 제조사에서 백그라운드 작업으로 로그 수집을 하는 것에 대해 조금 더 잘 이해하게 되었다. 그러나 몰래 수집하는 듯한 느낌을 줄이기 위해, 사용자 정보를 가져가는 행위는 조금 더 공개적으로 하면 좋겠다.

lispro06 (비회원)
    • 글자 크기
[도서] 녹지대 (by lispro06) [글쓰기] 나는 테스터다. 단위 테스트는 지양한다. (by lispro06)

댓글 달기

[도서] 녹지대2

[원문보기]

"알어. 하지만 이야기란 다 소용없이 거짓말만이 필요하지. 세상이 심심하니까."

12쪽


"법적으로 부인의 이림이 허용돼 있죠. 그것은 남이 말하는 명칭입니다. 저 자신하고는 아무 관계가 없죠."

81쪽


자고로 변화는, 교통사고를 제외하고, 다 천천히 오너리라. ~중략~

"물이 얼기까지 온도가 내려가는 시간은 오래 걸리지만 얼어버리는 것은 순식간에 온다고. 물이 끓을 때도 마찬가지 원리라나? 다 그러가 부지?

132쪽


이제는 눈을 감고 거리를 거닐어도 봄은 피부에 완연하다.

236쪽


이제는 눈을 감고 거리를 거닐어도 겨울은 피부에 완연하다. 춥다.

[영화] 라푼젤, 사도

[원문보기]

라푼젤에 노파는 정말 대응되는 인물이 있다. 탑 밖을 나가지 못하도록 하고 거짓을 이야기하는 노파.


라푼젤은 국민인가?


사도세자도 뒤주에 갇히고.


나도 사람들의 생각을 벗어나지 못하여 죽어가고 있다.


“허공으로 날아간 저 화살이 얼마나 떳떳하냐”


다들 재미없다고 한 것은 정말 떳떳한 발언이다.


그러나 그런 발언을 떳떳하게 할 수 있는가!!!

[잡담] 핫산과 정자, 주임과 청이, 리자와 당자

[원문보기]

핫산은 낙하산이다. 정자는 내정자다.


핫산은 정자씨와 한쌍을 이루는 환상의 커플이다. 둘다 금수저에 속한다고 해야하나? 아닐 수도 있지만 그럴만한 빽이 있는 것이다.


주임은 외주, 청이는 하청을 달리 표현해 봤다.(업체, 트너 등을 떠올려 봤으나 적절한 조어가 안된다.)


청이는 괜찮은데, 주임은 다른 직급과 헛갈릴 수 있다.


약직과 규직은 방금 생각 남(계약직과 정규직)


리자는 관리자이고, 당자는 담당자이다.


보통 담당자는 관리자 부하직원이고, 외부 직원은 담당자와 일하지만 관리자의 의도를 잘 파악해 일을 해야 한다. 담당자의 생각이나 지시로 잘못된 방향의 일을 수행하게 된다면, 다시 해야 하고, 책임도 당자보다는 주임이 져야한다.


수많은 핫산과 정자씨에게 소외당하는 약직들이 있다.


리자와 당자에게 휘둘리는 주임과 청이도 (고)객사에서는 규직과 멀다.


암튼 이런 조어들에 왜 흥미를 느끼는지 잘 모르겠다. (그런데, 핫산과 정자씨는 너무 잘 어울린다. ㅎㅎㅎㅎ)

[도서] 녹지대

[원문보기]

박경리의 소설이다.

 

"무슨 일이든 할 때까지가 좋지. 다 이루어좋고 보면 쓸쓸하고 외로워지는 거지." 83쪽

 

"원래 연애란 순탄하지 않어." 238쪽

 

 

문학이 끊긴,........ 북카페를 떠올려 줄만한 책.

 

대학생 때, 시화전을 보았던게 떠오른다. 요즘에도 대학 축제 때 시화전을 하는지.....

[도서] 녹지대

[원문보기]

박경리의 소설이다.

 

"무슨 일이든 할 때까지가 좋지. 다 이루어좋고 보면 쓸쓸하고 외로워지는 거지." 83쪽

 

"원래 연애란 순탄하지 않어." 238쪽

 

 

문학이 끊긴,........ 북카페를 떠올려 줄만한 책.

 

대학생 때, 시화전을 보았던게 떠오른다. 요즘에도 대학 축제 때 시화전을 하는지.....

[글쓰기] 나는 테스터다. 단위 테스트는 지양한다.

[원문보기]

개발자 입장에서 실제 사용자는 어떤 식으로 입력할지, 기능을 사용할지 알 수 없다.


물론 초기에 "A는 B에 입력하고, C를 D와 같이 사용하세요." 라고 하더라도, " A?, B?, C?, D? == 가, 나, 다, 라 "로 흘려 들을 수 있다. 사실 제품 제작자가 아닌 내 자신이 사용자가 된다면, 설명서에 집중하여 최대한 시행착오를 줄이려 노력한다 해도 결국 한 두가지를 간과하여 실패에 이른다.


자주 짧은 코드를 작성하고, 간단한 단위의 배포 소스를 수정해 적용하는 업무를 하고 있다. 아무리 코드의 양이 적더라도 단위 테스트 등을 통해 품질을 관리할 필요가 있다. 이는 확장성에 닿아 있기 때문이다. 그러나 나는 게으르기 때문에 테스트를 위한 코딩은 하지 않는다. 단지 디버깅 로그를 사용할 뿐이다. 또한 핑계를 하나 더 붙여서 사용자의 입력과 행동이 단위 테스트 범위를 넘어서는 경우가 많아 차라리 사용자 테스트를 통해 버그를 수정하고, 축적된 데이터를 분석하는 것을 선호한다.


그동안은 나의 게으름을 완전히 숨겨왔지만, 이를 정당화(?)해 줄만한 글을 읽었기에 옮겨 놓는다.


테스트는 해야 한다. 테스트, 테스트, 테스트. 하지만 나는 단 한번도 (a) 설정하는 데 걸리는시간이 100 시간/사람 이상 걸리지 않거나 (b) 수많은 공학적 자원을 빨아들이지 않거나 (c) 실제로 상관이 있는 버그를 발견하는 구조적인 테스트 프로그램을 본 적이 없다. 단위 테스트라는 것은 수많은 엔지니어에게 지루함을 견디고 아무것도 찾아내지 않는 것의 대가로 급여를 지급하는 수단에 불과하다 - 윌 쉬플리-


개인적으로 나는 테스트 주도 개발이라 생각했다. 작은 코딩을 하고 테스트하여 원하는 결과를 얻고, 같은 방식으로 새로운 함수를 만들거나 확장하는 식으로 코딩을 하기 때문이다. 그러나 적확하지는 않음을 깨달았다. 이런 개발방식은 차라리 주먹구구식에 가까울지도 모른다. 그래도 설계가 어느 정도 포함되어 있고, 규모 자체가 워낙 작기에 효율적이다.


보안 점검에서 좀 더 과격한 테스터의 관점을 더한다면 아래의 조언을 받아들일 수 있다.


과감하게 말하겠다. 당신의 망할 프로그램을 반드시 테스트해야 한다. 실행하라. 사용하라. 이상한 일들을 해보라. 키보드를 망가뜨려라. 지나치게 많은 항목을 더해보라. 2MB 짜리 텍스트 파일을 넣어보라. 그것이 어떻게 오동작하는지 발견하라. 이렇게 하는 것이 매우 중요하기 때문에 나는 지금 고함을 지르고 있다. - 윌 쉬플리 -


한국은 너무과도한 테스트를 했는지도 모른다. 정말 2MB 를 넣었더니 디버깅이 불가능한 수준으로 갔다. IT 테스트베드로 좋다는 것은 인정하지만, 실험정신이 너무 강했는지도 모른다.


내가 제작한 프로그램은 사용자가 IT 관련이 아니다. 물론 이것은 중요하지 않을 수도 있다. 정말 생각지도 못한 사용이 일어나기도 하여, 끔찍한 결과가 나온 적도 있다.(그렇게 끔직하진 않다.) 아무튼 난 단위 테스트라기 보다는 사용전 테스트와 사용자 테스트를 통해 코딩을 한다. 이건 단순 테스트 주도 개발이 아닌 "주먹구구식 사용자 테스트 주도 개발" 정도로 불러본다.

[글쓰기] 당신은 왜 대출을 하지 않는가!

[원문보기]

연체료 없고, 별로 조건도 따지지 않으며 무한대로 대출하여 지적 재산을 증식할 수 있는 도서 대출을 하지 않는 사람은 바보다!




9등급도 대출 가능합니다.


이 지역에 거주하지 않으신다면, 직장 재직 증명서로 대출이 가능합니다.


직장만 있으면 OK.


그래도 안 될 것 같다면.... 학생자격으로 가입 가능.


그러나 여기에도 제한이 있습니다.


2주만에 반환해야하는 조건이있습니다.


1주일 정도는 연기해 드릴 수 있습니다.


그러나 기간을 어길 경우 해당 기간 만큼 대출해드릴 수 없습니다.


놀라지 마십시오. 연체료 NO, 반납만 잘 한다면 계속 대출할 수 있습니다.


한달에 수십에서 수백의 새로움을 대출 할 수 있습니다.


1? 3? 5까지 해드립니다.


연체가 너무 길어져 대출 정지라고요?


광복절 특사 기대하세요! 

[도서] 백세코딩

[원문보기]

도구를 준다고 문화가 바뀌지 않으며 문화가 바뀌어야 도구의 효용가치가 있다. 56쪽


필자의 주변 사람들 중 대기업에 경력직으로 입사한 경우를 살펴보면, 대부분 5년 이내에 자신의 경험들을 최대한 회사에 제공하면서 최고의 대우를 받은 다음, 그 필요성이 상실되면 권고사직 당하는 것을 어렵지 않게 발견한다. 당장 필요한 최고의 경험은 대기업에서 최고의 대우를 받을 수 있는 조건 중의 하나가 된다. 하지만, 역시 실대 대기업에서 오랫동안 직장생활을 할수 있는 정치적인 기반을 만들기에는 어렵다는 것이다. 214쪽


[도서] 잠시 검열이 있겠습니다

[원문보기]

"한 번 거짓말을 하면 군중들은 믿지 않는다. 두 번 거짓말하면 의심하지만, 계속 거짓말을 하면 믿게 된다."(괴벨스. 나치 선전장관) 이런 세뇌는 다른 생각의 여지를 차단한다는 점에서 또다른 검열의 기능을 보여준다. 123쪽


각종 경연대회를 주관하여 총독부 고관들의 이름으로 상을 주었는데, 물론 상금과 문화적 권위(상징자본)가 주어졌다. 일본어 번역료를 지원해주기도 했고 징병이나 징용까지 유예해주기도 했다. 해방 이후에도 비슷했다. 예컨대 미술에서라면 식민지 시기의 '선전(조선 미술전람회)'이 해방 이후 '국전(대한민국 미술전람회)'으로 이름이 바뀌어 지속되고 있다. 식민지 시기에 뿌리를 두면서 오늘에 이어지는 각종 문화인 단체들의 기원은 이렇듯 '불순'하다. 206쪽


그중에 참 우울한 노가바가 있다. <생일 축하합니다> 노래를 '왜 태어났니'라고 바꿔 부른다는 것이다. '얼굴도 못생긴게' '인구도 많은데' 또는 '공부도 못하는 게' 등 다양한 버전이 존재한다. 물론 재미와 농담을 곁들인 것이라고는 하지만, 섬뜩하기도 하다. 유신독재 시기에도 삶과 탄생 자체를 부정하는 노가바는 없었던 것으로 기억한다. 요즘 고등학생들이 얼마나 힘든 삶을 강요받고 있는지 짐작케 한다. 261쪽


요즘 이슈는 역사교과서 국정화다. 쓰레기들이 개소리를 하는데 차마 들을 수가 없다.

[도서] 진짜 소프트웨어 개발 이야기

[원문보기]

당신이 생각하는 것과 달리 매일 할 일을 반복하는 것은 실제 훈련이라고 보기 어렵다. 회의에 참석한다고 해서 사람을 다루는 기술이 연마되는 것도 아니다. 이메일에 답장을 쓴다고 해서 타이핑 실력이 느는 것은 아닌 것과 마찬가지다. 뭔가에 대한 실력을 키우려면 별도의 시간을 마련해서 집중적으로 훈련해야만 한다. ~중략~

내가 알고 있는 한 뛰어난 엔지니어는 바로 이처럼 끊임없이 이뤄지는 훈련 덕분에 그 정도의 실력을 유지한다. 신체적으로 좋은 몸매를 유지하고 있는 사람은 정기적으로 운동을 하고, 계속 운동을 한다. 그렇게 하지 않으면 몸매가 망가지기 때문이다. 프로그래밍과 엔지니어링도 이와 마찬가지다. 97쪽


제가 제안하고자 하는 것은 다른 접근법입니다. 하나를 더 가지려고 하는 것이 아니라, 하나를 적게 가지려고 하는 겁니다. 더 많이 하는 것이 아니라 더 적게 하는 겁니다. 경쟁자를 이기기 위해 오히려 더 적게 하는 방법입니다. 122쪽


하지만 대다수의 사람도 책을 읽지 않는다. 쓰지도 않는다. 대다수의 소프트웨어 개발자들은 소프트웨어 개발에 대한 책을 읽지 않는다. 소프트웨어 개발에 대한 웹사이트를 읽지 않는다.

프로그래머들이 책을 읽지 않는다면 프로그래밍을 어떻게 배우는 것일까? 그들은 고전적인 방법을 통해 배운다. 소매를 걷어 올리고 실제로 코드를 작성하면서 두 번째 창에 열려 있는 인터넷에 존재하는 집단 지성을 활용하는 것이다. 인터넷은 프로그래밍 서적을 쓸모없는 것으로 만들었다. 인터넷은 더 빠르고, 더 효율적이다. 그렇기 때문에 프로그래밍과 관련된 정보를 인터넷에서 찾아보는 것은 당연히 더 현명한 행동이다. 나는 더그 맥쿠인이 '나는 왜 책을 읽지 않는가에서 적절하게 설명한 자신의 경험이 상당히 일반적이라고 생각한다. 271쪽


조엘의 책 이후 좋은 책을 발견했다. 번역은 임백준

이전 1 ... 27 28 29 30 31 32 33 34 35 36... 76다음
첨부 (0)
위로