คุณจะอธิบายได้อย่างไรว่าวิศวกรรมซอฟต์แวร์นั้นมีความเชี่ยวชาญมากกว่าสาขาวิศวกรรมอื่น ๆ [ปิด]


9

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

ในทางที่เป็นคำชมที่จะดูด้วยตาเช่นว่า "ถ้าคุณเป็นคนดีคุณเก่งในทุกเรื่อง" แต่ในทางที่มันเป็นเรื่องที่น่าสนใจอย่างมากในอาชีพเช่นเดียวกับใน "Codemonkey, go Sling code" หากไม่มีประสบการณ์ในกรอบซอฟต์แวร์บางอย่างคุณจะประสบปัญหาอย่างรวดเร็วและเป็นเรื่องสำคัญ

ฉันพยายามอธิบายเรื่องนี้ แต่เขาไม่ได้ซื้อ มุมมองหรือความคิดที่แตกต่างกันเกี่ยวกับเรื่องนี้เพื่อช่วยอธิบายว่าประสบการณ์ของฉันในสิ่งใดสิ่งหนึ่ง


7
หากคุณกำลังจะลงคะแนนอย่างน้อยคุณสามารถแสดงความคิดเห็นว่าทำไม? โดยเฉพาะอย่างยิ่งเนื่องจากการป้อนข้อมูลของคุณสามารถช่วย rephrase / refocus คำถาม
Spencer Kormos

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

6
@JarrodRoberson มีคำถามที่ถูกต้องที่นี่ฉันคิดว่าเป็น มันขอคำอธิบายที่ดีที่ขอคำอธิบายว่าทำไมบางคนมองว่าวิศวกรรมซอฟต์แวร์มีความเชี่ยวชาญมากกว่าหรือน้อยกว่าสาขาวิศวกรรมอื่น ๆ
maple_shaft

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

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

คำตอบ:


23

แต่ในทางที่มันทำให้อาชีพเป็นเรื่องเล็กน้อยเช่นเดียวกับใน "Codemonkey, go Sling code"

ฉันจะโต้แย้งค่อนข้างตรงข้าม วิศวกรซอฟต์แวร์ที่ดีจะมีความสามารถในการกำหนดแนวคิดสถาปนิกและซอฟต์แวร์ที่มีคุณภาพการออกแบบไม่เชื่อเรื่องเทคโนโลยี ปลายตรงข้ามของสเปกตรัมนี้คือ. NET หรือ Java หรือ PHP เท่านั้น "codemonkey" ที่ดีที่จะได้รับทิศทางหรือข้อกำหนดและการใช้เครื่องมือในการใช้ซอฟต์แวร์

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

ฉันจะไม่เชื่อใจวิศวกรของฟอร์ดที่ไม่รู้วิธีทำงานของช่าง

ถึงแม้ว่าวิศวกรรมซอฟต์แวร์เป็นหนึ่งในสาขาเหล่านี้ซึ่งในหลาย ๆ กรณีเราคาดว่าจะเป็นวิศวกรผู้สร้างและช่างในเวลาเดียวกัน


8
ฉันจะเน้นถึงความสำคัญของการทำความเข้าใจแนวคิดและหลักการเกี่ยวกับภาษาและเครื่องมือต่างๆ
Oded

+1 หนึ่งในสัตว์เลี้ยงที่โกรธแค้นของฉันคือคนที่พูดว่า "ฉันเป็นนักพัฒนา C # ... " จากนั้นก็ดื่มเครื่องดื่มคูลและรับอะไรจาก MS เพื่อเป็นข่าวประเสริฐ 10 ปีของการเขียนโปรแกรมฉันได้เรียนรู้มากกว่า 11 ภาษาการเขียนโปรแกรมและแต่ละคนมีการปรับปรุงอย่างมากในวิธีการที่ฉันเขียนโปรแกรมในภาษาอื่น ๆ เรียนรู้วิศวกรรมซอฟต์แวร์! ไม่ใช่แพลตฟอร์มที่จะหายไปใน 2 ปี
Timothy Baldridge

+1 สำหรับการอ้างอิงของ Ford Engineer ฉันไม่เคยคิดเกี่ยวกับ Software Engineers กับโปรแกรมเมอร์มาก่อน
Dalin Seivewright

โปรแกรมเมอร์คือเซตย่อยของวิศวกรไม่ใช่วิธีอื่น
Spencer Rathbun

11

ฉันเห็นด้วยกับบุคคลที่คุณทำงานด้วย วิศวกรซอฟต์แวร์ที่ดีเกี่ยวข้องกับหลักการทั่วไปของการออกแบบและการผลิตซอฟต์แวร์ ภาษาและกรอบงานจริงเป็นรายละเอียด

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

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


"วิศวกรซอฟต์แวร์ที่ดีเกี่ยวข้องกับหลักการทั่วไปของการออกแบบและการผลิตซอฟต์แวร์" การผลิตระบบควบคุมแบบฝังตัวและเว็บแอปพลิเคชันเกือบจะเหมือนกันใช่มั้ย
Marcin

@Marcin: หลักการบางอย่างใช่ บทกวีที่ฉันทำคือ (ตัวอย่าง) การออกแบบระบบฝังตัวใน C หรือแอสเซมเบลอร์ใช้หลักการประเภทเดียวกันแม้ว่าเครื่องมือจะแตกต่างกัน
JeremyP

เครื่องมือเหล่านั้นไม่ได้แตกต่างกันและพวกเขาอยู่โดเมนปัญหาที่คล้ายกันมาก นี่คือสาเหตุที่สิ่งนี้ไม่ช่วยเหลืออย่างสิ้นเชิง
Marcin

1
@Marcin: เห็นได้ชัดว่าคุณไม่ได้ตั้งโปรแกรมในแอสเซมเบลอร์หรือไม่ได้ตั้งโปรแกรมในซีฉันมั่นใจว่าแม้จะมีตำนานทั่วไป C ไม่ใช่แอสเซมเบลอร์และการเขียนโปรแกรมในเครื่องมือเหล่านั้นแตกต่างกัน
JeremyP

1
@ มาร์ตินแน่นอนและโบว์ลิ่งเป็นเพียงเรื่องของการล้มพินทั้งหมด ชิ้นเค้กจริงๆ ในขณะที่การเขียนโปรแกรมเว็บและการเขียนโปรแกรมฝังตัวอาจแบ่งปันหลักการระดับสูงและแนวทางปฏิบัติที่ดีที่สุด แต่สิ่งที่ควบคุมงานประจำวันจริงๆคือข้อ จำกัด ที่ควบคุมการปฏิบัติตามแนวทางปฏิบัติเหล่านั้น ในขณะที่คุณอาจท้ายที่สุดก็จะสามารถที่จะฝึกเขียนโปรแกรมเว็บและฝังตัวเป็นวิศวกรและวีซ่าในทางกลับกันพวกเขาจะไม่ fungible
Charles E. Grant

5

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

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

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

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


5

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

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

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


หลักการพื้นฐานอาจแตกต่างกันอย่างมากมาย
Marcin

1
@Marcin ไม่พวกเขาทำไม่ได้ วิทยาการคอมพิวเตอร์จะไม่เปลี่ยนแปลงหากเทคโนโลยีเปลี่ยนแปลง คณิตศาสตร์ไม่เปลี่ยนแปลง สถิติไม่เปลี่ยนแปลง ไม่ทำการวิเคราะห์ความต้องการการออกแบบระบบการจัดการการกำหนดค่ากลยุทธ์การตรวจสอบและการตรวจสอบหลักการคุณภาพ ...
Thomas Owens

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

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

1
ใช่คุณถูกทุกโครงการซอฟต์แวร์ในโลกจะเหมือนกันและคุณได้คิดวิธีจัดการทุกโครงการ คุณควรเขียนหนังสือที่อธิบายถึง One True Way เพื่อเขียนและจัดการซอฟต์แวร์ทั้งหมด
Marcin

4

การเปรียบเทียบของเขาคือคุณไม่จำเป็นต้องมีความรู้เกี่ยวกับผลิตภัณฑ์ที่ถูกสร้างขึ้นเพื่อรู้วิธีสร้างสายการประกอบที่ผลิตผลิตภัณฑ์ดังกล่าว

มันเกือบจะไม่ถูกต้องอย่างแน่นอน วิศวกรการผลิตผู้เชี่ยวชาญต้องเข้าใจค่อนข้างมากเกี่ยวกับผลิตภัณฑ์ภายใต้การดูแลของพวกเขา

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

ในการกลับไปที่แอสเซมบลีไลน์การเปรียบเทียบแอสเซมบลีไลน์ทุกรายการจะแตกต่างกันไปสำหรับแต่ละผลิตภัณฑ์และการพัฒนาซอฟต์แวร์ประเภทต่าง ๆ จำเป็นต้องใช้วิธีการที่แตกต่างกัน - คุณจะไม่สร้างซอฟต์แวร์รักษาความปลอดภัย


1
การสร้างซอฟต์แวร์ในระดับเดียวกันนั้นเหมือนกันไม่ว่าจะเป็นผลิตภัณฑ์ซอฟต์แวร์ใดก็ตาม เราเรียกพวกเขาว่าวิธีการแทนที่จะเป็นสายการประกอบแต่สิ่งเหล่านี้เป็นแนวคิดเดียวกัน

1
@JarrodRoberson ไม่แอสเซมบลีไลน์ไม่เหมือนกันและโดยทั่วไปวิธีการใช้ไม่ได้
Marcin

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

2

มีช่วงการเรียนรู้ที่เกี่ยวข้องกับความเชี่ยวชาญที่แตกต่างกัน ฉันกำลังพูดถึงความแตกต่างระหว่างการเขียนโปรแกรมแบบฝังตัว / เรียลไทม์การเขียนโปรแกรมบนเว็บแอปการเขียนโปรแกรมระบบ / OS การเขียนโปรแกรมแบบหนาไคลเอ็นต์การพัฒนาอุปกรณ์พกพา ฯลฯ

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


1

ฉันเห็นด้วยกับหลักฐานที่เพื่อนร่วมงานของคุณแนะนำแม้ว่าฉันจะเพิ่มคำเตือน

วิศวกรซอฟต์แวร์ที่ดีจะสามารถสร้างซอฟต์แวร์ที่ดีในเทคโนโลยีใด ๆ ..... หลังจากที่พวกเขาได้เรียนรู้เล็กน้อยในเทคโนโลยีใหม่

อาจมีข้อผิดพลาดบางอย่างที่ไม่ชัดเจนในตอนแรก แต่วิศวกรซอฟต์แวร์ที่ดีจะเรียนรู้พวกเขาในไม่ช้า

ฉันคิดว่าสิ่งที่เขาหมายถึงจริงๆก็คือเพียงเพราะนักพัฒนามีประสบการณ์ C # 2 ปีที่มั่นคงมันไม่ได้หมายความว่าวิศวกรซอฟต์แวร์ที่ดีกว่าที่มีพื้นหลัง Java ที่ไม่เคยทำ C # มาก่อนไม่สามารถมาเรียนรู้ C # และรวดเร็ว กลายเป็นนักพัฒนา C # ที่ดีกว่าผู้ชายคนแรก

กล่าวอีกนัยหนึ่งคุณไม่ควรลดจาวาคนที่ทำงาน JUST เพราะเขาได้ "ทำเวลา" ใน C #


ฉันคิดว่านี่เป็นสิ่งที่ได้รับ แต่จริง ๆ แล้วเกี่ยวกับ ROI ฉันจะไม่จ้างวิศวกรที่มีประสบการณ์เกี่ยวกับ Java เป็นหลักหากฉันต้องการให้โครงการ C ++ ออกสู่ตลาดใน 6 Mos แม้ว่าหากคุณมีโครงการ Swing ที่ต้องการออกไปใน 6 mos, วิศวกรฝั่งเซิร์ฟเวอร์หลักอาจยังคงมีคุณสมบัติ
Spencer Kormos

@SpencerK เห็นด้วยอย่างยิ่ง ขึ้นอยู่กับว่าคุณต้องการ ROI ของคุณเร็วแค่ไหน หากคุณมีเวลารอนานกว่านั้นวิศวกรซอฟต์แวร์ที่ดีกว่าควร "ชนะ"
ozz

ถ้าคุณเป็นคุณ!
ozz

1
ไม่ไม่ใช่ฉัน ฉันไม่ได้ลงคะแนนโดยไม่แสดงความคิดเห็นว่าทำไม ฉันมีมารยาทที่ดีกว่านั้น!
Spencer Kormos

1

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


2
จริงๆ? ฉันคิดว่าคุณคงคาดหวังว่าวิศวกรความปลอดภัยจะสามารถพัฒนาและเข้ารหัสเกมได้ภายใน 6 เดือนและแยกไม่ออกจากผู้เชี่ยวชาญที่มีประสบการณ์
Marcin

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

1

ฉันทำงานให้กับ บริษัท เฮลิคอปเตอร์และวิศวกรการบินที่นี่มีความเชี่ยวชาญตามประเภทของเครื่องบินที่พวกเขาสามารถทำงานได้ พวกเขาจะต้อง "ประเภทคะแนน" ในทางเทคนิคแล้วพวกเขาสามารถทำงานได้ทุกอย่างตั้งแต่ Robinson R22 ถึง Jumbo Jet แต่ไม่ใช่โดยไม่มีการฝึกอบรมการแปลง

ฉันคิดว่ามันค่อนข้างคล้ายกับวิศวกรรมซอฟต์แวร์ยกเว้นว่า "การฝึกอบรมการแปลง" นั้นไม่เป็นทางการสำหรับวิศวกรซอฟต์แวร์


1

เมื่อพูดกับจิตรกรคุณจะบอกเขาว่าเขาไม่มีปัญหากับการแกะสลัก

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

แต่การสอนจิตรกรถึงวิธีการแกะสลักวัตถุ 3 มิติหรือเขียนนวนิยาย (การแสดงออกทางศิลปะทั้งสองรูปแบบ) เป็นสัตว์ที่แตกต่างอย่างสิ้นเชิง นั่นคือมุมมองที่คุณมาจาก

ซอฟต์แวร์บนเว็บต้องการความคิดที่แตกต่างไปจากซอฟต์แวร์เดสก์ท็อป ทั้งสองอย่างแตกต่างกันอย่างสิ้นเชิงเมื่อนำไปใช้กับเกมกับสภาพแวดล้อมการทำงาน ฉันสงสัยว่าทำงานกับระบบปฏิบัติการหรือระบบรวมยังต้องใช้วิธีคิดที่แตกต่างออกไป (แต่ฉันไม่เคยมีประสบการณ์มาก่อน) และฉันไม่สงสัยเลยว่ามีโดเมนอื่นที่ต้องใช้วิธีคิดที่แตกต่างออกไป

สรุปและตัวอย่าง:

"ศิลปะ" รวมถึงประติมากรรมนวนิยายการ์ตูนและภาพวาด ทักษะที่ทับซ้อนกันรวมถึง:

  • ทฤษฎีรูปร่างและสีของร่างกาย: ประติมากรรมการ์ตูนและภาพเขียน
  • การสื่อสารด้วยข้อความ: นวนิยายและการ์ตูน

... และต่อไป แต่ดังกล่าวข้างต้นศิลปินการ์ตูนไม่น่าจะทำได้ดีในนวนิยายเรื่องแรกของพวกเขา พวกเขาต้องคิดต่างกัน

ในทำนองเดียวกันมีการทับซ้อนกันในด้านต่าง ๆ ของการเขียนโปรแกรม / วิศวกรรมซอฟต์แวร์ แต่ส่วนใหญ่มีความแตกต่างกันเกินกว่าที่จะกระโดดเข้าไปได้ตัวอย่างเช่น:

  • อัลกอริทึม: ระบบปฏิบัติการ / ระบบรวม, เกมและสถานที่อื่น ๆ ที่คุณมักจะต้องปรับให้เหมาะสมสำหรับความเร็วหรือหน่วยความจำ ไม่ค่อยมีเรื่องใหญ่ในการพัฒนาเว็บ
  • ออกแบบ: ทุกที่ในการพัฒนาเว็บ แต่ไม่สำคัญมากในระบบรวมที่ไม่มี UI
  • ซอฟต์แวร์ไคลเอนต์ / เซิร์ฟเวอร์: ความคิด "ไม่เชื่อใจลูกค้า" ซึ่งไม่จำเป็นต้องมีอยู่ในบางโดเมน (เกมผู้เล่นเดี่ยวและซอฟต์แวร์เดสก์ท็อปแบบสแตนด์อโลนอื่น ๆ ซึ่งฉันยอมรับว่าหายากกว่านี้)

ฉันมักจะแย้งว่าการเขียนโปรแกรมและการออกแบบซอฟต์แวร์นั้นมีความสำคัญเทียบเท่ากับวิทยาศาสตร์หรือวิศวกรรมศาสตร์ ฉันเดาว่านี่เป็นอีกตัวอย่างของความคล้ายคลึงกัน
Izkata

โอ้และก่อนที่ใครบางคนจะกัดฉันโดย "อัลกอริทึม" ฉันกำลังพูดถึง CS-y ระดับสูง Fibonacci heaps และ Timsort เป็นสองสิ่งที่เกิดขึ้นในใจ (ฉันแทบจะไม่เคยทำงานในระดับความซับซ้อนของอัลกอริทึมนั้นดังนั้นฉันจึงรู้เพียงเล็กน้อยเกี่ยวกับหัวข้อนั้นเลย)
Izkata

0

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

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


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

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

0

เรื่องแบบนี้เกิดขึ้นมากมายที่ฉันทำงาน

ฉันชอบที่จะเปรียบเทียบกับอาชีพลุงของภรรยาของฉัน - ช่างซ่อมรถยนต์

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

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

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

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

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