ชีวิตการฝึกงานของผม นายแบงค์ชาติ อาลัย [ตอนจบ]

feature_full04

8. ศึกษารูปแบบการเขียนโปรแกรมแบบ Strategy pattern ด้วย Java
แนวคิดเรื่องนี้สำหรับผมแล้วมันคือการเพิ่มขีดความสามารถหรือการนำแนวคิด OOP มาพัฒนาต่อจนเกิดเป็น Strategy pattern นี้ขึ้นมา ในตอนที่ศึกษาแรกๆ แน่นอนว่ามันก็ลำบากเหมือนทุกๆเรื่องแต่สิ่งที่ได้กลับมาของการศึกษาในเรื่องนี้คือ เวลาที่เสียไปมันคุ้มค่า กับการเจอสิ่งที่ยืดหยุ่นขนาดนี้ และทำให้ผมคลายข้อสงสัยในการใช้ class บางอย่างของ Java ที่สงสัยมานานแรมปี

9. ศึกษารูปแบบการเขียนโปรแกรมแบบ MVC pattern ด้วย Java
ก็เป็นอีกหนึ่งรูปแบบที่ได้ศึกษาก็ไม่ถึงกับยากมากมายอะไรพอทำความเข้าใจได้ง่ายถ้าไม่ได้คิดอะไรผิดไปเองรึเปล่าแต่ก็ยังคงต้องอาศัยความชัดเจนจาก pattern นี้จากประสบการณ์ให้มากยิ่งขึ้นกว่านี้

10. ศึกษาการใช้งาน JUnit
ในการเขียนโปรแกรมตาม syntax ต่างๆ ของแต่ละภาษาเราไม่สามารถรู้ได้เลยว่าโค้ดที่เราเขียนไปนั้นถูกต้องหรือสมควรที่จะเขียนแบบนั้นจริงๆ รึเปล่า หรืออาจจะมี Tool บางอย่างที่ผมไม่ทราบก็ได้ที่คอยช่วยในเรื่องนี้อยู่ แต่ถ้าไม่มีเราก็สมควรที่จะนำเอา JUnit มาช่วยในการตรวจสอบ และจากการที่ได้ศึกษาเรียนรู้อยู่สักพักก็ทำให้การเขียนโปรแกรมช้าลงไปบ้าง แต่ที่ได้กลับมาคือ ความชัดเจนโค้ดว่าควรหรือไม่ กับขั้นตอนการทำงานในแต่ละกรณีที่เราได้ทดสอบ และสามารถหาทางแก้ไขได้ทันท่วงที

11. ศึกษาการใช้งาน Log4j
ปกติเวลาผมจะตรวจสอบการทำงานบางอย่างของโปรแกรมว่าได้เข้ามาใน loop หรือ if นี้หรือไม่ ก็จะใช้ System.out.print(str) หรืออื่นๆ ก็ตามแต่ภาษาที่ใช้เขียน แต่ข้อจำกัดของมันก็มีอยู่มากเหมือนกัน ยกตัวอย่างเช่นในด้านของความเร็ว ถ้าได้ลองใช้ System.out.print(str) เป็นพันๆ ครั้งนี่ ใช้เวลาไม่ต่ำกว่า หนึ่ง วินาที แน่ๆ จากการประสบการณ์ที่เคยลองใช้งาน หรือไม่ก็อาจจะเป็นเพราะคอมพิวเตอร์ของผมช้าอยู่แล้วก็ได้ แต่พอได้มารู้จักกับ Log4j ก็ทำให้สะดวกสบายมากเข้าไปใหญ่ แน่นอนว่ามันไม่ทำให้โปรแกรมเราช้าลง และเราสามารถสร้างเป็นประวัติการตรวจสอบการทำงานหรือเรียกว่า log เก็บเป็นไฟล์เอาไว้ดูในภายหลังได้อย่างง่ายดายอีกด้วย จริงๆ ความสามารถของมันก็มีมากกว่านี้แต่ก็พูดไว้เพียงเท่านี้ก็แล้วกันครับ

12. พัฒนาเว็บไซต์ด้วย Servlet และ Jsp
ถึงผมจะเคยเขียนโปรแกรมด้วย Java มาก่อน แต่สิ่งที่คิดจะหัด และคิดวนไปวนมาตั้งนานว่าจะหัดตอนไหนดี สุดท้ายก็ยังไม่ได้หัดสักทีกับ Servlet และ Jsp จนกระทั่งได้เข้ามาฝึกงานที่นี่ และแน่นอนที่สุดความรู้เรื่องพวกนี้เป็นศูนย์มาก งงมาก ไม่เข้าใจมาก ใช้เวลาทำความเข้าใจนานพอสมควรกว่าจะรู้ flow การทำงานของมันพอให้ผมสามารถนำไปใช้งานตามความต้องการได้บ้าง

13.ศึกษาการใช้งาน UML
ผมก็ไม่รู้ว่าคนที่เขียนโปรแกรมส่วนมากแล้วเขาจะเป็นอย่างผมรึเปล่านั่นก็คือการไม่ชอบทำงานด้านเอกสาร หรือจับปากกาดินสอ หรือ Tools ต่างๆ มาขีดๆ เขียนๆ นั่งคิดมโนการไหลของข้อมูลหรือขั้นตอนกระบวนการทำงานต่าง ๆ ที่เราต้องการหรือที่ต้องเกิดขึ้นในตัวโปรแกรมหรือโปรดักของเรา จนกระทั่งผมได้มาเจอโปรเจ็คของจริง ทำให้ตระหนักได้เลยว่า ลำพังเพียงสมองของเรานี้มันไม่มีที่ว่างพอให้ระบบต่าง ๆ และ flow การทำงานทั้งหมดของโปรแกรมเข้าไปอยู่ในนั้นได้ทั้่งหมด หรือเราไม่สามารถที่จะมโนสิ่งนั้นในหัวได้ตลอดเวลา หรือถ้ามีคนอื่นทำได้ก็ดี แต่นั่นคงไม่ใช่ผมเป็นแน่ สติหรือจิตของผมมันไม่ได้แข็งแรงพอที่จะให้คงสภาพความคิดขนาดใหญ่พวกนั้นในหัวได้นานพอให้ตัวผมเองได้วิเคราะห์ นอกเสียจากว่าจะสร้างรูปภาพขึ้นมาให้เห็นภาพด้วยการใช้ UML เข้ามาช่วยในการทำงาน และที่สำคัญมันเหมาะมากในการอธิบายความคิดของเราให้ออกมาเป็นภาพเป็นdiagram เพื่อให้ผู้อื่นได้ทำความเข้าใจได้ง่ายมากยิ่งขึ้น

14. ศึกษาการใช้งาน Spring framework
ส่วนตัวเคยใช้ PHP framework เจ้าหนึ่งมา ก็มีของให้ใช้เพื่อความสะดวกสบายเยอะพอสมควร ส่วนใหญ่ที่ผมเล่นก็จะเน้นไปด้านการป้อนค่าบางอย่างเข้าไปเพื่อให้มัน gen ออกมาเป็น ui ต่างๆ ที่ต้องการมันก็มีให้ใช้เยอะแยะเหมือนกัน และก็ยังลองไม่ครบสักเท่าไหร่ แต่พอได้ลองมาจับ Spring framework เอาละซิครับ งง เลย เหมือนกฏเกณฑ์มันเยอะมาก แต่สิ่งที่ชอบมากคือเรื่องการ mapping สะดวกดีมาก และที่สำคัญเรื่อง Thread ที่ถูกสร้างขึ้นหลังจาก ตัวเว็บได้เริ่มการทำงานในครั้งแรก มันก็จะอยู่อย่างนั้นต่อไป จนกว่าจะ destroy และแน่นอนว่านำเอาประโยชน์จากเรื่องนี้ไปทำอะไรต่อมิอะไรได้หลายอย่าง อยู่ที่ว่าผมจะนึกออกรึเปล่าว่าจะเอาไปทำอะไรดี

15.พัฒนาโปรแกรม Car Checklist บนระบบปฏิบัติการ Android
การเขียนโปรแกรมเพื่อให้ทำงานบนมือถือหรืออุปกรณ์เล็ก ๆ อย่าง พวกโทรศัพท์ android หรือพวก tablet android โดยมีสภาพแวดล้อม หรือตัวแปรที่จำกัด หรือเรียกง่ายๆ ว่ามันเหมือนจะง่ายนั่นเอง แต่พอได้ลองศึกษาขั้นตอนการเขียนโปรแกรมบน android ต่างๆ ลองได้เขียนออกมาจริงๆ ปัญหาส่วนใหญ่ มันอยู่ที่การออกแบบหน้าตา ด้วย xml หรือด้วย Java มันเป็นสิ่งเกินความรู้ที่มีอยู่ของผมอย่างมาก ยอมรับเลยว่ายากมากในการค้นหาเทคนิคด้านการออกแบบพวกนี้ เพราะมันไม่มี Error ไม่มีถูกมีผิด มีแต่ความ บิดเบี้ยวของหน้าตาโปรแกรมที่เราได้ออกแบบหรือได้เขียนมันขึ้นมาแต่สุดท้ายงานชิ้นนี้ Car Checklist เวอร์ชั่น save ข้อมูลการ Checklist ของแต่ละคนลงฐานข้อมูล SQLite ก็เก็บลงได้โดยสวัสดิภาพ

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

No Comments

Sorry, the comment form is closed at this time.

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

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • คุกกี้ที่มีความจำเป็น (Necessary Cookies)
    Always Active

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

  • คุกกี้ประสิทธิภาพ (Performance Cookies)

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

Save