ความเชี่ยวชาญในการพัฒนาที่รู้จัก / ร่วมกันคืออะไร [ปิด]


10

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

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

คำตอบ:


18

วิธีที่ฉันเห็นมันมีความเชี่ยวชาญสองประเภท:

  1. ความเชี่ยวชาญในด้านการเขียนโปรแกรมเฉพาะ
  2. หรือความเชี่ยวชาญในโดเมนปัญหา

ตัวอย่างของหัวข้อการเขียนโปรแกรมจะเป็น:

  • ที่ฝัง
  • GUI
  • การแสดง
  • การทดสอบ

จากนั้นจะมีความเชี่ยวชาญเฉพาะในโดเมนปัญหาเฉพาะเช่น

  • การเงิน
  • วิทยาศาสตร์
  • ทางการแพทย์
  • อุตสาหกรรมที่สำคัญเกือบทั้งหมดถือได้ว่าเป็นปัญหา

ฉันคิดว่ามันเป็นความแตกต่างที่สำคัญ


4

การเขียนโปรแกรมระบบสมองกลฝังตัว (ซึ่งฉันทำงานมานานกว่า 30 ปี) ต้องการความคิดที่แตกต่างจากการพัฒนาซอฟต์แวร์ประเภทอื่น ๆ ช่วงของพลังการประมวลผลนั้นแตกต่างกันอย่างมากตั้งแต่ไมโครคอนโทรลเลอร์ 8 บิตซึ่งมีราคา 30 เซ็นต์ในปริมาณจนถึงไมโครโปรเซสเซอร์ 32 บิตที่ใช้ Linux หรือระบบปฏิบัติการทั่วไปอื่น ๆ ฉันกำลังทำโครงการที่ปลายทั้งสองของสเกลนี้ หน่วยความจำรหัสในไมโครที่เล็กที่สุดอาจมีเพียงไม่กี่ KB และมี RAM เพียงไม่กี่ร้อยไบต์ ปริมาณขนาดกลาง 16 บิตที่คิดต้นทุน $ 3 อาจมีที่เก็บข้อมูลโปรแกรมขนาด 256KB และ RAM ขนาด 16KB

นอกเหนือจากทรัพยากรหน่วยความจำที่ จำกัด หนึ่งในแง่มุมของการเขียนโปรแกรมแบบฝังที่แตกต่างจากส่วนอื่น ๆ ของการพัฒนาซอฟต์แวร์คือโปรแกรมเมอร์มักจะติดต่อกับฮาร์ดแวร์โดยตรงที่ระดับรีจิสเตอร์ - บนไมโครตัวเองหรือในอุปกรณ์ต่อพ่วง ไมโครผ่านบัสอนุกรมเช่น UART, SPI หรือ I2C ด้วยเหตุนี้ไมโครสโคปแบบโลว์เอนด์จึงถูกโปรแกรมในภาษา C หรือภาษาแอสเซมบลี

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

เนื่องจากด้านฮาร์ดแวร์ของการพัฒนาที่ฝังตัวนักพัฒนามักจะมีพื้นหลังอิเล็กทรอนิกส์บางส่วน (ฉันมีองศาทั้งใน EE และ CS)


1

มีบทบาท / ทีม "Developer DBA" อยู่ แต่ไม่ธรรมดาหรือไม่พอ

เมื่อพูดถึงร้านค้าขนาดใหญ่ทีมผลิต DBA อาจมีอินสแตนซ์ของ SQL Server เพียงไม่กี่ตัวเพื่อจัดการและตรวจสอบให้การกู้คืนความเสียหายติดต่อประสานงานกับทีม SAN เครือข่ายและระบบปฏิบัติการเป็นต้น

มีใครในทีมพัฒนาบ้าง จูน? ดัชนี? ออกแบบ? มาตรฐานการเข้ารหัส?

การพูดว่าในฐานะนักพัฒนา DBA ฉันได้พบกับนักพัฒนาไคลเอ็นต์จำนวนมากที่รู้เรื่องฐานข้อมูลมากกว่าที่ฉันทำ ... :-)

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


0

นอกจากนี้ยังมีความแตกต่างของการรู้โซลูชันซอฟต์แวร์ชนิดใดประเภทหนึ่งดังต่อไปนี้:

  • การวางแผนทรัพยากรองค์กร
  • การจัดการลูกค้าสัมพันธ์
  • ระบบการจัดการเนื้อหา

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

บางอย่างเช่นการพัฒนาเว็บอาจไม่เจาะจงพอเนื่องจากอาจมีความเชี่ยวชาญเป็นจำนวนมากในบริเวณนี้หรือจะนับรวมในสิ่งที่คุณต้องการ


อืมฉันหวังว่าจะได้อาหารพิเศษที่แตกต่างจากทักษะการนำไปใช้ ตัวอย่างเช่นผู้เชี่ยวชาญด้าน AI ไม่จำเป็นต้องใช้ C ++ / Prolog / ภาษาใด ๆ การพัฒนาเว็บที่ผมเห็นมันวันนี้ความสัมพันธ์ร่วมกันติดตั้งใช้งานอย่างมากกับเทคโนโลยี (asp.net MVC = รอ! - ความรู้การเขียนโปรแกรมแปลเป็นส่วนใหญ่โดยทั่วไปและความรู้แพลตฟอร์ม)
สตีเว่น Evers
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.