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⁺의 의견
- 이 글은 프로그래머들이 단순히 재미를 추구하는 것의 가치와 중요성에 대해 이야기하고 있음. 오늘날의 소비자 및 스타트업 문화에서는 모든 것이 실용적이고 수익성 있어야 한다는 압박감이 있지만, 그것은 프로그래밍의 창의성과 혁신을 저해할 수 있음.
- 오픈소스 커뮤니티는 이러한 "그냥 재미로" 정신을 구현한 좋은 사례임. 많은 중요한 오픈소스 프로젝트들이 처음에는 누군가의 취미 프로젝트로 시작되었고, 그 과정에서 새로운 아이디어와 접근법이 탐색되었음.
- 하지만 이런 태도를 과도하게 추구하면 실용성이 떨어지는 프로젝트들이 양산될 수도 있음. 궁극적으로는 재미와 실용성 사이의 균형이 중요할 것 같음. 그래도 이 글은 우리가 종종 잊고 사는 순수한 재미와 호기심의 가치를 상기시켜 준다는 점에서 의미 있어 보임.
- 일상의 업무에 지친 개발자들에게 이런 취미 프로젝트는 좋은 영감과 동기부여가 될 수 있을 것 같음. 새로운 언어나 기술을 배우고 싶지만 시간이 없다고 느끼는 분들께도 추천하고 싶은 글임.
자주 쓰는 오픈소스 프로젝트 이슈트래커에서 트러블슈팅을 도와주거나 문서에 기여하는 방법도 있습니다. 꼭 새로운 프로젝트를 시작하거나 코딩을 할 필요는 없는 것 같아요
Hacker News 의견
-
코드를 통해 무언가를 만드는 것을 즐기며, 때로는 금전적 이익을 고려하기도 하지만, 주로 재미를 위해 프로젝트를 진행함
- 6주 동안 함께 프로젝트를 진행하는 그룹을 운영하며, 두 번째 코호트를 마쳤음
- 프로젝트와 도전 과제를 함께 해결하는 과정이 매우 즐거움
-
인터뷰에서 개인 프로젝트를 설명했으나, 면접관이 왜 그런 프로젝트를 했는지 계속 물어봐서 불편했음
- 단순히 재미와 학습을 위해 했다고 설명했지만, 면접관은 이해하지 못했음
-
소프트웨어를 만드는 동기를 설명할 때, 혼자서 해변에 모래성을 쌓고 만족감을 느끼는 것과 같다고 비유함
- 누군가 알아주지 않아도, 파도에 의해 사라져도, 만족감을 얻음
-
대형 언어 모델(LLM)을 통해 재미있는 프로젝트를 더 쉽게 시작할 수 있게 됨
- 긴 연구 과정과 도구 설정 없이 간단한 프로토타입을 만들 수 있음
- 위치 기반 음악 웹앱을 만들어 산책할 때마다 다른 음악을 들을 수 있음
-
개인 프로젝트에 시간을 투자하기 위해 생활비를 줄이고 계약 사이의 시간을 활용함
- 주 단위로 프로젝트를 진행하며, 꿈꾸던 프로젝트에 시간을 할애함
- 재미를 위해 프로젝트를 진행하지만, 진지하게 시간을 투자함
-
재미를 위한 프로젝트 목록이 완성된 프로젝트만 포함하는 것은 아쉬움
- 미완성 프로젝트나 몇 주 동안 작업하다가 잊혀진 프로젝트도 포함되어야 함
- 코딩의 재미는 과정 자체를 즐기는 것임
-
어제 동료들과의 대화에서, 많은 양의 작업을 통해 기술을 발전시키는 것이 중요하다는 결론에 도달함
- John Carmack의 예를 들어, 많은 게임을 만들면서 기술을 발전시킨 경험을 공유함
- 올바른 언어와 포트폴리오 프로젝트를 선택하려는 시도가 오히려 지연을 초래함
-
재미로 만든 제품이나 금전적 이익을 위해 만든 제품 모두 품질이 떨어질 수 있음
- 재미와 이익의 이분법을 넘어서, 좋은 프로그래밍 시스템 제품을 만드는 것이 중요함
-
혼자서 훌륭한 요리를 만드는 것과 같은 내적 경험이지만, 그 자체로 가치가 있음
- 이 마인드를 이해하지 못하는 사람들에게 설명하기 어려움
-
Hacker News와 같은 사이트에서 많은 사람들이 다음 대박 스타트업을 준비한다고 생각할 수 있음
- 하지만 오픈 소스 코드를 재미로 작업하는 사람들도 많음
- HN은 프로그래머들이 더 재미있게 일하는 모습을 보여주는 주요 소스임