Feature นี้ใช้เวลาเท่าไร?

คำถามที่คนอยากรู้ แต่ตอบยังไงให้ถูก ถ้างานที่อยากได้ มันเป็นงานที่สามารถประเมินได้ง่าย เช่นเอาน๊อตใส่รูแล้วขันสามรอบ งานแบบนี้ค่อนข้างประเมินง่าย เพราะเรารู้ flow รู้ speed รู้ความสามารถของคนที่ทำว่าทำได้กี่ตัวต่อนาที และยิ่งรู้จำนวนคน แบบนี้ก็ยังพอประเมินได้บ้าง แต่ว่า งานแบบเขียนโปรแกรม มันต่างออกไปอย่างมาก มันทำให้การประเมินทำได้ยากแบบที่ ถ้าจะให้ประเมินได้ถูก มันต้องมีสักคนที่เจ็บตัว ไม่ว่าจะเป็นกลุ่ม Developer ที่ถ้าประเมินวันมาน้อยเกินไป ก็ต้องทำงานกันหามรุ่งหามค่ำ และก็อย่างที่รู้ๆกันว่า OT มันมีแค่ทำงานล่วงเวลา แต่ค่าล่วงเวลามันไม่มี หรือถ้ามันไม่ทันจริงๆในที่สุด คนที่เจ็บก็ต้องเป็น Business เพราะส่วนมากจะไปสร้าง commitment เอาไว้ โดยเฉพาะอย่างยิ่ง ถ้ามีการตลาดเข้ามาเกี่ยวด้วยจะยิ่งเจ็บหนัก…

Feature นี้ใช้เวลาเท่าไร?
Feature นี้ใช้เวลาเท่าไร?

ทำไม Software Dev ต้อง Agile

ทุกวันนี้คนที่ทำ Software ที่อยู่ในมุมของคนที่ต้องเขียนโค้ดจริงๆ ส่วนมากมักจะมีคำถามในหัวอยู่บ่อยๆ และคำถามก็มักจะวนเวียนซ้ำๆในทำนองว่า ใครเป็นคนกำหนด deadline นะ แล้วเขาใช้วิธีไหน ทำไมงานต้องเร่งตลอด ใคร design สิ่งนี้นะ ทำไมมันออกแบบมาให้ยุ่งยากเกินความจำเป็นไปมาก ทำไมเหลือเวลาให้ dev น้อยมาก ทั้งๆที่โปรเจ็คเริ่มมาตั้งเป็นปีแล้ว ฯลฯ อีกมากมาย ผมเข้าใจว่าก่อนหน้านี้ การจัดระบบทีมในการพัฒนา Software เรายังติดภาพยุคอุตสาหกรรมมาเยอะ สมมุติว่าในอดีต การจะสร้างของสักชิ้น ถ้าใช้คนเพียงคนเดียวทำ อาจจะใช้เวลาค่อนข้างนาน เพราะมีขั้นตอนหลากหลายกว่าจะได้งานสักชิ้น แต่พอในยุคอุตสาหกรรม เราก็คิดว่า ถ้าเราแบ่งหน้าที่ให้คนทำเป็นอย่างๆได้ งานก็จะเร็วขึ้น ยกตัวอย่างง่ายๆเช่น ถ้าเราจะทำดินสอสักแท่ง กระบวนการแบบหยาบๆ สมมุติว่า…

ทำไม Software Dev ต้อง Agile
ทำไม Software Dev ต้อง Agile

หอคอยงาช้าง

ปัญหาคาราคาซังของระบบงานใหญ่ ที่มีคนทำหน้าที่ของตัวเองแบบเฉพาะเจาะจง ซึ่งจะยกตัวอย่างงาน Software Development ให้อ่านกัน ในสมัยก่อน การเขียน Software มักจะเป็นแบบ Standalone เขียนให้ทำงานบนเครื่อง เครื่องเดียว งานก็จะไม่ซับซ้อนมาก ทุกอย่างอยู่ใน ecosystem บนเครื่องนั้น เวลาเราพัฒนางานก็สามารถใช้คนเพียง 1 คนก็สามารถจบงานได้สบายๆในบางครั้ง แต่พอระบบมันใหญ่ขึ้น ปัจจุบัน App ที่ใช้ในองค์กร ส่วนมากก็มาในรูปบบ WebApp กันส่วนใหญ่ ซึ่งพอระบบมันใหญ่ คนที่มาพัฒนาก็เริ่มเยอะ ก็ต้องมีวิธีบริหารจัดการให้แยกส่วนกันออกไปทำ ซึ่งความจริง งานพัฒนา Software มันก็มีลักษณะเฉพาะของมัน ที่คงไม่สามารถจะเทียบเคียงกับการสร้างบ้าน หรือโรงงานอุตสาหกรรมได้ แต่เราก็อาจจะยังเห็นการทำงาน Software ด้วย framework แบบเดียวกับการสร้างบ้านสร้างรถ อยู่ไม่น้อย

เก่งแล้วต้องกล้า

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

วิธีสร้างระบบที่ยุ่งเหยิง

เนื่องจากผมก็ไม่ได้เก่งถึงขนาดจะมาสอนวิธีสร้างระบบที่ไม่ยุ่งเหยิงแบบเทพๆได้ แต่ก็สามารถมองในมุมมองผู้ชมจากขอบสนาม ที่ยิ่งดูยิ่งมันส์ แล้วก็อดที่จะคิดไปต่างๆนาๆไม่ได้ว่า ทำไมไม่เป็นอย่างนั้น ทำไมไม่เป็นอย่างนี้ วันนี้ก็เลยต้องมาสาระแนออกความคิดเห็นซะหน่อย ว่าที่ผมเห็นความยุ่งเหยิงอยู่ทุกวันนี้มันเกิดมาจากสาเหตุอะไรได้บ้าง ทำตามกันมา วิธีทำตามกันมานั้นแสนจะง่าย เราแค่ไปเห็นอะไรที่มันเวิร์คอยู่แล้ว เราก็เลียนแบบ copy มาเลย เช่น เราไปเห็นระบบวงเวียนบนถนนในยุโรปแล้วมันเยี่ยมมาก ไม่ต้องมีไฟจราจร แล้วรถก็ไหลไปเร็ว น่าจะแก้ปัญหารถติดได้ เราก็ copy รูปแบบวงเวียนมาใช้ แต่เราไม่ได้เข้าใจแนวคิดของเขา ไม่รู้ว่าก่อนจะใช้ เราต้องเข้าใจหลักการก่อน เพราะในระบบการใช้วงเวียน มันมีมารยาทที่เราต้องปฏิบัติอย่างเคร่งครัด คือถ้ามีใครมาถึงระบบก่อน จะต้องได้สิทธิ์เข้าไปก่อน แต่บ้านเรา ไม่ได้มีการสอนเรื่องนี้อย่างจริงจัง เวลาเราไปถึงวงเวียน เราก็จะไป และทุกคนก็จะไป พอรถติดหนักเข้า เราก็เอาไฟจราจรใส่เข้าไปในวงเวียนอีก ทีนี้ก็เลยมี 2 ระบบเท่ๆในระบบเดียว

วิธีสร้างระบบที่ยุ่งเหยิง
วิธีสร้างระบบที่ยุ่งเหยิง