วิชาลูกเสือ หนึ่งในวิชาที่ในช่วงวัยเด็กของประชาชนไทยทั้งหลาย ช่วงชั้นประถมศึกษาจนถึงช่วงมัธยมต้น ต้องได้มีโอกาสเรียน เนื่องจากเป็นหลักสูตรภาคบังคับ ที่หลายคนพอผ่านช่วงเรียนไปก็จำได้แค่ คติพจน์ของลูกเสือ อย่าง “จงเตรียมพร้อม” “มองไกล” กับวิธีใช้เงื่อนประมาณ 3–4 เงื่อน อย่างเงื่อนพิรอด หรือเงื่อนตะกรุดเบ็ด

ซึ่งหลังจากเรียนลูกเสือจบผ่านมาหลายปีเราก็รู้สึกว่าไม่ค่อยจะได้เอาความรู้เหล่านั้น มาปรับใช้ในชีวิตประจำวันเท่าไหร่ ดังนั้นวันนี้เราจะมาทำความรู้จักกับ Boy Scout Rule ในเวอร์ชั่นลูกเสืออเมริกันกันบ้าง ว่าแตกต่างกันอย่างไร

ในลูกเสืออเมริกัน มีกฎที่เรียบง่ายอยู่ 1 ข้อ เวลาออกมา Camping กันคือ

“Leave the campground cleaner than you found it”

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

ซึ่งประโยค “Leave the campground cleaner than you found it” ถูกประยุกต์มาจากประโยคหนึ่งในจดหมายฉบับสุดท้ายก่อนเสียชีวิตของ ลอร์ด Baden Powell ที่ได้เขียนไว้ถึงลูกเสือทั้งหลาย ที่ว่า

“Try and leave this world a little better than you found it”

ประโยคนี้สามารถเสริมสร้าง และย้ำเหล่าลูกเสือเยาวชนให้เห็นถึงความสำคัญในการรับผิดชอบต่อส่วนรวม ซึ่งเป็นรากฐานสำคัญในการสร้างเสริมความรับผิดชอบต่อสังคม จนมีอิทธิพลไปยังอุตสาหกรรมต่างๆ เวลาเด็กๆ เหล่านี้เติบโตขึ้นอย่างเช่น อุตสาหกรรมซอฟต์แวร์ ที่ Uncle Bob เอา Boy Scout Rule นี้ไปเขียนไว้ในหนังสือ Clean Code เพื่อให้โค้ดของเหล่า Developer เกิดการปรับปรุงให้ดีขึ้นเรื่อยๆ
หรืออย่างอุตสาหกรรมอาหารที่เหล่าเซฟจะทำความสะอาดครัวให้เรียบร้อยทุกครั้งหลังใช้งานเสร็จ


ในปัจจุบัน ไม่มีใครไม่รู้จัก Netflix หนึ่งใน Platform Streaming ยักษ์ใหญ่แห่งยุค User กว่า 125 ล้าน ที่ดู Content ต่างๆ ราวๆ 140 ล้านชม. ในแต่ละวัน และการได้รับการจัดอันดับให้เป็น Elite Performer ใน State of DevOps 2018 และ 2019


เมื่อเราเริ่มต้นโปรเจ็คเรานึกถึงอะไร

สิ่งดีๆ ที่จะเกิดขึ้นกับโปรเจ็ค

  • Developer ตาลุกวาว เหมือนเห็นม้า Unicorn ในทุ่งลาเวนเดอร์
  • เรื่องราวปัญหาและข้อผิดพลาดต่างๆ ที่ประสบมาในโปรเจ็คก่อนหน้า
  • โปรเจ็คนี้ต้องดีกว่า ที่ผ่านมา
  • จะได้เลือก technology stack ใหม่
  • จะได้เจอ business ใหม่ที่สนใจ

ซึ่งส่วนมากเราจะมองเห็นด้านดีๆ ของการเริ่มโปรเจ็คใหม่ มากกว่า การอยู่กับโปรเจ็คก่อนหน้า ที่เราเห็นแล้วว่ามีอะไรเกิดขึ้นในโปรเจ็คบ้าง

เมื่อเราเริ่มโปรเจ็ค เราต้องคำนึงถึงอะไร

สิ่งที่มักเกิดขึ้นและเราไม่ได้คำนึงถึงมัน เพราะเราเห็นด้านดีๆ เต็มไปหมด แล้วด้านไม่ดีละ มีอะไรที่น่ากลัวบ้าง

  • เราไม่รู้ว่า ผลลัพธ์ที่ออกมาจะเป็นยังไง เพราะยังไม่เคยทำมันมา ก่อน แต่ก็หวังว่าของที่ทำใหม่จะ “ดีกว่าของเดิม” (จริงรึ)…


วันนี้ได้มีโอกาสวิ่งออกกำลังกายจากใต้สถานีบางหว้าไปที่ ห้างแห่งหนึ่งย่านฝั่งธน ระยะทางประมาณ​ 7 กิโล ประมาณ 1 ชม. เพื่อไปดูนิทรรศการว่าว ที่จัดขึ้นวันนี้เป็นวันสุดท้าย ที่ไอคอนสยาม กับเพื่อนตากล้องอีกคน ที่ล่วงหน้าไปรออยู่ก่อนแล้ว

เมื่อไปยังลานกว้างที่มีเด็กน้อย กำลังเล่นว่าวด้วยความสนุกสนาน เราก็เหลือบไปเห็น พระเอกของงาน นั่นก็คือ ว่าวปลากระเบนตัวมหึมา นอนแผ่หลาอยู่บนพื้น พร้อมกับทีมงานประมาณ 5 คนที่ช่วยกัน Take off ว่าวตัวนี้ขึ้นสู่ท้องฟ้า

เราจึงตั้งใจอย่างใจจดใจจ่อในการดูว่า ทีมงานเหล่านี้จะเอาว่าวตัวนี้ขึ้นได้อย่างไร เพราะหากเราเปรียบ การ Take Off ว่าวขึ้นสู่ท้องฟ้า คือการทำงานร่วมกันของกลุ่มคนก็เปรียบเสมือน ตอนเราชาวคนไอทีต้องเอา software deploy ขึ้น Production

สิ่งที่สังเกตเห็นจากทีมงานที่นำว่าวขึ้นนั้นคือ

การไม่สื่อสาร คือการสื่อสารรูปแบบหนึ่ง

เราเห็นทุกคนตั้งใจทำงาน เพื่อให้ว่าวขึ้นสู่ท้องฟ้าได้ แต่เรากลับไม่เห็นการพูดคุยกันของทีมทำงานตลอดเวลาที่นำว่าวขึ้น ครั้งแล้วครั้งเล่าที่ทีมงานพยายามนำว่าวขึ้น แต่ไร้ซึ่งการสื่อสารต่อกัน กว่า 30 นาทีที่พยายามเอาว่าวขึ้น สิ่งที่สังเกตุเห็นคือไม่คุยกันเลย แล้วเราจะทำงานให้สำเร็จอย่างไรละ

จึงมองย้อนกลับมา

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

ขาดการวางแผน

จากการที่ดูทีมทำงานปลุกปล้ำกับว่าวปลากระเบนพระเอกของงานอยู่ 4–5 รอบ
แต่ก็ไม่เห็นมีทีท่าเลยว่าจะเอาขึ้นได้อย่างไร ทีมงานก็ยังคงพยายามทำต่อไปและคาดหวังว่าสายลมจะช่วยนำมาให้ว่าวตัวนั้นขึ้นสู่ท้องฟ้า
ไม่มี recovery plan ว่าจะทำอย่างไรหากเอาว่าวขึ้นไม่ได้ และเหล่าคนที่คอยเฝ้าดูก็ค่อยๆ หายไปทีละคนสองคน

จึงมองย้อนกลับมา

ในการ Deploy Production เราได้มีการซ้อมนัดแนะ Step กันหรือไม่ วางแผนไว้หรือยังว่าถ้าเกิด accident ขึ้นผลกระทบที่ตามมาคืออะไร และการปิดความเสี่ยงคืออะไร ?

ที่เราทำงานร่วมกันอยู่ตอนนี้ เราเป็นทีมงานเดียวกัน หรือเราเป็นคนที่เพียงแค่นั่งทำงานด้วยกัน ?


วันก่อนทดลองทำ Performance Test ด้วย Locust กับทีม โดย Setup เครื่อง EC2 t3.large AWS ขึ้นมาเพื่อจำลอง whole system แล้วทำ Load test

แล้วเลือกเครื่องเปล่าเป็น Ubuntu 20 บน AWS มา

ด้วยความที่เราก็ลง Docker อยู่บ่อยๆ ก็ใช้ Search เพื่อหา ubuntu install docker จะไปโผล่ที่ Digital Ocean Document

แล้วก็ใช้เวลาพิมพ์ Command เยอะแยะมากมาย

ทันใดนั้น ปรมาจารย์อูเกว ได้ทักขึ้นว่า เราสามารถติดตั้ง Docker ได้ใน Command เดียวด้วยนะ ลองดูสิ

curl…


จากบทความก่อนหน้าที่ไปตามอ่านเรื่องการสื่อสารในองค์กรยุคใหม่ ที่ทางบริษัท basecamp ได้เขียนเป็น Guideline

ก็เลยไปตามต่อจนเจอบทความน่าสนใจที่ basecamp บอกว่า สำหรับเราทำงานแบบไม่มี Roadmap จะเป็นอย่างไร

ทำไมถึงไม่มี Roadmap

Roadmap เป็นเครื่องมือที่ไว้ใช้สำหรับสื่อสารว่า แผนงานในอนาคตเป็นอย่างไร ในลักษณะลิสต์รายการของที่จะทำ โดยให้ commitments ไว้ เป็นสิ่งที่เราอยากทำในอนาคต แต่ที่ basecamp เราไม่ต้องการ commitment กับใครทั้งภายในและภายนอกบริษัท

คำถามคือ ทำไมละ ? …


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

credit by: https://startupsmagazine.co.uk/sites/default/files/2020-06/AdobeStock_315322930-%282%29.jpg

กฎและแนวคิด

พื้นฐานของการสื่อสาร คือการสื่อสาร

  1. ไม่ว่าจะกับเพื่อนร่วมงาน เพื่อนร่วมแผนก หรือพบปะกับคนแปลกหน้า สิ่งที่เราต้องทำ คือ การสื่อสาร ถึงแม้คุณไม่อยากจะสื่อสาร แต่เป็นไปไม่ได้ เพราะการที่คุณไม่สื่อสาร ก็คือการสื่อสารอีกรูปแบบหนึ่ง
  2. การสื่อสารแบบ Real-time นั้นดี ไม่ว่าจะทั้งแบบ face to face หรือ video call online แต่ควรลดให้น้อย เพื่อให้มี overhead ที่ต่ำ แล้วใช้การสื่อสารแบบทางเดียวเป็นหลัก เช่น การ chat การเขียนเอกสารทิ้งไว้ รวมถึงการส่ง mail แต่การเลือกช่องทางสื่อสารก็ขึ้นอยู่กับความสำคัญและเร่งด่วนของเรื่องที่ต้องการสนทนา…


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

  1. Start with Why — ก่อนจะทำสิ่งใด ต้องมีเป้าหมายในใจก่อนว่า ทำแล้วจะได้คุณค่าอะไรจากสิ่งที่ทำ ไม่ว่าจะเป็นมูลค่าทางธุรกิจที่เป็นตัวเงิน หรือเพื่อทำให้เป็นที่รู้จัก แต่สิ่งที่ทำต้องวัดผลได้
  2. Begin with the end in mind — เมื่อมีเหตุผลที่จะทำแล้ว ก็ต้องตั้งเป้าด้วยว่า ปลายทางที่จะไปเป็นอย่างไร ปัจจุบันเราอยู่ตรงไหน แล้ว Gap มันห่างเท่าไหร่ จากจุดที่เราอยู่กับจุดที่เราจะไป มี checkpoint ย่อยๆ ไหมว่า progress ของสิ่งที่ทำ ขยับเข้าใกล้เป้าหมายมากขึ้นอย่างไร
  3. Data is the new oil— การทำสิ่งใดก็ตามควรมี Data ในการประกอบการตัดสินใจ ยิ่งหากเรามี Data ที่เก็บไว้แล้ว เช่น อดีตที่ผ่านมา มีการเก็บสถิติไว้แล้วว่า งานแต่ละชิ้น Estimate ไว้ว่าใช้เท่าไหร่ แล้วทำจริงเป็นอย่างไร ปัญหาที่เกิดขึ้นในอดีตมีอะไรบ้าง เพื่อ ป้องกันไม่ให้ปัญหาเกิดขึ้นอีกในอนาคต รวมถึงทำให้การ Estimation แม่นยำมากขึ้น
  4. Reduce Gap — เมื่อเจองานที่ไม่เคยทำและ Estimate ได้ยาก ว่า เวลาที่ใช้คือเท่าไหร่ ให้หาว่า Worst Case ใช้เวลามากสุดคือเท่าไหร่ และหา Best Case ว่าใช้เวลาน้อยสุดคือเท่าไหร่ จากนั้นหาว่า Gap ระหว่างใช้เวลามากสุดกับเวลาน้อยสุดคืออะไร และมีวิธีไหนบ้างที่ทำให้ ลด Gap เหล่านั้นลง เช่น แทนที่จะใช้เวลา 5 ชม. เพื่อทำด้วยตัวเอง สามารถขอความช่วยเหลือจากคนที่เป็น Expert หรือมีประสบการณ์มาย่นระยะจาก 5 ชม. เหลือ 1 ชม. ได้หรือไม่
  5. Smell the problem — เมื่อเรารับฟังปัญหาของคนอื่น อย่ารับทุกรายละเอียดมาเพราะจะจมไปกับปัญหาของเค้า ตั้งใจฟังว่า ปัญหาคืออะไรและหาทางปรับส่วนเล็กๆ ให้ดีขึ้นทีละน้อย หากแนะนำให้ปรับมากไปจนคนปรึกษารู้สึกไม่สบายตัวก็จะไม่มีประโยชน์

สิ่งที่เราทำ คือสิ่งที่เราถูกฝึก พร่ำสอน และทำซ้ำๆ ปรับปรุงจนเกิดเป็นองค์ความรู้และประสบการณ์


แนวทางในการเก็บข้อมูลที่เป็นที่นิยม 2 รูปแบบได้แก่

  1. เก็บในรูปแบบของ log ซึ่งคนพูดถึงกันมาก ก็คือ Elasticsearch ที่มาจาก ELK Stack
  2. เก็บในรูปแบบของ metrics ที่นิยมใช้งานกันในฝั่ง infra ก็คือ Prometheus

ซึ่งเมื่อเราพูดถึง Monitoring สิ่งที่เราให้ความสนใจคือ การที่เรารู้ว่าด้านในของ System ของเราเกิดอะไรขึ้น

  • Traffic คนใช้งานปัจจุบันเป็นเท่าไหร่ แนวโน้มเป็นอย่างไร
  • System ยังสามารถรองรับ Load ได้ดีไหม
  • Error ที่เกิดขึ้นในระบบมีมากน้อยเพียงใด

เป้าหมายของการทำ Monitoring คือ ต้องสามารถ detect…


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

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

ดังเช่นการวิ่ง ที่จริงๆแล้วแค่เราใส่รองเท้า แล้วออกไปวิ่ง จากในสมัยก่อนที่กว่าจะออกไปวิ่งได้ต้องใส่นาฬิกาจับ heartrate, ใส่ปลอกแขน ใส่หมวก

บางสถานที่ที่มันไม่มีอะไรเลย แต่จริงๆ เราสามารถมีอะไรกับมันได้

ทุกอย่างล้วนแต่เรากำหนดเงื่อนไขให้กับตัวเองเอง ต้องวิ่งที่สวน ไม่มีสถานที่ให้วิ่ง ต้องมีเนินชันๆ ให้วิ่ง แต่สุดท้ายอยู่ที่เราจะจัดการกับตัวเองภายใต้ข้อจำกัดอย่างไร

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

อย่างโปรแกรมฝึกที่ผมได้ฟังเป็นการวิ่งขึ้นลงเนิน 100 เมตร ฝึกวิ่งไปกลับอยู่ 42 กม. เพื่อซ้อมไป trail บนภูเขาที่ระยะทางเป็น 100 กม. มันไม่ได้อยู่ที่ข้อจำกัดว่าเนินนั้นระยะแค่ 100 เมตร มันไม่ได้จำกัดว่าเราต้องวิ่งไปกลับ 210 รอบ แต่อยู่ที่ว่า คุณมีใจที่จะทำมัน เพื่อให้บรรลุเป้าหมายของคุณหรือเปล่า

คนเราเกิดมาเพื่อทำมาหากินใช้แรงงานตั้งแต่จำความได้จนเราตาย เพราะถ้าเราเริ่มสบายเมื่อไหร่ ร่างกายก็จะเริ่มหย่อนยานไม่ได้รับการฝึกฝน

อะไรที่ถ้าเราทำอยู่ทุกวันเป็นปกติ เราจะทำมันได้เป็นเรื่องอัตโนมัติ การออกกำลังกายก็เช่นกัน ถ้าเราออกกำลังกายทุกวัน

Reference:

Apipol Sukgler

Full-Stacked Developer. Let’s share to the world :)

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store