제가 프로그래머인 이유

Why I Am a Programmer

alfie.wtf ▲ 277 댓글 86 jruohonen

요약

해적판 게임 앞에 붙은 크랙 인트로에 반해 프로그래머가 되기로 했다는 회고입니다.

개발자 앨피 존이 인터넷이 대중화되기 전의 어린 시절을 돌아본 글입니다. 컴퓨터를 가지고 있으면 도둑맞기 쉬웠던 험한 동네에서 게임을 모으던 초등학생이 어떻게 코딩을 시작했는지 적었습니다.

왜 중요한가

  • 남이 만든 것을 즐기던 아이가 직접 만드는 사람이 되기로 한 계기를 구체적으로 보여 줍니다.
  • 무료로 돌던 강좌와 소스 코드만으로 아이가 혼자 프로그래밍을 익히던 1990년대 초 해커 문화를 기록했습니다.

핵심 내용

  • 해적판 게임 첫 화면 앞에 뜨는 크랙트로(크래킹 그룹이 복사 방지를 뚫었다고 자랑하는 짧은 인트로)가 그를 사로잡았습니다.
  • 그는 크랙트로가 데모신(실시간 그래픽 작품을 만들어 겨루는 문화)의 뿌리였다는 사실을 나중에 알았습니다.
  • 모뎀을 산 뒤 호주 BBS(전화선으로 접속하던 게시판 서버) 목록을 구해 모든 곳에 접속해 보며 게임을 내려받았습니다.
  • BBS에서 찾은 Denthor of ASPHYXIA의 VGA 데모 강좌를 출력해 Turbo Pascal 6.0에 예제를 따라 치며 코딩을 익혔습니다.
  • 그 전에는 XTreeGold의 16진수 보기로 게임 저장 파일을 고쳐 목숨을 무한으로 늘리는 놀이를 즐겼습니다.

HN 반응

  • 애플 II와 BASIC, BBS로 시작했다는 비슷한 회고가 이어졌고, 요즘 아이들은 마인크래프트 서버로 입문한다는 젊은 이용자의 말도 나왔습니다.
  • 퍼즐을 푸는 듯한 코딩의 재미를 AI가 빼앗았다는 한탄에, AI 코드는 허술해도 값싼 해법으로 충분할 때가 있다는 의견이 맞섰습니다.

댓글

30개 표시 · 전체 86개
  1. yodsanklai HN

    어린 시절에 직접 체험해 볼 수 있는 직업은 많지 않다고 생각합니다(운 좋게 접할 기회가 있다면요). 계산기를 BASIC으로 프로그래밍하는 게 소프트웨어 엔지니어로 일하는 것과 똑같지는 않지만, 꽤 잘 이어진다고 봅니다.

    많은 사람이 진로를 찾느라 고생하지만, 저는 처음부터 프로그래밍(그리고 수학)이 좋고 그걸로 먹고살 수 있겠다는 게 꽤 분명했습니다. 운동선수나 음악가도 예가 될 수 있겠지만, 프로그래머와 달리 그걸로 실제로 먹고사는 사람은 아주 적습니다.

  2. chr15m HN

    우리 집 Apple IIe로 하던 Conan the Barbarian과 Below the Root. 주황빛으로 빛나는 CRT 뒤에 펼쳐진 작은 세계들. 이런 건 어떻게 만들지? 엄마(ㅋㅋ)가 BASIC에서 키보드 입력을 받는 법을 알아내도록 도와주셨다. O 문자가 X 문자를 화면 여기저기로 쫓아다니는 작은 게임을 만들었다. 핵심 게임 루프다. 미국 법의 관할권에서 한참 벗어난 폰독 인다의 와룽에서 불법 복제 CGA 게임을 뒤적이던 일. 탐험할 작은 세계가 선반마다 빼곡하던 그 영광스러운 풍경. Death Track과 Prince of Persia. 더 많은 BASIC, 그리고 바나나를 던지던 고릴라. 나중엔 Multiline BBS. 나이가 두 배는 많은 괴짜들과 밤늦도록 나누던 대화. 온갖 머리가 핑 도는 아이디어들. 뉴스그룹. 펑크족과 스케이터와 사이퍼펑크. 다가올 일을 예측하고, 예상하던 미래가 눈앞에 펼쳐지는 걸 지켜봤다. FTP로 Commander Keen 내려받기. WinSock과 Netscape. 내 첫 홈페이지. 리눅스를 내려받아 돌려 보기. 밤새도록 XFree86 모드라인 설정하기 ㅋㅋ. 대학에서 만난 Turbo Pascal과 VAX VMS. 코딩으로 얻은 첫 직장. 지독하게 엉망인 Perl로 웹 백엔드를 두들겨 만들던 일. 데이터베이스 같은 건 없이 쉼표로 구분한 텍스트 파일을 마구 쏟아 붓고 퍼 올렸다 ㅋㅋ. 세상에서 가장 짜릿한 일을 하루 종일 하면서 돈을 받았다. 마법이었다.

  3. dustfinger HN

    저는 Apple IIc로 자랐고 Conan the Barbarian을 정말 좋아했습니다. 이웃이 복사본을 만들어 줘서 그 게임을 실컷 즐겼죠. 죽으면 화면에 메시지가 떴는데, 머릿속에 박혀 있는 건 "The eyes have it"입니다. 486용 Prince of Persia도 아주 좋아했습니다. 그건 실제로 깼고요. 당신의 이력이 저와 아주 비슷하네요. 저는 지금 수십 년째 코딩을 하고 있는데, 시작은 전부 Apple IIc였습니다.

  4. chr15m HN

    좋은 시절이었죠. Prince of Persia는 제가 깬 몇 안 되는 게임 중 하나인 것 같아요.

    에리크 샤이(Eric Chahi)의 Another World는 해 보셨나요? 지금도 최고의 게임 중 하나이고, 지금 해도 훌륭해요.

  5. dustfinger HN

    오, 당연하죠. 이웃집 친구가 commodore 64용으로 갖고 있었습니다. 제가 가진 적은 없지만, 그래픽과 부드러운 애니메이션에 정신이 나갈 지경이었죠. 정말 오랜만에 떠올리네요. 좋은 시절이었습니다! 텍스트 어드벤처도 좋아했습니다. 80년대 초 아이들 대부분이 그랬겠지만, 제가 처음 해 본 게임 중 하나가 Adventure였어요. The Hitchhikers Guide to the Galaxy도 좋아했고요. Infocom은 대단했습니다. 요즘은 열네 살 아들과 zork 시리즈를 하나씩 깨고 있습니다.

    Apple II용으로 정말 좋아했던 게임이 하나 더 있는데, Captain Goodnight입니다. 꽤 멀리까지 갔지만 끝까지 깬 적은 없는 것 같습니다.

  6. tosapple HN

    c64의 buck rodgers

  7. esafak HN

    어디서도 언급되는 걸 본 적은 없지만, Another World는 시각적으로 또 다른 프랑스 작품인 https://en.wikipedia.org/wiki/Spartakus_and_the_Sun_Beneath_the_Sea 의 영향을 받은 것 같습니다.

  8. chr15m HN

    와, 멋지네요!

  9. sirsinsalot HN

    제 어린 시절과 십대 시절 같네요. 문화적으로 너무 멀게 느껴집니다. 그 서브컬처와 카운터컬처가 그리워요.

  10. jacquesm HN

    다시는 돌아오지 않을 겁니다.

    한편으로 Raspberry Pi 2 W 한 대가 1980년부터 1991년까지 제가 가졌던 모든 기계를 합친 것보다 CPU 성능이 좋습니다. 그 경험은 여전히 거기 있어요. 하지만 아이를 '마인크래프트'에서 깜박이는 커서가 있는 화면으로 데려와서 흥미를 느끼게 하기란 무척 어렵습니다.

  11. Imustaskforhelp HN

    참고로 저는 이 사이트에서 어린 축에 속할 텐데요(지금 18살입니다).

    저는 아이들이 마인크래프트를 한다는 게 여전히 기쁩니다. 제가 가장 자랑스러워하는 일 중 하나는, 마인크래프트 서버를 만들려고 어떻게든 intel tiber(무료) vps의 nat를 뚫은 거예요.

    마인크래프트에서 제가 직접 처음 만든 것 중 기억나는 건, 피스톤이 레드스톤 블록을 밀면 그게 또 다른 피스톤과 레드스톤 블록을 미는(꽤 복잡하게 과잉 설계한) 구조로 시계를 만들어서 몹을 잔뜩 스폰시킨 겁니다. 지금도 자랑스럽고, 형이 마인크래프트를 보여 줬는데 처음 봤을 때 입이 떡 벌어졌던 기억이 나요!

    제가 처음 쓴 블로그 글(아마 두 번째였을 거예요) 중 하나는 다른 방법(플러그인이 있습니다)으로 마인크래프트를 셀프 호스팅하는 법이었어요.

    마인크래프트에는 코딩이나 서버와 관련된 요소가 많습니다. 마인크래프트 덕분에 코딩에 입문한 사람도, 마인크래프트 서버 호스팅 덕분에 서버에 입문한 사람도 많다고 생각해요(정말 인기가 많으니까요).

    가끔 마인크래프트 추억 영상이 추천으로 뜨는데, 와, 향수가 너무 세게 밀려옵니다.

    말씀하신 뜻은 이해하지만, 마인크래프트는 본질적으로 제가 친구들과 함께 즐긴 단순한 블록 게임이었어요.

    네, 픽셀에 정을 붙이기 어려울 수도 있겠지만 또 그렇지만도 않아요. 저는 지금도 체스를 두는데, chess.com이나 lichess.org에서 두는 것만큼이나 픽셀 화면에서도 얼마든지 둘 수 있거든요.

    제가 처음 한 게임 중 하나가 포켓몬 옐로(오리지널 그거)였는데, 불법 복제로 했고 그게 저를 불법 복제의 세계로 이끌었습니다. 그런데 세상에, 저는 그게 제가 기술에 능숙해지고 대학에서 CS를 배우게 된 이유라고 진심으로 믿어요. 초등학교 2학년 때 그랬으니까요.

    포켓몬 옐로, 포켓몬 크리스탈, 그리고 픽셀 게임이란 게임은 다 해 봤습니다. 전부 좋아하고 향수와 함께 소중히 간직하고 있어요.

    저는 오히려 쇼츠와 릴스가 더 걱정됩니다.

    비슷한 주제로 제가 쓴 댓글과 글입니다.

    바닐라 마인크래프트 서버 셀프 호스팅이 이렇게 쉬웠던 적은 없습니다 (마인크래프트 안에서 GUI로, 게다가 오픈 소스!): https://trulyfoss.mataroa.blog/blog/self-hosting-vanilla-minecraft-server-has-never-been-this-easy-before-gui-right-in-minecraft-while-being-open-source/

  12. jacquesm HN

    아, 그 점에는 이견이 없습니다. 마인크래프트보다 훨씬 나쁜 것도 있으니까요.

  13. saulpw HN

    저는 지난달에 Below The Root 복원/번역판을 막 내놓았어요! 한번 보세요, 옛 추억이 되살아나길 바랍니다: https://root.saul.pw .

  14. thenipper HN

    저는 어릴 때 Apple IIc로 Below The Root 불법 복제본을 갖고 있었는데... 작은 동네의 복사 네트워크에서 잘못 복사된 거였어요. 그래서 운이 좋을 때만 가끔 실행됐죠. 이거 한번 파고들어 봐야겠네요.

  15. christophilus HN

    저한테는 창의적이고 퍼즐을 푸는, 게임 같은 성격이 이유였습니다. 그러다 첫 직장을 얻었는데 재량이 100%여서, 친구와 함께 현실 세계의 실제 사람들을 위해 실제 문제를 풀게 됐습니다. 짜릿했습니다. 소프트웨어로 사람들의 삶을 더 낫게 만드는 일은 지금도 제게 가장 큰 동기입니다.

  16. sevenzero HN

    그리고 그 창의적이고 퍼즐을 푸는, 게임 같은 성격은 이제 완전히 사라졌죠. 아키텍처 질문에 답하는 건 저한테 재미가 없습니다. 저는 코드를 쓰는 과정이 좋았는데, 지금은 소프트웨어 개발자라는 게 싫어요.

  17. toxik HN

    그 모든 게 여전히 중요하지만, 굳이 직접 할 필요는 없죠. LLM이 AI 아트만큼 그럴싸해 보이는 범용 해법을 채워 넣을 겁니다. 하지만 중요한 캡슐화 수준을 지키지 않았고, 상태를 고민하거나 정형화하지 않았고, 전역 데이터 의존성이 여기저기 암묵적으로 깔려 있기 때문에 나중에 버그가 생길 겁니다.

  18. sevenzero HN

    당신 스택에서는 그럴 수도 있겠지만, 저는 Laravel 웹 개발자로 일하는데 AI가 저보다 빠르고 잘 짭니다. 솔직히 제가 어떻게 아직 고용돼 있는지 모르겠어요.

    최근에 Rust를 배우기 시작했는데 AI는 전혀 쓰지 않았고, 코딩하는 과정이 정말 재미있습니다. 그래도 트랙터 쓰기를 거부한 농부가 된 기분을 떨칠 수가 없네요...

    개인적으로는 해고당하길 기다리는 중입니다. 그래야 어쩔 수 없이 바꿀 테니까요.

  19. alfiedotwtf HN

    너무 걱정하지 마세요... 트랙터가 아직 스스로 운전하지는 못하니까, 시간이 좀 남아 있어요.

  20. toxik HN

    제 요점은 모든 게 잘 설계된 해법을 요구하지는 않는다는 겁니다. 잘 만든 비싼 해법보다 대충 만든 싼 해법이 더 나은 대안인 경우도 많아요. AI "아트"도 마찬가지입니다. 일회용 슬라이드에 들어갈 그림이 필요하다면 괜찮죠. 새로 낼 책의 표지를 디자인하는 거라면 글쎄요, 아닐 겁니다.

  21. cmrx64 HN

    (그런데 증조할아버지의 반지는 결국 어떻게 해결됐나요? 뭘 하시는지 보려고 당신 이력을 훑어보다가요 :)

  22. vconnor HN

    저는 논리라는 언어에 능숙해져서 마법의 돌에게 제 뜻대로 하라고 시키는 게 좋았습니다.

    사람들의 삶을 더 낫게 만드는 건 늘 부수적인 이득이었는데, 제가 나아지게 하고 있는 삶이 사실 상사의 삶과 회사 매출표뿐이라는 것도 금방 알게 됐어요. 이제는 제가 세상을 더 좋게 만들고 있다고 스스로를 속이지 않습니다. 어차피 완전히 쓸모없는 일이라 해도 저는 컴퓨터와 대화하는 걸 즐길 겁니다.

  23. SA9G HN

    손가락 마디가 까지거나 납땜 연기를 얼굴에 뒤집어쓰지 않고도 뭔가를 만들 수 있다니... 이거야말로 짜릿하죠! 그리고 결과가 마음에 안 들면 허물고 더 낫게 다시 지으면 됩니다. 드는 건 시간과 상상력뿐이고요. 무엇보다 만들고, 문제를 풀고, 설계하고, 머릿속에 그려 보고, 창조하고, 창의적일 수 있습니다. (음, 음악가들은 어쩌면 훨씬 더 재미있겠지만, 아쉽게도 저는 음악 쪽으로 타고나지 못했네요. :-)

  24. rjh29 HN

    저한테도 이게 핵심이에요. 저는 뭔가 만드는 걸 좋아하지만 물건을 만들려면 알맞은 도구와 재료를 사느라 돈이 많이 들고, 실수하면 손실도 커요. 저는 실수를 많이 하니까 프로그래밍이 딱 맞습니다.

  25. fmpfmp HN

    저는 기계공학을 공부했는데, 당신 댓글이 제가 대학 시절에 왜 코딩에 끌렸는지를 완벽하게 설명해 줍니다.

    뭔가를 만드는 데 필요한 건 시간과 맥북 한 대뿐이고, 상상력과 창의력에는 한계가 없습니다.

  26. cristaloleg HN

    Hacker's Manifesto가 떠오르네요 https://phrack.org/issues/7/hackers-manifesto

  27. bitwize HN

    그건 멋진 게 아니라 빨갱이들의 헛소리라고요!

  28. hefner1456 HN

    반권위주의에 더 가까운 말로 들리지만, 사실은 어디에도 어울리지 못하고 그저 자기 자신으로 있고 싶은, 그리고 주변의 위선을 알아볼 만큼 똑똑한 답답한 젊은이의 말 같습니다. 어릴 때 나쁜 사람들에게 너는 나쁜 사람이라는 말을 듣는 건 정말 괴로운 일이니까요.

  29. alfiedotwtf HN

    영화 Hackers에 나오는 대사에 답글을 다신 것 같아요 :)

  30. Krei-se HN

    저는 학교의 CASIO 그래픽 계산기로 프로그래밍을 시작했습니다.

    느렸지만 텍스트 기반 게임 정도는 만들 수 있었고, 그걸 친구들끼리 돌려 했습니다. 인터넷이 없어서 전부 시행착오로 해냈죠.

    그러다... 회전하는 3D 큐브를 만들고 싶어졌습니다. 열다섯, 열여섯 살에게는 좀 버거웠던 것 같아요. 그때는 회전 행렬이 뭔지도 몰랐고, 스스로 좀 둔하다고 여겼습니다.

    직장에서는 3D 작업을 해 볼 기회가 없었고 맨날 데이터베이스만 만졌습니다. ThreeJS를 조금 만져 보긴 했지만 여전히 그 기억에 시달리고 있었던 것 같아요.

    그런데 그때! 기하 대수(geometric algebra)! 정말 매끄럽습니다. 표를 좋아하는데 외적이나 사원수 같은 게 어려웠거나, 회전 행렬을 복붙하는 게 싫었다면, 기하 대수를 정말 좋아하게 될 겁니다! 마치 FK에서 표 두 개를 만났더니 짠, 부피가 되는 느낌이에요(엄청 단순화한 설명입니다!!).

    제 의견일 뿐입니다. 초등학생 때 다마고치로 1337한 데모를 만들어 본 적이 없다고 해서 스스로를 포기하지 마세요.

Hacker News에서 보기 ↗