สิ่งที่ผมได้เรียนรู้ในฐานะวิศวกรอาวุโส (2021)
(luminousmen.substack.com)- บทความที่วิศวกรข้อมูลผู้มีประสบการณ์ 10 ปีเขียนอย่างตรงไปตรงมาเกี่ยวกับอาชีพ เทคโนโลยี เพื่อนร่วมงาน และชีวิตในขณะมึนเมา โดยเป็นฉบับเก็บรักษาของโพสต์ที่เคยลงใน Reddit r/ExperiencedDevs
- สิ่งที่สำคัญกว่าสแตกเทคโนโลยีคือ หลักการแกนกลาง 10~20 ข้อ ของแต่ละสายงาน และสแตกก็เป็นเพียงเครื่องมือที่ทำให้สิ่งนั้นง่ายขึ้น
- วิธีที่มีประสิทธิภาพที่สุดในการเติบโตในอาชีพคือ การย้ายงาน และไม่มีเหตุผลที่จะต้องอยู่ในที่ทำงานที่ไม่พอใจ
- โค้ดที่ดีคือโค้ดที่วิศวกรจูเนียร์ก็เข้าใจได้ และโค้ดที่ดีที่สุดคือ โค้ดที่ไม่มีอยู่เลย
- อย่าผูกคุณค่าในตัวเองไว้กับค่าตอบแทนหรือตำแหน่ง และ ความใจดีและความพยายาม จะเปลี่ยนทั้งอาชีพและชีวิตของคุณได้ในระยะยาว
ผมกำลังเมาและคงจะเสียใจภายหลัง แต่ขอจัดอันดับสิ่งที่ผมได้เรียนรู้ในช่วง 10 ปีที่ผ่านมาในฐานะวิศวกรแบบคนเมาแล้วกัน
- วิธีที่ดีที่สุดในการพัฒนาอาชีพคือ ย้ายบริษัท
- สแตกเทคโนโลยีไม่ได้สำคัญขนาดนั้น — ในสายข้อมูลมี แพตเทิร์นพื้นฐานราว 15 แบบ และทุกสายก็มีหลักการแกนกลางอยู่ 10~20 ข้อ สแตกเทคโนโลยีก็เป็นแค่เครื่องมือที่ทำให้สิ่งเหล่านั้นง่ายขึ้น ดังนั้นอย่ากังวลมากเกินไป
- ที่คนชอบแนะนำให้ย้ายงานก็มีเหตุผล — ถ้าไม่พอใจกับที่ทำงานก็ถึงเวลา ออกไป
- ผมเคยได้เพื่อนแท้ตลอดชีวิตจากที่ทำงาน แต่สิ่งนั้นไม่จำเป็นต้องเป็นเงื่อนไขของทุกที่ทำงาน — ผมเคยมีงานที่มีความสุขแม้ไม่มีเพื่อน และเคยมีงานที่มี เพื่อนดี ๆ แต่ไม่มีความสุข
- ผมได้เรียนรู้วิธี พูดตรงกับผู้จัดการอย่างพอดี — ไม่ตรงเกินไป แต่ตรงพอให้ยังเป็นตัวเองได้ในที่ทำงาน กรณีแย่สุดคืออะไร? โดนไล่ออกเหรอ? สองอาทิตย์ก็หางานใหม่ได้
- ถ้าคุณต้องถูกปลุกตอนตี 2 เพราะ on-call มากกว่าหนึ่งครั้งต่อไตรมาส แปลว่ามีปัญหาร้ายแรง ต้องแก้ไม่ก็ลาออก
รินเพิ่มอีกแก้ว
- คุณสมบัติของผู้จัดการที่ดีซ้อนทับกับ คุณสมบัติของวิศวกรที่ดี อย่างมาก
- ตอนเริ่มต้นผมหลงใหลเทคโนโลยี การเขียนโปรแกรม และวิทยาการคอมพิวเตอร์ แต่ตอนนี้ ผ่านช่วงนั้นมาแล้ว
- โค้ดที่ดีคือ โค้ดที่วิศวกรจูเนียร์เข้าใจได้, โค้ดที่ยอดเยี่ยมคือโค้ดที่นักศึกษา CS ปี 1 ก็เข้าใจได้ และโค้ดที่ดีที่สุดคือ ไม่มีโค้ดเลย
- ทักษะที่ถูกประเมินต่ำที่สุดของวิศวกรคือ การเขียนเอกสาร — ถ้ามีใครสอนวิธีเขียนเอกสารดี ๆ ได้ ผมยอมจ่ายเงินจริง ๆ ต่อให้เป็นคอร์ส 1,000 ดอลลาร์ ถ้ารับประกันว่าจะทำให้ผมเขียนเอกสารดีขึ้นได้ ผมก็พร้อมจ่าย
- ในทำนองเดียวกัน การเขียน proposal สำหรับการเปลี่ยนแปลงต่าง ๆ ให้ดี ก็เป็นทักษะที่ยอดเยี่ยม
- สงครามศาสนาเกือบทั้งหมด (vim vs emacs, mac vs linux ฯลฯ) ไม่สำคัญหรอก… ยกเว้นอย่างเดียว ดูข้างล่าง
- ยิ่งอายุมากขึ้น ผมยิ่งซาบซึ้งกับ ภาษาแบบ dynamic ใช่ ผมพูดเอง มาสิ
- ถ้าเมื่อไรคุณรู้สึกว่าตัวเองเป็น คนที่ฉลาดที่สุดในห้อง ก็ถึงเวลาต้องย้าย
- ผมไม่เข้าใจเลยว่าทำไมนักพัฒนาเว็บแบบฟูลสแตกถึงได้เงินน้อยขนาดนี้ — ต้องเข้าใจทั้งฟรอนต์เอนด์ แบ็กเอนด์ ความเข้ากันได้ของเบราว์เซอร์ เครือข่าย ฐานข้อมูล แคช ความต่างระหว่างเว็บกับมือถือ และยังมี เฟรมเวิร์กใหม่ ๆ โผล่มาไม่หยุด ควรได้เงินเดือนพื้นฐาน 500,000 ดอลลาร์ด้วยซ้ำ
- เราควร รับอินเทิร์นเพิ่มอีกเยอะ ๆ — เด็กพวกนี้พลังล้นและไอเดียเยอะ อินเทิร์นที่กล้าถามและกล้าวิจารณ์คือที่สุด
จิบหนึ่งอึก
- อย่าไปเจอฮีโร่ของตัวเอง — ผมเคยลงคอร์ส 5,000 ดอลลาร์ของฮีโร่คนหนึ่ง เขาเป็นคนดีมากนะ แต่สุดท้ายก็มั่วสดเหมือนพวกเราคนอื่น ๆ นั่นแหละ
- สแตกเทคโนโลยีก็สำคัญเหมือนกัน — ลองนึกถึงนักพัฒนา Python กับนักพัฒนา C++ ภาพลักษณ์ต่างกันมาก เพราะเครื่องมือบางอย่างเหมาะกับงานบางแบบโดยเฉพาะ ถ้ายังไม่รู้จะทำอะไร ก็เลือก Java ได้เลย — เป็นภาษาที่ไม่ค่อยน่ารัก แต่ใช้ได้โอเคกับแทบทุกอย่าง
- ภาษาโปรแกรมที่ดีที่สุดคือ Lisp คุณควรเรียน Lisp
- ภาษาที่ทำเงินได้คุ้มที่สุดสำหรับมือใหม่คือ SQL — ไม่ต้องรู้อะไรอย่างอื่นก็ยังได้ แค่รู้ SQL ก็หาเงินได้ เจ้าหน้าที่เงินเดือน 50k → เจ้าหน้าที่เงินเดือนที่รู้ SQL 90k พนักงานออฟฟิศทั่วไประเบียบดี 40k → ถ้ารู้ SQL ด้วยก็จะถูกเรียกว่า PM และได้ 150k
- การทดสอบสำคัญ แต่ TDD เป็นลัทธิ
- งานราชการที่มั่นคงไม่ได้ดีอย่างที่คนคิด (สำหรับช่วงต้นถึงกลางอาชีพ) — 120k + สวัสดิการ + บำนาญดูดี แต่คุณจะ ขายวิญญาณให้เทคโนโลยีเฉพาะทาง มีเหตุผลที่อายุเฉลี่ยของวิศวกรในนั้นคือ 50+ ข้อนี้ไม่รวมพวกผู้รับเหมารัฐบาล
- recruiter ฝั่ง third-party คือ ปรสิต — แต่ถ้าคุณเจอ recruiter ดี ๆ ก็รักษาความสัมพันธ์ไว้ คนที่ทำ recruiter third-party มาเกิน 3 ปีมักไม่ค่อยดี ส่วนคนเก่ง ๆ มักย้ายไปเป็น recruiter ในบริษัทยักษ์ใหญ่
- stock option มีค่าอยู่แค่สองแบบ คือ ไร้ค่า หรือทำให้คุณเป็นเศรษฐี — ถ้าทีมวิศวกรรมยังไม่เกิน 100 คน มักจะไร้ค่า
- การทำงานจากบ้านยอดเยี่ยมมาก แต่ผมคิดถึง ไวท์บอร์ด
- ไม่เคยทำงานที่ FAANG — ไม่รู้ว่าพลาดอะไรไปบ้าง แต่ผมเคยสัมภาษณ์และจ้างคนจาก FAANG มาแล้ว พวกเขาก็ไม่ได้รู้ว่ากำลังทำอะไรไปมากกว่าคนอื่นเหมือนกัน
- คุณค่าในตัวเองไม่ได้และ ไม่ควรจะ ขึ้นอยู่กับค่าตอบแทนรวม — ระบบทุนนิยมไม่ใช่มาตรวัดคุณค่าในตัวเองที่ดี
- ผู้จัดการมี อำนาจน้อยกว่าที่คุณคิดมาก — เหตุผลที่เขาไม่ไล่ใครออกก็เพราะเขาทำไม่ได้
- ตำแหน่งส่วนใหญ่ไม่สำคัญ — จะเป็น Principal Distinguished Staff Lead Engineer จากที่ไหนก็ไม่สำคัญ สิ่งสำคัญคือ คุณทำอะไรและทำสำเร็จอะไร
- เพิ่มเติมเรื่องตำแหน่ง: ในช่วงต้นอาชีพ (น้อยกว่า 10 ปี) การเลื่อนตำแหน่ง เป็นเรื่องดี — ทักษะและความรับผิดชอบเติบโต แต่ในช่วงหลังอาชีพ การลดตำแหน่ง อาจคุ้มกว่า — ได้ค่าตอบแทนเท่าเดิมและยังมีโอกาสขึ้นเงินเดือนตอนเลื่อนขั้นใหม่
- ใส่เงิน 401k ให้เต็มเพดาน
- ใจดีกับทุกคน — ไม่ใช่เพราะมันช่วยอาชีพ (แม้มันจะช่วย) แต่เพราะความใจดีนั้นคุ้มค่าในตัวมันเอง
- ถ้าในเดือนที่ผ่านมา คุณไม่ได้ เรียนรู้อะไรจากวิศวกรจูเนียร์หรืออินเทิร์นเลย แปลว่าคุณไม่ได้ใส่ใจ
แย่ละ ไวน์หมดแล้ว
- มัน คุ้มที่จะใช้เงิน กับคอร์ส หนังสือ และคอนเฟอเรนซ์ — ผมเคยลงทุนกับหลายคอนเฟอเรนซ์ คอร์สราคา 1.5k หนังสือมากมาย และ subscription ต่าง ๆ ซึ่งคุ้มค่า มันช่วยให้คุณแกล้งทำเป็นรู้ว่ากำลังทำอะไรได้ดีขึ้น
- เอาจริงนะ ทำไมนักพัฒนาเว็บถึงยังได้เงินน้อยกว่า? พวกเขารู้ทุกอย่างนี่!!!
- อาการ carpal tunnel กับปัญหาหลัง ไม่ใช่เรื่องล้อเล่น — จ่าย 1,000 ดอลลาร์ตอนนี้เพื่อซื้ออุปกรณ์ดี ๆ ไปเลย
- คนที่ฉลาดที่สุดที่ผมเคยร่วมงานด้วยคือ ด็อกเตอร์คณิตศาสตร์ — ผมเรียนรู้อะไรมหาศาลจากเขา หวังว่าเขาจะสบายดี
- เรื่องแฟนสาวที่เป็นเพื่อนสนิทสมัยม.ปลาย — พอมีข่าวลือว่าเราคบกัน เธอก็เริ่มเมินผม มันทำให้รู้สึกแย่ แต่ผมไม่โกรธเธอ และตอนนั้นผม น่าจะรับมือให้ดีกว่านี้
- ตอนอยู่เกรด 8 ผมอยากเลิกกับแฟนแต่พูดไม่ออก เลยเริ่ม เมินเธอแทน — เป็นพฤติกรรมที่แย่มาก ขอโทษนะ Lena
- สิ่งที่ดีที่สุดของการเป็นวิศวกรซอฟต์แวร์คือการได้พบและคุยกับ คนที่คิดปัญหาในแบบเดียวกัน ไม่ใช่งานอดิเรกเดียวกัน แต่เป็นวิธีคิดแบบเดียวกัน
- วงการเทคโนโลยียังมี ผู้หญิงไม่มากพอ — ผมพยายามสนับสนุนและช่วยวิศวกรผู้หญิงในองค์กร แต่ก็ยังไม่รู้ว่าควรทำมากกว่านี้อย่างไร
- วิศวกรผิวดำ ก็เช่นกัน
- ก่อนจะรู้ลึกจริง ๆ ผมไม่เคยเกลียดเทคโนโลยีไหนหรอก — ถ้าคุณเกลียดมันแต่ก็ยังแนะนำให้ลูกค้าใช้ได้ แปลว่ามันเป็นเทคโนโลยีที่ดี Jenkins น่ากลัวมาก แต่แนะนำให้ใช้ก็ยังไม่ถือว่าเป็นการประมาททางซอฟต์แวร์
- git ก็แย่มาก แต่เราไม่มีทางเลือก — เครื่องมือ GUI คือนรก บรรทัดคำสั่งดีกว่า มีคำสั่งที่ต้องจำอยู่ราว 7 คำสั่ง ที่เหลือก็หาใน Google
- ในฐานะ data engineer ขอฝากบทเรียนเรื่องข้อมูลสักข้อ อย่าใช้ Pandas
- การมี นักวิเคราะห์กึ่งเทคนิค (semi-technical) อยู่ในทีมทำให้งานง่ายขึ้น — คือคนที่รู้การเขียนโปรแกรมแต่ไม่รู้ software engineering ถ้าพวกเขายังไม่เข้าใจ แปลว่าการออกแบบคุณผิด ผมเติบโตจาก นักวิเคราะห์มากกว่าวิศวกรเก่ง ๆ เสียอีก
- dark mode เจ็บปวดเวลาถูกบังคับกลับไปใช้ light mode — เพราะงั้นผมเลยใช้ light mode ไปเลย
- สิ่งที่ผมรู้เกี่ยวกับความปลอดภัยคือ ผมรู้แค่ว่า ตัวเองไม่ค่อยรู้อะไรเรื่องความปลอดภัยเลย
แย่ละ ไวน์หมดอีกแล้ว
- วิศวกรที่ดีคือคนที่ รู้ best practices, ส่วนวิศวกรอาวุโสคือคนที่ รู้ว่าเมื่อไรควรแหก best practices
- ถ้าสภาพแวดล้อมในทีมชอบ โยนความผิด เรื่องบั๊กหรือเหตุขัดข้อง ก็ถึงเวลาต้องออก
- บริษัทหัวก้าวหน้า โดยเฉพาะสตาร์ตอัป ชอบบอกให้ “เอาตัวตนจริง ๆ มาทำงาน” — แต่ถ้าตัวตนจริง ๆ ของคุณคือดูแต่หนังโป๊ล่ะ? การรักษา ขอบเขตที่ดีต่อสุขภาพ ระหว่างงานกับชีวิตส่วนตัวสำคัญมาก
- ผมชอบดื่มกับเพื่อนร่วมงานใน happy hour นะ แต่ก็ยังอยากใช้เวลากับ ลูก ครอบครัว และเพื่อน มากกว่า
- ตัวอย่างภาวะผู้นำที่ดีที่สุด: ผู้นำคนหนึ่ง รับผิดแทนเต็ม ๆ สำหรับความผิดพลาดที่เป็นความผิดของตัวเอง 100% เพื่อคนแบบนั้น ผมพร้อมลุยไฟ
- ในทำนองเดียวกัน ผู้นำที่ดีที่สุดไม่เพียง เป็นกระบอกเสียงให้ความเห็นของตัวเอง แต่ยังอธิบายความเห็นที่ขัดแย้งกันได้ด้วย ผมพยายามเป็นแบบนั้นอยู่
- เลิกหมกมุ่นกับ side project ได้แล้ว — ถ้าคุณชอบก็ทำไป! ถึงผมจะมีเวลา แต่ก็ดันยุ่งกับการเขียนโพสต์เมาลง Reddit
- อัลกอริทึมและโครงสร้างข้อมูลสำคัญ — แต่ก็มีขีดจำกัด เหมือนที่ไม่มีใครไปสัมภาษณ์เภสัชกรด้วยควิซเคมีอินทรีย์ กระบวนการ สัมภาษณ์ในอุตสาหกรรมนี้มีปัญหา
- วิศวกร DevOps ฉลาดจริง ๆ อย่างน้อยคนกลุ่มนี้ก็มักได้รับค่าตอบแทนสมเหตุสมผล
- สำคัญกว่าการทำงานที่รัก คือการทำงานที่ ไม่เกลียดมัน
- ยิ่งอยู่ใกล้ผลิตภัณฑ์ ยิ่งอยู่ใกล้ รายได้ คุณจะยิ่งรู้สึกว่าตัวเองมีคุณค่า — ไม่เกี่ยวกับระดับเทคนิค และเป็นแบบนี้แม้ในบริษัทที่ก้าวหน้าที่สุด
- Linux สำคัญ — แม้อยู่ในสภาพแวดล้อม Windows ก็เถอะ ทำไม? เพราะสุดท้ายคุณก็ต้องใช้ Linux อยู่ดี ผมรู้สึกขอบคุณเวลาช่วงสุดสัปดาห์ที่เคยเล่นติดตั้ง Arch
- ต้องระวัง buzzword คลุมเครือ อย่าง “big data” — ผมเคยทำทั้งสตรีม 10,000 แถวทุก 10 นาทีด้วย Spark/Kafka และ batch 1 พันล้านแถวต่อชั่วโมงด้วย Python/MySQL ป้ายชื่อพวกนี้ไม่มีความหมายอะไร
- นอก Silicon Valley ก็มีงานดี ๆ แต่ งานดีจำนวนมากก็อยู่ใน Silicon Valley
เจอเบียร์แล้ว ไปต่อได้
เรื่องภาษาโปรแกรม
- พอได้เริ่มใช้ภาษาที่ผมเคยเกลียด (C#) ก็พบว่าผมยังเกลียดมันอยู่ แต่ก็ยอมรับว่ามีประโยชน์
- พอจากภาษาที่เคยเกลียด (C#) ไปแล้วกลับมาอีกที มัน พัฒนาไปมาก
- ข้อดีที่ใหญ่ที่สุดของภาษาเชิงฟังก์ชันคือ ฟังก์ชันเป็น first-class object และโปรแกรมเมอร์ทุกคนรู้เรื่องนั้น
- ต่อให้ภาษาไหนสุดยอดหรือเหนือกว่าขนาดไหน ถ้าไม่มีใครใช้ก็ไม่มีความหมาย
- การเรียนภาษาไม่ยาก — สิ่งที่ยากคือการเรียนรู้ ecosystem
เรื่องเพื่อนร่วมงาน
- pair programming ยอดเยี่ยมมาก แต่กินเวลามาก — และบริษัทส่วนใหญ่ก็ไม่อยากจ่ายเวลานั้น
- ทำงานกับวิศวกรฉลาด ๆ แล้วคุณจะเป็น coder ที่ดีขึ้น ทำงานกับเพื่อนร่วมงานนอกสายเทคนิคที่ฉลาด แล้วคุณจะเป็น วิศวกร ที่ดีขึ้น
- อย่าทำงานนอกเวลา 9-to-5 — ยกเว้นว่ามีโปรเจกต์เจ๋ง ๆ กำลังไปได้สวยและคุณกำลังเข้าภาวะลื่นไหล แบบนั้นแหละดีที่สุด
- happy hour และเวลาสังคมระหว่างทีม 99% ก็แค่คุยเล่น แต่ 1% ที่เหลือคือการคุยเรื่องโค้ดสำคัญของโปรเจกต์สำคัญ และผมเคยป้องกันเรื่องใหญ่ได้เพราะเผลอคุยเรื่องงานในวงสังคม ไม่ได้หมายความว่าคุณต้องไปเข้าสังคมกับทุกทีม แค่คนเราต้องการ ความผูกพัน และบางทีผลพลอยได้ก็เกิดขึ้น
เรื่องการทำงานจากบ้าน
- ในสภาพแวดล้อมที่ครึ่งรีโมตครึ่งเข้าออฟฟิศ ต้องดูให้ดีว่าพนักงานรีโมตถูกปฏิบัติเป็น พลเมืองชั้นสอง หรือไม่ — ถ้าการตัดสินใจสำคัญเกิดขึ้นตอน “เดินไปกดน้ำ” คุณต้องเปลี่ยนวัฒนธรรมบริษัท (ยาก) หรือย้ายไป บริษัทอื่น ที่ปฏิบัติต่อพนักงานรีโมตในฐานะพลเมืองชั้นหนึ่ง
- ข้อเสียอันดับสองของการทำงานจากบ้านคือ ไม่มีไวท์บอร์ด
- ข้อเสียอันดับหนึ่งของการทำงานจากบ้านคือ เรียนรู้จากเพื่อนร่วมงานได้ยาก — ถ้าคุณยังถามแบบมั่นใจไม่ได้ และวัฒนธรรมรีโมตยังไม่เท่าเทียมกับคนในออฟฟิศ ช่วง 5 ปีแรกของอาชีพ ทำงานในออฟฟิศ จะดีกว่า
เรื่องเทคโนโลยี
- ทุกคนรู้ว่าเทคโนโลยีเปลี่ยนแปลง แต่แม้จะเปลี่ยนมากในช่วง 10 ปีที่ผ่านมา หลักการพื้นฐานแทบไม่ได้เปลี่ยน — โดยเฉพาะหลักการพื้นฐานของสายงานนั้น ๆ
- Hacker News และ r/programming มีประโยชน์แค่ในภาพรวมและการตามเทรนด์ล่าสุด ส่วนคอมเมนต์นั้น แทบไม่มีประโยชน์
- มีมือสมัครเล่นมากมายที่ความเห็นจัดจ้าน และบทความในวารสารหรือบล็อกที่ “น่าเชื่อถือ” ก็ไม่ต่างกัน — ฟังข่าวลือไว้ได้ แต่สุดท้ายต้อง ตัดสินเอง
- ผมทำงานในสตาร์ตอัปแนวหน้ามาก ๆ แต่เราก็ไม่ได้ใช้ เทคโนโลยี XYZ ล่าสุด ที่บริษัทล้ำ ๆ ABC เพิ่งประกาศออกมา สิ่งที่พวกเขาเผยแพร่นั้นเป็นแค่ส่วนเล็กมากของงานวิศวกรรม และส่วนใหญ่ก็ใช้เทคโนโลยีแบบเดียวกับเรา
- แต่คุณก็ต้องอ่านสัญญาณออก — ถ้าคุณอยากใช้เทคโนโลยีสมัยใหม่ แต่บริษัทคุณยังพัฒนาโดยอิง jQuery เป็นหลัก ก็ถึงเวลาทบทวนใหม่
เรื่อง data engineering
- ในฐานะ data engineer ขอเพิ่ม คำแนะนำ/ประสบการณ์เฉพาะทางด้านข้อมูล
- SQL คือราชา — MySQL, Postgres, Oracle, SQL Server, SQLite ยังแข็งแกร่งที่สุดเหมือนเดิม ต่อให้คุณใช้เทคโนโลยีใหม่ ทักษะส่วนใหญ่ก็ยังถ่ายโอนได้
- บริษัทส่วนใหญ่ ไม่ได้ทำ streaming — มันยากและซับซ้อน ถึงคุณจะมีประสบการณ์ 10 ปีแต่ยังจัดการ 10,000 events ต่อวินาทีไม่ได้ ก็ยังมีงานทำ
- Airflow ก็ไม่ค่อยดี ใช่ ผมพูดเอง มีผลิตภัณฑ์อื่นเหมือนกัน แต่ Airflow ถูกใช้แพร่หลายที่สุด
- โปรเจกต์ machine learning มีโอกาสล้มเหลวสูง — มันซับซ้อนและ implement ยาก ไม่เชื่อเหรอ? ลองคิดดูว่าการเขียน unit test สำหรับโมเดล ML ง่ายแค่ไหน
- สายนี้ยังใหม่อยู่ — ไม่มีหนังสือ data engineering ดี ๆ คุณต้องลงมือทำเอง bootcamp ช่วยไม่ได้หรอก แต่ อีก 10 ปีข้างหน้าอาจเปลี่ยนไป
เรื่องชีวิต
- คนเราต้องตาย — ถ้าคุณอยากให้โค้ดกลายเป็น legacy ของคุณ ก็ทุ่มเทให้มันได้ แต่ถ้า legacy ของคุณเหมือนผมคือครอบครัว เพื่อน และคนรอบตัว ก็ อย่าหมกมุ่นกับโค้ดมากเกินไป
- คนดี คนฉลาด และ coder เก่ง ๆ ก็ยัง เขียนโค้ดแย่ได้ — อย่าเอาคุณค่าในตัวเองไปผูกเป็นตัวแปรตามของคุณภาพโค้ด
- เทคโนโลยีที่เริ่มจากงานอดิเรก พอกลายเป็นอาชีพแล้ว งานอดิเรกนั้นก็หายไป — ยอมรับเสียว่าเทคโนโลยีไม่ใช่งานอดิเรกของคุณอีกแล้ว แล้วหางานอดิเรกใหม่ หรือถ้าอยากสนุกกับมันจริง ๆ ก็ต้องลาออก
- การเขียนโปรแกรมและ CS เป็นศาสตร์ที่มีอายุแค่ประมาณ 80 ปี — เมื่อเทียบกับวิศวกรรมสาขาอื่น พวกเราทุกคนยังไม่ค่อยรู้ว่ากำลังทำอะไรกันแน่
- ผมได้เงินค่อนข้างดี — จงขอบคุณ ใช้อย่างระวัง และเก็บออม
เบ็ดเตล็ด
- ผมเคยสร้างแพลตฟอร์มและไลบรารีขนาดใหญ่ที่หลายทีมใช้กันเป็นปี ๆ แต่โค้ดที่ผมภูมิใจที่สุดกลับเป็น สคริปต์เล็ก ๆ ที่มีแค่ผมใช้เอง
- ความสำเร็จที่ผมภูมิใจที่สุดในอาชีพคือ การช่วยให้คนอื่นทำงานได้ดีขึ้น — อาจเพราะผมน่าจะถูกกำหนดมาให้เป็น people manager และอาจไม่เป็นประโยชน์กับคนอื่นก็ได้
- ตอนหางานผมเคยสร้างและอัปเดต LinkedIn แต่ได้แต่คำตอบห่วย ๆ เลยลบทิ้ง ตอนนี้ผมกลับใช้ LinkedIn หาผู้สมัคร — LinkedIn มี noise เยอะ และมีคุณค่าก็เพราะงานส่วนหนึ่งของผมคือการมีส่วนเพิ่ม noise นั้น
- ตอนมหาวิทยาลัยผมรู้ว่ามีผู้หญิงคนหนึ่งชอบผม — ด้วยความนับถือตัวเองต่ำ ผมเลยไม่เชื่อ แต่เธอก็ชวนผมไปเดต ผมปฏิเสธอย่างสุภาพ และการที่ตอนอายุ 19 ผมสามารถพูดคำว่า “ไม่” อย่างเป็นผู้ใหญ่ ได้ ถือเป็นหนึ่งในช่วงเวลาที่ผมภูมิใจที่สุดในชีวิต
- r/cscareerquestions เป็นบึงโคลนของอีโก้และข้อมูลผิด ๆ — ผมอยากเขย่าคนพวกนั้นแล้วอธิบายว่าโลกจริงเป็นอย่างไร แต่พวกเขาก็คงไม่เชื่อ
ความรู้สึกตอนนี้
- ผมเมา และปกติไม่ค่อยดื่ม ดังนั้นสิ่งที่พูดไปทั้งหมดคง น่าอายหรือแย่มาก
- ผมรู้สึกแรงกล้ามากว่าคนเราควร ออมและลงทุน — ถ้าคุณมีรายได้ระดับหกหลัก ก็ใส่ 401k ให้เต็มเพดาน
- ผมกลายเป็นสิ่งที่ตัวเองเคยเกลียด — ทำงานในวงการเทคโนโลยี แต่ หลบเลี่ยงเทคโนโลยีในชีวิตจริง อาจจะเป็นแบบนี้เมื่ออายุมากขึ้นก็ได้
- r/ExperiencedDevs เป็นชุมชนที่ค่อนข้างดี ขอบคุณทีมผู้ดูแล พวกเขาได้รับคำขอบคุณน้อยกว่าที่ควรได้รับมาก
- ผมติดหนี้ Reddit เรื่องอาชีพ เงินเดือน และชีวิต — จากคนทำงานปั๊มน้ำมันค่าแรงขั้นต่ำ ผมเรียน Linux, SQL, Python, C# ฯลฯ จนมาถึงจุดนี้ Reddit โดนด่าเยอะก็จริง แต่ชุมชนหลายแห่งช่วยให้คนหลุดพ้นจากความยากจนได้
- เด็ก ๆ น่ารักดี — ผมไม่มีลูกด้วยการตัดสินใจของตัวเอง ผมรักเด็กนะ แต่ก็กลัวว่าตัวเองจะเป็นพ่อแบบไหน นี่ส่วนตัวเกินไปสำหรับโพสต์นี้หรือเปล่า?
- ครั้งหนึ่งมีคนถามว่าผมเคารพใครมากที่สุด และผมตอบว่า Conan O'Brien เขาหัวเราะเยาะ แต่ผมพูดจริง — ในตอนสุดท้ายของรายการ Tonight Show เขาพูดว่า “จงใจดีและทำงานให้หนัก” คำพูดนั้นเข้ามาในช่วงชีวิตที่ลำบากของผม และเพราะไม่มีอะไรจะเสีย ผมเลยลองทำตาม ตลอด 10 กว่าปีที่ผ่านมา ผมใจดีกับคนอื่น เลยได้พบผู้คนยอดเยี่ยมมากมาย และเพราะผมทำงานหนักและลองสิ่งใหม่ ๆ ชีวิตก็ดีขึ้นอย่างไม่มีขีดจำกัด มันอาจฟังตลกที่บอกว่าผมได้ความอิ่มเอมในชีวิตมาจากพิธีกรทอล์กโชว์ยามดึก แต่ชีวิตนี้เป็นของผม และไม่ว่าความสำเร็จไหน ผมก็จะพูดอย่างภาคภูมิว่ามันส่วนหนึ่งมาจากนักแสดงตลกในทีวียามดึก
ผมเมาจนสุดแล้ว เพราะงั้นอย่าสนใจที่ผมพูดเลย ขอโทษที่พูดยาว
4 ความคิดเห็น
เนื้อหาบทความดูแปลก ๆ นะ? เนื้อหาที่ควรไปรวมแยกอยู่ในส่วนความเห็นของ Hacker News กลับมาอยู่ในบทความหลัก... เปลี่ยนทิศทางกันแล้วเหรอ
ช่วงสองสามวันที่ผ่านมาผมกำลังปรับปรุงพรอมป์ต์อยู่ เลยมีอาการแกว่ง ๆ ไปบ้าง ตอนนี้แก้ให้เข้าที่แล้วครับ ฮือ
ผมเห็นด้วยกับเนื้อหาเรื่อง generalist มากครับ ตอนผมเพิ่งเริ่มทำงานใหม่ ๆ ก็เคยคิดว่าต้องเป็น generalist ให้ได้~
ความคิดเห็นจาก Hacker News
เรื่องที่ว่าพอเป็นวิศวกรซอฟต์แวร์แล้วจะได้เจอคนที่มีวิธีคิดคล้ายกันนั้น ค่อนข้างต่างจากประสบการณ์ของผม มีแค่ประมาณ 1 ใน 50 คนที่ผมเจอที่ดูเหมือนทำงานนี้เพราะ ความเป็นช่างฝีมือ ส่วนใหญ่แค่อยากได้งานแบบ 9-to-5 พร้อมชื่อเสียงและโปรเจกต์ที่ดูมีอิมแพ็กต์ มากกว่าจะคุยปัญหาและความเห็นของตัวเองกันแบบลึก ๆ
คำพูดอย่าง “หางานใหม่ได้ใน 2 สัปดาห์” นี่ให้ความรู้สึกแบบยุคนั้นมาก ตอนนั้นตลาดอยู่ในมือพนักงาน ทุกคนเลยมีบรรยากาศแบบ วางตัวเป็นกูรู
ผมเห็นด้วยสุด ๆ กับประโยคที่ว่า “อย่าไปเจอฮีโร่ของคุณด้วยตัวเอง พอจ่ายเงิน 5,000 ดอลลาร์ไปเรียนคอร์สหนึ่ง ก็พบว่าเขาเองก็แค่ด้นสดไปเรื่อย ๆ เหมือนพวกเรา”
เรื่องที่ว่าทักษะที่ถูกประเมินค่าต่ำที่สุดของวิศวกรคือการเขียนเอกสาร ถ้าจะเสริมจากมุมผมคือ ในเอกสารควรเก็บ เหตุผลว่าทำไม ไว้เหนือสิ่งอื่นใด โค้ดอ่านได้ก็จริง แต่สิ่งที่ผมอยากรู้คือฟังก์ชัน 200 บรรทัดอย่าง
invert_parametersเกิดขึ้นมาทำไม แก้ปัญหาอะไร ทำไมถึงมีปัญหานั้น และโค้ดนี้คาดว่าจะอยู่ไปอีกนานแค่ไหน บางครั้งผมถึงขั้นเขียน คอมเมนต์เชิงขอโทษ ไว้เลยว่าเขียนแบบนี้เพราะโดนบีบเรื่องเวลา หรือเพราะมีปัญหาแปลก ๆ จาก upstream โดยเฉพาะโค้ดที่ไม่ชัดเจน เรายิ่งควรวาดให้เห็นวิธีคิดตอนเขียน เพื่อให้บริบทที่มองไม่เห็นจากตัวโค้ดรอดอยู่ต่อได้ ไม่ว่าจะ junior หรือ senior ผมอยากให้มีสิ่งนี้ในที่ทำงานมากขึ้นถ้ามีคนอายุ 20 กว่า ๆ ที่หาเงินได้เกิน 100,000 ดอลลาร์ต่อปี ผมว่าคำแนะนำให้เติม 401k กับ HSA ให้เต็มก่อน แล้วค่อยเติม IRA ให้สุดนั้นสำคัญมาก หลักพื้นฐานอย่างเอาเงินทั้งหมดไปลง target date retirement fund และเก็บค่าครองชีพ 6 ถึง 12 เดือนไว้ใน high yield savings account ก็ดูใช้ได้ แนวคิดคือถ้าเริ่มตั้งแต่อายุ 23 ก็อาจเกษียณตอน 45 ได้ แต่ถ้าผัดไปทีหลัง พออายุ 45 คุณอาจพบว่ายังต้องทำงานต่ออีก 20 ปี
บทเรียนที่มีประโยชน์ที่สุดที่ผมเรียนรู้คือ ข้อจำกัดที่ ผมไม่ได้เลือกเอง มักนำไปสู่การตัดสินใจด้านผลิตภัณฑ์ที่ดีกว่าข้อจำกัดที่ผมตั้งใจสร้างเอง ผมรันบริการย่อลิงก์อยู่บน shared hosting ที่ไม่มีทั้ง SSH, deploy ได้แค่ผ่าน FTP, ไม่มี background worker และไม่มี Redis ทุกครั้งที่คิดจะใส่ queue จริงจัง, WebSocket, หรือ cache layer ก็เจอว่าโฮสต์ไม่รองรับ เลยไม่ได้ทำ สุดท้ายการแจ้งเตือนคลิกก็ส่งด้วย cron ที่ยิง PHP endpoint ชั่วโมงละครั้ง ไม่มีคิว ไม่มี retry logic ไม่มี worker ส่งได้หรือพังก็คือจบ แล้วค่อยบันทึกผลไว้ใน log ใช้มา 6 เดือน แล้วก็ทำงานได้ดี ถ้าตอนแรกผมมี VPS ก็คงสร้างอะไรที่ใหญ่เกินจำเป็นและต้องมาดูแลถึงทุกวันนี้ แต่ shared hosting ที่ขีดเส้นว่า “ให้แค่ cron กับ DB” ทำให้ผมเรียนรู้ว่านั่นก็พอแล้ว
ผมเห็น ปัญหา อยู่หลายอย่างในต้นฉบับ การดื่มไวน์คนเดียวดูแปลกไปหน่อย ปกติวิสกี้ วอดก้า หรือเบียร์น่าจะธรรมดากว่า การสะกดอย่าง ‘ever thing’ ก็ดูเหมือนความคิดไม่เป็นระเบียบตอนเมา ซึ่งกลับเข้ากับบรรยากาศดี และผมก็ไม่คิดว่า webdev จะเป็นตัวแทนของผู้เชี่ยวชาญได้ดีนัก ส่วน dark mode หลายครั้งก็แก้ได้ด้วยส่วนขยายเบราว์เซอร์ เภสัชกรเป็นอาชีพที่ต้องมีวุฒิ การเรียนยาว การสอบ และเคมีอินทรีย์ ส่วนคำบอกว่า HN comments ไร้ค่านั้นก็เกินไปหน่อย หลายครั้งตัวบทความแย่แต่คอมเมนต์กลับดีกว่าบทความเองมาก
อ่านแล้วนึกถึงบทความที่เกี่ยวข้องจากพฤษภาคม 2021 คือ Drunk Post: Things I've Learned as a Sr Engineer ซึ่งเป็นโพสต์ที่มีคอมเมนต์ถึง 494 ข้อความ
ผมแปลกใจที่บทความนี้เป็นปี 2021 บรรยากาศเรื่อง SQL หรือการเปลี่ยนงานใน 2 สัปดาห์มันให้ความรู้สึกแบบ อารมณ์ปี 2014 มาก
เกี่ยวกับประโยคที่ว่า “HN กับ r/programming ดีสำหรับตามไอเดียคร่าว ๆ และเทรนด์ใหม่ ๆ แต่คอมเมนต์แทบไม่มีค่า” สำหรับผม หลังจากโดนทีมดูแล HN จำกัดความถี่ ผมก็แทบไม่อ่านคอมเมนต์อีกเลย เพราะตอบได้วันละไม่กี่ครั้งจนมีส่วนร่วมจริง ๆ ไม่ได้ มันไม่ใช่การแบนตรง ๆ แต่เป็นการทำให้ช้าลง เลยยิ่งรู้สึกเหมือนเป็นแขกที่ไม่พึงประสงค์แบบกลาย ๆ ตอนแรกก็กลัวว่าจะพลาดอะไรไปเยอะ แต่สุดท้ายการตัดแรงดึงดูดแบบ ติดเป็นนิสัย ที่ต้องเข้าไปเช็กคอมเมนต์อาจไม่ได้แย่อย่างที่คิด