Just for Fun. No, Really. - พัฒนาขึ้นมาเพราะสนุกน่ะ จริง ๆ นะ (2022)
(justforfunnoreally.dev)- "พวกเราชอบพัฒนาซอฟต์แวร์" การเขียนโค้ดคือการเดินทางแก้ปัญหาแบบคดเคี้ยว และปลายทางสำคัญน้อยกว่าที่หลายคนคิด
- เรามักถูกถามคำถามประมาณนี้อยู่บ่อย ๆ:
- "ทำสิ่งนี้ไปทำไม?"
- "จุดประสงค์ของโปรเจ็กต์นี้คืออะไร?"
- "โปรเจ็กต์นี้ดีกว่า X ตรงไหน?"
ความเข้มข้นแบบซิลิคอนแวลลีย์
- ถ้าคุณใช้เวลาอยู่บน Hacker News หรือเว็บข่าวสายสตาร์ตอัปอื่น ๆ มากพอ คุณอาจเชื่อว่าทุกคนกำลังหมกมุ่นกับการสร้างสตาร์ตอัปมูลค่าหลายล้านดอลลาร์ตัวถัดไปหรือวางแผนทางออกอยู่
- มันอาจยากที่จะจินตนาการว่าผู้คนจะทำงานกับโค้ดโอเพนซอร์สเพราะสนุกล้วน ๆ
- มีแฮ็กเกอร์ที่หลงรัก ศิลปะแห่งการสร้างซอฟต์แวร์ อยู่จริง พวกเขาทำมันเพื่อความท้าทาย เพื่อความสนุก พวกเขาไม่ได้ทำเพื่อจะเป็นเศรษฐี
วัฒนธรรมผู้บริโภค
- หรือถ้าคุณมีแต่ใช้ซอฟต์แวร์ของคนอื่นและแทบไม่เคยสร้างอะไรเองเลย คุณอาจติดอยู่กับความคิดว่า "โปรเจ็กต์นี้ให้อะไรกับฉันได้บ้าง?" (และถ้าโปรเจ็กต์นั้นไม่เกี่ยวกับตัวเอง ก็จะสงสัยว่ามันมีไว้ทำไม)
- มี แฮ็กเกอร์ที่ไม่ได้ต้องการให้ใครมาใช้ซอฟต์แวร์ของพวกเขา อยู่มากมาย แน่นอนว่าถ้ามีคนอื่นมาสนุก ชื่นชม หรือซาบซึ้งกับงานของพวกเขาก็ดี แต่ไม่ใช่สิ่งจำเป็นอย่างเคร่งครัด แค่ได้สร้างมันขึ้นมาก็สนุกแล้ว
เราทำมันเพราะสนุกเท่านั้น จริง ๆ
- ท้ายที่สุดแล้ว คนที่เรียนทักษะการเขียนโปรแกรมมาเพียงเพื่อใช้งานในหน้าที่ประจำวัน อาจไม่เข้าใจโปรแกรมเมอร์ที่ชอบลองของใหม่อยู่เสมอ
- มี แฮ็กเกอร์ที่ใช้ชีวิตและหายใจเป็นโค้ด
- ความคิดที่ว่าทุกบรรทัดของโค้ดต้องพิสูจน์มูลค่าเป็นตัวเงินได้ หรือทุกชั่วโมงที่นั่งลำบากอยู่หน้าแป้นพิมพ์ต้องอธิบายได้ น่าเศร้าจริง ๆ
- ตัวกระบวนการเองก็มีคุณค่า ต่อให้มีข้อบกพร่อง มันก็ยังมีคุณค่าในตัวมันเอง ไม่ใช่มีแค่ผลลัพธ์สุดท้ายเท่านั้นที่สำคัญ
- ขอจบด้วยคำคมเกี่ยวกับการเขียนโปรแกรมที่ผมชอบที่สุด:
โปรแกรมเมอร์ก็เหมือนกวี ตรงที่ทำงานอยู่ห่างจากวัตถุแห่งความคิดบริสุทธิ์เพียงเล็กน้อย เขาใช้จินตนาการสร้างปราสาทขึ้นกลางอากาศ มีสื่อสำหรับการสร้างสรรค์ไม่กี่อย่างที่ยืดหยุ่นได้ขนาดนี้ ปรับแต่งและทำใหม่ได้ง่ายขนาดนี้ และทำให้โครงสร้างเชิงแนวคิดอันยิ่งใหญ่เกิดขึ้นจริงได้ง่ายขนาดนี้ แต่ต่างจากถ้อยคำของกวี โครงสร้างของโปรแกรมนั้นมีอยู่จริง เพราะนอกจากตัวโครงสร้างเองแล้ว มันยังสร้างผลลัพธ์ที่มองเห็นได้ เคลื่อนไหวได้ และทำงานได้
— เฟร็ด บรูกส์, The Mythical Man-Month
ลองดูสิ!
- ถ้าคุณรู้สึกว่าตัวเองหลงทาง — การเขียนโค้ดเคยสนุก แต่ตอนนี้กลายเป็นแค่งานหนักที่ต้องทำเพื่อสแกนเข้างานและรับเงินเดือน พวกเราขอชวนคุณกลับมาอีกครั้ง!
- หรือถ้าคุณถูกหล่อหลอมให้คิดว่าการเขียนโปรแกรมจากไอเดียเพี้ยน ๆ เป็นเรื่องของมืออาชีพหรือนักวิชาการเท่านั้น หน้านี้ก็เขียนมาเพื่อคุณ คุณมีสิทธิ์จะลองเล่น ลองปรับ ลองแต่ง และมีความสุขกับกระบวนการนั้น!
- ลองนึกถึงบางอย่างที่คุณอยากสร้าง อยากเรียนรู้ หรืออยากสัมผัสภายในคอมพิวเตอร์ แล้วอย่าเพิ่งค้นหา อย่าเพิ่งศึกษามาก แค่กระโดดลงไปเลย บางทีคุณอาจได้สนุกกับมันสักหน่อย จริง ๆ นะ
คลับ
เรียงแบบไม่สนลำดับ นี่คือบางโปรเจ็กต์ที่ติดป้าย "ทำเพราะสนุกล้วน ๆ" อย่างภาคภูมิใจ
- Natalie - คอมไพเลอร์ Ruby ที่ทำขึ้นมาเพราะสนุก
- ZigSelf - งานอิมพลีเมนต์ Self ที่เขียนด้วย Zig เพราะสนุก
- php-parser-rs - พาร์เซอร์ PHP ที่เขียนด้วย Rust เพราะสนุก
- ex6502 - อีมูเลเตอร์โปรเซสเซอร์ 6502 ที่เขียนด้วย Elixir เพราะสนุก
- Piko-piko OS - toy OS แบบ x86 16 บิตที่ทำขึ้นมาเพราะสนุก
- Folders2kt - ภาษาโปรแกรมแปลก ๆ ที่ทำขึ้นมาเพราะสนุก
- GCC Rust - คอมไพเลอร์ Rust ที่ทำขึ้นมาเพราะสนุก
- Soul - เซิร์ฟเวอร์ SQLite REST และเรียลไทม์ที่ทำขึ้นมาเพราะสนุก
- hssp - CLI สำหรับ HTTP status code ที่ทำขึ้นมาเพราะสนุก
- PyCraft - ตัวเปิด Minecraft ที่เขียนด้วย Python เพราะสนุก
- hashsearch - เอนจินค้นหารูปย้อนกลับที่ทำขึ้นมาเพราะสนุก
- quackspeak - เอนจินแปลงข้อความเป็นเสียงโดยใช้เป็ด เพราะสนุก
- Quark - ภาษา Lisp dialect ประสิทธิภาพสูงที่ทำขึ้นมาเพราะสนุก
- Whitecat - CLI สำหรับการพัฒนา PHP ที่ทำขึ้นมาเพราะสนุก
- eClient - ตัวเปิด Minecraft ที่เขียนด้วย Python เพราะสนุก
- CascadeOS - OS อเนกประสงค์ที่ทำขึ้นมาเพราะสนุก
- Kiesel - เอนจิน JavaScript ที่เขียนด้วย Zig เพราะสนุก
- github-pewpew - เครื่องมือ CLI สำหรับลบรีโพสิทอรี เพราะสนุก
- dt - ภาษาแบบ chained คล้าย AWK ที่ทำขึ้นมาเพราะสนุก
- grab - โคลน grep แบบเบาที่ทำขึ้นมาเพราะสนุก
- math-with-regexps - ทำคณิตศาสตร์ด้วย regex เพราะสนุก
- noro - โปรแกรมแก้ไขข้อความพร้อมตัวจัดการหน้าต่างที่ทำขึ้นมาเพราะสนุก
- Vox - ตัวสร้างเว็บไซต์แบบสแตติกที่เขียนด้วย Elixir เพราะสนุก
- jimson - พาร์เซอร์ JSON ที่ทำขึ้นมาเพราะสนุก
- txt2tufte - ตัวสร้างเว็บไซต์สไตล์ Tufte ที่ทำขึ้นมาเพราะสนุก
- Azure Storage เว็บเอ็กซ์พลอเรอร์ - Azure Storage เว็บเอ็กซ์พลอเรอร์ที่ทำขึ้นมาเพราะสนุก
- renam - ยูทิลิตีเปลี่ยนชื่อไฟล์ความเร็วสูงมากที่ทำขึ้นมาเพราะสนุก
- Funciton - ภาษาโปรแกรมที่ประกอบด้วยกล่องซึ่งทำขึ้นมาเพราะสนุก
ความเห็นของ GN⁺
- บทความนี้พูดถึงคุณค่าและความสำคัญของการที่โปรแกรมเมอร์ทำสิ่งต่าง ๆ เพียงเพื่อความสนุก ทุกวันนี้ในวัฒนธรรมผู้บริโภคและสตาร์ตอัป มีแรงกดดันให้ทุกอย่างต้องใช้งานได้จริงและทำเงินได้ แต่สิ่งนั้นอาจขัดขวางความคิดสร้างสรรค์และนวัตกรรมในการเขียนโปรแกรม
- ชุมชนโอเพนซอร์สเป็นตัวอย่างที่ดีของจิตวิญญาณแบบ "ทำเพราะสนุก" นี้ โปรเจ็กต์โอเพนซอร์สสำคัญหลายตัวเริ่มต้นจากการเป็นโปรเจ็กต์งานอดิเรกของใครสักคน และระหว่างทางก็ได้ทดลองไอเดียและแนวทางใหม่ ๆ
- แต่ถ้าผลักดันทัศนคตินี้มากเกินไป ก็อาจทำให้เกิดโปรเจ็กต์จำนวนมากที่ใช้งานจริงได้น้อย สุดท้ายแล้วความสมดุลระหว่างความสนุกกับประโยชน์ใช้สอยน่าจะสำคัญ ถึงอย่างนั้น บทความนี้ก็ยังมีความหมายตรงที่ช่วยเตือนให้เรานึกถึงคุณค่าของความสนุกและความอยากรู้อยากเห็นแบบบริสุทธิ์ที่เรามักหลงลืมไป
- สำหรับนักพัฒนาที่เหนื่อยล้าจากงานประจำ โปรเจ็กต์งานอดิเรกแบบนี้น่าจะเป็นแรงบันดาลใจและแรงจูงใจที่ดีได้ และเป็นบทความที่อยากแนะนำให้กับคนที่อยากเรียนรู้ภาษาใหม่หรือเทคโนโลยีใหม่ แต่รู้สึกว่าไม่มีเวลาด้วย
5 ความคิดเห็น
เท่าที่ผมทราบ ตัวภาษา Python เองก็เป็น language ที่ถูกสร้างขึ้นเพื่อความสนุกในช่วงวันหยุดประมาณหนึ่งสัปดาห์เหมือนกัน
ฉันชอบพัฒนาอะไรเล่น ๆ เพื่อความสนุกนะ แต่ช่วงนี้พอเลิกงานก็หมดแรงจนแทบนึกภาพไม่ออกเลยว่าตัวเองจะทำแบบนั้นได้ ยังมีคนเก่ง ๆ เยอะจริง ๆ
ยังมีวิธีช่วยแก้ปัญหาใน issue tracker ของโปรเจกต์โอเพนซอร์สที่ใช้บ่อย หรือมีส่วนร่วมกับเอกสารได้ด้วย ดูเหมือนไม่จำเป็นต้องเริ่มโปรเจกต์ใหม่หรือเขียนโค้ดเสมอไป
จนถึงปี 94 ผมเป็นเพียงผู้ใช้คอมพิวเตอร์ธรรมดา ๆ แล้วก็เริ่มเรียนภาษา และในปี 95 ก็ได้ทำงานที่เกี่ยวกับ "คอมพิวเตอร์"
พอมาคิดดูตอนนี้ ผมนี่โชคดีมากจริง ๆ
ความเห็นจาก Hacker News
สนุกกับการสร้างบางสิ่งผ่านโค้ด และบางครั้งก็คิดถึงผลตอบแทนทางการเงินด้วย แต่โดยหลักแล้วทำโปรเจ็กต์เพราะความสนุก
เคยอธิบายโปรเจ็กต์ส่วนตัวในการสัมภาษณ์งาน แต่รู้สึกอึดอัดเพราะผู้สัมภาษณ์ถามซ้ำ ๆ ว่าทำไมถึงทำโปรเจ็กต์นั้น
เปรียบการอธิบายแรงจูงใจในการสร้างซอฟต์แวร์ว่าเหมือนการสร้างปราสาททรายบนชายหาดคนเดียวแล้วรู้สึกพอใจ
โมเดลภาษาขนาดใหญ่ (LLM) ทำให้เริ่มโปรเจ็กต์สนุก ๆ ได้ง่ายขึ้นมาก
ลดค่าครองชีพและใช้ช่วงเวลาระหว่างงานสัญญาเพื่อให้มีเวลาลงทุนกับโปรเจ็กต์ส่วนตัว
น่าเสียดายที่รายชื่อโปรเจ็กต์ที่ทำเพื่อความสนุกมักมีเฉพาะงานที่ทำเสร็จแล้ว
จากบทสนทนากับเพื่อนร่วมงานเมื่อวานนี้ ได้ข้อสรุปว่าการพัฒนาทักษะผ่านการลงมือทำงานจำนวนมากเป็นสิ่งสำคัญ
ทั้งผลิตภัณฑ์ที่ทำเพราะความสนุกและผลิตภัณฑ์ที่ทำเพื่อผลกำไรต่างก็อาจมีคุณภาพต่ำได้
มันเป็นประสบการณ์ภายในคล้ายกับการทำอาหารชั้นเยี่ยมคนเดียว แต่ก็มีคุณค่าในตัวเอง
บนเว็บไซต์อย่าง Hacker News หลายคนอาจคิดว่าผู้คนกำลังเตรียมตัวสร้างสตาร์ตอัปตัวใหญ่ตัวถัดไป