เชื่อว่าหลายๆคนคงต้องผ่านช่วงชีวิตหนึ่งที่ต้องนั่งดูประกาศรับสมัครงานเป็นสิบๆที่ หลายต่อหลายวัน

วันนี้ผมนั่งหางาน Java Programmer ใน jobDB.com ดู (ไม่ได้กะจะสมัครหรอกครับ แค่ว่าง)
หลักจากอ่านไปอ่านมาสักพัก พบสิ่งที่ทำให้หงุดหงิดเล็กน้อย

  1. ชื่อเรียกมันเยอะมาก ทั้งๆที่อ่าน job description แล้ว มันก็งานเดียวกัน ได้แก่ Programmer, Developer, System Analysis (จริงๆแล้ว ถ้าอ่านดูคือ Senior Programmer), Analyst Programme, Software Engineer (เอาเข้าไป)
  2. 95 % requirement ประสบการณ์ ทั้งๆที่บางตำแหน่งเป็นแค่ junior
  3. หลายๆที่ require ประสบการณ์สูงมาก (4ปี/5ปี) ทั้งๆที่ Job Description น้อยกว่าอันที่ Require แค่ 1-2 ปี
  4. หลายๆอันอ่านแล้วรู้เลย ว่าคนที่เขียนประกาศ ไม่รู้เรื่องเกี่ยวกับงานที่เขากำลังหาอยู่ (เป็นประกาศที่เขียนโดย HR จริงๆ ไม่มีโปรแกรมเมอร์หรือคนทีเ่กี่ยวข้องกับทาง IT ยุ่งเกี่ยวด้วยเลย)
  5. หลายๆที่ require ความสามารถหลายอย่างมากเสียจนผมไม่รู้เลยครับ ว่าพี่แกจะให้ทำงานอะไร

ส่วนที่ผมจะตั้งข้อสังเกตคือเรื่องประสบการณ์ครับ

ในความเข้าใจของผมนั้น
การกำหนดไว้ 1 ปี อย่างต่ำ น่าจะสื่อความหมายเป็นนัยว่าต้องการคนรู้งาน ไม่ต้องการเทรนใหม่หมด
การกำหนดไว้ 2-3 ปี อย่างต่ำ น่าจะสื่อความหมายเป็นนัยว่าต้องการคนที่ผ่านประสบการณ์มามาก และเพียงพอที่จะนำคนอื่นได้
การกำหนดไว้ 4-5 ปี อย่างต่ำ อันนี้คงต้องการพวกโคตรเซียนล่ะมั้ง

สำหรับงานระดับการจัดการ ผมเชื่อมั่นว่าประสบการณ์เป็นสิ่งที่สำคัญมาก (บางครั้งต้องมีอายุด้วย ไม่งั้นคุมไม่อยู่เอา)

ดังนั้น ขอออกตัวก่อนว่า ประเด็นที่จะพูดต่อไปนี้ หมายถึง งาน programmer จริงๆ (เฉพาะ Implementation Phase) เท่านั้นนะครับ อาจลามถึงส่วน Design Phase นิดหน่อย แต่ไม่นับ Requirement/Testing/Release แน่ๆ

คำถามของผมคือ
1. การกำหนดว่าต้องมีประสบการณ์อย่างน้อย XX ปี เอาตัวเลขอะไรมาวัด?
2. โปรแกรมเมอร์ที่ทำงานมา 5 ปี เก่งกว่าโปรแกรมเมอร์ที่ทำงานมาแค่ 1 ปีเสมอไปเหรอ?

สำหรับข้อแรก น่าจะมีงานวิจัยรองรับนะครับ ว่าคนที่ทำงานมาครบ XXX ปี จะมีการกระโดดขึ้นของประสิทธิภาพในการทำงานแบบพรุ่งพรวด เหมือนการเลเว่ลอัพในเกมออนไลน์ !! (หรือประมาณว่าอัพจ๊อบสอง)

… ผมประชดน่ะครับ …

สำหรับข้อสอง อันนี้ผมสงสัยจริงๆ ว่าจริงเหรอครับ? เพราะผมเชื่อว่า

ประสบการณ์เป็นสิ่งที่จำเป็นสำหรับการเป็นโปรแกรมเมอร์ที่ดี แต่ไม่ได้แปรผันตรงกับความสามารถ

ปกติแล้วไม่ว่าคุณจะเป็นใคร หรือทำงานอะไร เราแบ่งการทำงานอย่างหยาบๆ ออกได้เป็น 3 ช่วงครับ

  1. ช่วงเรียนรู้ ช่วงนี้คือการที่คุณยังทำงานได้ productivity ต่ำๆ ใช้เวลาส่วนใหญ่ไปกับการเรียนรู้เนื้องาน และสิ่งแวดล้อม
  2. ช่วงทำงาน ช่วงนี้คือช่วงที่ productivity คุณเริ่มเสถียร คุณทำงานได้เต็มที่ สมกับเงินค่าจ้างที่คุณได้รับ (หรืออันที่จริง คุณต้องทำงานให้เขาได้มากกว่าเงินที่คุณได้รับ)
  3. ช่วงพัฒนาปรับปรุง ช่วงนี้คือช่วยที่คุณเริ่มเข้าใจทุกอย่างที่จำเป็นในการทำงานแล้ว และสามารถนำสิ่งเหล่านั้นมาประยุกต์ต่อยอด และหาช่องทางในการพัฒนา ให้สภาพแวดล้อมขององค์กรดียิ่งขึ้นไป และเพิ่ม productivity ขึ้นได้อีก

แน่นอนว่างานแต่ละงาน และคนแต่ละคน ก็คงจะมีช่วงเวลาต่างๆ ต่างกันไป แต่โปรแกรมเมอร์ที่มีความสามารถสูง จะมีช่วงเรียนรู้ที่สั้น และเริ่มทำประโยชน์ต่อองค์กรได้เร็ว ส่วนคนที่มีแนวโน้มที่จะเติบโตไม่ว่าในสายงานใดๆ ควรจะต้องไปถึงช่วงที่สาม

ผมรู้สึกว่าเป็นเรื่องที่น่าเศร้ามากครับ ถ้า HR จะใช้ประสบการณ์เป็นเกณฑ์หลัก (เพราะ HR เองไม่รู้ลักษณะงานของ Programmer และหาเกณฑ์อื่นวัดไม่ได้) ในการเปรียบเทียบและคัดเลือกโปรแกรมแกรมเมอร์ ถึงแม้จะในระดับการสกรีน Resume ก็เถอะ

เพราะนั่นเป็นการตัดโอกาสที่บริษัทจะได้โปรแกรมเมอร์ระดับหัวกะทิที่ยังไม่มีประสบการณ์ (ซึ่งอีกสักห้าเดือน เขาอาจจะเก่งกว่าหลายๆคนที่ทำงานกันมาเป็นปีแล้ว)

ปล. ว่าแต่ จริงๆอาจจะมีงานเขียนโปรแกรมบางอย่าง ที่ต้องใช้เทคโนโลยีที่มีช่วงเรียนรู้ถึง 4-5 ปีหรือเปล่า?

Reference:
Why IT Managers Are Hiring Based On


Eclipse’s shortcuts

11เม.ย.08

คิดๆเหมือนกันว่า 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” มีอยู่เพียบครับ เลือกใช้ให้ได้ละกัน


เจิม

04เม.ย.08

หวังว่าผมจะเขียนบล็อคนี้ได้เกินหนึ่งปีครับ


Hello world!

02เม.ย.08

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!