สิ่งที่ได้เรียนรู้เพื่อก้าวสู่การเป็นวิศวกรซอฟต์แวร์ระดับซีเนียร์
(neilkakkar.com)บทความต่อเนื่องจากนักพัฒนาที่เข้าทำงานกับ Bloomberg ในปี 2018 และกำลังค่อยๆ สรุปสิ่งที่ตัวเองได้เรียนรู้อย่างสม่ำเสมอ
"จะเติบโตให้มากขึ้นได้อย่างไร?"
- เติบโตด้วยการขยายขอบเขตของตัวเอง
→ ความเร็วในการเรียนรู้จะช้าลง
→ มองให้กว้างกว่าวงจรชีวิตซอฟต์แวร์ (SDLC) ไปสู่วงจรชีวิตการพัฒนาผลิตภัณฑ์/โครงสร้างพื้นฐานที่กว้างกว่า
→ การไปให้กว้างแทนที่จะไปให้ลึก จะพาเราไปพบกับสิ่งลึกๆ ที่ต้องเรียนรู้อีกมาก
- 3 ทิศทางใหญ่: เรียนรู้จากคนรอบตัว, เรียนรู้นิสัยทางความคิดที่ดี, และได้มาซึ่งเครื่องมือทางความคิดใหม่ๆ
- เรียนรู้ว่าคนรอบตัวทำอะไรกันอยู่
→ จำเป็นต้องเข้าใจโปรดักต์แมเนเจอร์, เซลส์, และนักวิเคราะห์
→ เป้าหมายไม่ใช่แค่การเขียนโค้ดอยู่แล้ว แต่เป้าหมายสุดท้ายคือการสร้างธุรกิจที่สร้างผลิตภัณฑ์ทำเงินได้
→ เข้าประชุมกับคนจำนวนมากและทำความเข้าใจบริบทของงานที่พวกเขาทำ
- เรียนรู้นิสัยทางความคิดที่ดี
→ Thinking Well (การคิดให้ดี): กำลังศึกษาวิทยาศาสตร์การรับรู้ และ Critical Thinking (การคิดเชิงวิพากษ์)
→ วางกลยุทธ์เพื่อทำให้แต่ละวันมีประสิทธิภาพมากขึ้น
- ได้มาซึ่งเครื่องมือใหม่ๆ สำหรับความคิดและ mental model
→ เมื่อเกิดปัญหา ให้หาและเรียนรู้เครื่องมือใหม่ๆ: ช่วงหลังคือ DDD (Domain Driven Design)
→ อ่าน Hacker News เพื่อเสริม mental model
→ เรียนรู้ภาษาใหม่
อินไซต์อื่นๆ (ยกมาเพียงบางส่วน โปรดดูต้นฉบับ)
- ปกป้อง Slack (ไม่ใช่ชื่อผลิตภัณฑ์ แต่หมายถึงเวลาว่าง/ช่องว่าง)
→ หนึ่งในสิ่งที่นำไปสู่ผลิตภาพสูงคือ "ความช้า"
→ เมื่อมีเวลาว่าง จะเกิดโอกาสให้ทดลอง เรียนรู้ และคิด
- จงตั้งคำถาม
→ ผู้คนถามคำถามได้ไม่เก่งนัก เพราะกลัวว่าจะดูโง่ หรือไม่ก็พูดเรื่องอื่นเพื่อไม่ให้ตัวเองดูโง่
→ จนกว่าจะพบคำตอบ เราไม่อาจตัดสินได้ว่าคำถามนั้นโง่หรือไม่
→ Meta-question ที่ชอบที่สุด: "คุณรู้เรื่องนั้น (X) ได้อย่างไร?"
หลังจากถามอะไรบางอย่างแล้ว ถามต่อว่าเขารู้สิ่งนั้นได้อย่างไร คำตอบนี้จะช่วยให้ผมรู้ได้อย่างเป็นธรรมชาติว่าต่อไปควรทำอะไร
- Force multipliers: สิ่งที่ช่วยขยายผล (คนหรืออะไรก็ตาม)
"Force คือสิ่งที่มอบพลังให้เจได มันคือสนามพลังงานที่เกิดจากสรรพชีวิต โอบล้อมเรา ทะลุผ่านเรา และยึดกาแล็กซีเข้าไว้ด้วยกัน - โอบีวัน เคโนบี"
→ "ในสปรินต์หนึ่ง ผมไม่ได้เขียนโค้ดมากนัก แต่ผมประสานงานการเปลี่ยนแปลง ทำ code review ทดสอบ เสนอแนวทางการออกแบบอื่นๆ และ pair programming สิ่งนี้ทำให้มันกลายเป็นหนึ่งในสปรินต์ที่เร็วที่สุดของทีมเรา"
→ การรู้วิธีทำให้ตัวเองเป็น Force Multiplier ดูจะมีค่ามากกว่าการเป็นนักพัฒนา 10x
→ หนึ่งใน Force Multiplier ที่ดีจริงๆ คือวัฒนธรรมทีม
4 ความคิดเห็น
ขออภัยที่ถามทั้งที่ยังไม่ได้อ่านต้นฉบับนะครับ/ค่ะ
ในส่วน "สิ่งที่ควรถาม"
มีคำถามที่ว่า "คุณไปรู้เรื่องนั้น (X) มาได้อย่างไร?" ใช่ไหมครับ/คะ ตรงนี้ช่วยยกตัวอย่างของ "เรื่องนั้น" ให้สักสองสามอย่างได้ไหมครับ/คะ? ผม/ฉันยังไม่ค่อยเข้าใจส่วนนี้เท่าไหร่เลย T_T
อ๋อ ตรงนั้นคำว่า "นั่น(X)" หมายถึงตัวการที่ถามสิ่งนั้นเอง กล่าวคือเมื่อผู้ถามถาม A ผู้ตอบกำลังถามว่าผู้ถามไปรู้คำตอบของ A นั้นได้อย่างไร จะมองว่าเป็นการถามถึงช่องทางที่ได้รับข้อมูลมาก็น่าจะได้ครับ
คำถามเชิงเมตาที่พูดถึงระหว่างทางว่า "คุณรู้เรื่องนั้นได้อย่างไร?" น่าจะเป็นคำถามที่ดีมากจริงๆ
ถ้ารู้ว่าคนนั้นได้รู้เรื่องนี้มาจากเส้นทางแบบไหน ก็น่าจะเรียนรู้อะไรได้มากขึ้นอีก
เมื่อ 1 ปีก่อน ผมเคยแชร์บทความที่คนนี้เขียนสรุปปีแรกหลังเข้าทำงานที่ Bloomberg และนี่คือบทความภาคต่อของบทความนั้น
ช่วงท้ายของบทความมีการเขียนถึงประเด็นที่เคยกล่าวไว้ในบทความข้างต้นอีกครั้ง (ใช้คำว่า Nuance) ลองอ่านเทียบกันดูครับ
"คุณมารู้เรื่องนี้ได้อย่างไร" ก็เป็นเครื่องมือสำคัญในฐานะผู้สัมภาษณ์เวลาสัมภาษณ์เช่นกัน