อะไรคือความแตกต่างในประสบการณ์หลายปีของนักพัฒนาที่ใช้ภาษา? [ปิด]


9

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

คำตอบ:


26

"มันขึ้นอยู่กับ"

ประสบการณ์ <> ความรู้หรือความเข้าใจ

โปรแกรมเมอร์ 1 อาจจะเก่งมากแม้แต่กูรูหรือพวกเขาอาจเป็นคนที่คลาคล่ำไปกับภาษาในช่วง 5 ปีที่ผ่านมา

โปรแกรมเมอร์ 2 อาจเป็นคนที่เข้าใจแนวความคิดอย่างอิสระจากภาษาที่ใช้ หรือคนที่พบภาษา B ยากเกินไปและความหวัง A นั้นง่ายกว่า

Coding Horror's "The Years of Experience Myth"เป็นสิ่งที่ควรค่าแก่การอ่าน


6
ดังที่พวกเขากล่าวว่านักพัฒนาของคุณอาจมีประสบการณ์ห้าปีกับภาษา A - หรือเขาอาจมีประสบการณ์หนึ่งปีซ้ำห้าครั้ง
Carson63000

1
+1 สำหรับความจริง - ฉันได้ทำงานกับพนักงานใหม่ที่มีประสบการณ์มากกว่า 8 ปีซึ่งกลายเป็นค่าเฉลี่ยที่ดีที่สุด ในทางกลับกันเราเพิ่งจ้างผู้ชาย 1 ปีออกจากมหาวิทยาลัยและเกินความคาดหมายทั้งหมด
Damovisa

4

มันขึ้นอยู่กับ.

ฉันมีเพื่อนที่มีแนวโน้มที่จะติดอยู่กับภาษาเดียวดังนั้นถ้าคุณคิดว่าเขา "โปรแกรมเมอร์ A" เขามีประสบการณ์ 1 ปีกับภาษานั้นห้าครั้ง

ภาษาต่าง ๆ ให้คุณทำสิ่งต่าง ๆ เรียงความที่ฉันชอบโดยเฉพาะอย่างยิ่งเรียกว่า "การตีค่าเฉลี่ย " โดย Paul Graham ในนั้นเขาพยายามโน้มน้าวให้ผู้คนเรียนรู้เสียงกระเพื่อม แต่เขาก็ทำประเด็นที่มีประโยชน์มาก:

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

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

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

เมื่อเราสลับไปยังมุมมองของโปรแกรมเมอร์โดยใช้ภาษาใดก็ได้ที่สูงขึ้นอย่างต่อเนื่องของพลังงานอย่างไรก็ตามเราพบว่าเขากลับมองดู Blub คุณจะทำทุกอย่างใน Blub ได้อย่างไร? มันไม่มีแม้กระทั่ง y

โดยทั่วไปคำแนะนำของฉันคือการเรียนรู้มากกว่าหนึ่งภาษาและเรียนรู้จุดแข็งและจุดอ่อนของภาษา


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

2

แน่นอนนักพัฒนาที่มีประสบการณ์มากกว่าหนึ่งปีในหนึ่งภาษาจะมีความเข้าใจที่ดีขึ้นเกี่ยวกับห้องสมุดหลักและภาษาที่ใช้ในภาษานั้น หากภาษาโอบกอดกระบวนทัศน์เดียวกัน (จำเป็นกับการทำงาน) แล้วพวกเขาก็ไม่ควรมีปัญหาในการเลือกภาษาอื่นนอกเหนือจากการเรียนรู้

ความยากลำบากที่ยิ่งใหญ่ที่สุดของฉันในการหยิบภาษาใหม่มาจากการพยายามเปลี่ยนจาก C # เป็น Erlang เพราะมันไม่เพียงแสดงไวยากรณ์ใหม่ แต่เป็นวิธีคิดใหม่เกี่ยวกับการเขียนโปรแกรมเช่นกัน


5
สมมติว่านักพัฒนามีความสามารถ
GBN

2
@gbn: ฉันอย่างสามารถมั่นใจได้ว่าในกรณีของฉันคุณจะไม่สามารถทำให้สมมติฐาน :)
วัตสัน

2

นี่คือสิ่งที่ฉันคาดหวัง / ความหวัง:

  1. ความคล่องแคล่ว - พวกเขาควรจะสามารถเขียนโค้ดได้มากขึ้นจากส่วนหัวและใช้เวลาน้อยลงในการค้นหาไวยากรณ์
  2. ทราบความแตกต่างระหว่างเวอร์ชันก่อนหน้าและเวอร์ชันปัจจุบันและวิธีโยกย้ายรหัสจากที่หนึ่งไปยังอีก
  3. มีความเข้าใจในการรวบรวมการกระจายการทดสอบและการสร้างการอัพเกรดและแพทช์
  4. สร้าง / รวมส่วนเสริมเข้ากับ IDE และเพิ่มประสิทธิภาพจากพวกเขา

2

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


คุณสามารถเรียนรู้ทั้งภาษาได้อย่างรวดเร็ว แต่หากมีแนวคิดใด ๆ ที่คุณไม่รู้คุณอาจต้องใช้เวลา ไม่ใช่ทุกภาษาที่มีแนวคิดเดียวกัน
David Thornley

2

ความเชี่ยวชาญและการปฏิบัติโดยเจตนา

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

หากคุณไม่พยายามปรับปรุงคุณสามารถสมัครใหม่ได้ตลอดไป!

หลังจากผ่านการฝึกฝนโดยเจตนาหลายหมื่นชั่วโมงคุณจะประสบความสำเร็จ (การค้นพบนี้จากการศึกษา / การฝึกอบรมอยู่เหนือทุกสิ่ง)

หากโปรแกรมเมอร์ของคุณยังไม่ได้ฝึกอย่างจงใจพวกเขาจะไม่ดีขึ้นเลย

หากโปรแกรมเมอร์ B ของคุณไม่ได้ฝึกอย่างจงใจพวกเขาจะไม่ดีขึ้นเลย

การค้นพบอื่น ๆ จากการวิจัยเดียวกัน: ถ้าฉันมี 15,000 ชั่วโมงและคุณมี 10,000 และฉันฝึกฝนอยู่เรื่อย ๆ และคุณคุณจะไม่ดีกว่าฉัน

การรู้สองภาษาอาจจะทำให้ B เป็นโปรแกรมเมอร์ที่ดีขึ้น (ขึ้นอยู่กับกฎการฝึกฝน)


1

และคุณใช้มันสำหรับภาษา A ฉันจะสมมุติไหม? (เห็นได้ชัดว่าจะมีความแตกต่างในภาษา B)

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

แน่นอนสิ่งที่สำคัญที่สุดที่นี่คือบุคคล นักพัฒนาที่ดีสามารถเรียนรู้แพลตฟอร์มใหม่ได้อย่างทั่วถึงภายในสามปีและนี่ก็ไม่ควรเป็นปัญหา


1

ฉันยอมรับว่าภาษาคือภาษาและแนวคิดเป็นแนวคิด

ปัญหาของฉันคือมีโปรแกรมเมอร์จำนวนมากวันนี้ที่ไม่มี IDE ที่ซับซ้อนพวกเขาไม่สามารถเขียนโปรแกรมได้เลย พวกเขาไม่ใช่โปรแกรมเมอร์ แต่เป็นเหมือนนักออกแบบมากกว่า

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

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

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

แค่ความเห็นอื่น

Tal


1

"ประสบการณ์หลายปีในภาษา X / แพลตฟอร์ม" ส่วนใหญ่เป็นพยาธิสภาพการรับสมัคร ...

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

ยิ่งไปกว่านั้นการวัด "ประสบการณ์หลายปี" ในตัวมันเองอาจไม่ถูกต้องมากนัก นี่คือตัวอย่างจากกิ๊กปัจจุบันของฉัน: งานหลักของฉันคือการพัฒนาและดูแลเว็บแอป Java อย่างไรก็ตามสิ่งนี้จะเรียกว่า back end ซึ่งเป็น MFC / C ++ / SQL Server ดังนั้นฉันกำลังจัดการกับรหัส C ++ เป็นประจำทุกวันเช่นกัน แต่ - ประสบการณ์ C ++ นี้ค่อนข้างผิวเผินและมุ่งเน้นการบำรุงรักษาและฉันไม่ได้เขียนส่วนประกอบหรือโปรแกรมใหญ่ทั้งหมดตั้งแต่เริ่มต้นใน MFC / C ++ อีกต่อไป (ฉันเคยทำในบทบาทก่อนหน้านี้)

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


-1

ใช่โปรแกรมเมอร์ 1 ไม่มีความรู้ด้านไวยากรณ์ของภาษา B

แนวคิดการเขียนโปรแกรมเป็นแนวคิดการเขียนโปรแกรม ภาษาเป็นเพียงไวยากรณ์


5
โอ้ผิดแล้ว ...
Javier

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