สรุปความผิดพลาดของ Junior Dev ในมุมมองของ Dave Farley

Teerayut Hiruntaraporn
1 min readApr 2, 2022

--

คุณ Dave Farley เป็นผู้ก่อตั้ง Continuous Delivery Inc. เป็นนักคิดเกี่ยวกับเรื่อง CI/CD, Devops, Software Development

โดยคุณ Dave มองไว้อยู่ 8 เรื่องดังนี้

1. Software Development is all about coding

คุณ Dave ก็เปรียบเทียบกับช่างไม้ว่า งานเขามีแค่เลื่อยไม้หรือเปล่า ซึ่งก็ไม่น่าใช่เพราะถ้าแค่เลื่อยไม้มันไม่ได้ มีค่าอะไร ใครๆ ก็ทำได้ แต่สิ่งสำคัญคือการสร้างของขึ้นมาต่างหาก

Software Development ก็เช่นกัน ไม่ได้มีแค่การ code แต่เป็นความเข้าใจและแก้ปัญหา ไม่ต่างจากช่างไม้

คนที่เป็น Software Dev ที่ดี นอกจากความสามารถแล้ว จะมีเรื่องความเข้าใจสิ่งที่จะทำอย่างลึกซึ้งด้วย

ซึ่งวิธีการคือการ ที่ต้อง Take Ownership กับปัญหานั้นๆ

2. Requirement ที่ถูกต้อง ต้องมาจากฝั่ง business เท่านั้น

ตรงนี้จะมีสมมติฐานต้นว่า

Software Dev ก็เขียนโค้ดไป แล้วมีคนป้อนให้ว่าทำยังไง เหมือนเป็นแค่ล่ามแแปลภาษา

ซึ่งก็เจ๊งกันมาหลายที่

สิ่งสำคัญคือ ไม่มีใครที่รู้คำตอบหมดทุกอย่าง มันต้องช่วยกันดูในแต่ละมุมมอง ไม่ว่าจะเป็น Business , Design, Technology

คน Business มันก็ไม่รู้หรอกว่า Code จาก Stack Overflow 3 ชิ้น ได้ผลลัพธ์เหมือนกัน แต่ Side effect อาจจะไม่เหมือนกันก็ได้

นอกจากนั้น พึงระลึกว่า ทุกสิ่งที่คิดคือการคาดเดา เราต้องค่อยๆ ทำเป็น step เพื่อมา proof ความคาดเดานั้น

3. Speed is all that matters

ความเร็วเป็นสิ่งสำคัญ แต่หลายครั้งไปให้ความสำคัญกับความเร็วที่ผิดตัว

เช่น Typing speed

ความเร็วที่อยากให้เป็นคือ ความเร็วจากการ work smart เช่นการเขียนโค้ดน้อยลงเพื่อแก้ปัญหา

ซึ่งจะเกิดขึ้นได้จาก การทำความเข้าใจปัญหา วาดรูป หาจุดเชื่อมต่อ พอเข้าใจแล้วค่อยโค้ด

ถ้าโค้ดเยอะๆ อาจจะยังไม่เข้าใจสิ่งที่จะทำก็เป็นได้

4. My job is to code, not to understand the problem domain

ปัญหาคล้ายๆ ข้อ 2 ก็จะได้งานที่ไม่เข้าใจ แล้วก็ต้องแก้บ่อยๆ

5. I can’t ask for help! It show that I don’t know enough

เรื่องนี้เป็นเหมือน imposter syndrome หลายคนมีความกังวลว่าถ้าถามจะแสดงความไม่ฉลาดออกมา

อย่างไรก็ตามคนที่เก่งขึ้นเท่าไหร่ จะรู้ว่าไม่รู้อะไรมากขึ้นเท่านั้น

คนเก่งๆ ก็จะถามคำถามมากขึ้น และเก่งขึ้นไปเรื่อยๆ

อย่างไรก็ตามข้อควรระวังคือ การถามปัญหาเดิมๆ ซ้ำๆๆๆ

ลอง limit ตัวเองให้ถามเรื่องเดิมไม่เกิน 2 ครั้ง ถ้าเกิน อยากให้ลองคิดอีกรอบว่า ปัญหาที่แท้จริงคืออะไร กันแน่

6. Software Architecture is for the expert

เขาอยากให้มองว่า Software Architecture คือ Tourist Map มันไม่จำเป็นต้องลง Detail เยอะ แต่ควรจะอธิบายเบื้องต้นได้ว่า ของทำงานยังไง

7. Testing is someone else’s job

ปัญหาคลาสสิก

เลยกลับมาคำถามในเชิง Engineer ว่า แล้วคุณพิสูจน์ได้อย่างไรว่า งานที่ทำมัน work จริงๆ หรือเพียงแค่ พิมพ์เสร็จ เห็นแค่ครั้งเดียวก็บอกว่า work แล้ว ซึ่งดูไม่มี Evident อะไร

Developer ควรจะเป็นคนที่ควรเขียน Test ที่สุดเพราะ

  • เป็นคนที่มีโอกาสที่จะพัง Code มากที่สุด
  • เป็นคนที่จะต้องซ่อมถ้ามันผิด
  • เป็นคนที่จะต้องเจอปัญหาเป็นคนแรก

8. I would like to do a better job, but may boss won’t let me

สิ่งที่เขาแนะนำจะมีว่า จงมีความั่นใจในตัวเอง และ รับผิดชอบในงานของตัวเอง อย่างให้ปัจจัยภายนอกมาเป็นข้ออ้างได้

ใครสนใจลองดูเพิ่มเติมได้ที่นี่ครับ

--

--

Teerayut Hiruntaraporn
Teerayut Hiruntaraporn

No responses yet