หากฉันทำงานเป็น Developer ในภาษาหนึ่ง (เช่น Java) และทำงานต่อจนถึง Developer อาวุโสนั่นจะทำให้ฉันเป็นผู้พัฒนาอาวุโสสำหรับตำแหน่งที่ใช้ภาษาอื่น (เช่น Ruby) หรือไม่
หากฉันทำงานเป็น Developer ในภาษาหนึ่ง (เช่น Java) และทำงานต่อจนถึง Developer อาวุโสนั่นจะทำให้ฉันเป็นผู้พัฒนาอาวุโสสำหรับตำแหน่งที่ใช้ภาษาอื่น (เช่น Ruby) หรือไม่
คำตอบ:
วิธีที่ดีที่สุดในการตอบคำถามนี้คือดูว่าความแตกต่างระหว่าง Developer และ Senior Developer สมมติว่าไม่ใช่แค่เวลาให้บริการโดยทั่วไปฉันคาดหวังว่าทั้งผู้พัฒนาและนักพัฒนาอาวุโสจะสามารถ:
นอกจากนี้ฉันคาดหวังว่านักพัฒนาอาวุโสจะ:
ดังนั้นคำถามจะกลายเป็นว่าคุณได้ทำตามเกณฑ์การขยายสำหรับภาษาที่สอง (หรือสามหรือสี่) ของคุณหรือไม่ ฉันขอแนะนำว่าตราบใดที่คุณมีความสามารถทางเทคนิคเพียงพอในภาษาที่คุณกำลังจะย้ายไปแล้วใช่เพราะสิ่งต่าง ๆ ของนักพัฒนาอาวุโสส่วนใหญ่มักจะถ่ายโอน
คุณสามารถสมัครตำแหน่งใดก็ได้ใน บริษัท ที่คุณชอบไม่ว่าสถานะปัจจุบันของคุณคืออะไร
มันจะขึ้นอยู่กับคุณในการพิสูจน์ CV / จดหมายปะหน้า / สัมภาษณ์ของคุณว่าคุณเป็นคนสำหรับงาน
ฉันมองหาคุณสมบัติต่อไปนี้เมื่อฉันสัมภาษณ์ผู้พัฒนาระบบ
มีสิ่งอื่น ๆ อีกมากมายที่ฉันมองหา แต่สิ่งเหล่านี้เป็นประเด็นหลัก
ในขณะที่ฉันได้แนะนำให้จ้างนักพัฒนาซอฟต์แวร์ที่ไม่ใช่ผู้เชี่ยวชาญในภาษาที่ใช้ในที่ทำงานพวกเขาเป็นผู้เชี่ยวชาญในภาษาที่คล้ายคลึงกัน
คุณสามารถสมัครได้ แต่อย่างน้อยถ้าฉันกำลังจ้างฉันอาจจะจ้างคุณหรือไม่ก็ได้
ความอาวุโสเกี่ยวข้องกับ (อย่างน้อย) สองด้าน ความเชี่ยวชาญด้านการพัฒนาทั่วไปและความเชี่ยวชาญด้านภาษา / กรอบงาน (ฉันตั้งใจละทิ้งความรู้ทางธุรกิจออกไป) ในปัจจุบัน การเป็นนักพัฒนาอาวุโสในหนังสือของฉันยังรวมถึงระดับความเชี่ยวชาญด้านการออกแบบ / สถาปัตยกรรม วิธีสร้างระบบที่ดี / ทดสอบได้ ฯลฯ
การไปถึงระดับนี้ใน Java ควรจะช่วยให้คุณใช้ภาษาอื่นที่คล้ายกัน (คล้ายกัน / ขั้นตอน)
แต่ในยุคที่คาดว่าจะได้ผลผลิตในทันทีคุณไม่น่าจะรู้ทับทิมเกี่ยวกับ Java ได้ วิธีแบ่งระบบของคุณออกเป็นโครงสร้างที่เป็นมิตรกับทับทิมแทนที่จะสร้างโครงสร้างที่เป็นมิตรกับ Java คุณอาจรู้จัก Java Framework บางตัวและไม่ใช่ Rails หรือ Ruby-specific อย่างอื่น
ถ้าฉันจะขอให้คุณเขียนโค้ดไวท์บอร์ดใน Ruby ระหว่างการสัมภาษณ์คุณสามารถทำได้หรือไม่?
สิ่งเหล่านี้จะเป็นการตัดสินใจของฉันที่จะจ้างคุณหรือไม่ก็ตาม แต่โดยเฉพาะอย่างยิ่งสำหรับบทบาทอาวุโส
โชคดี
Nope
นั่นเป็นหนึ่งในความแตกต่างที่สำคัญระหว่างอาชีพของเรากับอาชีพที่เป็นทางการมากกว่า หากคุณเคยทำงานเป็นทนายความทำพินัยกรรมและที่ดินเป็นเวลา 20 ปีแล้วคุณจะไปสั่งในอัตราที่สูงเพราะคุณมี 20 ปีของความรู้สร้างขึ้นในโดเมนนั้น
หากคุณได้ทำ C ++ / Win32 / MFC เป็นเวลา 15 ปีแล้วนั่นไม่ได้ทำให้คุณมีคุณสมบัติในระดับสูงในฐานะผู้พัฒนา Rails แม้ว่าคุณจะยังคงแก้ปัญหาเดียวกันในโดเมนเดียวกัน ... กล่าวว่าทางการแพทย์ ตัวอย่างเช่นการเรียกเก็บเงิน
ยิ่งแย่ไปกว่านั้น บริษัท ส่วนใหญ่จะไม่คิดว่าคุณอยู่ในตำแหน่งที่ใกล้เคียงกัน ... ตัวอย่างเช่นถ้าคุณทำ C ++ / MFC มาแล้ว 5-7 ปีคุณควรจะได้ความเร็วสูงสุดใน C # /.NET รวดเร็วมากอย่างน้อยสำหรับเดสก์ท็อป น่าเสียดายที่ บริษัท ส่วนใหญ่ไม่เห็นด้วยวิธีนี้
มันขึ้นอยู่กับ
ถอด "การเขียนโปรแกรม" ออกจากมัน ทำท่าแสร้งทำเป็นว่าคุณเป็นนักแปลมืออาชีพ
สมมติว่าภาษาอังกฤษเป็นภาษาแรกของคุณและคุณก็มีความเชี่ยวชาญในภาษาฝรั่งเศส คุณมีแนวโน้มที่จะเรียนรู้ภาษาสเปนได้อย่างง่ายดาย
อย่างไรก็ตามคุณไม่น่าจะเชี่ยวชาญภาษาจีนหลายภาษาได้อย่างรวดเร็ว ในขณะที่ประสบการณ์ของคุณในฐานะนักภาษาศาสตร์จะช่วยให้คุณเรียนรู้ภาษาทำให้คุณได้เปรียบกว่าใครบางคนที่ไม่เคยเรียนภาษาต่างประเทศมาก่อนคุณจะต้องใช้เวลานานกว่านี้ในการเป็น "ผู้เชี่ยวชาญ" (เช่น "อาวุโส") ) นักแปลในภาษานั้น
ใช่และไม่.
หากภาษามีลักษณะคล้ายกันให้พูด C ++, Java หรือ Ruby แน่ใจว่าคุณควรพิจารณา ขึ้นอยู่กับว่าผู้คนที่นั่งอยู่ในออฟฟิศนั้นมีความยืดหยุ่นแค่ไหนคุณมีโอกาสในการต่อสู้
อย่างไรก็ตามถ้าภาษามีความแตกต่างกันอย่างมากและโดยที่ฉันหมายความว่าคุณเป็นคนภาษาโคบอลที่ถูกเตะขึ้นเกี่ยวกับ Haskell แล้วแม้ว่าโอกาสในการเป็นภาษาโคบอลมากกว่า 10 ปีของคุณนั้นค่อนข้างจะเต็มไปด้วยความปลอดภัย
คู่ของสิ่งที่จะไปในความโปรดปรานของคุณในสถานการณ์ดังกล่าว:
ฉันไม่ค่อยเห็นชื่อ "อาวุโส" ตามภาษา ฉันรู้โปรแกรมเมอร์ระบบอาวุโสสองสามคนโปรแกรมเมอร์เว็บคู่อาวุโสและโปรแกรมเมอร์ COBOL อาวุโสหนึ่งคน
การเขียนโปรแกรมมีหลายแง่มุมและมีหลายสาขาที่เสนอ ฉันคาดหวังว่านักพัฒนาเว็บระดับสูง (ในชื่อผู้เขียนโปรแกรมและผู้พัฒนาดูเหมือนจะใช้แทนกันได้) จะมีความเชี่ยวชาญในภาษากระแสหลักหลายภาษาที่ใช้ในการพัฒนาเว็บ สิ่งนี้ทำให้กูรู Python และ PHP เป็นผู้เชี่ยวชาญทันทีใน C # หรือไม่? ไม่ในทางกลับกันปรมาจารย์ C # ทุกคนไม่ได้เชี่ยวชาญศิลปะการบริหารโครงการและความเป็นผู้นำ
ฉันรับใช้บทบาทของ CTO ใน บริษัท นอกเหนือจากการเป็นโปรแกรมเมอร์ระบบอาวุโส กระนั้นฉันก็ยินดีที่จะเลื่อนขั้นโครงการหรือผู้เชี่ยวชาญ LISP อย่างมีความสุขหากเราพบโครงการที่จำเป็นเช่นกัน ส่วนหนึ่งของการเป็นผู้นำที่ดีคือการทำความเข้าใจข้อ จำกัด ของคุณเองและข้อบกพร่องแรก
ฉันไม่แน่ใจว่าฉันต้องการทำงานใน บริษัท หรือแม้แต่แผนกที่เน้นภาษาเดียวและภาษาเดียว ฟังดูเหมือนจะทำในสิ่งที่พวกเขาพูดเสมอว่าการสูบบุหรี่จะทำให้: แสดงความสามารถในการเติบโตของคุณเมื่อความเป็นจริงแย่ลงกว่าเดิม
อย่าไล่ตามชื่อไล่ล่าความรู้ แต่เพื่อความเป็นธรรมบทบาทของคุณในตำแหน่งผู้นำก่อนหน้าอาจช่วยให้คุณได้เปรียบเพิ่มเติมโดยที่คุณได้แสดงให้เห็นถึงความสามารถในการใช้ภาษาในมือ
ฉันคิดว่ามันขึ้นอยู่กับสิ่งที่คุณรับรู้ในฐานะนักพัฒนาอาวุโส หากเป็นหน้าที่ของสถาปนิกมากกว่าหลักการออกแบบและรูปแบบการออกแบบหลายอย่างจะช่วยให้คุณได้รับประสบการณ์ในฐานะนักพัฒนาโดยไม่คำนึงถึงภาษา นั่นคือข้อดี ;-)
อย่างไรก็ตามเมื่อมองไปที่การสร้างแอพพลิเคชั่นหรือรหัสให้เป็นประโยชน์และสามารถบำรุงรักษาได้มากที่สุด (การเลื่อนบิตของคุณให้เป็นทาส) ฉันไม่คิดว่าคุณจะสามารถเข้าสู่ระดับประสบการณ์เดียวกันได้เมื่อเปลี่ยนภาษา IDE และ / หรือกรอบงาน
แต่ดังที่ runrun กล่าวว่าสิ่งนี้ไม่ได้ขัดขวางไม่ให้คุณสมัครอะไร
สิ่งนี้จะขึ้นอยู่กับ บริษัท ที่คุณสัมภาษณ์เนื่องจากเป็นกระบวนการทรัพยากรบุคคลภายในที่ผลักดันให้พนักงานใหม่เข้ามาร่วมงาน บริษัท ขนาดใหญ่มีแนวโน้มที่จะเข้มงวดมากและถ้าพวกเขาบอกว่าคุณต้องมีประสบการณ์ในการใช้ภาษาที่กำหนดมานานถึงnปีเพื่อพิจารณาในระดับอาวุโสคุณอาจพบว่าพวกเขาจะพาคุณไปสู่นักพัฒนาระดับกลางเท่านั้น
ที่กล่าวไว้ว่าสิ่งนี้ไม่ควรป้องกันคุณจากการสมัครตำแหน่งและหากพวกเขานำคุณเข้ารับการสัมภาษณ์มันเป็นสิ่งที่คุณควรพูดคุย
ฉันจะบอกว่ายิ่งภาษาระดับต่ำหรือเป็นมิตรกับเครื่องคือยิ่งคุณเป็นผู้เชี่ยวชาญมากขึ้น
ความเชี่ยวชาญ Java / C # จ่ายน้อยกว่าความเชี่ยวชาญ ASM / C / C ++
ภาษาหลังเหล่านั้นทำการจัดการหน่วยความจำและสิ่งอื่น ๆ ที่สำคัญจริง ๆ เมื่อทำการเขียนโปรแกรม
แต่สำหรับภาษา "ง่าย" อื่น ๆ คุณจะต้องทำการเปรียบเทียบอย่างรวดเร็วเกี่ยวกับคุณสมบัติที่ทำให้พวกเขา "ง่ายขึ้น" แต่ฉันคิดว่ามันไร้ประโยชน์ ประสบการณ์ที่มีภาษาง่าย ๆ จะถูกวัดได้ดีขึ้นด้วย CMS / โค้ดที่ทำอื่น ๆ ที่คุณใช้ในการทำงานเช่นการจุดไฟโค้ดหรือ django หรือ Apache หรือ RoR
สำหรับฉันผู้พัฒนาระดับสูงคือผู้ที่ตั้งโปรแกรมเคอร์เนลระบบฮาร์ดแวร์แบบฝังตัว ฯลฯ โปรแกรมเมอร์ที่ใช้ภาษาที่ไม่เป็นมิตรกับเครื่องไม่ใช่ผู้อาวุโสสำหรับฉัน พวกเขาทำงานได้ แต่นั่นคือทั้งหมด