See the original English version of this article here
แม้ว่าบางคนเชื่อว่าการจะเขียน Program ได้นั้น คุณต้องมีความสามารถในการคิดแบบพิเศษ แต่ความจริงก็เป็นเพียงบางส่วนเท่านั้น ประเด็นสำคัญ คือ ความคิดของ Programmer ได้รับการพัฒนาผ่านกระบวนการเขียน Program นั้นเอง นอกจากนี้ เรายังสามารถเรียนรู้ที่จะคิดเหมือน Programmer ได้โดยไม่ต้องเป็น Programmer มืออาชีพ กับ ความคิดของ Programmer กับการแก้ปัญหาที่เหนือคณิตศาสตร์
ทำความเข้าใจว่า Programming คืออะไร
การเขียน Program ช่วยให้เราโต้ตอบและกำหนดรูปแบบสำหรับโลกดิจิทัลได้ ฟังดูน่าสนใจใช่ไหมล่ะ? โดยพื้นฐานแล้ว การเขียน Program เป็นเพียงกระบวนการในการให้คำสั่งที่ชัดเจนและมีโครงสร้างแก่คอมพิวเตอร์ เพื่อให้คอมพิวเตอร์สามารถเข้าใจและดำเนินการตามคำสั่งต่าง ๆ ได้
โลกของการเขียน Program นั้นตรงไปตรงมา ซึ่ง Code จะทำงานได้หรือไม่นั้น ขึ้นอยู่กับความแม่นยำของคำสั่ง หากมีข้อผิดพลาด นั่นไม่ใช่ Error ของคอมพิวเตอร์ หรือสาเหตุส่วนตัวของ Programmer แต่ข้อผิดพลาดนั้นเกิดจาก Code นั่นก็คือ คำสั่งที่ส่งไปยังคอมพิวเตอร์
เมื่อคุณเข้าใจแล้วว่าการเขียน Program เป็นเพียงการสร้างคำสั่งที่ชัดเจนและมีเหตุผล ดังนั้น คุณไม่ต้องแปลกใจอีกต่อไป เมื่อได้ยินเรื่องตลกเกี่ยวกับ Programmer ที่ได้คำสั่งให้ไปซื้อของที่ร้าน “ซื้อขนมปังมา ถ้ามีไข่ก็เอา 10 ฟอง” แล้วก็กลับมาพร้อมขนมปัง 10 ก้อน เพราะในร้านมีไข่อยู่แล้ว ดังนั้น คอมพิวเตอร์จะตีความคำสั่ง หากคำสั่งไม่ชัดเจนเพียงพอ คอมพิวเตอร์ อาจปฏิบัติตามคำสั่งนั้นอย่างถูกต้องตามที่ระบุไว้ แม้ว่าจะนำไปสู่ผลลัพธ์ที่ไม่ได้ตั้งใจก็ตาม
ให้ “การแก้ปัญหา” เป็นงานอดิเรกของคุณ
Programmer ที่มีประสบการณ์มองว่าการเขียน Program นั้นเป็นการแก้ปัญหาในลักษณะที่เป็นตรรกะ ซึ่งเป็นกระบวนการที่ลงมือปฏิบัติจริง การฝึกฝนการแก้ปัญหาเป็นรากฐานของการเป็น Programmer การแก้ปัญหาเป็นกระบวนการที่ฝึกทักษะสำคัญ ๆ เช่น การคิดเชิงนามธรรม การแยกย่อยงานที่ซับซ้อน และใช้ความคิดการสร้างสรรค์ นอกจากนี้ควรมองการแก้ปัญหาเป็นเกมหรือกิจกรรมสร้างสรรค์ สามารถทำให้กระบวนการมีส่วนร่วมและสนุกสนานมากขึ้น ช่วยรักษาแรงจูงใจและปรับปรุงทักษะการเขียน Program ได้อีกด้วย
มองงานเป็นเหมือน Collection ของ Subtasks
Programmer มีงานมากมาย แต่พวกเขาจัดการกับงานที่ซับซ้อน โดยแบ่งงานเหล่านั้นออกเป็นงานย่อย ๆ ที่สามารถจัดการได้ง่ายกว่า แทนที่จะแก้ปัญหาทั้งหมด พวกเขาจะแบ่งงานออกเป็นส่วน ๆ และแก้ไขแต่ละส่วนอย่างอิสระ วิธีนี้ช่วยลดความซับซ้อนของ Development และ Testing
แนวทางเดียวกันนี้สามารถนำไปปรับใช้กับกิจกรรมประจำวันได้ ลองนึกถึงกระบวนการที่คุณทำเป็นประจำ เช่น การทำอาหาร การทำความสะอาดบ้าน หรือการจ่ายบิล ลองแบ่งกระบวนการออกเป็นขั้นตอนต่าง ๆ ที่จัดการได้ในใจของคุณ ซึ่งจะคล้ายกับแนวทาง “การแบ่งแยกและเอาชนะ (Divide and Conquer)” ซึ่งเป็นเทคนิคการเขียน Program ที่แบ่งปัญหาออกเป็นงานย่อย ๆ ช่วยให้แก้ปัญหาได้อย่างมีประสิทธิภาพและเป็นระเบียบมากขึ้น
เมื่อคุณมีขั้นตอนต่าง ๆ แล้ว ให้วิเคราะห์ขั้นตอนเหล่านั้นและถามตัวเองว่าจำเป็นหรือไม่ ที่จะต้องดำเนินการทั้งหมด หรือบางขั้นตอนสามารถลบออกหรือรวมเข้าด้วยกันเพื่อประสิทธิภาพที่มากขึ้นได้หรือไม่ การวิเคราะห์ทีละขั้นตอนนี้จะคล้ายกับวิธีที่ Programmer สามารถแก้ปัญหาในแนวคิดการเขียน Program แบบ Imperative (การเขียน Program ที่ง่ายที่สุด โดยจะเขียนสิ่งที่จะให้คอมพิวเตอร์ทำ ในลักษณะ “คำสั่ง” เรียงกันไปเรื่อย ๆ) ซึ่งเป็นแนวคิดที่เก่าแก่ที่สุด
การวิเคราะห์งานและแบ่งงานออกเป็นขั้นตอนต่าง ๆ จะช่วยให้คุณพัฒนาทักษะในการแก้ปัญหาที่สามารถนำไปประยุกต์ใช้กับสถานการณ์ต่าง ๆ ได้หลากหลาย ตั้งแต่งานประจำวันง่าย ๆ ไปจนถึงความท้าทายที่ซับซ้อนยิ่งขึ้น เช่นเดียวกับการเขียน Program ที่ปัญหาต่าง ๆ มีความซับซ้อนที่แตกต่างกัน
มองปัญหาจากมุมมองที่แตกต่างกัน
การมองปัญหาจากมุมมองที่แตกต่างกัน จะทำให้คุณเข้าใจปัญหาได้ลึกซึ้งและครอบคลุมยิ่งขึ้น มุมมองแต่ละมุมสามารถให้ข้อมูลเชิงลึกที่เป็นเอกลักษณ์ ช่วยให้คุณระบุแง่มุมที่คุณอาจมองข้ามไปได้ และการวิเคราะห์ข้อมูลเชิงลึกเหล่านี้ให้ได้มากที่สุดจะนำไปสู่แนวทางแก้ไขที่มั่นคงและครอบคลุมมากขึ้น
คราวหน้าหากคุณต้องทำงานบางอย่าง แนะนำว่าไม่ควรรีบเร่งทำงานให้เสร็จ แต่ควรใช้เวลาพิจารณาแนวทางต่าง ๆ ในการดำเนินการแทน โดยการประเมินแนวทางต่างๆ และเปรียบเทียบข้อดีและข้อเสียของแนวทางเหล่านั้น คุณจะสามารถเลือกวิธีแก้ปัญหาที่มีประสิทธิภาพมากที่สุดได้
การคิดหาแนวทางแก้ไข ก่อนนำไปใช้ถือเป็นส่วนสำคัญของการเขียน Program ก่อนที่จะเขียน Code ใด ๆ Programmer มักจะใช้เวลาในการคิดหาวิธีแก้ปัญหาและสร้าง Document สำหรับการออกแบบที่ระบุโครงสร้าง (หรือสถาปัตยกรรม) ของ Software ที่วางแผนจะสร้าง
ลงลึกในรายละเอียด
เมื่อเรายุ่งอยู่กับการแก้ไขปัญหา เรามักจะมุ่งเน้นแต่เพียงการทำงานให้เสร็จ โดยไม่เข้าใจรายละเอียดปลีกย่อยเบื้องหลังการทำงานของสิ่งต่าง ๆ อย่างถ่องแท้ แม้ว่าการมุ่งเน้นที่เป้าหมายหลักจะเป็นสิ่งสำคัญ แต่การละเลยกลไกพื้นฐาน อาจจำกัดความเข้าใจและศักยภาพในการแก้ปัญหาของคุณได้
นี่เป็นแนวทางปฏิบัติที่ทำได้จริงและสามารถทำให้ทุกอย่างเสร็จได้อย่างรวดเร็ว แต่สามารถจำกัดมุมมองของเราได้ ดังนั้น ความรู้ที่ลึกซึ้งยิ่งขึ้นเกี่ยวกับการทำงานของสิ่งต่าง ๆ มักจะช่วยให้คุณระบุวิธีการแก้ปัญหาที่ง่ายกว่าและมีประสิทธิภาพมากขึ้น
การทุ่มเทความพยายามเป็นพิเศษ และเรียนรู้สิ่งที่เกิดขึ้น “เบื้องหลัง” ของปัญหาหรือระบบ จะช่วยให้คุณเสนอวิธีแก้ปัญหาที่สวยงาม มีประสิทธิภาพ และสร้างสรรค์มากขึ้น นั่นคือสิ่งที่ Programmer ทำ เช่น เมื่อปรับแต่ง Code เพื่อลดปริมาณ Code หรือทำให้ Program ทำงานได้เร็วขึ้น
และทั้งหมดนี้ก็คือ ความคิดของ Programmer กับการแก้ปัญหาที่เหนือคณิตศาสตร์
เมื่อ หางาน IT ให้ ISM Technology Recruitment เป็นอีกหนึ่งตัวช่วย เพื่อให้คุณได้ “ชีวิตการทำงานในแบบที่คุณต้องการ” เพียงส่ง Resume มาที่นี่
ISM เชี่ยวชาญในธุรกิจ IT Recruitment & IT Outsourcing โดยเฉพาะ ได้เปิดทำการมาแล้วกว่า 30 ปี มีพนักงานทุกสายและทุกระดับทางด้าน IT ที่ได้ร่วมงานกับลูกค้าองค์กรใหญ่ที่มีชื่อเสียงและบริษัทข้ามชาติมากมาย