สรุปขั้นตอนต่างๆ ในสปรินท์ ว่าต้องทำอะไรเมื่อไร

https://appinventiv.com/blog/reasons-why-we-trust-agile-for-our-mobile-app-development-process/

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


Data Scientist คือนักวิทยาศาสตร์ข้อมูล นำข้อมูล (Big data) มาวิเคราะห์ตามกระบวนการวิทยาศาสตร์เพื่อหาข้อสรุปจากข้อมูลที่มี จากนั้นส่งต่อข้อสรุปให้ฝ่ายอื่นนำไปประยุกต์ใช้งานต่อไป (หรืออาจทำต่อเอง)

https://www.youtube.com/watch?v=X3paOmcrTjQ&feature=emb_title
Data Science In 5 Minutes

หน้าที่หลักของ Data Scientist

  • ทำความเข้าใจในปัญหาที่ต้องการแก้ไข (Define question)
  • ดึงข้อมูลจากแหล่งข้อมูล (Data collection)
  • ทำความเข้าใจในข้อมูลที่มี (Data understanding / Data analysis)
  • เตรียมข้อมูลให้เรียบร้อยก่อนนำข้อมูลไปประมวลผล (Data preparation)
  • ประมวลผลข้อมูล (Data processing / Data modeling)
  • วัดประสิทธิภาพการประมวลผลข้อมูล (Data acquisition)
  • สรุปผลและแสดงผลที่ได้จากการประมวลผลข้อมูล (Data visualization)
  • ปรับปรุงประสิทธิภาพการประมวลผลข้อมูลให้ดีขึ้น (Optimization)
  • ทำงานร่วมกับ Data Engineer เพื่อออกแบบโครงสร้างข้อมูลที่ง่ายต่อการนำไปประมวลผล

Data Engineer คือวิศวกรผู้วางระบบเส้นทางการไหลของข้อมูล และรวบรวมข้อมูลไปเก็บไว้ที่แหล่งต่างๆ ให้พร้อมสำหรับการนำไปใช้งาน

https://hackr.io/blog/how-to-become-a-data-engineer

หน้าที่หลักของ Data Engineer

  • เลือกเทคโนโลยีสำหรับจัดเก็บข้อมูลให้เหมาะสม
  • สร้างแหล่งเก็บข้อมูลต่างๆ (Data lake, Data warehouse, Data mart)
  • ดึงข้อมูลจากแหล่งข้อมูลต่างๆ เข้าไปเก็บที่ทะเลสาบข้อมูล (Data lake)
  • โอนข้อมูลจากแหล่งเก็บข้อมูลหนึ่งไปยังแหล่งเก็บข้อมูลอีกแห่ง
  • ดูแลและพัฒนาประสิทธิภาพของ Data Infrastructure

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

https://www.i-scoop.eu/data-driven-marketing-the-state-benefits-and-drivers-of-data-marketing/

Big Data คืออะไร

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

สปรินท์ที่ถูกงานแทรกเรื่อยๆ จนงานในสปรินท์ไม่เสร็จ จะแก้ไขอย่างไร

https://www.heflo.com/wp-content/uploads/2017/10/workflow-management.jpg

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

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

Requirement flow


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

https://www.clipartmax.com/middle/m2i8A0A0H7N4N4K9_how-do-we-prepare-new-chemistry-teachers-for-the-21st-career-path/

แก้ปัญหาที่ต้นตอเพื่อตอบสนองความต้องการ (Root cause analysis)

เมื่อต้องการแก้ไขปัญหาต้องเริ่มจากการคำถามที่ถูกต้องว่า ปัญหาคืออะไร ปัญหาอะไรที่ต้องการจะแก้ไข เมื่อได้คำถามที่ถูกต้องแล้วต้องนำมาหาสาเหตุที่แท้จริง เพื่อจะตอบโจทย์ความต้องการนั้น โดยการไล่ถามซ้ำไปเรื่อยๆ ว่าทำไม ทำไม ทำไม ซ้ำๆ จนไปถึงต้นต่อของปัญหา วิธีการนี้เรียกว่า Root cause analysis จากนั้นจึงหาวิธีแก้ไขปัญหาที่ต้นต่อแท้จริงของปัญหานั้น


Scrum (สกรัม) คือการนำแนวคิดในการทำงานแบบ Agile (อไจล์) มาปฏิบัติตามขั้นตอนของสกรัม เพื่อระบุปัญหาที่มีความซับซ้อน เปลี่ยนแปลงบ่อย เพื่อให้สามารถส่งมอบผลิตภัณฑ์ที่ตอบสนองต่อการเปลี่ยนแปลงที่เกิดขึ้นได้อย่างรวดเร็ว

https://www.mimeo.com/blog/three-reasons-scrum-master-certified/

สกรัม

การพัฒนาผลิตภัณฑ์แบบอไจล์(Agile) ด้วยรูปแบบของสกรัม(Scrum)

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

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

ทำสกรัมเพื่ออะไร (Scrum Achievement)

  • กำหนดทิศทางและความสามารถของผลิตภัณฑ์ อะไรควรมี อะไรไม่ควรมี
  • เพิ่มคุณค่าให้ผลิตภัณฑ์
  • ส่งมอบผลิตภัณฑ์ได้รวดเร็วและบ่อยมากขึ้น
  • วงจรอายุการใช้งาน(Life cycle) ของผลิตภัณฑ์ที่ยั่งยืน

ทฤษฏีสกรัม (Scrum Theory)

สกรัม เน้นการนำความรู้จากประสบการณ์เฉพาะที่เคยลงมือทำจริง(Empiricism) มาพัฒนาการดำเนินงานในปัจจุบันให้ดียิ่งขึ้น ประกอบด้วย 3 ส่วน…


Agile Methodology คือแนวคิดในการทำงาน(ไม่ใช่รูปแบบหรือขั้นตอนการทำงาน) และไม่จำกัดว่าใช้ได้สำหรับการพัฒนาผลิตภัณฑ์ในสายซอฟต์แวร์(Software) เท่านั้น โดยอไจล์ให้ความสำคัญในการสื่อสารกับผู้เกี่ยวข้องทุกฝ่าย และการปรับปรุงพัฒนาผลิตภัณฑ์อยู่ตลอด เพื่อตอบสนองผู้ใช้งาน

https://plan.io/blog/ultimate-guide-to-implementing-agile-project-management-and-scrum/

สไตล์การทำงานและการใช้ชีวิตของเหล่า Developer ที่ Fastwork

การทำงานและการใช้ชีวิต

สำหรับที่ Fastwork เราเป็น Startup ที่เปิดกว้างในการทำงานใครมีไอเดียอะไรก็เสนอขึ้นมาได้เลยทุกเรื่องทั้งเรื่องเทคโนโลยี วิธีการทำงาน สวัสดิการ อยากกินอะไร บลาๆ คุยกันได้หมด

วันแรกที่เริ่มงาน

เริ่มเข้างานวันแรกมีการต้อนรับจากทุกคนในบริษัท โดยให้เราแนะนำตัวและก็มีการถามคำถามกันเล่นนิดหน่อย คือทุกคนถามกันแบบเป็นกันเองมากเหมือนสนิทกับทุกคนภายใน 5 นาที ประทับใจที่นี่ตั้งแต่ตอนนั้นเลย แล้วก็มีการจับบัดดี้ให้น้องใหม่เป็นคนที่คอยแนะนำเราในช่วงแรกๆ จะได้ไม่เขิน บรรยากาศเฮฮา ส่วนใหญ่อายุยังไม่เกิน 30 ปีกันเลย

บรรยากาศการทำงาน

เข้างานแบบ Flexible ก็ทำให้เราไม่ต้องเครียดกับการเดินทางมาก เวลาทำงานถ้าเบื่อโต๊ะก็สามารถหยิบ Laptop ไปทำงานตรงไหนก็ได้แล้วแต่ชอบ บางคนไปนอนทำบนโซฟาก็มี หรือจะเข้าไปทำงานในห้องตู้ปลาแบบส่วนตัวๆก็ได้ รูปแบบการทำงานก็จะเป็นแบบอไจล์แต่ยังไม่เต็มรูปแบบมากนักก็ค่อยๆปรับกันไปเรื่อยๆ บางวันก็จะมีการแชร์ความรู้ให้กับเพื่อนๆ ใครมีไอเดียอะไรอยากขายก็ขายเลย เลิกงานก็จะมีบอร์ดเกมให้เล่น หรือจะเปิด PlayStation 4 เล่นก็ได้ วันศุกร์ที่นี่เลิกงานไวด้วยนะ :)


เนื่องในโอกาสที่ได้ทำงานที่ Scale360 ครบ 1 ปี จึงอยากรีวิวประสบการณ์ในการเป็น Backend developer ครั้งแรกของผม

จริงๆก่อนที่จะมาเป็น Backend developer ที่ Scale360 ผมเป็น Fullstack developer ที่อื่นมาก่อนแล้ว 1 ปี แต่การเป็นมาทำ Backend ล้วน ทำให้มุมมองในการออกแบบ API เปลี่ยนไปจากมุมมองตอนเป็น Fullstack เยอะพอสมควร คือพอเป็น Backend ต้องออกแบบให้ general ไม่ผูกติดกับหน้าตาของ Frontend UI ใดๆ เพื่อจะได้สามารถ reuse กับ UI อื่นๆ และเมื่อมีการเปลี่ยน UI เราก็ไม่ต้องมาคอยแก้ตามด้วย

ต่อไปจะลง technical เล่าสิ่งที่ผมได้เรียนรู้ใหม่ใน 1 ปี (ลำดับตามที่ได้เรียนรู้)

  • Scala
  • Docker
  • MongoDB
  • Library
  • Authentication (OAuth, Facebook, Google)
  • Microservice Architecture
  • CQRS
  • Kafka/RabbitMQ
  • Server-Sent Events (SSE)
  • SAGA (Microservice Transaction)
  • CI/CD
  • API Gateway (Nginx, Kong)
  • Keycloak

Scala

สำหรับที่นี่จะเขียนเป็น Functional Programming ดังนั้นความรู้ OOP ส่วนใหญ่จะเอามาใช้ไม่ได้ เริ่มแรกคือห้ามมีการเปลี่ยนแปลงค่าของตัวแปร ทุกตัวแปรคือค่าคงที่นั่นแหละ ถ้าอยากเปลี่ยนค่าก็เก็บลงในตัวแปรใหม่ ทำให้ไม่ค่อยมีการคำนวณค่าผิด ตอน debug ไม่ต้องไล่หาว่าค่าผิดเพราะโดนเปลี่ยนไปตอนไหน ต่อมาพวก loop ต่างๆจะเปลี่ยนไปใช้ Map แทน เช่นต้องการให้ค่าทั้งหมดคูณสองก็จะเขียนได้ว่า…

Thanyavuth Akarasomcheep

Lead software engineer & Lead data science in Bangkok, Thailand

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