เหตุใดการเสนองานส่วนใหญ่จึงมีไว้สำหรับนักพัฒนา <ภาษาที่นี่> แทนที่จะเป็นผู้พัฒนาโดยทั่วไป [ปิด]


10

ในโลกอุดมคติ:

ในบทความที่ยอดเยี่ยมอย่าเรียกตัวเองว่าเป็นโปรแกรมเมอร์และคำแนะนำด้านอาชีพอื่น ๆ Patrick McKenzie อธิบายเหนือสิ่งอื่นใดภาษานั้นไม่สำคัญ:

  • นักพัฒนาคือคนที่แก้ปัญหาโดยทั่วไป นักพัฒนาไม่ใช่คนที่เขียนรหัสในภาษาที่เฉพาะเจาะจง

  • ธุรกิจไม่สนใจภาษาที่คุณรู้จัก หากพวกเขาต้องการจ้างนักพัฒนาสำหรับโครงการที่เขียนในภาษาที่เฉพาะเจาะจงและพวกเขามีผู้สมัครที่มีประสบการณ์สูง แต่ไม่เคยเขียนบรรทัดของรหัสในภาษานี้เขาจะยังคงได้รับการว่าจ้าง

จากประสบการณ์ของฉันทั้งในฐานะนักพัฒนาและในฐานะบุคคลที่ต้องจ้างนักพัฒนาอื่น ๆ การสังเกตนั้นคล้ายกันมาก:

  • ประสบการณ์ N ปีใน Java หรือประสบการณ์ N ปีใน C # ไม่สำคัญ สิ่งที่สำคัญคือผู้สมัครรู้วิธีการแก้ปัญหารู้ถึงความแตกต่างระหว่างรหัสสปาเก็ตตี้และโค้ดที่สะอาดด้วยสถาปัตยกรรมที่มีความคิดดีเป็นต้น

  • ฉันไม่สนใจภาษาที่คุณใช้มาก่อน สำหรับโครงการ C # ฉันจะจ้างนักพัฒนามืออาชีพที่ใช้ชีวิตในการเขียนโค้ด Java, Python และ Ruby on Railsมากกว่าผู้เริ่มต้นที่รู้เพียง C # และรู้ว่ามันแย่

  • ความรู้และประสบการณ์ที่คุณได้รับจากการใช้ภาษาหนึ่งนั้นส่วนใหญ่สามารถใช้ซ้ำได้ในภาษาอื่น

    ผู้พัฒนาที่มีประสบการณ์ซึ่งใช้ Ruby on Rails เพื่อการพัฒนาเว็บและใช้เวลาที่เหลือในอาชีพของเขาในการเขียนแอปพลิเคชัน Java เดสก์ท็อปที่ใช้ Oracle เหมาะอย่างยิ่งสำหรับโครงการ ASP.NET MVC โดยใช้ Microsoft SQL Server เพราะบุคคลนี้รู้ทุกสิ่งที่เธอต้องการสำหรับงานนี้อยู่แล้วนอกเหนือจากสิ่งเฉพาะบางประการและความแตกต่างทางไวยากรณ์

    ในทางตรงกันข้ามคนที่ทำเว็บไซต์ ASP.NET MVC เพียงไม่กี่เว็บไซต์ก็ไม่เหมาะเลยเพราะเธออาจไม่เข้าใจสถาปัตยกรรม MVC อย่างสมบูรณ์อาจรู้ว่าการทำโปรไฟล์ SQL และอาจขาดความสำคัญอื่น ๆ ความรู้

    อย่าบอกฉันว่าฉันไม่สามารถแก้ไขปัญหาเล็ก ๆ กับเว็บไซต์ PHP ที่ใช้ CodeIgniter เพียงเพราะฉันไม่เคยใช้ CodeIgniter มาก่อน

ในทางปฏิบัติ:

ในทางปฏิบัติเมื่อฉันค้นหางานอิสระและเมื่อฉันเห็นการเสนองานโดยทั่วไปงานเหล่านั้นเป็นภาษาเฉพาะ

บางคนจะค้นหานักพัฒนา PHP ที่มีประสบการณ์สองปีใน Magento คนอื่นจะค้นหาบุคคลที่มีประสบการณ์ VB.NET เป็นเวลาอย่างน้อยสามปีและถ้าคุณส่งประวัติย่อให้พวกเขาว่าคุณได้พัฒนา C # เป็นเวลาหกปี แต่ไม่มีการพูดถึง VB.NET พวกเขาจะไม่รำคาญ ที่จะตอบ หากพวกเขาขอให้บุคคลที่มีประสบการณ์กับ Firebird พวกเขาจะไม่ฟังเกี่ยวกับประสบการณ์สิบปีของคุณกับ Oracle

ทำไมถึงมีความแตกต่างระหว่างทฤษฎีและสิ่งที่ Patrick McKenzie และฉันอธิบายว่าเป็นสามัญสำนึกและโลกแห่งการเสนองานจริง?


12
Don't tell me that I'm unable to fix a small problem with a PHP website which uses CodeIgniter just because I never used CodeIgniter before.ในขณะที่คุณสามารถแก้ไขปัญหาได้อย่างสมบูรณ์แบบหากสาเหตุหลักคือ CodeIgniter (หนึ่งในไม่กี่เฟรมเวิร์กของหนึ่งในเฟรมเวิร์กหรือหนึ่งในข้อบกพร่องที่เปิดอยู่จำนวนมาก) จากนั้นจะใช้เวลามากขึ้นในการแก้ไขปัญหา
yannis

12
<rant>...</rant>คุณลืมบางแท็ก: ที่นี่มีคำถามจริงหรือไม่
ไซคลอป

6
"ฉันไม่สนใจภาษาที่คุณใช้มาก่อนสำหรับโครงการ C # ฉันควรจะจ้างนักพัฒนามืออาชีพที่ใช้ชีวิตของเขาในการเขียนโค้ด Java, Python และ Ruby on Rails แทนที่จะเป็นมือใหม่ที่รู้จัก C # เพียงอย่างเดียวและรู้ มันแย่มาก " - เอาหมวกฟางไป! นี่คือการแบ่งขั้วที่ผิดพลาด พูดจาโผงผางของคุณถูกต้องสำหรับผู้เริ่มต้น แต่ไม่ใช่สำหรับตำแหน่งที่ต้องมีความรู้ลึกของแพลตฟอร์มเฉพาะ
Jim In Texas

1
ใครบางคนที่มีประสบการณ์ในภาษาจะทำงานได้เร็วกว่าและสะอาดกว่าการคิดอย่างอื่นเป็นเพียงการหลงผิด
โทมัส Bonini

เมื่อฉันเป็นคนที่จ้างงานฉันจะเป็นคนที่มีรายชื่อที่ยาวมากของ "ต้องใช้ Technobabble ข้อกำหนด X, Y และ Z" และถ้าฉันสามารถหาคนนั้นฉันสามารถจ้างพวกเขาได้ เมื่อฉันเป็นคนที่กำลังมองหางานฉันอาจไม่พอใจพวกเขาเพราะไม่ได้มองฉันเพราะฉันมีสมองเยอะแยะและไม่ใช่ประสบการณ์ที่พวกเขาต้องการ แต่ถ้าฉันมีสิ่งที่พวกเขาต้องการฉันก็คาดหวัง เพื่อรับการจ้างงานในจุดที่ ดังนั้นในที่สุดมันคือการโทรของพวกเขาและนั่นก็เป็นอย่างที่ควรจะเป็น
Warren P

คำตอบ:


16

เนื่องจากหลาย บริษัท มีเจ้าหน้าที่ฝ่ายทรัพยากรบุคคลทำการสรรหาคนที่ไม่มีความคิดเกี่ยวกับเรื่องนี้ เมื่อ HR กล่าวว่า "คุณสมบัติที่ผู้สมัครต้องการคืออะไร" มันง่ายกว่ามากที่จะพูดว่า "หกปี C #" กว่าจะพูดว่า "เขียนรหัสที่ดี" โดรนตัวนั้นไม่มีความคิดว่า "เขียนโค้ดที่ดี" ดูเหมือนหรือวิธีกรองเรซูเม่โดยระบุว่าพวกเขาสามารถเขียนโค้ดที่ดีได้หรือไม่ อย่างไรก็ตามพวกเขาสามารถอ่านเรซูเม่ได้อย่างรวดเร็วและดู "ห้าและสามในสี่ของปีที่แล้ว" และทิ้งมันไป


3
เผง ผู้ที่ไม่ใช่นักพัฒนาและการจัดการอาจมองคุณด้วยความสงสัยถ้าคุณบอกว่าคุณกำลังมองหาคนที่มีทักษะคล้าย ๆ กัน แต่จะต้องเรียนรู้บิตที่เป็นธรรม (เช่นไวยากรณ์ที่เฉพาะเจาะจงไม่ใช่แนวคิด) ในตอนแรกของงาน
Michael Durrant

ฉันคิดว่าพวกเขาถูกเรียกว่า HR monkeys ... ฉันเห็นด้วยอย่างยิ่ง แต่ก็เป็นความคิดที่ดีที่จะมีกูรูด้านภาษา <ที่นี่>
Lukasz Madon

3
การใส่ "เขียนรหัสที่ดี" ในโฆษณานั้นเป็นเรื่องไร้สาระสมบูรณ์ ทุกคนคิดว่าพวกเขาเขียนรหัสที่ดี และคนที่ถูกตัดสินว่ามีทักษะการเขียนโค้ดที่ดีที่สุดมักเป็นคนที่เขียนโค้ดที่แย่ที่สุด
nikie

1
@ นิกกี้: มันเป็นเรื่องง่าย แน่นอนว่าคุณไม่ได้ระบุไว้อย่างชัดเจนในโฆษณา
DeadMG

3
ฉันไม่คิดว่านี่เป็นเหตุผลหลักเนื่องจาก startups ขนาดเล็กที่ไม่มีแผนกทรัพยากรบุคคลทำสิ่งเดียวกัน
J. Maes

22

ฉันคิดว่ามันถึงเวลาที่จะเข้านอนตำนานนี้ว่านักพัฒนาที่มีประสบการณ์ X ปีในภาษา Y สามารถถ่ายโอนไปยังภาษา Y2 ได้อย่างราบรื่น นี่ไม่ใช่วิธีการทำงาน

หากคุณปฏิบัติต่อภาษาเป็นเพียงรูปแบบและรูปแบบทั่วไปแล้วให้รู้ว่า Java จะให้คุณเริ่มต้นอย่างมากเมื่อย้ายไปที่ C # อย่างไรก็ตามมันจะไม่เตรียมคุณให้พร้อมสำหรับ WCF, WPF, คลิกหนึ่งครั้ง, เธรดไลบรารีต่าง ๆ , Linq, และแน่นอนว่าจะไม่เตรียมคุณสำหรับสิ่งต่าง ๆ ที่โบรชัวร์บอกว่าทำงาน, แต่ในทางปฏิบัติไม่ได้.

คุณเห็นว่าคุณไม่ได้พูดเกี่ยวกับภาษาคุณมักพูดถึงแพลตฟอร์ม และที่แพลตฟอร์ม. NET เป็นตัวอย่างที่ดีรองรับหลายภาษาผู้คนมักจะมาบรรจบกันในตัวเลือกที่ต้องการ

ดังนั้นเมื่อฉันขอนักพัฒนา C # ฉันจริง ๆ แล้วโฆษณาให้นักพัฒนาแพลตฟอร์ม. NET ที่มีประสบการณ์อยู่ในโครงการ C # ผู้ที่มักจะเป็นโครงการเซิร์ฟเวอร์. net โครงการ winforms / wpf


ฉันเห็นด้วย. แน่นอนมันเป็นไปได้ แต่ยาก ไวยากรณ์ตระกูล C สามารถถ่ายโอนได้ง่าย แต่ความเข้าใจที่แท้จริงของแพลตฟอร์มและชุดเครื่องมือทั้งหมดใช้เวลานานในการติดตาม คำแนะนำของฉันสำหรับนักพัฒนา / โปรแกรมเมอร์ / นักวิเคราะห์ / ผู้เยาว์ที่อายุน้อยกว่าคือการก้าวไปสู่เทคโนโลยีใหม่ในเวลาของคุณในขณะที่ทุกคนยังคงเป็นมือใหม่ คนที่เคยพัฒนา HTML5, iOS และ Android เมื่อสองหรือสามปีที่ผ่านมาอยู่ในสภาพดี แน่นอนเป็นไปได้ที่จะเดาผิด (ถามฉันเกี่ยวกับ Flex) แต่มันไม่ใช่จุดจบของโลก
Jim In Texas

ส่วนใหญ่เป็นเพราะ Java -> C # คล้ายกับ C -> C ++ - พวกเขาอาจสร้างขึ้นในฐานรากเดียวกันทางเทคนิค แต่ C # มีคุณสมบัติเพิ่มเติมที่คุณต้องการใช้จริง ๆ การแปลงผกผันจะง่ายขึ้นอย่างมากมายจาก C # ถึง Java
DeadMG

11

ฉันนึกถึงเหตุผลสองสามข้อ:

  1. ลูกจ้าง vs ผู้ให้คำปรึกษา - ถ้าฉันจ้างที่ปรึกษาฉันต้องการให้เขา / เธอเร่งความเร็วในเทคโนโลยีที่เราใช้อยู่ ที่ปรึกษาคาดว่าจะมีประสิทธิภาพได้อย่างรวดเร็วเนื่องจากพวกเขาไม่ได้อยู่ที่นี่เพื่อตัดการเรียนรู้
  2. อุปสงค์ / อุปทาน - ดังที่ Doc กล่าวว่าถ้าฉันจะเลือกผู้สมัครที่มีประสบการณ์มากที่สุดที่ฉันสามารถทำได้ และเทคโนโลยีสแต็คมีความสำคัญสำหรับเทคโนโลยีที่จัดตั้งขึ้น หากฉันกำลังมองหาคนที่จะพัฒนาใน Go (เลือกภาษาที่คนรู้น้อย) เกือบจะไม่มีใครมีประสบการณ์กับมันและฉันกลับไปที่ skillset ในฐานะนักพัฒนาโดยทั่วไป

4

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

ในทางตรงกันข้ามมีงานที่คุณกำลังมองหาความเชี่ยวชาญด้านเทคนิคเฉพาะ ย้อนกลับไปในยุค 90 ฉันทำงานให้กับร้านขายซอฟต์แวร์เล็ก ๆ และเราจำเป็นต้องพัฒนาความเชี่ยวชาญอย่างรวดเร็วใน C ++ แม้จะมีการขอความเชี่ยวชาญใน C ++ ในโฆษณาของเราอย่างชัดเจนผู้สมัครส่วนใหญ่รู้จัก C ++ น้อยกว่าที่ฉันทำ "แต่ฉันสามารถเรียนรู้ C ++ ได้อย่างรวดเร็ว!" พวกเขาทั้งหมดพูด ใช่ฉันแน่ใจว่าคุณทำได้ แต่ฉันก็ทำได้และคนอื่น ๆ ก็อยู่ที่นั่นได้แล้ว เรากำลังมองหาใครสักคนที่รู้จักภาษา C ++ อยู่แล้วดังนั้นเราจึงมีแหล่งความเชี่ยวชาญในตัวเนื่องจากพวกเราที่เหลือมาพร้อมกับความเร็ว การมีผู้เริ่มต้นอีกคนในทีมจะไม่ได้รับความช่วยเหลือ


1
+1: ทีมสามารถมีนักพัฒนาบางคนหรือส่วนใหญ่เป็นคนใหม่สำหรับภาษา แต่มันช่วยได้มากในการมีผู้เชี่ยวชาญด้านภาษาที่สามารถสอนคนอื่นได้
TREE

3

ธุรกิจไม่สนใจภาษาที่คุณรู้จัก หากพวกเขาต้องการจ้างนักพัฒนาสำหรับโครงการที่เขียนในภาษาที่เฉพาะเจาะจงและพวกเขามีผู้สมัครที่มีประสบการณ์สูง แต่ไม่เคยเขียนบรรทัดของรหัสในภาษานี้เขาจะยังคงได้รับการว่าจ้าง

สมมติว่าคุณกำลังมองหาผู้สมัครงาน. NET / C # หากคุณมีผู้สมัครสองคนสำหรับงานทั้งคู่ดูเหมือนจะมีประสบการณ์สูงพอ ๆ กัน แต่คนแรกที่ได้รับประสบการณ์ของเขาในระบบนิเวศ Java คนที่สองในระบบนิเวศ. NET - อันไหนที่คุณชอบ?

คนอื่นจะค้นหาบุคคลที่มีประสบการณ์ VB.NET เป็นเวลาอย่างน้อยสามปีและถ้าคุณส่งประวัติย่อให้พวกเขาว่าคุณได้พัฒนา C # เป็นเวลาหกปี แต่ไม่มีการพูดถึง VB.NET พวกเขาจะไม่รำคาญ ที่จะตอบ

ใครสามารถบอกได้ว่าทำไมคุณไม่ได้รับคำตอบ? บางทีอาจมี VB.NET ที่มีประสบการณ์มากพอที่จะสมัครงานหรือไม่ บางทีฝ่ายทรัพยากรมนุษย์ใช้ประสบการณ์การเขียนโปรแกรมภาษาเป็นตัวกรองเพื่อลดจำนวนการสมัครงานจาก 100 ลงเหลือ 10 บางทีคุณอาจเพิ่งคุยกับ บริษัท ผิด (ฉันเดาว่าใน บริษัท ของฉันเราจะส่งคำตอบในกรณีตัวอย่าง คุณอธิบายไว้ข้างต้น)


2

ในโครงการส่วนใหญ่จำเป็นต้องใช้ผลงานอย่างรวดเร็วและผู้คนจำเป็นต้องสร้างผลกำไรโดยเร็วที่สุด

คนที่สามารถตอบสนองความต้องการเหล่านี้และไม่ผูกพันกับภาษาใดภาษาหนึ่งนั้นหายากและด้วยเหตุนี้จึงมีราคาแพงเกินไป คนเหล่านี้ได้รับการว่าจ้างจาก บริษัท ใหญ่ ๆ ที่ต้องการทักษะที่เหลือเชื่อ

คนที่สามารถแก้ปัญหาได้ แต่ไม่สามารถเรียนรู้ภาษาที่ต้องการได้อย่างรวดเร็วนั้นหายากกว่า พวกเขายังต้องเสียเงินเป็นจำนวนมากและพวกเขามีเวลาเพิ่มเติมในการเรียนรู้ภาษาเฉพาะ

ค่าใช้จ่ายพิเศษนี้ลดลงด้วยการขอโปรแกรมเมอร์เฉพาะภาษา เขาได้เรียนรู้ทักษะที่จำเป็นและสามารถให้ผลลัพธ์ได้อย่างรวดเร็ว

กล่าวโดยย่อโครงการที่ต้องทำใน JAVA ไม่จำเป็นต้องมีนักพัฒนาซอฟต์แวร์ที่มีราคาแพงและไม่ต้องการนักพัฒนา. net เฉลี่ยที่ต้องใช้เวลาในการเรียนรู้ภาษา / กรอบงาน มันต้องการผลลัพธ์ในทันทีสำหรับเงินจำนวนน้อยที่สุดซึ่งส่งโดยคนที่มีประสบการณ์กับ JAVA แล้วและมีทักษะในการแก้ปัญหาที่ค่อนข้างดี

มันเป็นเรื่องของเงินและได้รับผลตอบแทนจากการลงทุนมากที่สุดเช่นเคย


2

ฉันคิดว่าคุณเข้าใจผิดเพียงแปลวลีมาตรฐาน "<language here> developer" บริษัท ไม่ใส่วลีนั้นลงในโฆษณาเพื่อขัดขวางนักพัฒนาที่มีประสบการณ์ในภาษาอื่น ทำไมพวกเขาต้องการที่จะยับยั้งนักพัฒนาที่มีความสามารถ? จากมุมมองของนายจ้างผู้สมัครมากขึ้นดีกว่า พวกเขาไม่สามารถเชิญคนที่พวกเขาไม่สนใจ

จุดที่แท้จริงของวลีคือการบอกคุณผู้อ่านสิ่งที่เสนองานจะนำมาซึ่ง และนั่นทำให้รู้สึกมาก IMHO คุณจะสมัครงานที่คุณพัฒนาเป็นภาษาแอสเซมบลี Z80 หรือไม่? หรือภาษาโคบอล? หรือ Fortran

และแน่นอนถ้า บริษัท มีผู้สมัครสองคนที่ดูฉลาดไม่แพ้กันผู้ที่มีประสบการณ์ใน <ภาษาที่นี่> จะชนะ ไม่มีอะไรเพิ่มเติมไม่น้อยไปกว่านี้ (มีกรณีพิเศษที่ผู้คนได้รับการว่าจ้างสำหรับโครงการเดียวเท่านั้นหรือสำหรับโครงการที่สายไปแล้วหรือสำหรับโครงการแรกที่ บริษัท พัฒนาใน <language here> ซึ่งคุณต้องการประสบการณ์ในภาษานั้นมาตั้งแต่แรก แต่ฉันไม่คิดว่าพวกเขาเป็นกฎ

อนึ่ง บริษัท ของฉันเคยเขียนโฆษณาอย่างที่คุณแนะนำ ( ดูเหมือนว่าเหมาะสมแล้ว) ผลการวิจัยพบว่าร้ายแรง ผู้ที่สนใจงานของพวกเขาเพียงแค่ข้ามโฆษณา เฉพาะผู้หมดหวังเท่านั้นที่นำไปใช้กับตำแหน่งที่เปิดอยู่ เราไม่เคยลองอีกครั้ง


1

ถอยกลับและคิดเกี่ยวกับหลักฐาน คุณต้องการให้คนทำงาน. net บางอย่าง คุณใส่ไว้ในรายละเอียดงานของคุณและคุณมองหาผู้สมัครที่มีทักษะนั้น! นี่เป็นเพียงสามัญสำนึก

ฉันเห็นด้วยกับปรัชญารายละเอียดเพิ่มเติมของคุณเกี่ยวกับสาเหตุที่อาจไม่ใช่ความคิดที่ดี แต่คนส่วนใหญ่จะโฆษณาต้องการและมองหาผู้สมัครที่มีทักษะที่ต้องการในตอนนี้ มันง่ายอย่างนั้นฉันคิดว่านี่จะตอบคำถามของคุณว่าทำไม

หากพวกเขาไม่สามารถหาผู้สมัครคนใดคนหนึ่งหรือผ่านคนเลวหลายคนพวกเขาอาจเรียนรู้เล็กน้อยและตอบสนองต่อรายการที่คุณให้รายละเอียดมากขึ้น ในความเป็นจริงในพื้นที่ที่ฉันอยู่ (Ruby on Rails) มีโฆษณามากมายพูดว่า "ไม่จำเป็นต้องมีประสบการณ์เราจะฝึกคุณ" และในความเป็นจริงองค์กร Ruby on Rails ชั้นนำบางแห่ง เปิดกว้างสำหรับผู้สมัครที่ "ไม่มีนิสัยไม่ดี" ที่พวกเขาสามารถฝึกฝนได้ ดังนั้นวิธีการที่เหมาะสมคือบางองค์กร

โปรดทราบว่าโฆษณาส่วนใหญ่มาจากนายหน้าภายนอกหรือนายหน้าภายในที่ไม่ใช่ด้านเทคนิคซึ่งเพิ่งไม่มีความรู้ในการ "ไปด้านข้าง" ตามที่คุณอธิบาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.