เล่าประสบการณ์สหกิจศึกษา กับบริษัท Software House

ผมเป็นนักศึกษาคณะวิทยาศาสตร์ของมหาวิทยาลัยแห่งหนึ่ง สาขาวิชาเทคโนโลยีสารสนเทศหรือที่เรียก ๆ กันติดปากว่าเด็ก IT(Information Technology) นั้นแหละครับ โดยจะเรียนเกี่ยวกับ พวกภาษาโปรแกรมคอมพิวเตอร์ซะส่วนใหญ่ ไม่อาจจะหนักเท่าเด็ก com sci หรือว่า วิศวะ พวกนี้อาจจะเก่งกว่า(แต่พวกผมนอนเก่งนะ) ตอนเข้าเรียนปี 1 ก็ได้เรียน พวกเบื้องต้น เช่น ภาษาไทย, อังกฤษ, คณิตศาสตร์,
ภาษา Programming(c++), อัลกอริทึม บลาๆ ๆ ๆ เริ่มขึ้นปี 2–3 ก็จะได้เน้นภาษาโปรแกรมเป็นหลัก(C#, SQL, PHP, Java) แล้วก็พวก Network, Ai, Dataminig, การตัดสินใจต่าง ๆ ก็ผ่านกันมาด้วยดี :D

หลังจากได้ฟามกันมาพอสมควรแล้ว ปีที่ 3 เทมอ 2 ก็จะต้องเตรียมคิดโปรเจคก่อนจะเรียนจบ ซึ่งคราวนี้แหละจะต้องเลือกสิ่งที่ตัวเองอยากทำและภาษาที่ตัวเองถนัดหรือชอบ แล้วขึ้นนำเสนอกับคณะกรรมการอีกทีว่าเหมาะที่จะทำจบได้หรือเปล่าว และในปี 4 ก็มีรายวิชาหนึ่งที่ชื่อ Co-operative Education(สหกิจศึกษา) วิชานี้นักศึกษาจะต้องออกไปเตะขอบฟ้า ทำงานจริง ๆ กับบริษัทที่เกี่ยวข้องกับสายงานของสาขาตัวเอง โดยจะต้องหาก่อนจะถึงเปิดเทมอปี 4 ซึ่งผมก็หาได้ค่อนข้างไว (ปี 3 เทมอ 2 ช่วงก่อนจะปิดเทมอ) โดยทิ้งประวัติไว้ใน Internet ก็มีพี่จากบริษัทหนึ่งโทรมา 
โดย บริษัท ตั้งอยู่แถว ๆ BTS อโศก ซึ่ง บริษัท พัฒนาเกี่ยวกับ Web Application ส่วนใหญ่ โดยใช้ภาษา Java และ .NET ผมก็เห็นว่าเดินทางสะดวกดีแล้วมีภาษาที่เราอยากพัฒนาด้วยเมื่อเข้าองค์ประกอบครบ ก็เลยตกลง บงใจตอบรับทันที “เหมือนคนใจง่ายเลยเนอะ”

โดยช่วงปิดเทมอก็รีบเตรียมตัวทบทวนความรู้เดิม โดยใช้เวลาประมาณ 1 เดือน บังเอิญช่วงนั้นโน๊ตบุ๊คผมใกล้ลาบอกโลกพอดี ก็คิดจะซื้อเครื่องใหม่ 
เลยได้ Macbook Pro retina 15" มาครอบครองซะ ตอนนี้แหละที่ทำให้ผมรู้จักคำว่าของแพง ของแพงที่ผมรู้จักคือ สมมุติว่าเรามีคอมพิวเตอร์ราคา 100k บางคนอาจจะมองว่าเป็นคอมพิวเตอร์ที่แพงมาก ๆ แต่ถ้าเราเอาไปใช้ประโยชน์ได้เต็มที่ สร้างผลงาน สร้างรายได้ ให้กับเรา โน๊ตบุ๊คเครื่องนั้นจะไม่แพง หรือถูกสำหรับเราไปเลย แต่ถ้าซื้อมาแล้วใช้ได้ไม่เต็มที่ เอาไว้เล่นเกม ดูหนัง ฟังเพลง เล่น Internet นั้นแหละที่เรียกว่าของแพงของจริง เพราะซื้อมาใช้ไม่คุ้มกับราคาที่จ่ายไป

เอาละ หลังจากที่ได้ทบทวนช่วงเวลา 1 เดือนแล้ว ก็ได้เริ่มไปสหกิจ โดยทาง บริษัท บอกว่าให้เอาโน๊ตบุ๊คตัวเอง พอได้เริ่มงาน ปรากฏว่าได้พัฒนาบน platfrom web แต่ใช้ browser InternetExpoler ทำให้ผมร้องในใจ โอ้ววว Macintosh ไม่มี ต้อง VM 
รัว ๆ พอดีพี่อีกคนนึงเลยแนะนำให้ทำการยืม Notebook ของบริษัท

โดยวันแรก ๆ ก็ได้เรียนรู้ วิธีใช้ Git กันเลย ตอนเรียนไม่ได้ใช้นะ ใช้ไม่เป็นด้วย โดย Git ตัวนี้จะใช้กันใน เฉพาะข้างในบริษัท ซึ่งใครเคยรู้จัก Github ก็คำสั่งคล้าย ๆ กัน แต่จะเป็นแบบ privete(Github ถ้าเราไม่จ่ายตัง ก็จะเป็น public) ซึ่งข้อดีของมัน ก็ตามนี้เลย Git คืออะไร ? + พร้อมสอนใช้งาน Git และ Github ขออนุญาติเจ้าของ blog ด้วยนะครับ ถ้าเพื่อน ๆ สนใจลอง โหลดได้จาก ที่นี้เลย https://git-scm.com/ สามารถทำไว้ในเครื่องตัวเองได้ โดยเครื่องมือพวกนี้จะเป็นพวก SourceTree , Git Kraken โดยหลัก ๆ ก็ clone, commit, pull, pust, fecth ประมาณนี้

งานที่ผมทำก็จะเป็นโครง ค่อยข้างเก่าครับ ก็ปรับจาก Prototype กันมาเรื่อย ๆ

ตรงนี้อยากฝากถึงน้อง ๆ ที่กำลังเดินสายนี้ครับ ว่าอย่าไปตามกับ เทคโนโลยีใหม่ ๆ มากจนไม่สนใจ โครงสร้างพื้นฐาน “เรียนรู้ได้ครับ แต่อย่าทิ้งพื้นฐาน” 
การทำงานจริง ๆ บริษัท ไม่ค่อยเปลี่ยนโครงสร้างหรอกครับ เพราะต้องใช้เวลาในการทำ Prototype ค่อยข้างเยอะ ไม่มีเวลากันมากขนาดนั้นหรอกครับ ไหนจะ ออกแบบ Prototype ,เขียน function ,Test bug กันอีก เผลอ ๆ Prototype ตัวเก่ากว่าจะแก้จนนิ่ง ใช้เวลาหลายปีครับ(ได้จากการถามพี่ ๆ ที่ทำงานกันจริง ๆ ครับ) 
เข้าใจครับว่ายุคนี้มันเป็นยุค ต้มมาม่า ใส่น้ำร้อน แล้วกินได้เลย เพราะผมก็เป็นครับ เขียน Framework ตัวใหม่ ๆ แล้วมันง่ายมาก พอมาเจอตัวเก่า ๆ ก็อึ้งกันไปนิด ๆ (แอบบ่น file config จะเยอะไปไหน , เชื่อมต่อ Database ทำไมต้องเขียนเยอะขนาดนี้ มี Bean ,Context , .xml บลา ๆ) ซึ่งต่างจาก framework ตัวใหม่ ๆ มากครับแทบไม่ต้องมี config เยอะมาก ตัวช่วยเยอะ แต่ Prototype ก็ไม่ใช่ว่าจะเป็นแบบเก่าทั้งหมดนะครับ มีการปรับแก้กันมาเรื่อย ๆ มีการใส่เทคโนโลยีใหม่ ๆ เข้าไปด้วย แต่ไม่ใช่เปลี่ยนใหม่ทั้งโครง เพราะต้องเปลี่ยนไปตามกระแส บางอย่าง เคยรันใน JDK 1.5 ได้ พอยุคสมัยเปลี่ยน ตาม Hardware ,Software Requirement ของลูกค้า ก็อาจเปลี่ยน Version JDK ในการรัน Prototype ในการรันก็อาจตายได้ ต้องปรับแก้กันตลอดครับ บาง Class เลิก support ไปแล้วก็ต้องหา lib ตัวใหม่มาแทน

อีกเรื่อง เรื่องในการหา lib หรือ library ตอนเรียนก็ไม่ได้สนใจมากครับว่ามาจากไหน แต่ถ้าเป็น เกี่ยวกับ Business เรื่อง License สำคัญมากครับ ต้องดูว่าอันไหน สามารถใช้ได้บ้างโดยไม่กระทบกับทาง Business อันนี้ผมก็ไม่ค่อยรู้เท่าไหร่ครับ รู้แค่ว่า BSD license ใช้ได้ ต้องให้ไปศึกษาเพิ่มเติมกันเองครับ แต่อยากจะฝากถึงน้อง ๆ ถ้าได้มา ทำงานใน บริษัทแล้วอันไหนไม่แน่ใจ ให้ถามอย่างเดียวครับ อย่าเก็บไว้คนเดียว เพราะถ้ามันเอาไปส่งแล้วมีปัญหา ต้องมาแก้ไข กันรัว ๆ งานอื่นก็จะไม่เดิน เสียทั้งเงิน เสียทั้งเวลา

ข้อดีของบริษัทที่ผมได้มาออกสหกิจฯ ก็คือ ได้เรียนรู้งานจริง ๆ โปรเจคจริง ๆ ที่ต้องการจะส่งให้กับทางลูกค้า ได้ทำงานกันเป็นทีมครับ เพราะฉะนั้น 
Business logic ,Budgets สำคัญมากครับ Deadline มีจริงครับ เพราะถ้าไม่เสร็จก็ต้องทำยังไงก็ได้ให้เสร็จทันเวลา ไม่งั้นทาง บริษัทจะโดน ค่าปรับตามข้อตกลงที่ได้ทำการพูดคุยกันไว้ก่อนว่าจ้าง (อันนี้ผมไม่รู้รายละเอียดมาก)

โดยการทำงานจะแบ่งการรับผิดชอบตาม Features ใน TOR โดยจะต้องกำหนดวันล่วงหน้าครับ ว่าจะเสร็จภายในกี่วัน เริ่ม — จบ วันที่เท่าไหร่ แล้วทางหัวหน้าทีมจะเอาไปพิจารณาอีกทีครับ ว่าสมควรไหม มีความเสี่ยงเกินไปหรือเปล่าว Business ล้วน ๆ = = บางสัปดาห์ประชุมกันมากกว่านั่งทำงานอีกครับ 
โดยวันที่เรากำหนดจะต้องทำให้เสร็จนะครับ เพราะบางอันสำคัญมาก เพราะถ้า Features ของเรายังไม่เสร็จ โปรเจคก็ไม่สามารถเดินต่อไปได้ครับ เพราะต้องรอของเรา เพราะฉะนั้นติดตรงไหน ต้องถามและก็ถามครับ

เรื่องการคำนวณวันอยู่ที่เราครับ ต้องคิดว่าจะทำได้ภายในกี่วัน +- ไม่ควรจะเกิน 2 วันครับ

อีกเรื่องครับ ที่อยากจะฝากถึงน้อง ๆ เพราะบางมหาลัย น้อง ๆ มีโอกาสเลือกวิชาเรียนเองได้ ถ้ามาทางสาย นักพัฒนาซอฟต์แวร์ ก็ควรเลือกเป็น วิชาของภาษาที่ตัวเองชอบ(สำคัญ), การเขียนโปรแกรมเชิงวัตถุ
Object Oriented Programming(สำคัญ), พวกวิชาออกแบบระบบ พวก Database System, Information System Design and Development, Data Structure and Algorithms, Software Engineering(ถ้าไม่มี เป็นประมาณออกแบบระบบครับ ถึงเราไม่ได้ออกแบบโดยตรง แต่ตอนทำโปรเจคก็ต้องมีความรู้บ้าง) ,ภาษา SQL (สำคัญ) ,Decision Support System, Web Technology(ถ้าเป็นสายเว็บ อันนี้จะประมาณเรียนรู้โครงสร้างเว็บเบื้องต้น html,css,js นิดหน่อย), Human-Computer Interaction(เข้าใจ User ต้องวิชานี้เลยครับ เพราะเราพัฒนาเพื่อให้คนใช้ ไม่ใช้ Programer ใช้เอง)

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

ฝากถึงน้อง ๆ ที่กำลังจะทำโปรเจคจบด้วยนะครับโปรเจคจบก็เหมือนการทำ Product ที่จะขายตัวเราเองให้ บ. ที่เราจะไปสมัครงานสนใจ เพราะเค้าจะดูว่าเราทำ อะไรมา น่าสนใจมากน้อยแค่ไหน เหมือนการสร้างดาบแหละครับ ว่าของใครจะคมกว่ากัน ใช้งานได้มากกว่ากัน เหนื่อยหน่อยครับ แต่เสร็จมาแล้วจะได้เปรียบกว่าคนอื่น เพราะของเรามีคุณภาพมากกว่า คนก็ต้องซื้อเยอะกว่า
 cr.จากพี่ที่ปรึกษา

===ขอบคุณที่อ่านกันจนจบนะครับ===