ทักษะอะไรที่โปรแกรมเมอร์ทุกคนที่สำเร็จการศึกษาจากวิทยาลัยควรมี [ปิด]


9

เรามีวิทยากรรับเชิญที่โรงเรียนของเราเขาไปแทนเจนต์เกี่ยวกับผู้ที่จบการศึกษาและไม่ได้เกินระดับทักษะที่เขาคาดหวังเช่น ความรู้เกี่ยวกับภาษาศาสตร์ที่รวบรวมครั้งใหญ่เช่น Java, C ++ หรือ C #, ภาษาสคริปต์หนึ่งภาษาเช่น Python หรือ Ruby ซึ่งเป็นหนึ่งในเว็บเฟรมเวิร์ก อะไรคือทักษะอื่น ๆ ที่พวกคุณคิดว่าควรมีความสำคัญอย่างยิ่งต่อการสำเร็จการศึกษาของนักเรียน


ฉันสมมติว่าคุณหมายถึงจบการศึกษาจากมหาวิทยาลัยหรือไม่?
Michael Shaw

1
@Polemmy: ในอเมริกาคำว่าวิทยาลัยนั้นถูกต้อง
Macneil

1
ความตั้งใจที่จะเตะตัวเองในตูดและพูดข้อความที่ไม่เข้าใจคุณฟังก์ฟังก์! socializedpr.com/…
งาน

คำตอบ:


27

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


ไม่สามารถพูดได้ดีกว่านี้
คริส

4

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

  1. เข้าใจประวัติศาสตร์ วิทยาการคอมพิวเตอร์เป็นสาขาที่ได้รับการค้นคว้ามาอย่างดีโดยมีปัญหาที่แก้ไขได้มากมาย การรู้ข้อเท็จจริงนี้เปิดประตูสู่การเรียนรู้จากสิ่งที่มาก่อนคุณ แม้รู้ว่ามีประวัติศาสตร์อันยาวนานในการขุดความรู้จากเป็นมากกว่าบัณฑิตจำนวนมาก ซึ่งรวมถึงสิ่งต่าง ๆ เช่นสัญกรณ์ใหญ่ O ประวัติของอัลกอริทึมหลักการของศาสดา (Knuth, K&R, Hofstdater ฯลฯ ) และการปฏิบัติและรูปแบบที่ยอมรับกันทั่วไป

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

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

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

  5. เป็นเป้าหมาย ปัญหาทั้งหมดสามารถย่อยสลายวัดและเข้าใจได้ง่าย ปัญหาที่ไม่สามารถเข้าใจได้เพียงแค่ต้องการการแยกย่อยการวัดและความเข้าใจเพิ่มเติม ไม่มีประโยชน์ในการโกรธหรือหงุดหงิดและไม่มีประโยชน์ที่จะโต้แย้งเกี่ยวกับทฤษฎีหรือความผิดของสถานที่ พฤติกรรมที่ไม่มีเหตุผลหรือความเชื่อที่เกี่ยวข้องกับกระบวนการแก้ปัญหาคือพิษทำให้หายากมาก

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


1
  1. ความหลงใหลในการเขียนโปรแกรมเป็นอย่างดี
  2. ความนอบน้อม
  3. ความสามารถในการเรียนรู้สิ่งใหม่ได้อย่างรวดเร็ว

0

ในฐานะนายจ้างฉันจะจ้างคนในฐานะโปรแกรมเมอร์เท่านั้น:

  1. มีประสบการณ์การใช้รหัสเดี่ยว
  2. สามารถเลือก patern ออกแบบที่เหมาะสมเพื่อแก้ปัญหาเฉพาะง่าย ๆ
  3. สามารถใช้รหัสที่สะท้อนถึงการออกแบบที่เลือกของพวกเขา

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

อื่น ๆ ที่ดีที่จะมีคือ:

  • ประสบการณ์การทำงานในโครงการของทีม
  • การใช้แหล่งควบคุม
  • ประสบการณ์การทดสอบหน่วย

สิ่งเหล่านี้ทำให้การทำงานร่วมกับทีมพัฒนาที่มีอยู่ง่ายขึ้น แต่เป็นวิชาที่สามารถสอนได้ตามปกติ


0

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

อย่างไรก็ตามหากคุณมองสิ่งที่ผู้สรรหากำลังมองหา (ที่เว็บไซต์นายหน้าทั่วไปเช่น jobserver.com เป็นต้น) เป็นเรื่องที่น่าสนใจที่จะสังเกตว่ามีคนถาม C ++, C #, Java แต่ยังมีคนอื่นที่มองหาและ ยังมีสิ่ง "แปลกใหม่" อย่าง COBOL ที่ยังอยู่รอบ ๆ


0
  1. ทักษะมนุษยสัมพันธ์และการสื่อสาร
  2. วิธีการปฏิบัติ (ไม่ใช่ทฤษฎีทางเคมี)
  3. ความสามารถในการคิดในฐานะลูกค้าที่ไม่ได้มีความโน้มเอียงทางเทคนิค
  4. ความสามารถในการประเมินสิ่งที่สำคัญ / และสิ่งที่สามารถเพิกเฉยได้ในแง่ของต้นทุน / ผลประโยชน์
  5. ความสามารถในการทำงานเป็นทีม
  6. ความสามารถในการคิดเชิงกลยุทธ์: สถาปัตยกรรม, extensibiliy, scalability
  7. การเปิดกว้างที่จะยอมรับว่าคำสอนของมหาวิทยาลัยนั้นเกี่ยวข้องกับโลกแห่งความเป็นจริงเพียงเล็กน้อย (ขึ้นอยู่กับมหาวิทยาลัย

กระบวนการเรียนรู้ในอาชีพนี้ไม่มีที่สิ้นสุด เราต้องเรียนรู้และพัฒนาตนเองอย่างต่อเนื่องไม่เช่นนั้นเขาจะ "สะบัด" ในเกมได้อย่างรวดเร็ว


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

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

1
นี่เป็นทักษะทั่วไปและส่วนมากไม่เหมาะสำหรับการเรียนที่โรงเรียน
David Thornley

-1

คำตอบอื่น ๆ เป็นสิ่งที่ดี แต่ผมจะบอกว่าอันดับ 1 มองข้ามทักษะในมหาวิทยาลัยน่าจะเป็นจริง วิศวกรรมซอฟต์แวร์

ชั้นเรียนพื้นฐานในการสอน OOP และภาษาอย่าง Java นั้นยอดเยี่ยม แต่ในปีที่ 3 และ 4 เหตุใดนักศึกษา (อย่างน้อยก็ที่มหาวิทยาลัยท้องถิ่นของฉัน) เขียนคอมไพเลอร์และระบบปฏิบัติการแทนการเรียนรู้วิธีระบุและสร้างสถาปัตยกรรมที่ดี เพื่อแยกความต้องการและสร้างจากรายการของข้อกำหนดทางเทคนิคและที่สำคัญที่สุดสิ่งที่แตกต่างคือระหว่างรหัสที่ดีที่ใช้งานได้และรหัสไม่ดีที่ใช้งานได้

มันเหมือนมหาวิทยาลัยของเราเกือบจะต้องการที่จะปั่นออกcodersแทนวิศวกรซอฟต์แวร์ ฉันจะไม่จ้างคนที่ไม่ได้แสดงทักษะ / ความสามารถพิเศษทางวิศวกรรมมาก่อน


4
เพราะสิ่งที่ผู้คนได้รับการสอนคือวิทยาศาสตร์คอมพิวเตอร์ไม่ใช่วิศวกรรมซอฟต์แวร์ ปัญหานี้จะหมดไปหากมหาวิทยาลัยและนักเรียนตระหนักว่าวิทยาศาสตร์คอมพิวเตอร์! = วิศวกรรมซอฟต์แวร์วิทยาศาสตร์คอมพิวเตอร์เป็นวิทยาศาสตร์วิทยาศาสตร์คอมพิวเตอร์ไม่ได้เกี่ยวกับการเขียนโปรแกรมและวิศวกรรมซอฟต์แวร์เป็นมากกว่าการเขียนโปรแกรม
โธมัสโอเวนส์

-1 การเรียนรู้ว่าสิ่งต่าง ๆ ทำงานอย่างไรภายใต้ประทุน (คอมไพเลอร์, OS, ภาษาแอสเซมบลี ฯลฯ ) มีความสำคัญแม้ว่าคุณจะไม่เคยทำงานในระดับนี้เพราะคุณจะต้องเผชิญกับสิ่งที่รั่วไหลในบางจุด
dsimcha

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