สรุป software development journey ปี 2019-2020
หลังจากเริ่มเขียน blog มาได้ 1 ปี คิดว่าน่าจะเป็นเรื่องที่ดีที่เราได้กลับมาทบทวนว่าที่ผ่านมาเราทำอะไรไปบ้าง เนื่องจากเริ่มทำงานมาได้ 2 ปีครึ่ง เลยขอรวบยอดสรุปของทั้ง 2 ปีเลยละกัน
blog นี้ไม่รวมเรื่องเที่ยวนะครับ ขอแยกไปอีก blog นึงเพื่อความกระชับ (จริงๆ ไม่เกี่ยวหรอก เรื่องเที่ยวเยอะกว่าเรื่องงาน ฮ่าๆๆ)
Workshop 5 วันที่ตึงเครียดที่สุดในชีวิต
เนื่องจากเราเป็นมือใหม่หัดขับ ประสบการณ์การทำงานจริงๆ ยังไม่ถึง 1 ปีเลย การเข้าใจ scope ของงานในอีก 1 ปีข้างหน้า จากหลายๆ context จากหลายๆ stakeholder เป็นเวลา 5 วันติด ทำให้ เป็นหนึ่งใน workshop ที่ปวดหัวและเหนื่อยที่สุดในชีวิตเลย (ผมนี่ฟุบคาโต๊ะเลยจนพี่เดินมาทักว่าไม่สบายเหรอ ฮ่าๆๆ) คร่าวๆ ของ workshop นี้คือ
- กำหนด product vision
- จัดลำดับ requirement ตามความสำคัญ
- สร้าง user journey และ design
- เสนอ technical solution
- กำหนด feature และ user stories รวมถึง estimate แบบคร่าวๆ
- เสนอ release plan
- วิเคราะห์ Risks/Assumptions/Issues/Dependencies (RAIDs)
- กำหนด communication plan
ตอนนั้นคิดในใจว่า จะเยอะไปไหน!!
สำหรับผมแล้ว ceremonies ทั้งหมดมันทำให้ทุกคนมองเป็นภาพเดียวกัน ทั้งในเรื่องของ
- Process
- Change management
- Ways of working
- Architecture
- Scope
เพื่อให้ได้สิ่งที่เรียกว่า Minimum Viable Product (MVP) ออกมานั่นเอง
ไปทำงานที่ Wuhan มา 3 เดือนติด
โอกาสแบบนี้มันไม่ได้มีบ่อยๆ ผมเลยตั้งใจเรียนและทำงานให้ได้มากที่สุด จึงเป็น 3 เดือนที่มีความสุขและมีกำลังใจในการทำงานมากเพราะเราได้เรียนรู้เรื่องใหม่ๆ ทุกวัน เป็นก้าวสำคัญที่ทำให้ผมชอบ software development แบบจริงๆจังๆ เลย เนื้อหาที่ผมได้เรียนก็มีประมาณนี้
- Agile value, team
- Software development life cycle
- User story (3Cs)
- API design guide
- Feedback ceremonies (pair programming, code review)
- Spring Framework
- Tools (Jenkins, EFK stack, Kafka, Redis, Prometheus, Grafana)
- Microsoft Azure
นอกจากนั้นผมก็ได้ไปเข้า course ที่เค้าจัดอีก 2 course ซึ่งผมจะหาเวลาสรุปเป็น blog ให้อีกที
- Domain-driven design
- Software architecture
น่าเสียดายที่ COVID-19 มาก่อน เลยไม่ได้ไปต่อเลย
ไปทำ PoC ที่ Houston มา 2 อาทิตย์
เป็นหนึ่งใน workshop ที่ได้เรียนรู้เยอะที่สุดในชีวิตเลย ทำให้เข้าใจเลยว่าทำไม developer ที่มีประสบการณ์มากกว่าเราเค้าทำงานได้เร็วกว่าเราไม่ได้เป็นเพราะว่าพิมพ์เร็วกว่าเลย แต่เป็น productivity tools ที่ดีต่างหาก ไม่ว่าจะเป็นการใช้ mouse ให้น้อยที่สุดเท่าที่จะเป็นไปได้ หรือ plugins ที่ช่วยฝึก hotkeys หรือ shortcuts ตอนนี้ผมก็ยังฝึกอยู่นะครับ แต่รู้สึกได้เลยว่า code เร็วขึ้นเยอะจริงๆ
เริ่มเขียน blog กับ git-everyday 6 เดือนติด
หนึ่งใน Feedback ที่ได้รับจากเพื่อนร่วมทีม ณ ตอนนั้นคือ “เริ่มเขียน blog ได้แล้ว” รวมถึงความรู้และประสบการณ์ที่ได้รับจากปี 2019 ทำให้เราเป็น developer ที่ดีขึ้นมาเยอะ มันก็น่าเสียดายนะที่จะไม่แชร์เรื่องราวดีๆ เหล่านั้นให้คนอื่น อย่างน้อยที่สุดก็เป็นเราที่กลับมาอ่านเพื่อกันลืมอ่ะนะ
ปีที่ผ่านมาเขียนไป 38 blog โดยเรื่องที่เขียนเยอะที่สุดคือ
- spring
- security
- azure
- productivity
มี 2 blog ที่เอาไปแชร์กับพี่ๆ ผ่าน Medium
- สิ่งที่น่าสนใจจากงาน Don’t Repeat Yourself: Accelerate the initial phase of software development with common framework and enablement tools
- ทำความรู้จัก Amazon Deequ กับการจัดการ Data quality
ปีที่แล้วได้ลองทำ challenge กับตัวเองเกี่ยวกับ software development โดยขอให้ contribute ขึ้นบน GitHub ทุกวันอย่างน้อยวันละ 1 commit รู้สึกดีใจเล็กๆที่มีคนสังเกตเห็น GitHub contribution ของเราเป็นสีเขียว ประกอบกับการมาของ COVID-19 หลายๆ บริษัทรวมถึงตัวผมเองก็เริ่มมีการ Work-from-home มีนา-กรกฎา ข้อดีคือประหยัดเวลาเดินทาง ทำให้ challenge นี้ง่ายขึ้น โดยส่วนใหญ่จะทำ personal project ที่คล้ายๆ กับงานจริงในบริษัท
ผมเชื่อว่าถ้าเรารักในสิ่งนี้จริงๆ เราน่าจะทำมันได้อย่างสม่ำเสมอและค่อเนื่องโดยที่ไม่เบื่อ (Consistency beats intensity over time.)
เปลี่ยน area จาก API มาลองจับ Big Data
มีโอกาสได้เปลี่ยน product มาทำเกี่ยวกับ Big Data ที่ไม่คิดไม่ผันว่าจะได้มาทำ ซึ่ง part หลักๆ ที่ได้แตะคือ data engineering ที่ต้องทำความเข้าใจ stack ใหม่ทั้งหมด รวมถึง Azure resource ที่ใหญ่ขึ้น เนื้อหาที่ได้เรียนก็มีประมาณนี้
- Analytics data streaming with Apache Spark
- Azure Databricks
- Scala fundamentals
- Cloud monitoring with Datadog
- Infrastructure-as-a-Code with Terraform
- Azure security (RBAC, VNet)
ที่สำคัญคือเราได้ใช้ประสบการณ์ engineering practice ที่เรียนมา มาช่วย lead design ให้กับทีม รวมถึงแบ่งปันความรู้ให้กับทีมและรุ่นน้องผ่าน session ต่างๆ
Feedback checklist
ระหว่าง 2 ปีที่ผ่านมา ทีมการทำกิจกรรมที่ให้ feedback ซึ่งกันและกันในทีม มาดูว่าคำแนะนำหรือข้อปรับปรุงตรงไหนที่ได้รับแล้วเราได้ทำไปแล้วบ้าง
- เรียนรู้ technology ใหม่ๆ
- เริ่มเขียน blog ได้แล้ว
- เรียนรู้ภาษา Java ให้ลึกซึ้งลงไปกว่าเดิม
- ฝึกภาษาอังกฤษ
- ลองไปทำตำแหน่งที่เป็น lead ดูบ้าง
- ฝึกการพูดคุยกับลูกค้าหรือ stakeholder
- สรุปสิ่งที่ตัวเองอยากจะสื่อก่อนที่จะพูดออกไป
- หลีกเลี่ยงศัพท์เทคนิคเฉพาะ (technical jargon)
- รักษาความสัมพันธ์กับเพื่อนร่วมทีม
- ให้ความสำคัญกับ business value
เป็น 2 ปีที่ก้าวกระโดดมาก
สิ่งที่อยากจะทำต่อในปีหน้าคือ
- รักษา passion ที่มีต่อ software development ให้ได้เหมือน 2 ปีที่ผ่านมา
- ทำให้ตัวเองได้เรียนรู้สิ่งใหม่ๆ ทุกวัน จะเป็นเรื่องงานหรือไม่งานก็ได้
- เขียน blog ต่อไปเรื่อยๆ