Most popular

วันอังคารที่ 10 พฤษภาคม พ.ศ. 2554

ความต่างระหว่าง "ทำได้" กับ "ทำเป็น"

น้องๆรุ่นใหม่หลายคน อยากเป็นนักพัฒนาซอฟต์แวร์ (Software Developer) แต่สุดท้ายผลที่ได้ก็คือการเดินออกจากวงการ หรือกลายสภาพเป็นพนักงาน Office ธรรมดา


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

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

หากสิ่งที่คุณคิดว่าจะวัดความสามารถจากน้องๆที่สมัครงาน คือ ความเข้าใจ  และการทดสอบปฏิบัติ ผู้เขียนขอเสนอแง่คิด
  • ความเข้าใจ : ความเข้าใจในวงการนี้มักหาจุดสิ้นสุดได้ยาก มันขึ้นอยู่กับว่าเข้าใจไปทางไหน หรือความเข้าใจ คือ การคิดเอาเอง ผู้เขียนเคยสอนพี่ๆ น้องๆ และเก็บปัญหามาขบคิด ส่วนนึงที่ยากจะเปลี่ยนคือความเข้าใจของแต่ละคน พูดง่ายๆว่าสอนคนที่ไม่เคยเข้าใจ สมองว่างๆจะดีกว่า หากคนที่รับมาครึ่งๆกลางๆก็มักจะคิดเอง ต่อยอดเอง หลงทางได้ง่ายๆ และจะดึงให้เข้าร่องเข้ารอยก็ยากแล้ว เพราะเหตุนี้จึงเข้าใจทุกอย่าง
  • การทดสอบปฏิบัติ : หลายๆคนก็มักจะมองหารูปแบบการเขียน ท่องจำ หรือลอก นี่ก็เป็นส่วนหนึ่งที่เจอบ่อยๆ แต่คนที่ทำเช่นนี้ไม่รู้เลยว่าสมองกำลังจะเสื่อม เพราะไม่ได้คิด ใช้แค่การลอก
 จะหนี้จากวังวนนี้ได้อย่างไร?
คำตอบง่ายๆ ก็คือ ความเข้าใจ และทดสอบปฏิบัตินั่นแหละครับ แต่ต้องเปลี่ยนแนวคิดเสียใหม่ แรงผลักดันและความขยันต้องมี
  • ความเข้าใจ : เมื่อคิดว่าตัวเองเข้าใจแล้ว ก็จงคิดว่าเราคงไม่รู้จริงๆ สิ่งที่เข้าใจนั้นอาจจะไม่ถูกต้อง ฉนั้นก็ต้องพิสูจน์ วิธีพิสูจน์มีได้หลายวิธี ไม่ว่าจะถามผู้รู้ หาข้อมูลเพิ่ม หรือทดลอง
  • ทดสอบปฏิบัติ : และหลายๆคนเช่นกันไม่ยอมที่จะทำข้อนี้ เนื่องจากไม่รู้จะเริ่มตรงไหนก้เลยละทิ้งไป ทำให้ความเข้าใจนั้นตกไป เพราะสาเหตุที่ไม่รู้จริง คำถามที่เจอมากก็คือ จะทดสอบอะไร ยังไง ที่ไหน
              จะทดสอบอะไร? คำตอบคือ ทดสอบสิ่งที่ตัวเองไม่เข้าใจ แต่...ต้องเป็นจุดที่ย่อยที่สุด เช่น ไม่เข้าใจเรื่อง OOP ก็ต้องเขียน method เขียน Class มาก่อน แล้วก็ต้องนำไปใช้ได้จริง
              ยังไง? การเริ่มปฏิบัติก็ควรเริ่มอะไรที่เ 611;็น Basic ไปก่อน สิ่งที่จำเป็นมากที่ต้องดูคือเรื่อง I/O Put ต่อมาก็ลองดูที่ Process ตามลำดับไม่ต้องรีบร้อนแต่ต้องชัวร์
              ที่ไหน? ทุกที่ที่สามารถทำได้ ในตอนที่อยู่หน้าคอมก็ลงมือ ในเวลานั่งรถไปทำงานก็คิด แทนที่เราจะมานั่งคิดหน้าคอม ก็ไม่ได้ลงมือกันพอดี 

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



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

2 ความคิดเห็น:

  1. ไม่ระบุชื่อ3 มกราคม 2555 เวลา 17:10

    เขียนได้ดี ครับ

    ตอบลบ
    คำตอบ
    1. ้เป็นบทความที่ดีมากครับ อ่านแล้วได้ข้อคิดเยอะทีเดียว จะนำไปปรับใช้ในการพัฒนาโปรแกรมครับ

      ลบ