โปรแกรมเมอร์ต้องมีประสบการณ์?
เชื่อว่าหลายๆคนคงต้องผ่านช่วงชีวิตหนึ่งที่ต้องนั่งดูประกาศรับสมัครงานเป็นสิบๆที่ หลายต่อหลายวัน
วันนี้ผมนั่งหางาน Java Programmer ใน jobDB.com ดู (ไม่ได้กะจะสมัครหรอกครับ แค่ว่าง)
หลักจากอ่านไปอ่านมาสักพัก พบสิ่งที่ทำให้หงุดหงิดเล็กน้อย
- ชื่อเรียกมันเยอะมาก ทั้งๆที่อ่าน job description แล้ว มันก็งานเดียวกัน ได้แก่ Programmer, Developer, System Analysis (จริงๆแล้ว ถ้าอ่านดูคือ Senior Programmer), Analyst Programme, Software Engineer (เอาเข้าไป)
- 95 % requirement ประสบการณ์ ทั้งๆที่บางตำแหน่งเป็นแค่ junior
- หลายๆที่ require ประสบการณ์สูงมาก (4ปี/5ปี) ทั้งๆที่ Job Description น้อยกว่าอันที่ Require แค่ 1-2 ปี
- หลายๆอันอ่านแล้วรู้เลย ว่าคนที่เขียนประกาศ ไม่รู้เรื่องเกี่ยวกับงานที่เขากำลังหาอยู่ (เป็นประกาศที่เขียนโดย HR จริงๆ ไม่มีโปรแกรมเมอร์หรือคนทีเ่กี่ยวข้องกับทาง IT ยุ่งเกี่ยวด้วยเลย)
- หลายๆที่ require ความสามารถหลายอย่างมากเสียจนผมไม่รู้เลยครับ ว่าพี่แกจะให้ทำงานอะไร
ส่วนที่ผมจะตั้งข้อสังเกตคือเรื่องประสบการณ์ครับ
ในความเข้าใจของผมนั้น
การกำหนดไว้ 1 ปี อย่างต่ำ น่าจะสื่อความหมายเป็นนัยว่าต้องการคนรู้งาน ไม่ต้องการเทรนใหม่หมด
การกำหนดไว้ 2-3 ปี อย่างต่ำ น่าจะสื่อความหมายเป็นนัยว่าต้องการคนที่ผ่านประสบการณ์มามาก และเพียงพอที่จะนำคนอื่นได้
การกำหนดไว้ 4-5 ปี อย่างต่ำ อันนี้คงต้องการพวกโคตรเซียนล่ะมั้ง
ี
สำหรับงานระดับการจัดการ ผมเชื่อมั่นว่าประสบการณ์เป็นสิ่งที่สำคัญมาก (บางครั้งต้องมีอายุด้วย ไม่งั้นคุมไม่อยู่เอา)
ดังนั้น ขอออกตัวก่อนว่า ประเด็นที่จะพูดต่อไปนี้ หมายถึง งาน programmer จริงๆ (เฉพาะ Implementation Phase) เท่านั้นนะครับ อาจลามถึงส่วน Design Phase นิดหน่อย แต่ไม่นับ Requirement/Testing/Release แน่ๆ
คำถามของผมคือ
1. การกำหนดว่าต้องมีประสบการณ์อย่างน้อย XX ปี เอาตัวเลขอะไรมาวัด?
2. โปรแกรมเมอร์ที่ทำงานมา 5 ปี เก่งกว่าโปรแกรมเมอร์ที่ทำงานมาแค่ 1 ปีเสมอไปเหรอ?
สำหรับข้อแรก น่าจะมีงานวิจัยรองรับนะครับ ว่าคนที่ทำงานมาครบ XXX ปี จะมีการกระโดดขึ้นของประสิทธิภาพในการทำงานแบบพรุ่งพรวด เหมือนการเลเว่ลอัพในเกมออนไลน์ !! (หรือประมาณว่าอัพจ๊อบสอง)
… ผมประชดน่ะครับ …
สำหรับข้อสอง อันนี้ผมสงสัยจริงๆ ว่าจริงเหรอครับ? เพราะผมเชื่อว่า
ประสบการณ์เป็นสิ่งที่จำเป็นสำหรับการเป็นโปรแกรมเมอร์ที่ดี แต่ไม่ได้แปรผันตรงกับความสามารถ
ปกติแล้วไม่ว่าคุณจะเป็นใคร หรือทำงานอะไร เราแบ่งการทำงานอย่างหยาบๆ ออกได้เป็น 3 ช่วงครับ
- ช่วงเรียนรู้ ช่วงนี้คือการที่คุณยังทำงานได้ productivity ต่ำๆ ใช้เวลาส่วนใหญ่ไปกับการเรียนรู้เนื้องาน และสิ่งแวดล้อม
- ช่วงทำงาน ช่วงนี้คือช่วงที่ productivity คุณเริ่มเสถียร คุณทำงานได้เต็มที่ สมกับเงินค่าจ้างที่คุณได้รับ (หรืออันที่จริง คุณต้องทำงานให้เขาได้มากกว่าเงินที่คุณได้รับ)
- ช่วงพัฒนาปรับปรุง ช่วงนี้คือช่วยที่คุณเริ่มเข้าใจทุกอย่างที่จำเป็นในการทำงานแล้ว และสามารถนำสิ่งเหล่านั้นมาประยุกต์ต่อยอด และหาช่องทางในการพัฒนา ให้สภาพแวดล้อมขององค์กรดียิ่งขึ้นไป และเพิ่ม productivity ขึ้นได้อีก
แน่นอนว่างานแต่ละงาน และคนแต่ละคน ก็คงจะมีช่วงเวลาต่างๆ ต่างกันไป แต่โปรแกรมเมอร์ที่มีความสามารถสูง จะมีช่วงเรียนรู้ที่สั้น และเริ่มทำประโยชน์ต่อองค์กรได้เร็ว ส่วนคนที่มีแนวโน้มที่จะเติบโตไม่ว่าในสายงานใดๆ ควรจะต้องไปถึงช่วงที่สาม
ผมรู้สึกว่าเป็นเรื่องที่น่าเศร้ามากครับ ถ้า HR จะใช้ประสบการณ์เป็นเกณฑ์หลัก (เพราะ HR เองไม่รู้ลักษณะงานของ Programmer และหาเกณฑ์อื่นวัดไม่ได้) ในการเปรียบเทียบและคัดเลือกโปรแกรมแกรมเมอร์ ถึงแม้จะในระดับการสกรีน Resume ก็เถอะ
เพราะนั่นเป็นการตัดโอกาสที่บริษัทจะได้โปรแกรมเมอร์ระดับหัวกะทิที่ยังไม่มีประสบการณ์ (ซึ่งอีกสักห้าเดือน เขาอาจจะเก่งกว่าหลายๆคนที่ทำงานกันมาเป็นปีแล้ว)
ปล. ว่าแต่ จริงๆอาจจะมีงานเขียนโปรแกรมบางอย่าง ที่ต้องใช้เทคโนโลยีที่มีช่วงเรียนรู้ถึง 4-5 ปีหรือเปล่า?
Reference:
Why IT Managers Are Hiring Based On
Filed under: job | Leave a Comment
Eclipse’s shortcuts
คิดๆเหมือนกันว่า Eclipse ที่ใช้กันอยู่ เราไม่ได้ดึงความสามารถของมันมาใช้ครบแม้แต่ 10 เปอร์เซ็นต์
วันนี้เลยทดลองเล่นดู ได้อะไรแปลกๆมาเยอะเหมือนกัน เริ่มจาก shortcut ก่อนนะครับ
หมวด Code Navigation
F3 กดปุ่มนี้เมื่อไฮไลท์ชื่อเมดถอดหรือคลาสไว้ จะเป็นการกระโดดกลับไปตำแหน่งที่มีการประกาศไว้ (กด ctrl + left click ก็ได้)
Ctrl + G กดปุ่มนี้เมื่อไฮไลท์ชื่อเมดถอดหรือคลาสไว้ จะเปิดหน้าต่างค้นหาตำแหน่งที่ประกาศเมดถอดชื่อนี้ไว้
Ctrl + Shift + G กดปุ่มนี้เมื่อไฮไลท์ชื่อเมดถอดหรือคลาสไว้ จะเปิดหน้าต่างค้นหาตำแหน่งที่ใช้เมดถอดชื่อนี้ (ตรงกันข้ามกับเมื่อครู่) มีประโยชน์ในการทำ refactoring
Ctrl + O แสดง quick outline ของคลาสที่เปิดอยู่
Alt + left/right arrow ถอยหรือไปข้างหน้า ในตำแหน่งที่พึ่ง select ล่าสุด (คล้ายปุ่ม back กับ forward ในบราวเซอร์)
Ctrl + Q กลับไปตำแหน่งที่มีการแก้ไขครั้งสุดท้ายใน Editor
Alt + up/down arrow เลื่อนแถวปัจจุบันขึ้นไปข้างบนหรือลงไปข้างล่าง
Ctrl + left/right arrow เลื่อนหรือถอยหรือไปข้างหน้า หนึ่งคำ (จริงๆมันใช้ได้กับทุกอย่าง ไม่ใช่แค่ eclipse ลองกดใน address bar ข้างบนดู)
Ctrl + Shift + up/down arrow เลื่อนไปยังการประกาศเมดถอดที่ใกล้ที่สุด
Ctrl + E quick view ไฟล์ที่เปิดไว้
หมวด ScrapBook
1. ctrl + u รัน code ที่ไฮไลท์ไว้
2. ctrl + shift + d แสดงผลลัพธ์ของโค้ดไฮไลทืไว้ในอีดิเตอร์
3. ctrl + shift + i เปิดหน้าต่าง quick inspect
หมวด Code Assist
พิมพ์คำพวกนี้แล้วกด ctrl+space
“main” = main method
“sysout” = System.out.println
“try” = ควรจะรู้
“for” = ควรจะรู้แล้ว
“if” = ควรจะรู้ที่สุด
อื่นๆ ที่ผมพยายามจัดหมวดไม่ได้
Ctrl + Shift + F จัดฟอร์แมตโค้ดให้อัตโนมัติ (สามารถแก้ไขฟอร์แมตได้ใน preference)
Ctrl + / commnet/uncomment
Ctrl + shift + T เปิดหน้าต่าง Type ให้ค้นหาชนิดคลาสต่างๆ
Ctrl + shift + R เปิดหน้าต่าง Resource ให้ค้นหาไฟล์ต่างๆ จากทุกโปรเจค
Resources:
My new favorite Eclipse feature
Eclipse Usage Tips
10 Eclipse Navigation Shortcuts Every Java Programmer Should Knowลอง Google “Eclipse shortcut” มีอยู่เพียบครับ เลือกใช้ให้ได้ละกัน
Filed under: Eclipse | Leave a Comment
Tags: Eclipse, shortcuts, tip
Hello world!
Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!
Filed under: Uncategorized | 1 Comment
ค้นหา
-
Blogroll