GN⁺: Just for Fun. No, Really. - 재미삼아 개발했어요. 진짜로요. (2022)
(justforfunnoreally.dev)- "우리는 소프트웨어 개발을 좋아함" 코딩은 문제 해결의 지그재그 여정이며, 많은 사람들이 생각하는 것보다 목적지가 덜 중요함
- 우리는 종종 다음과 같은 질문을 받음:
- "왜 이 일을 하는 거죠?"
- "이 프로젝트의 목적은 무엇인가요?"
- "이 프로젝트가 X보다 나은 점은 무엇인가요?"
실리콘 밸리의 치열함
- Hacker News나 다른 스타트업 중심의 뉴스 사이트에서 많은 시간을 보내면, 모두가 다음 수백만 달러짜리 스타트업이나 출구 전략에 매달려 있다고 믿을 수 있음
- 사람들이 순전히 재미로 오픈 소스 코드를 작업한다는 것을 상상하기 어려울 수 있음
- 소프트웨어 구축의 예술을 사랑하는 해커들이 있음. 그들은 도전을 위해, 재미를 위해 그것을 함. 그들은 백만장자가 되려고 하지 않음
소비자 문화
- 또는 다른 사람의 소프트웨어만 소비하고 거의 만들지 않는다면, "이 프로젝트가 나에게 무엇을 해줄 수 있을까?"라는 생각에 갇힐 수 있음. (그리고 프로젝트가 그들과 관련이 없다면 그것이 왜 존재하는지 궁금해함)
- 많은 사람들이 그들의 소프트웨어를 소비할 필요가 없는 해커들이 있음. 물론 다른 사람들이 자신의 작업을 즐기거나 감탄하거나 감사하면 좋겠지만, 그것은 엄격히 필요하지 않음. 그냥 만드는 것 자체가 재미있음.
우리는 그냥 재미로 한다. 진짜로.
- 마지막으로, 일상적인 업무에 필요한 프로그래밍 기술만 배운 사람들은, 항상 새로운 것을 시도하는 프로그래머를 이해하지 못할 수 있음
-
코드로 살고 숨쉬는 해커들이 있음
- 모든 코드 줄이 그 금전적 가치를 증명해야 한다는 생각, 키보드 앞에서 고생하는 매 시간을 설명해야 한다는 것은 정말 안타까움
- 과정 자체에 가치가 있음. 결함이 있더라도, 그 자체로 가치가 있음. 최종 제품만 중요한 것이 아님
- 프로그래밍에 대한 제가 가장 좋아하는 인용구로 마무리하겠음:
프로그래머는 시인처럼 순수한 사고의 물질에서 약간 떨어진 곳에서 일합니다. 그는 상상력을 발휘하여 공기 중에 성을 짓습니다. 몇 안 되는 창작 매체가 그렇게 유연하고, 그렇게 쉽게 다듬고 재작업할 수 있으며, 웅장한 개념적 구조를 쉽게 실현할 수 있습니다. 하지만 프로그램 구조는 시인의 말과 달리 구조 자체와는 별개로 가시적인 결과물을 만들어내며 움직이고 작동한다는 점에서 실재합니다.
— 프레드 브룩스, The Mythical Man-Month
시도해보세요!
- 여러분이 길을 잃었다고 생각한다면 — 코딩이 예전에는 재미있었지만 이제는 그저 시계 찍고 월급 받으려고 해야만 하는 고역이 되었다면, 저희는 여러분을 다시 초대합니다!
- 아니면 엉뚱한 아이디어의 프로그래밍은 전문가와 학자들만의 것이라고 생각하도록 길들여졌다면, 이 페이지는 여러분을 위한 것입니다. 여러분에게는 만지작거리고 그 과정에서 즐거움을 누릴 권리가 있습니다!
- 컴퓨터 안에서 만들고, 배우고, 경험하고 싶은 무언가를 생각해 보세요. 그리고 먼저 찾아보거나 연구하지 말고 그냥 뛰어들어 보세요. 아마도 약간의 재미를 느낄 수 있을 거예요. 진짜로요.
클럽
순서 없이, 여기 "그냥 재미로"라는 꼬리표를 자랑스럽게 달고 있는 몇 가지 프로젝트가 있습니다.
- Natalie - 재미로 만든 Ruby 컴파일러
- ZigSelf - 재미로 Zig으로 만든 Self 구현
- php-parser-rs - 재미로 Rust로 만든 PHP 파서
- ex6502 - 재미로 Elixir로 만든 6502 프로세서 에뮬레이터
- Piko-piko OS - 재미로 만든 x86 16비트 장난감 OS
- Folders2kt - 재미로 만든 난해한 프로그래밍 언어
- GCC Rust - 재미로 만든 Rust 컴파일러
- Soul - 재미로 만든 SQLite REST 및 실시간 서버
- hssp - 재미로 만든 HTTP 상태 코드 CLI
- PyCraft - 재미로 Python으로 만든 마인크래프트 런처
- hashsearch - 재미로 만든 역방향 이미지 검색 엔진
- quackspeak - 재미로 오리를 사용한 텍스트 음성 변환 엔진
- Quark - 재미로 만든 고성능 Lisp 방언
- Whitecat - 재미로 PHP 개발을 위한 CLI
- eClient - 재미로 Python으로 만든 마인크래프트 런처
- CascadeOS - 재미로 만든 범용 OS
- Kiesel - 재미로 Zig으로 만든 JavaScript 엔진
- github-pewpew - 재미로 리포지토리를 삭제하는 CLI 도구
- dt - 재미로 만든 연결형 AWK와 비슷한 언어
- grab - 재미로 만든 가벼운 grep 클론
- math-with-regexps - 재미로 정규식으로 수학하기
- noro - 재미로 만든 창 관리자가 있는 텍스트 편집기
- Vox - 재미로 Elixir로 만든 정적 사이트 빌더
- jimson - 재미로 만든 JSON 파서
- txt2tufte - 재미로 만든 터프티식 웹사이트 빌더
- Azure Storage 웹 탐색기 - 재미로 만든 Azure Storage 웹 탐색기
- renam - 재미로 만든 아주 빠른 파일 이름 바꾸기 유틸리티
- Funciton - 재미로 만든 상자로 이루어진 프로그래밍 언어
GN⁺의 의견
- 이 글은 프로그래머들이 단순히 재미를 추구하는 것의 가치와 중요성에 대해 이야기하고 있음. 오늘날의 소비자 및 스타트업 문화에서는 모든 것이 실용적이고 수익성 있어야 한다는 압박감이 있지만, 그것은 프로그래밍의 창의성과 혁신을 저해할 수 있음.
- 오픈소스 커뮤니티는 이러한 "그냥 재미로" 정신을 구현한 좋은 사례임. 많은 중요한 오픈소스 프로젝트들이 처음에는 누군가의 취미 프로젝트로 시작되었고, 그 과정에서 새로운 아이디어와 접근법이 탐색되었음.
- 하지만 이런 태도를 과도하게 추구하면 실용성이 떨어지는 프로젝트들이 양산될 수도 있음. 궁극적으로는 재미와 실용성 사이의 균형이 중요할 것 같음. 그래도 이 글은 우리가 종종 잊고 사는 순수한 재미와 호기심의 가치를 상기시켜 준다는 점에서 의미 있어 보임.
- 일상의 업무에 지친 개발자들에게 이런 취미 프로젝트는 좋은 영감과 동기부여가 될 수 있을 것 같음. 새로운 언어나 기술을 배우고 싶지만 시간이 없다고 느끼는 분들께도 추천하고 싶은 글임.
94년도까지 단순한 컴퓨터 사용자였다가 언어를 배우고 95년도에 "전산" 관련 직업을 가졌음.
지금 생각해보면 나는 대단히 운이 좋은 행운아였음.
가끔 돈내고 회사 다녀야되는거 아닌가 하는 생각을 함.
자주 쓰는 오픈소스 프로젝트 이슈트래커에서 트러블슈팅을 도와주거나 문서에 기여하는 방법도 있습니다. 꼭 새로운 프로젝트를 시작하거나 코딩을 할 필요는 없는 것 같아요
Hacker News 의견
-
코드를 통해 무언가를 만드는 것을 즐기며, 때로는 금전적 이익을 고려하기도 하지만, 주로 재미를 위해 프로젝트를 진행함
- 6주 동안 함께 프로젝트를 진행하는 그룹을 운영하며, 두 번째 코호트를 마쳤음
- 프로젝트와 도전 과제를 함께 해결하는 과정이 매우 즐거움
-
인터뷰에서 개인 프로젝트를 설명했으나, 면접관이 왜 그런 프로젝트를 했는지 계속 물어봐서 불편했음
- 단순히 재미와 학습을 위해 했다고 설명했지만, 면접관은 이해하지 못했음
-
소프트웨어를 만드는 동기를 설명할 때, 혼자서 해변에 모래성을 쌓고 만족감을 느끼는 것과 같다고 비유함
- 누군가 알아주지 않아도, 파도에 의해 사라져도, 만족감을 얻음
-
대형 언어 모델(LLM)을 통해 재미있는 프로젝트를 더 쉽게 시작할 수 있게 됨
- 긴 연구 과정과 도구 설정 없이 간단한 프로토타입을 만들 수 있음
- 위치 기반 음악 웹앱을 만들어 산책할 때마다 다른 음악을 들을 수 있음
-
개인 프로젝트에 시간을 투자하기 위해 생활비를 줄이고 계약 사이의 시간을 활용함
- 주 단위로 프로젝트를 진행하며, 꿈꾸던 프로젝트에 시간을 할애함
- 재미를 위해 프로젝트를 진행하지만, 진지하게 시간을 투자함
-
재미를 위한 프로젝트 목록이 완성된 프로젝트만 포함하는 것은 아쉬움
- 미완성 프로젝트나 몇 주 동안 작업하다가 잊혀진 프로젝트도 포함되어야 함
- 코딩의 재미는 과정 자체를 즐기는 것임
-
어제 동료들과의 대화에서, 많은 양의 작업을 통해 기술을 발전시키는 것이 중요하다는 결론에 도달함
- John Carmack의 예를 들어, 많은 게임을 만들면서 기술을 발전시킨 경험을 공유함
- 올바른 언어와 포트폴리오 프로젝트를 선택하려는 시도가 오히려 지연을 초래함
-
재미로 만든 제품이나 금전적 이익을 위해 만든 제품 모두 품질이 떨어질 수 있음
- 재미와 이익의 이분법을 넘어서, 좋은 프로그래밍 시스템 제품을 만드는 것이 중요함
-
혼자서 훌륭한 요리를 만드는 것과 같은 내적 경험이지만, 그 자체로 가치가 있음
- 이 마인드를 이해하지 못하는 사람들에게 설명하기 어려움
-
Hacker News와 같은 사이트에서 많은 사람들이 다음 대박 스타트업을 준비한다고 생각할 수 있음
- 하지만 오픈 소스 코드를 재미로 작업하는 사람들도 많음
- HN은 프로그래머들이 더 재미있게 일하는 모습을 보여주는 주요 소스임