Coding คือการเขียนคำสั่ง(Code) เพื่อควบคุมการทำงานของ Computer ซึ่งผู้เขียนจะต้องทำการเรียบเรียงลำดับของคำสั่งต่างๆให้ถูกต้อง
ทักษะที่ต้องใช้ในการเขียน Code
1. Systematic Thinking
การคิดอย่างเป็นระบบถือว่าเป็นทักษะที่ผู้เขียน Code(Developer) ทุกคนจำเป็นต้องมีเพราะเราต้องเขียน Code เพื่อตอบโจทย์หรือแก้ปํญหาบางอย่าง โดยจะต้องมองถึงความสัมพันธ์ของความต้องการแต่ละข้อและประโยชน์ที่จะได้จากซอฟต์แวร์ที่เราเขียนขึ้นมา
2. Computational Thinking
การคิดเชิงคำนวน(Computational Thinking) คือวิธีการแก้ปัญหาโดยมีการจัดลำดับความสำคัญ ซึ่งในการคิดแบบ Computational Thinking จะแยกย่อยออกเป็น 4 อย่างด้วยกันคือ
- Decomposing หมายถึงการแตกปัญหาออกไปเป็นเรื่องเล็ก ถ้าเรายังแก้ปัญหาใหญ่ๆไม่ได้ให้แก้ปัญหาเล็กๆก่อน ซึ่ง Test Driven Development(TDD) ใช้วิธีนี้่ในการแก้ปัญหา
- Pattern Recognition เป็นการหารูปแบบของปํญหาแล้วทำการแก้ไข ซึ่งจะเป็นจากประสบการณ์หรือ Best Practices ก็ได้ ซึ่งตัวอย่างของการใช้ Pattern Recognition คือ Design Patterns
- Abstraction อาจเรียกว่า Abstraction Reasoning เป็นการวิเคระห์และระบุปัญหาหลักๆ โดยไม่ได้สนใจวัตถุที่เกิดขึ้นจริง แนวคิดแบบนี้เราจะใช้ใน Object Oriented Programming(OOP)
- Algorithm เป็นวิธีคิดที่นำมาแก้ปัญหาซึ่งอาจมาจากการคิดของเราเอง หรือเป็นวิธีที่มีอยู่แล้ว เช่นการเรียงลำดับเราจะใช้ Algorithm ชื่อ Quick Sort
3. Critical Thinking
เป็นวิธีการติดโดยการนำข้อมูลหลักฐานมาสนับสนุนการตัดสินใจ(Data Driven) แบบมีวิจารณญาณ โดยไม่ใช้ความรู้สึก หรือความเชื่อมาเป็นส่วนร่วมตัดสินใจ ดังนั้น Developer จึงต้องมีการคิดเชิงตรรกะมากกว่าคนอื่น ซึ่งองค์ประกอบย่อยๆของ Critical Thinking คือ
- Understanding การทำความเข้าใจ ต้องสามารถสรุปประเด็นและตั้งคำถามถึงสิ่งที่เกิดขึ้น
- Analysis การวิเคราะห์นำข้อมูลที่เราได้มาทำการวิเคราะห์ด้วยเหตุและผล สามารถหาความเชื่อมโยงของข้อมูลต่างๆได้ ซึ่งการเชื่อมโยงนี้เรียกว่า การให้เหตุผล
- Inference การสรุปผลหรือพยากรณ์ไปข้างหน้าโดยดูจากข้อมูลที่วิเคราะห์ได้ ซึ่งอาจเกิดจาก
- สรุปผลจากข้อมูลเชิงตรรกะ
- การคาดการณ์ด้วยข้อมูลทางสถิติ
- การใช้ AI มาพยากรณ์(Data Mining)
4. Problem Solving
การแก้ไปปัญหาเป็นสิ่งที่เราต้องเจอรายวันทั้งปัญหาจากการเปลี่ยนแปลง Requirements(ความต้องการ) หรือปํญหาจากเงื่อนไขทางด้าน Business ซึ่งนับวันก็จะยิ่งมีความซับซ้อนมากขึ้นเรื่อยๆ
แนวโน้มของ Requirements(ความต้องการ) จะมีทั้งปริมาณและความซับซ้อนมีแนวโน้มที่จะเพิ่มขึ้นเรื่อยๆ ดังรูป
5. Creativity and Innovation
การเขียน Code ต้องการความคิดสร้างสรรค์ โดยเฉพาะเรื่องของการออกแบบ UX/UI เพื่อตอบสนองความต้องการของ User ให้ได้มากที่สุด หรือในเรื่องของ Algorithm ที่เราต้องออกแบบให้ Application ของเราทำงานได้เร็วและถูกต้องมากที่สุด
Coding ทักษะที่ทุกคนต้องมี
ณ ปัจจุบันการเขียน Code เริ่มง่ายมากขึ้นเรื่อยๆ ด้วยพัฒนาการของ AI อย่าง ChatGPT หรือ Copilot ที่จะสามารถช่วยเขียน Code ให้เรา ซึ่งจะทำให้การทำงานของเราง่ายขึ้นกว่าเมื่อก่อนมากๆ ดังนั้น Coding ไม่ได้เป็นเรื่องที่ยากอีกต่อไป
การมาของ AI ทำให้เราต้องทำความเข้าใจการทำงานของ AI และปรับแต่งการทำงานของ AI ให้เป็นไปตามตความต้องการของเรา ซึ่งทักษะนี้ก็ต้องการคนเขียน Code
การแลกเปลี่ยนข้อมูลจะเริ่มมีความสำคัญมากขึ้นเรื่อยๆ ดังนั้นการจัดเตรียม Data และการย้าย Data(Migrate Data) ก็ต้องการคนเขียน Code หรือแม้กระทั่งในการทำงานใน Office ทั่วไปก็อาจต้องมีการนำ Coding มาช่วยลดงานที่ทำซ้ำๆ บ่อยๆ เช่น นำ Python มาจัดการกับ Excel แบบอัตโนมัติ
ขั้นตอนการเขียน Code
การจะได้มาซึ่ง Code 1 ชุดนั้นเราจะต้องมีขั้นตอน โดยเฉพาะเมื่อซอฟแวร์ที่เราเขียนนั้นมีขนาดใหญ่เราจะต้องทำตามขั้นตอนต่างๆ ดังนี้
1. Requirements Gathering(รวบรวมความต้องการ)
ก่อนจะเริ่มต้นเขียน Code นั้นเราต้องทำความเข้าใจสิ่งที่เรากำลังจะเขียนก่อน ถ้าเป็นระบบใหญ่ๆจะต้องมีการจัดเก็บ Requirement(ความต้่องการ) จากทางลูกค้าว่าต้องการนำซอฟแวร์ที่เราเขียนนั้นไปตอบโจทย์ทางธุรกิจแบบไหน ซึ่งหน้าที่นี้จะเป็นของ Business Analyst(BA)
2. System Analysis and Design(วิเคราะห์และออกแบบระบบ)
หลังจากนั้นเมื่อเราได้ความต้องการเบื้องต้นมาแล้วให้เรานำมาออกแบบระบบ(Design) ซึ่งผู้ที่ทำการวิเคราะห์และออกแบบระบบเราจะเรียกว่า System Analyst(SA)
3. Coding(เขียน Code)
เมื่อเราได้ข้อมูลมาเพียงพอต่อการเขียน Code แล้วเราก็จะเริ่มต้นเขียน Code โดยนำ Design ที่ได้จากขั้นตอนก่อนหน้ามาแปลงเป็น Code
4. Testing(ทดสอบระบบ)
ซอฟแวร์ที่เราได้มาต้องนำไปทดสอบก่อนการใช้งาน ซึ่งการทดสอบจะมีอยู่หลายแบบมากๆ ลองอ่านต่อที่บทความเรื่องรวมวิธีการทำ Software Testing แบบต่างๆ
5. Deploy (นำซอฟแวร์ที่ได้ไปติดตั้ง)
เมื่อเราได้ซอฟต์แวร์ออกมาแล้วเราต้องนำไป Deploy เพื่อให้ User สามารถเข้ามาใช้งานซอฟต์แวร์ตัวนี้ได้ ซึ่งการ Deploy จะขึ้นอยู่กับประเภทของซอฟต์แสร์ที่เราสร้างขึ้นมา เช่น
- ถ้าเป็น Web Application เราต้องนำไปติดตั้งลงใน Web Server
- ถ้าเป็น Mobile Application เราต้องนำไปขึ้น Apple Store หรือ Play Store
- ถ้าเป็น Desktop Application ก็ต้องนำไป Install ลงในเครื่อง
ขั้นตอนที่เราได้กล่าวมาทั้งหมดนี้จะเรียกว่า Software Development Life Cycle(SDLC) เป็นกระบวนการผลิตซอฟต์แวร์ซึ่งจะมีอยู่หลายแบบด้วยกัน แต่ที่เราต้องรู้จักไว้เป็นพื้นฐานเพราะมีคนใช้เยอะมากๆ คือ
- Waterfall รูปแบบการผลิตซอฟต์แวรที่ทำให้จบทีละขั้นตอน หมายถึงเราต้องรอให้การเก็บ Requirement เสร็จเรียบร้อยหรือเกือบเสร็จก่อนถึงจะนำไปวิเคราะห์และออกแบบ
- Agile เป็นรูปแบบที่ใหม่กว่า Waterfall และมีคนนิยมใช้มากกว่า ซึ่งการทำงานจะทำให้เสร็จเป็นชิ้นเล็กๆ และทำเป็นรอบๆ หลายๆรอบ