รักการเขียนโปรแกรม แต่เกลียดอุตสาหกรรมการเขียนโปรแกรมในฐานะนักพัฒนา
(deathbyabstraction.com)- ต่างจากความสนุกของการเขียนโปรแกรมเอง ผู้เขียนรู้สึกว่าสถานที่ทำงานด้านซอฟต์แวร์เป็นสภาพแวดล้อมที่เรียกร้องให้ ผลิตโค้ดให้มากขึ้น มากกว่าจะถามถึงเป้าหมายของการออกแบบและเกณฑ์ของความสำเร็จ
- ประสบการณ์จากการดูประกาศรับสมัครงานอยู่หลายสัปดาห์ในปี 2023 ทำให้ความคาดหวังว่าจะมี “ที่ที่ดีกว่า” พังทลายลง โดยเฉพาะ วัฒนธรรมสตาร์ตอัป ที่แสดงท่าทีแบบ “ถามให้น้อยลง ผลิตให้มากขึ้น” อย่างตรงไปตรงมา
- แม้แต่ในบริษัทเทคขนาดใหญ่ นักพัฒนาก็ถูกปฏิบัติเป็นเพียง ตัวเลข เช่น ขนาดของ backend stack คะแนนสัมภาษณ์ และคะแนนประเมินผลงาน ทำให้วิจารณญาณส่วนบุคคลต่อวิธีการเขียนโค้ดยิ่งไร้ความหมาย
- ท่าทีแบบ “สร้างให้มากขึ้น ถามให้น้อยลง” อาจเพิ่มปริมาณโค้ดได้ แต่ก็นำไปสู่ซอฟต์แวร์ที่แย่ลง และเทคโนโลยีกระแสกับความเฉื่อยก็แทรกซึมไปถึงภาษา ไลบรารี เฟรมเวิร์ก และแพตเทิร์นของโค้ด
- งานที่ผู้เขียนต้องการคือการแก้ ปัญหาทางวิศวกรรม ที่เริ่มต้นจากความต้องการซึ่งมีอยู่แล้วในสังคม และคำว่า “ทำไม” ของระบบควรเป็นตัวกำหนดไปถึงภาษา พาราไดม์ สถาปัตยกรรม และไวยากรณ์
ความไม่สอดคล้องที่รู้สึกได้ในที่ทำงานสายซอฟต์แวร์
- ผู้เขียนบอกว่าตนไม่เคยเข้ากับงานวิศวกรรมซอฟต์แวร์ที่เคยผ่านมาสักที่
- เมื่อเข้าใจตรรกะภายในของ codebase ได้ระดับหนึ่งแล้ว ด้านเทคนิคก็เริ่มน่าเบื่อ และหลังจากนั้นก็อยาก ทำให้ต่างออกไป มากกว่าทำให้มากขึ้น
- ผู้เขียนตั้งคำถามต่อการตัดสินใจด้านการออกแบบและเป้าหมายอยู่เสมอ
- ทำไมเราถึงทำสิ่งนี้
- ทำไมต้องทำด้วยวิธีนี้
- มีวิธีที่ดีกว่านี้ไหม
- เราใช้ตัวชี้วัดอะไรในการตัดสินความสำเร็จ และทำไมถึงใช้มัน
- แม้ไม่ได้พูดคำถามเหล่านี้ออกมาทุกครั้ง แต่ก็เคยได้ยินว่าตัวเอง “คิดมากเกินไป” และ “ใส่ใจมากเกินไป” ทั้งที่เวลานั้นสามารถใช้ไปกับการปั๊มโค้ดให้ได้มากขึ้น
- ปัญหาไม่ใช่แค่พรสวรรค์กับงานไม่เข้ากัน แต่เป็นเพราะยากจะเห็นด้วยกับวิธีที่องค์กรดำเนินไป และผู้เขียนอยากเปลี่ยนมันมากกว่าจะคงมันไว้
ประกาศรับสมัครงานของสตาร์ตอัปและ “สร้างให้มากขึ้น ถามให้น้อยลง”
- ประสบการณ์จากการไล่ดูประกาศงานอยู่หลายสัปดาห์ในปี 2023 ทำลายความหวังว่า “น่าจะมีที่ที่ดีกว่า”
- ผู้เขียนประเมินว่า 90% ของคำอธิบายตำแหน่งงานเป็นโค้ดที่คนซึ่งได้รับเลือกจะต้องเขียน โดยดูห่างไกลจากปัญหาสำคัญทั้งของมนุษยชาติและของตัวบุคคล
- วัฒนธรรมสตาร์ตอัปถูกยกเป็นตัวอย่างที่เปิดเผยที่สุดของท่าที “ผลิตโค้ดให้มากขึ้นและถามให้น้อยลง” ในอุตสาหกรรม
- สตาร์ตอัปจำนวนมากถูกวิจารณ์ว่าเป็นการโยกย้ายเงินของนักลงทุน พร้อมพยายามโน้มน้าวผู้ใช้ว่าพวกเขาต้องการผลิตภัณฑ์ที่มีประโยชน์อย่างจำกัด เพื่อให้ได้ผู้ใช้แบบจ่ายเงิน
- สตาร์ตอัป ส่วนใหญ่มักล้มเหลว และผลลัพธ์ที่เหลืออยู่คือสปาเกตตีโค้ดที่ดูแลรักษายาก ซึ่งถูกกดดันให้เขียนเสร็จภายในไม่กี่สัปดาห์ ไม่ใช่ไม่กี่เดือน
- โค้ดแบบนั้นมักไม่ได้ถูกกลับไปดูอีก นอกจากใช้เป็นตัวอย่างของแนวปฏิบัติการเขียนโค้ดที่แย่ เวลาาของวิศวกรก็สูญเปล่า และเงินทุน venture capital ก็ไหลกลับไปหาคนที่มีทุนอยู่มากแล้ว เพื่อนำไปลงในสตาร์ตอัปอื่นต่อ
- ผู้เขียนวิจารณ์ว่าประกาศรับสมัครงานพยายามห่อหุ้มงานลักษณะนี้ให้ดูเหมือนเป็นงานน่าตื่นเต้น ที่ช่วยเติมเต็มชีวิตผู้คนและกระตุ้นการเติบโตทางวิศวกรรม
อำนาจตัดสินใจที่หายไปแม้ในบริษัทเทคขนาดใหญ่
- บริษัทเทคที่ตั้งมั่นแล้วอาจมีโครงสร้างองค์กรและการเงินต่างจากสตาร์ตอัป แต่ในเชิงวัฒนธรรมกลับไม่ได้ต่างกันมาก
- โค้ดที่เขียนใน FAANG อาจไปถึงผู้ใช้จริงได้ แต่ความคิดส่วนบุคคลต่อแง่มุมใด ๆ ของการเขียนโค้ดกลับยิ่งไม่เกี่ยวข้อง
- ผู้เขียนวิจารณ์ว่านักพัฒนากลายเป็น ฟันเฟืองของเครื่องจักร ผ่านวิธีต่อไปนี้
- ผลิตภัณฑ์อาจกำลังทำให้ ด้านที่เลวร้ายที่สุด ของทุนนิยมถูกทำให้เป็นอัตโนมัติในรูปแบบที่แนบเนียนยิ่งขึ้น
- ในทางปฏิบัติ นักพัฒนากลายเป็นตัวเลขอย่างขนาด backend stack คะแนนสัมภาษณ์ทางเทคนิค และคะแนนประเมินผลงาน
- ปัญหาไม่ได้อยู่แค่ที่ความจริงแบบนี้เอง แต่ยังรวมถึงการที่วิศวกรถูกคาดหวังให้โหยหางานซ้ำซากที่ว่างเปล่าและทำให้ต่ำต้อยนี้มากกว่าแรงงานกลุ่มอื่น และถูกกดไม่ให้ตั้งคำถามต่อมันในทุกด้านอย่างหนักกว่าเดิม
วิศวกรรมที่ตัดการคิดเชิงวิพากษ์ออกไป
- โปรแกรมเมอร์ถูกวางให้อยู่ในตำแหน่งที่โฟกัสแค่ อย่างไร มีส่วนกับการตัดสินใจว่าจะสร้างอะไรเพียงน้อยครั้ง และแทบไม่มีโอกาสถามว่าทำไมถึงสร้างมัน
- แม้แต่นักพัฒนาที่สามารถและต้องการวิจารณ์ระบบที่ตนเองผลิต ก็ยังได้รับสารว่าท่าทีแบบนั้นควรถูกทิ้งไว้นอกที่ทำงาน
- ผู้เขียนรู้สึกว่านักพัฒนาถูกห้ามแม้แต่จะชี้ให้เห็นการขาดอิสระและความสร้างสรรค์ซึ่งฝังอยู่ในงาน ทำให้แม้จะสร้างได้มากขึ้น แต่ก็ยากจะสร้างให้ต่างออกไปหรือสร้างสิ่งที่ดีกว่า
โค้ดมากขึ้น แต่ซอฟต์แวร์แย่ลง
- ท่าทีแบบ do-more-ask-less ของอุตสาหกรรมเทคอาจทำให้สร้างโค้ดได้มากขึ้น แต่ในขณะเดียวกันก็นำไปสู่ ซอฟต์แวร์ที่แย่ลง
- แม้ทุนและเงื่อนไขภายนอกจะเปิดช่องให้สร้างซอฟต์แวร์ที่ยั่งยืน เป็นบวก หรืออย่างน้อยมีประโยชน์ใช้สอยจริงได้ แต่บ่อยครั้งก็ไม่ทำเช่นนั้นเพราะความเฉื่อย
- การไหลตามกระแสและผลิตซ้ำสภาพเดิมเป็นทางเลือกที่ง่ายกว่าและมักเป็นไปได้มากกว่า
- ความเฉื่อยแบบเดียวกันนี้ยังแทรกซึมไปทั่วเทคสแตกของผลิตภัณฑ์ที่ไร้คุณค่าทางสังคม
- ภาษา
- ไลบรารี
- เฟรมเวิร์ก
- แพตเทิร์นของโค้ด
- แนวโน้มที่ให้ความสำคัญกับความใหม่และลูกเล่นมากกว่านวัตกรรมจริงสร้างปัญหาให้ทั้งอุตสาหกรรม และหากไม่ได้แก้ปัญหาที่ไม่ปกติ ก็ไม่จำเป็นต้องมีวิศวกรรมที่ไม่ปกติเช่นกัน
เกณฑ์ของวิศวกรรมแบบที่ต้องการ
- ปัญหาทางวิศวกรรมที่น่าสนใจที่สุดไม่ใช่ปัญหาที่ตั้งเป้าหมายเป็นความก้าวหน้าทางเทคโนโลยีในตัวเอง หรือพยายามสร้างอุปสงค์ของตลาดที่ไม่มีอยู่จริงขึ้นมาอย่างประดิษฐ์ แต่คือปัญหาที่เกิดขึ้นอย่างเป็นธรรมชาติในสังคม
- ความต้องการของสังคมคือแรงขับที่ดีที่สุดของนวัตกรรม และความสำเร็จ ที่พลิกวงการในยุคเริ่มต้นของคอมพิวติ้งก็เกิดขึ้นเพื่อประโยชน์สาธารณะที่ใหญ่กว่า
- วิธีการทำงานที่ผู้เขียนต้องการคือให้ ทำไม ของการสร้างระบบเป็นตัวนำทุก อย่างไร
- ภาษาโปรแกรม
- พาราไดม์
- สถาปัตยกรรม
- โค้ดทุกบรรทัด
- องค์ประกอบทางไวยากรณ์
- “ทำไม” นั้นควรสะท้อนความต้องการจริงที่มีอยู่จริง ไม่ใช่ตัวชี้วัดทางธุรกิจที่มีไว้เพื่อตัวมันเอง
คำขอให้พบคนที่มีคุณค่าแบบเดียวกัน
- ผู้เขียนบอกว่าจนถึงตอนนี้ยังไม่เคยพบใครที่แบ่งปันคุณค่าแบบนี้อย่างมีความหมาย และอยากทำงานวิศวกรรมลักษณะนี้เช่นกัน
- ในการปฏิสัมพันธ์กับอุตสาหกรรม ผู้เขียนมักรู้สึกโดดเดี่ยว แต่มั่นใจในคุณค่าของงานตนเองและความสำคัญของสิ่งที่ต้องพูด
- ผู้เขียนขอให้คนแบบนี้ติดต่อมา หากมีที่แบบนั้นอยู่แล้วก็อยากรู้ และถ้ายังไม่มี การสร้างมันขึ้นมาด้วยกันก็น่าจะเป็นประโยชน์
- เปิดรับงานที่ปรึกษาในขอบเขตความสนใจของตน และสอดคล้องกับคุณค่าอย่างสมเหตุสมผล
1 ความคิดเห็น
ความเห็นจาก Hacker News
สิ่งที่ OP เกลียดนั้น ถ้าจะให้พูดให้ตรงกว่าไม่ใช่ “อุตสาหกรรมการเขียนโปรแกรม” แต่คือ โลกขององค์กร มากกว่า ฉันเคยทำงานกับนักพัฒนาที่คาดหวังไม่ตรงกับสิ่งที่ “โลกความเป็นจริง” เรียกร้องจากนักพัฒนา และฉันเองก็เคยเป็นแบบนั้น
องค์กรไม่ได้สนใจความประณีต ความเป็นนามธรรม โค้ดที่เฉียบคมหรือสวยงาม แต่ต้องการนักพัฒนาที่สามารถปั๊มฟีเจอร์ตามความต้องการทางธุรกิจได้
คนแต่ละคนในฟันเฟืองอย่างผู้จัดการ ผู้บริหาร หรือเพื่อนร่วมงาน อาจพูดได้ว่าจะเปิดทางให้คุณได้ทำ “ศิลปะ” ของการเขียนโปรแกรม แต่ถ้าคุณไม่สามารถสร้างคุณค่าทางเศรษฐกิจให้บริษัทได้ สุดท้ายคุณก็จะถูกมองว่าเป็นภาระ
ทางที่ดีกว่าคือไปหาความสุขและความเป็นศิลปะของการเขียนโปรแกรมนอกโลกองค์กร และอย่าคาดหวังว่า “วงการ” จะสนใจวิธีการหรือเหตุผลของการเขียนโปรแกรม มันสนแค่ว่าจะเปลี่ยนตัวอักษรที่พิมพ์ลงจอให้กลายเป็นเงินสดได้หรือไม่ ถ้ายอมรับข้อนี้ได้ ชีวิตจะอึดอัดน้อยลงมาก และอาจยังหาความสนุกจากงานได้ด้วย เพียงแต่มันอาจไม่ใช่ “ศิลปะ” ก็ได้
แต่พอได้ยินว่า “องค์กรไม่สนใจความประณีต ความเป็นนามธรรม ความเฉียบคม หรือโค้ดที่สวยงาม” ก็ทำให้ฉันรู้สึกว่า งั้นฉันเองก็คือโลกองค์กรหรือเปล่า
สิ่งที่ฉันอยากบอกเพื่อนร่วมงานคือ ก่อนจะพยายามทำให้ประณีต เป็นนามธรรม เฉียบคม หรือสวยงาม จงทำให้มัน ทำงานตามสเปก ก่อน ไม่อย่างนั้นทั้งหมดก็ไร้ค่า
ต้องชำนาญพอสมควรในการทำให้มันทำงานถูกต้องก่อน แล้วค่อยทำให้มันถูกวิธี และบางทีค่อยทำให้มันเร็วขึ้นได้
ต่อให้เอาสิ่งที่ชอบไปทำเป็นธุรกิจของตัวเอง เช่น ทำเฟอร์นิเจอร์ ก็ยังต้องเจอลูกค้าที่อยากได้สิ่งที่ “ผิด” หรือไม่ยอมจ่ายค่าวัสดุหายากที่ดีกว่า
การได้ทำสิ่งที่ตัวเองชอบอย่างบริสุทธิ์ในฐานะงานอดิเรกที่ไม่มีองค์ประกอบของงานปะปนอยู่ ย่อมดีกว่าเสมอ
เหตุผลที่เราได้รับเงินก็เพื่อส่งมอบงาน เรื่องว่ามันมีประสิทธิภาพไหม แก้ปัญหาได้ไหม ทำเงินได้ไหม หรือแค่ติ๊กเช็กบ็อกซ์ครบหรือไม่ ไม่ใช่เรื่องที่ฉันต้องกังวลหรือควบคุม สิ่งที่ต้องทำคือวางแผนงาน ทำงานนั้น ปฏิบัติต่อผู้คนอย่างสุภาพ และเลิกงานตอน 5 โมง
ไม่ใช่ว่าควรเขียนโค้ดแย่ ๆ หรือทำแบบขอไปทีโดยไม่สนผลกระทบปลายน้ำของการตัดสินใจ เพราะมีคนถูกไล่ออกด้วยเหตุผลแบบนั้นเหมือนกัน
แต่สิ่งที่สำคัญกว่าคืออย่าทุ่มเกินไป อย่าพยายามคาดเดาว่าผลิตภัณฑ์จะพัฒนาไปทางไหนจนต้องรองรับทุกสถานการณ์ อย่าผลักดันดีไซน์ที่เห็นชัดว่าดีกว่า อย่าพยายามส่งมอบให้เร็วขึ้น และไม่ควรรีบแก้บั๊กอื่นที่บังเอิญเจอระหว่างทำงานที่ได้รับมอบหมาย การไล่ล่าการเลื่อนตำแหน่งเป็นหนึ่งในความเครียดที่แย่ที่สุดที่ฉันสร้างให้ตัวเอง
คุณต้องดูให้ออกว่าโปรเจกต์ที่ตัวเองอยู่เป็นงานความเข้มข้นสูง ช่วงเติบโตสูง ระยะสุกงอม หรือเป็นทีมที่ใกล้จะถูกปลด แล้วค่อยปรับพฤติกรรมให้เหมาะ
และคุณต้องทำให้ตัวเองมีผลงานและเป็นที่สังเกต ทำเดโมไตรมาสละครั้ง รีวิวโค้ดของคนอื่น เข้าประชุมออกแบบแล้วถามคำถาม ตอบอีเมลหรือข้อความที่เข้ามาก่อน 5 โมงเย็นให้ไว และส่งมอบสิ่งที่รับปากไว้ ทำตัวให้ดูเป็นทรัพยากรที่มีประโยชน์ แต่ถ้ามีสัญญาณกดดันเรื่องการส่งมอบแม้แต่น้อย ก็ต้องผลักกลับด้วยการกระทำ
สุดท้ายแล้ว ควรเตรียมตัวให้พร้อมเสมอที่จะไป สัมภาษณ์งานครั้งถัดไปภายใน 2 สัปดาห์
ที่ทำงานก็เป็นแค่ที่ทำงาน ไม่ใช่ครอบครัว และไม่ใช่บริษัทจัดหางานชั่วคราว
เหมือนบอกว่าเพราะการที่ปีกยังติดอยู่ระหว่างบินไม่ได้ช่วยเพิ่มตัวชี้วัดผลงานหลัก งั้นก็ไล่คนที่เสียเวลากับความกังวลไม่เกี่ยวข้องแบบนั้นออกให้หมด
เป้าหมายแฝงคืออยากให้มันแพร่หลายมากพอ จนโปรแกรมเมอร์พร้อมใจกันเห็นว่าควรมีอำนาจต่อรองใน “โลกองค์กร” เช่น เรียกร้องให้ลดความเร็วในการ “ปั๊ม” ฟีเจอร์ใหม่ และลงทุนกับคุณภาพซอฟต์แวร์ให้มากขึ้น
ทำงานเป็นนักพัฒนามากว่า 30 ปีแล้ว แต่ก็น่าเสียดายที่แทบไม่มีอะไรให้โต้แย้งจากโพสต์ของ OP ได้มากนัก อยากจะโต้แย้งได้เหมือนกัน
คนหนุ่มสาวถูกสอนว่างานด้านเทคโนโลยีและการสร้างซอฟต์แวร์เป็นกิจกรรมสร้างสรรค์ที่ได้ปลดปล่อยความหลงใหลโดยกำเนิด คนที่มีวิธีคิดบางแบบซึ่งดึงดูดกับสัญลักษณ์ ความเป็นนามธรรม และงานที่ทำซ้ำ ๆ จะมารวมตัวกันในงานนี้ พอเวลาผ่านไป ผู้ถือหุ้นก็อ้วนพีขึ้น
ความจริงคือการพัฒนาซอฟต์แวร์แทบจะเป็นกิจกรรมทางเศรษฐกิจล้วน ๆ และยังมีลักษณะเชิงเอารัดเอาเปรียบด้วย สภาพแวดล้อมการทำงานดีกว่าการขุดทองหรือบอกไซต์แน่นอน แต่โดยมากเราก็กำลังขุดโค้ดจากสายแร่โค้ดเพื่อทำให้คนอื่นรวยขึ้น คนที่นั่งอยู่ในห้องทำงานมุมอาคาร รวมถึงคนที่อยู่เหนือขึ้นไปอีกซึ่งมีเรือยอชต์
พวกเขาไม่สนใจว่าเราทำอะไร ไม่สนใจท่าทีเสแสร้งที่เรามองว่าสิ่งนี้เป็นศิลปะหรือฝีมือเชิงช่าง และไม่สนใจสิ่งที่เราคิดว่าสำคัญ ที่จริงแล้วส่วนใหญ่พวกเขาคิดว่าเราเป็นพวกขี้แพ้ที่เสียเวลาไปวัน ๆ https://ribbonfarm.wpenginepowered.com/wp-content/uploads/2009/10/hughMcLeodCompanyHierarchy.jpg
อย่างที่คนอื่นพูดกันในที่นี้ ข้อผิดพลาดพื้นฐานคือการพยายามหาความหมายจากงานในองค์กร แต่คนเราก็ต้องการความหมาย และเมื่อเราต้องใช้เวลาในชีวิตที่มีเพียงครั้งเดียวไปกับงานมากเกินไป ก็แทบไม่มีทางเลือกนัก ผมเองก็ไม่รู้คำตอบ
อย่างน้อยก็มีคนอยู่สองประเภทที่มอง “ชนชั้นล่าง” ของซอฟต์แวร์ว่าเป็นพวกขี้แพ้
พวกแรกมองว่างานนี้ต้องใช้ทักษะ คนทำงานมีความเชี่ยวชาญที่มีคุณค่า และควรค่าแก่การรับฟัง ถึงอย่างนั้นก็ยังเป็นแค่สินค้าแรงงานที่รับเงินเดือน ไม่ใช่ผู้เล่นตัวจริงที่ได้เป็น “คนที่ฉลาดที่สุดในห้อง” หรือ “ผู้นำ” แบบพวกเขาและได้รับผลตอบแทนก้อนโต จึงยังถูกมองว่าเป็นพวกขี้แพ้
อีกพวกมองว่างานซอฟต์แวร์เป็นงานจิปาถะทักษะต่ำ คนทำงานเป็นเพียงสิ่งจำเป็นชั่วคราวที่น่ารำคาญ และยังหยิ่งผยองไม่รู้ที่ต่ำที่สูงในเรื่องค่าตอบแทนกับความภักดี พวกนี้เห็นว่าความเห็นของพนักงานไม่มีค่า แน่นอนว่าในโลกธุรกิจ คนงานซอฟต์แวร์ก็ยังถูกมองว่าเป็นพวกขี้แพ้ เพราะไม่ได้เล่นเกมแบบผู้เล่นตัวจริงและไม่สามารถตักตวงผลประโยชน์เข้าตัวเองได้
แบบหลังนี่แย่กว่ามาก
ถ้าสิ่งที่ผมสร้างทำให้คนอื่นรวยขึ้น ผมก็โอเค เพราะนั่นหมายความว่าสิ่งที่ผมสร้างมีคุณค่า ผมอยากให้ทุกสิ่งที่ผมสร้างมีคุณค่า
สักวันหนึ่งถ้าฝึกฝน เรียนรู้ สะสมประสบการณ์และเงินเก็บมากพอ ผมก็หวังว่าจะสามารถจ้างคนอื่นอย่างมีความรับผิดชอบได้
ถ้ามีไอเดียดีและทำได้ถูกทาง ผมเองก็อาจมีเรือยอชต์ลำนั้นได้เหมือนกัน เราเรียกสิ่งนี้ว่าแรงจูงใจทางเศรษฐกิจ หรือก็คือแรงจูงใจ
ผมมองว่า “ทิศทางที่อุตสาหกรรมกำลังมุ่งไป” คือกระบวนการที่ถูกพวกนักต้มตุ๋นแทรกซึมมานานแล้ว มูลค่าที่สร้างได้จากการเขียนซอฟต์แวร์นั้นมหาศาล และเงินเดือนสูงในวงการเทคโนโลยีก็สะท้อนสิ่งนั้น ความมั่งคั่งนี้ดึงดูดนักต้มตุ๋นทุกประเภทเข้ามา
เรื่องนี้เห็นได้ชัดที่สุดในเกมแมวจับหนูของการคัดเลือกวิศวกรที่มีคุณสมบัติเหมาะสม อัตราส่วนระหว่างต้นทางกับปลายทางของ funnel การจ้างงานสูงกว่าที่เคยเป็นมา
ในแบบที่เห็นไม่ชัดนัก ก็คือการเกิดขึ้นของ “บทบาทนักต้มตุ๋น” ทั้งชุด เช่น product manager, scrum master พอเข้ามาได้แล้ว ยิ่งมีจำนวนมากก็ยิ่งปลอดภัย ก็เลยพากันดึงเข้ามาเพิ่ม
คนฉลาดที่น่าจะสร้างนวัตกรรมได้ ตอนนี้กลับต้องจูงมือพาคนไร้ความสามารถผ่านกระบวนการของความคิดสร้างสรรค์ นวัตกรรม การวิจัย การค้นพบ และวิศวกรรม เพราะคนไร้ความสามารถเหล่านั้นมักเป็นผู้มีอำนาจตัดสินใจสุดท้ายว่าคนฉลาดควรใช้เวลาไปกับอะไร
ถ้าคุณเคยเจอประชุมที่วิศวกรรู้ตั้งแต่นาทีที่ 10 แรกแล้วว่าจะแก้ปัญหาลูกค้าอย่างไร แต่ product manager ต้องผลัดกันถูกจูงมือพาไปจนถึงข้อสรุปเดียวกัน นั่นแหละคือภาพของสิ่งนี้
ปัญหาด้านประสิทธิภาพ ช่องโหว่ความปลอดภัย การขาด observability การขยายระบบได้แย่ รวมถึงปัญหาการตั้งค่าหรือ dependency ที่ไร้สาระจึงตามมา
โดยเฉพาะบริษัท FAANG เต็มไปด้วยขยะพวกนี้ โค้ดที่เขียนขึ้นไว้สำหรับ “โพสต์อวด” เพื่อเลื่อนตำแหน่ง แล้วก็แทบถูกทิ้งไว้เฉย ๆ เพราะคนเขียนย้ายหนีก่อนที่ทางลัดราคาถูกจะถูกเปิดโปง
วาทศิลป์ลื่นไหลกลายเป็นทักษะที่มีค่าที่สุดสำหรับวิศวกรซอฟต์แวร์ มากกว่าการออกแบบที่แข็งแรง และผลลัพธ์ก็ปรากฏให้เห็นไปทั่ว
หลังจากพัฒนาซอฟต์แวร์องค์กรมากว่า 10 ปี ผมก็เลิกสนใจแล้วว่าผลลัพธ์จะเป็นอย่างไร หรือคณะละครสัตว์นี้จะไปจบตรงไหน
ตอนนี้สิ่งที่ผมสนใจก็มีแค่เงินเดือนที่ตัวเลขสูงแบบเหลือเชื่อเท่านั้น
ผมเรียกสิ่งนี้ว่าการพัฒนาแบบใส่ใจเท่าที่จำเป็นตอนนี้ เพื่อจะได้ไม่ต้องใส่ใจมากในภายหลัง
ใช้ชีวิตเป็นโปรแกรมเมอร์มา40 ปีแล้ว แต่ก็พยายามหาวิธีใช้ความคิดสร้างสรรค์และจินตนาการอยู่เสมอ และไม่ยอมกลายเป็นคนที่เอาแต่พิมพ์โค้ดแบบเครื่องจักร
งานสุดท้ายของผมคือการนำทีมเล็ก ๆ สร้างโค้ดที่สำคัญในเชิงกลยุทธ์ และมันก็ประสบความสำเร็จ หากโค้ดนั้นทำงานผิดพลาดแม้แต่ครั้งเดียว ทุกวันจะมีคนเป็นแสนโกรธ และมีผู้บริหารหัวเสียตามมาเป็นทอด ๆ
สุดท้ายผมก็ตัดสินใจเกษียณ เพราะเหนื่อยกับการทำงานหนักเกินไป
ถ้างานไม่ให้แรงจูงใจ คุณก็ควรหาวิธีใหม่หรือสถานที่ใหม่ในการเป็นโปรแกรมเมอร์ เช่น เริ่มบริษัทของตัวเองหรือทดลองอะไรใหม่ ๆ ไม่อย่างนั้นก็ต้องหางานสายอื่น
การสร้างตัวเองขึ้นมาใหม่ไม่ใช่เรื่องง่าย และทุกวันนี้ยิ่งยากกว่าเดิมมาก แต่ถ้าต้องการมากพอ คุณก็ทำได้
แม้แต่ตอนทำงานให้เหล่าผู้กุมอำนาจขององค์กร การเขียนโปรแกรมก็ยังเติมพลังให้ได้ งานโน้มน้าวให้เครื่องทำตามที่เราต้องการเป็นสิ่งที่ไม่เคยเบื่อ ทำได้ทั้งวันก็อาจไม่เหนื่อย
ในช่วงที่หาได้ยากที่ต้องเขียนโปรแกรมหนัก ๆ ก็มักจะมารู้ตัวอีกทีว่าทำต่อเนื่องไป 15 ชั่วโมงโดยไม่ทันสังเกต เวลาผ่านไปแบบนี้มาเกือบ 20 ปีแล้ว
น่าเสียดายที่การเขียนโปรแกรมเป็นเพียงส่วนเล็ก ๆ ของงานเท่านั้น และยิ่งชัดเจนขึ้นเมื่อประสบการณ์มากขึ้น บางครั้งเวลาที่ได้เขียนโค้ดจริง ๆ มีแค่อาทิตย์ละหนึ่งหรือสองชั่วโมง
ที่เหลือหมดไปกับการประชุมไร้สาระ การคอยจูงมือพาคนที่ไม่อ่านเอกสาร การโน้มน้าวให้คนอื่นไปโน้มน้าวเครื่องต่ออีกทีให้ทำสิ่งที่ต้องการ “การวางแผน” และเสียงรบกวนทำนองเดียวกัน ส่วนเดียวที่รู้สึกคุ้มค่าคือการเป็นเมนเทอร์ให้โปรแกรมเมอร์รุ่นใหม่
เหตุผลที่ยังทำต่อก็เพราะมันเป็นเส้นทางที่ปลอดภัยไปจนถึงวัยเกษียณ และตอนนี้ก็มาเกือบถึงแล้ว แผนหลังเกษียณคือเขียนโปรแกรมสิ่งที่ฉันอยากสร้างเพื่อความสนุกล้วน ๆ
คิดว่าส่วนหนึ่งของปัญหาคือ นักพัฒนาหลายคนอยากรักษาระดับเงินเดือนที่ตอนนี้ได้จาก $FAANG หรือระดับหุ้นที่อาจได้จาก $STARTUP เอาไว้ พร้อมกับอยากทำงานกับ โปรเจกต์ที่มีความหมาย และคนที่ดี
ในความเป็นจริง พนักงานจำนวนมากมองความหมาย ความเป็นอิสระ อำนาจในการตัดสินใจ และสมดุลงานกับชีวิตเป็นเหมือนสกุลเงิน และยอมลดเงินเดือนเพื่อให้ได้งานที่มีความหมาย
มีงานที่ดีกว่านี้อยู่จริง ฉันเองก็หาเจอ แต่ถ้าตอนนี้คุณทำงานอยู่ในบริษัท ad tech หรือสตาร์ทอัป AI ก็แทบจะแน่นอนว่าต้องเตรียมใจเห็นตัวเลขเงินเดือนที่ต่ำกว่าสิ่งที่คุ้นเคยมาก
ฉันโตมาในครอบครัวรายได้น้อย และหลังเป็นผู้ใหญ่ก็เคยอยู่ด้วยเงินน้อยมากหลายครั้ง เลยรู้สึกเป็นเรื่องธรรมชาติ ในบางแง่แทบจะชอบมากกว่าด้วยซ้ำ
สุขภาพจิตของฉันถูกคุกคามจากความเครียดเกินพอดีหรือความไร้ความหมายได้ง่ายกว่างบประมาณที่ตึงมือ
กรณีเดียวที่การฝืนทำงานที่ไม่ได้รู้สึกบวกนัก หรือแย่กว่านั้นคือมีแต่ความรู้สึกลบ จะพอฟังขึ้นได้ ก็คือต้องมีแผนที่ชัดเจนมากสำหรับเงินที่หาได้เพิ่ม และมีโอกาสสูงมากที่จะทำตามแผนนั้นได้จริง
วิธีใช้ชีวิตแบบนี้อาจไม่เหมาะกับทุกคน แต่ถ้าคุณเป็นคนที่วัตถุนิยมน้อยกว่าค่าเฉลี่ย หรือไม่กลัวการใช้ชีวิตแบบประหยัดขึ้น ก็อยากแนะนำอย่างมากให้ลองพิจารณา โดยเฉพาะถ้าช่วงนี้คุณถามตัวเองเกินสัปดาห์ละครั้งว่า “งานดี ๆ นี้” จะทนต่อไปได้อีกนานแค่ไหนโดยไม่พังเสียก่อน
เครื่องมือที่เราสร้างช่วยให้คนที่ลงมือสร้างของจริงทำงานได้ปลอดภัยและมีประสิทธิภาพมากขึ้น การได้เห็นโปรเจกต์ที่จับต้องได้จริง ๆ ถูกสร้างขึ้นเป็นอะไรที่เปิดตาสุด ๆ และยอดเยี่ยมมาก
จริงอย่างที่ว่า ค่าตอบแทนแบบ FAANG สูงกว่ามาก แต่ที่ที่ฉันทำอยู่ตอนนี้ดีมากจริง ๆ และเป็นครั้งแรกในรอบนานมากที่ฉันไม่รู้สึกอยากหาที่ใหม่หลังผ่านไปไม่กี่ปี
ส่วนใหญ่ไม่มีศักยภาพจะจ่ายเงินเดือนก้อนโต ต้องการคนที่สนใจจริงและมีแรงขับในตัวเอง รวมถึงพร้อมยืดหยุ่นได้หลายด้าน และในบริษัทเล็กก็มีหลายอย่างที่ต่อรองกันได้มากกว่า
บริษัทแบบนี้ไม่ได้โผล่มาให้เห็นตรงหน้าอย่างง่าย ๆ คุณต้องออกไปหาเอง
ทางออกคือ ออกมาเป็นอิสระ สร้างไอเดียของตัวเองแล้วขายให้ผู้บริโภค อาจเป็นสตาร์ทอัปของตัวเองก็ได้ แต่สำหรับฉันคือการเป็นนักพัฒนาเกมอินดี้
เกมหนึ่งของฉันชื่อ YOYOZO ได้รับเลือกเป็น “Best Video Games of 2023” ของ Ars Technica เลยทำให้รู้สึกว่าการตัดสินใจของฉันถูกต้อง
มันเหมือนกับชอบเซ็กซ์แต่ไม่ชอบเป็นโสเภณี ไม่ว่าจะทำอะไร ถ้าทำไม่ได้ด้วย เงื่อนไขของตัวเอง ก็อาจทุกข์ทรมานได้
ฉันก็รู้สึกคล้ายกันกับ LeetCode
ฉันชอบวิศวกรรมซอฟต์แวร์ แต่ LeetCode ทำให้เกลียดวิศวกรรมซอฟต์แวร์
ฉันแค่อยากสร้างของเจ๋ง ๆ ไม่ได้อยากท่องจำแล้วเขียน LRU cache หรือโจทย์ LeetCode ระดับกลางถึงยากอีกข้อให้เสร็จใน 40 นาที
แน่นอน อาจมีบริษัทที่เพราะแบบนี้แล้วไม่อยากคุยกับฉัน แต่ก็ไม่เป็นไร ยังไงฉันก็ไม่เคยผ่านสัมภาษณ์แบบนั้นอยู่แล้ว และสุดท้ายก็ต้องหางานที่ไม่บังคับให้ live coding ระหว่างสัมภาษณ์เสมอ
ความคาดหวังที่แท้จริงแทบจะเป็นการท่องจำคำตอบที่ดีที่สุดให้แม่นเป๊ะ ซึ่งคำตอบนั้นก็มักเป็นสิ่งที่คนระดับปริญญาเอกที่ศึกษาด้านอัลกอริทึมหามาได้
สุดท้ายแล้วคุณก็แค่ไปนั่งทำ endpoint สำหรับ CRUD ที่มีผู้ใช้ต่อเดือน 1,000 คนเท่านั้น