เด็กที่จบใหม่สาย programmer ว่าจริงๆแล้วบริษัทต้องการอะไรบ้าง โดยเอาจริงๆมันเป็นเรื่องธรรมดาของคนอื่นๆแต่เด็กจบใหม่ก็นั่นแหละไม่รู้หรอก กว่าจะสอนกว่าจะฝึกให้เข้าใจว่าปกติทำงานตอนเขียนโปรแกรม สิ่งที่ต้องทำก่อนหลังหรืออะไรการจัดลำดับความคิด พวกนี้หลายๆคนที่เริ่มมาทำงานด้านเขียนโปรแกรมมีปัญหาวันนี้จะมาแนะนำว่าควรเตรียมตัวและอะไรที่ทีมที่รับเข้าไปทำงานอยากได้ครับ
แจ้งเตือนก่อน !!!
บทความนี้เป็นความคิดเห็นส่วนตัวของผมเองนะครับ ถ้าหากท่านไหนอยากให้ให้เพิ่มเติมอะไรบอกได้ใน comment ได้เลยนะครับ ถ้าผมพลาดอะไรรบกวนบอกได้เลยพร้อมจะแก้ไขให้ทันทีครับ
1. Programmer should self learning ( ศึกษาด้วยตัวเอง )
ขอหยิบเรื่องนี้มาคุยเป็นสิ่งแรกเลย คือ เวลาๆน้องๆหรือคนที่กำลังเข้าไปทำงานสาย Programmer ใหม่ๆ บริษัทไม่ได้ต้องการคนเป็นเทพลอยจากพื้นมาเลย เพราะเขารู้ว่าใครๆก็ต้องมีการเริ่มต้นมาก่อนมีผิดมีพลาดอยู่แล้ว แต่ปัญหาอย่างแรกที่หยิบเรื่องนี้มาคุยคือ น้องๆบางคนที่เข้าทีมใหม่ๆหรือบริษัทแรก ทีมแรก สิ่งที่ทางทีมคาดหวังสุด ( สำหรับมุมมองผมเอง ) คือ เรื่องการเรียนรู้ด้วยตัวเองก่อน
“คือทีมจะไม่สอนงานหรอ ?” น้องๆที่อ่านอาจจะคิดในใจ ประเด็นไม่ใช่เรื่องสอนงาน งานอ่ะสอนอยู่แล้วแต่บางครั้งความรู้พื้นฐานที่น้องมีมันไม่เท่ากัน ทำให้การสื่อสารจะยิ่งล่าช้าไปด้วยเพราะต้องมาอธิบายต่ออีก ขยายความในขยายความอีกที แต่ถ้าน้องมีพื้นฐานเรียนรู้มาเองก่อนหรือเตรียมตัวมาก่อน จะดีมาก ไม่รู้ไม่เป็นไร แต่รู้แล้วว่าต้องศึกษาอะไรแล้วไปศึกษาเพิ่มเติมแค่นี้ก็ดีใจมากแล้ว
แนะนำว่าถ้าน้องรู้ว่ารายละเอียดงานของน้องต้องศึกษาเรื่องอะไร หรือภาษาอะไรก็แนะนำให้เรียนรู้ไปก่อนเลย เช่น ต้องใช้ nodejs ก็ไปหาเรียนในเน็ตหรือคอร์สก็ได้ เดี๋ยวนี้ถูกมากได้ฝึกอังกฤษต่ออีก ก็เลือกๆมาซักคอร์สที่คนแนะนำเยอะๆ หรือว่ามีคนเรียนเยอะและเรตติ้งดีๆหน่อยก็ทำความเข้าใจมันไม่ต้องเรียนให้ครบ 100% แต่ได้ก็ดีจะได้มีพื้นฐานกว้างขึ้นไปอีกครับ
2. search google ด้วย key word ที่ดี
หลายคนมากๆ อาจจะนึกไม่ออกหรือว่าเวลาค้นหาใน google ( ต่อไปขอเรียกว่า search เลยนะ ) เนี้ยไม่รู้จะหาคำว่าอะไร เอาจริงๆถ้าน้องติด เช่น เจอ error อะไรซักอย่าง อย่างแรกที่ต้องทำความเข้าใจคือเอา error นั้นไป search ซะ เพื่อให้เราเข้าใจว่า error มันแปลว่าอะไร จะได้รู้ว่ามัน error เพราะเชื่อมต่อฐานข้อมูลไม่ได้ หรือว่า timeout หรือว่า ติดต่อ redis ไม่ได้ ถ้าไม่เข้าใจพวกคำศัพท์พวกนั้นไม่เป็นไร แค่บอกว่าถ้าเจออะไรไม่รู้ก็ไป search ให้เข้าใจ อย่าเมินมัน
แต่ถ้าไม่เจอแปลว่าน้อง search ผิด แนะนำให้ถามคนในทีมประโยคประมาณว่า “พี่ครับผมติดปัญหานี้ ผมลองค้นหาแล้วไม่เจอคำตอบที่แก้ไขได้ อยากรู้ว่าพี่ search ยังไงครับ ทำให้ผมดูหน่อยครับว่าพี่ใช้ key word ประมาณไหน” ถามแบบนี้พวกคนในทีมพร้อมช่วยหลืออยู่แล้วเพราะเขารู้ว่าคุณไม่ใช่ทำไม่เป็นเลยแค่ติดปัญหานิดหน่อย
ที่ผมใช้บ่อยเลยคือ “how to … ” อะไรก็ว่าไป หรือถ้าติดเป็น error จะเอาคำ error นั้นไปหาตรงๆเลย หรืออาจจะเขียนชื่อ lib ที่เกิดปัญหาเอาไปต่อกับ error นั้นๆ
3. คำแนะนำจากคนในทีมให้ไปลองทำดู
บางครั้งคนในทีมมีการแนะนำให้น้องๆไปทำอะไรที่ไม่เกี่ยวกับ project ตรงๆก็ไปลองทำดูก็ได้ครับ เพราะว่าเขารู้ว่าถ้าน้องทำอันนี้เป็น project ที่เหลือก็อาจจะคล้ายกันแต่ถ้าน้องไม่มีพื้นฐานด้านนั้นเลยก็ลองถามพี่ๆในทีมดูว่า ตัวเองขาดอะไร ขาดพื้นฐานเรื่องไหนให้คนในทีมประเมินดูได้ เพื่อให้น้องไปถูกทางและเข้าใจว่ารายละเอียดเพิ่มมากขึ้น
อย่างที่เจอมาก็บอกไปว่าลองไปทำ todo app ดูจะช่วยให้เข้าใจมากขึ้น เพราะน้องไม่มีพื้นฐานเลย ถ้าทำเสร็จจะได้เข้าใจว่ามันใช้ lib อะไรมาช่วยเหลือเราบ้าง เราติดต่อฐานข้อมูลยังไง เพราะบางทีก็ติดต่อหลายตัวไม่ใช่ตัวเดียว ให้ลองเล่น docker ก็ไปลองดู ถ้าไปลองแล้วติดก็กลับมาถามต่อ
4. ดิ้นรนด้วยตัวเองก่อน
หลายๆครั้งน้องที่เข้าทีมจะถามคำถามที่ทำให้ปวดหัวได้เช่น
- ตรงนี้มันทำยังไงครับ
- pug มันคืออะไร
- redis คืออะไร
เรื่องบางอย่างน้องสามารถหาคำตอบในเน็ตได้เองอยู่แล้ว ต้องแสดงการดิ้นรนก่อน อย่างน้อยไป search มาแล้วครับแต่ไม่เข้าใจตรงนี้ ทำนองนี้ อย่างน้อยๆคือแสดงให้เขาเห็นว่าเราดิ้นรนมาแล้ว แล้วมันติดปัญหาจริงๆ
5. ถามเมื่อไม่มั่นใจ
เวลาทำโปรแกรมเสร็จลองถามพี่ที่ดูแลเราหรือทีมดูว่าถ้าหาก task งานเราต้อง test ยังไงบ้าง เราอาจจะบอกว่าเราคิดแบบนี้แล้วก็มีการเทสแบบนี้แล้ว เพราะหลายๆครั้งที่น้องๆเข้าไปทำงานนั้น งานเป็นงานที่ทำต่อจากคนอื่น แน่นอนแหละว่าสิ่งที่เราเขียน code ขึ้นมานั้นอาจจะมีการแก้ไขตรงส่วนเก่า อาจจะมีผลกระทบกับสิ่งที่เคยทดสอบไปแล้ว อย่างนี้เราควรถามให้มั่นใจแต่ถ้าหากมี test case เขียนไว้แล้วก็ลองถามว่ารันตรงไหนอย่างไร
6. No shortcut ( ไม่มีทางลัด )
มีแต่เราฝึกฝนมากน้อยเพียงใด เพราะถ้าหากน้องเข้าไปแล้วมีพื้นฐานดี นั่นก็ดีไปแปลว่าจะปรับตัวเข้ากับงานได้ง่าย แต่ถ้าหากไม่มีเลยก็ต้องอดทนฝึกฝนให้มากกว่าคนอื่น เผื่อให้ทันคนในทีม ถ้าเราพัฒนาเร็วคนในทีมก็จะยอมรับเราเร็วเช่นกัน อีกอย่างเราเรียนรู้เยอะมันเป็นข้อดีกับตัวเองด้วย มันไม่มีอะไรที่รวดเร็วหรอก สู้ๆและพยายามกัดฟันอดทนตอนแรกมันจะเหนื่อยแต่พอผ่านไปได้มันจะง่าย
7. การทำงานไม่เหมือนทำการบ้านอีกต่อไป
น้องบางคนยังติดการส่งงานเหมือนตอนเรียนมหาลัย อันนี้ไม่แปลก เพราะระบบการศึกษาบ้านเราแม่งก็ดีมากมาย คืองี้บางคนติดทำงานแบบพอผ่าน อันนี้ไม่ผิดนะครับ ทุกคนก็เคยเป็นอย่างนั้นจนกระทั่งโดนด่า ( อาจจะเป็นหัวหน้าอีกที อาจจะเป็นลูกค้า ) คือ task งานบางครั้งมันไม่ใช่การบ้าน มันอาจจะต้องช่วยเหลือคนอื่นต่อหรือว่ามีผลกระทบต่อเนื่องกับคนอื่น ไม่ใช่ส่งงานแล้วเสร็จกลับบ้านได้ น้องอาจจะต้องช่วยคิดเพิ่มเติมจากงานเข้าไป ทั่งนี้ทางบริษัทก็ไม่ได้คาดหวังว่าน้องจะทำหรอกแต่ถ้าทำก็จะดี โดดเด่นกว่าคนอื่นแน่นอน
สรุป
ไม่ใช่ว่าน้องต้องทำได้ทุกข้อแต่ละอันเนี้ยเอาจริงๆถ้าคนเก่งๆเขามีครบทุกอย่างเลย น้องที่เก่งๆที่บริษัทอยากได้ก็คงประมาณนี้ แต่ถ้าน้องอ่านแล้วมีข้อไหนตรงใจก็อยากให้ลองฝึกเพิ่มเติมลงไปหรือใครกำลังจะได้งานแรกที่ตัวเองเข้าไปทำงานละก็ลองเอาไปเป็นแนวทางก็คิดว่าน่าจะช่วยได้นะครับ สำหรับบทความนี้ ขอลาไปก่อนสวัสดีครับ
หากชื่นชอบผลงานแค่คุณเข้ามาอ่านก็ถือว่าเป็นการสนับสนุนเจ้าของบล็อกแล้วครับ ถ้าบทความนี้เป็นประโยชน์ละก็ อย่าลืมแชร์ออกไปให้คนรอบตัวของคุณนะครับ