EE กับวิทยาศาสตร์คอมพิวเตอร์: มีผลต่อแนวทางการพัฒนาสไตล์หรือไม่? [ปิด]


11

มีความแตกต่างอย่างเป็นระบบหรือไม่ระหว่างนักพัฒนาซอฟต์แวร์ (วิศวกร sw, สถาปนิก, ตำแหน่งงานใด ๆ ) กับอุปกรณ์อิเล็กทรอนิกส์หรือภูมิหลังทางวิศวกรรมอื่น ๆ

ตามภูมิหลังทางอิเล็กทรอนิกส์ฉันหมายถึงระดับ EE หรือนักออกแบบอิเล็กทรอนิกส์ที่เรียนรู้ด้วยตนเองวิศวกรประเภทอื่นและนักฟิสิกส์เชิงทดลอง

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

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

(Btw, ฉันไม่เคยเรียนวิชาวิทยาศาสตร์คอมพิวเตอร์ใด ๆ เลย, ฉันประทับใจในสิ่งที่พวกเขากล่าวถึงอย่างคลุมเครือฉันเป็นประเภทอิเล็กทรอนิกส์ / ฟิสิกส์ / ศิลปะด้วยตัวเอง)

คำตอบ:


5

มีผู้เยาว์ EE และ CS สำคัญฉันได้ทำงานกับทั้งสองกลุ่มในเชิงวิชาการ ฉันไม่เคยทำงานที่ฉันออกแบบผลิตภัณฑ์ EE มาก่อน แต่ฉันเคยทำงานกับ บริษัท หลายอย่างเช่น PLC และสามารถเข้าใจได้ (จากภูมิหลังทางการศึกษา) สิ่งที่เกิดขึ้นเป็นสิ่งที่ดี . ดังนั้นฉันจึงไม่สามารถบอกได้ว่าฉันรู้ 100% เกี่ยวกับพฤติกรรมและลักษณะการทำงาน แต่ฉันสามารถอธิบายความacademicแตกต่างระหว่างคนทั้งสองได้บ้าง

กลุ่มคน EE มักจะมุ่งเน้นไปที่รายละเอียดและพวกเขามักจะรู้วิธีการใช้งานที่แน่นอน หากไม่ใช่แผนที่ 100% พวกเขาไม่ชอบ EE folks จะปรับลงเพื่อลบรายละเอียดที่ไม่จำเป็น

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

คนทั้งสองรู้เรื่องต่าง ๆ เช่นแผนที่ Karnaugh ดังนั้นจึงมีการทับซ้อนกันมากมายในพื้นที่เหล่านั้น การลดลงของลอจิกสิ่งนั้น

ตกลงนั่นคือคำตอบส่วนตัวของฉัน หวังว่ามันจะช่วย


คำตอบนี้ให้ข้อมูลเชิงลึกแก่โครงการปัจจุบันของฉัน ฉันต้องเปลี่ยนอาชีพ!
DarenW

1
ฉันเกือบ 100% เห็นด้วยกับคุณยกเว้นส่วนที่เกี่ยวกับการเขียนโปรแกรมการทำงาน ตัวอย่างเช่นฉันเชื่อว่าตรรกะแลดเดอร์บริสุทธิ์เป็นไวยากรณ์ที่เปิดเผยได้เกือบ 100% ฟังก์ชั่นบล็อกไดอะแกรมยังเป็นที่นิยมของ EE ซึ่งเห็นได้ชัดว่าใช้งานได้
Scott Whitlock

@Scott W. ~ 2 ความคิด ... ;)มันเป็นคำตอบแบบอัตนัยฉันได้รับอนุญาตให้ผิด ... ในการอ้างอิงถึงตรรกะการทำงานฉันหมายถึงเช่นรหัสเสียงกระเพื่อมนี้((lambda (arg) (+ arg 1)) 5)... พวกเขาจะใช้สิ่งที่ "คล้ายกัน" แต่จะ ตรรกะเหมือนกับ EE หรือไม่? ไม่ได้อยู่ในประสบการณ์ส่วนตัวของฉัน จริงอยู่ที่ฉันไม่รู้ว่าชิประดับมืออาชีพจำนวนมากที่ออกแบบ EEs ส่วนใหญ่ที่ฉันรู้คือพนักงานบริการมากขึ้น และตรรกะของแลดเดอร์ที่พวกเขาใส่เข้าไปในเครื่องคอมพิวเตอร์นั้นดูเหมือนกับบันไดตัวอักษรบนหน้าจอ ไปคิด
jcolebrand

1
ฉันคิดว่าคุณกำลังพูดถึงการสร้างฟังก์ชั่นเช่น lambdas ฯลฯ และฉันกำลังคิดเกี่ยวกับแนวคิดการทำงานเช่นการเปลี่ยนแปลงไม่ได้และไวยากรณ์ประกาศ ฉันยอมรับว่าสิ่งต่าง ๆ เช่นพระและสิ่งที่เป็นนามธรรม ฉันไม่คิดว่า EE มักจะพบเจอกับสิ่งเหล่านี้
Scott Whitlock

ฉันคิดว่า EEs วิ่งเข้าหา monads บ่อยกว่าคนใน SE Haskell ยังมีส่วนขยาย monad ที่ทำให้ monads สามารถสร้างแบบจำลองเป็นบล็อก I / O ซึ่งเป็นขนมปังและเนยของวิศวกร DSP
Aditya

12

หากฉันต้องพูดคุยทั่วไปนี่คือสิ่งที่ฉันได้รับ:

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

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

อย่างที่ฉันพูดนั่นเป็นประสบการณ์โดยทั่วไปของฉัน มันไม่เป็นความจริงในทุกกรณี


คำตอบที่ดีกับความแตกต่างระหว่างทั้งสอง ทีนี้มาดูกันว่ามีคนอื่นอีกกี่คนที่เห็นว่าสิ่งนี้ถูกต้องหรือใกล้เข้ามาโดย upvoting
DarenW

3

จากประสบการณ์ของฉัน - ประเภท EE ดูเหมือนจะออกแบบโปรแกรมเชิงเส้นและไม่รวมเลเยอร์นามธรรมประเภท CS ที่ดูเหมือนจะสบายใจ

ไม่มีความคิดเห็นเกี่ยวกับความแตกต่างที่มีคุณภาพหรือขาดมัน


1

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

วิทยาการคอมพิวเตอร์ (เมื่อเทียบกับวิศวกรรมคอมพิวเตอร์) เป็นวิชาคณิตศาสตร์ที่เด่นชัดเนื่องจาก (ในระดับที่สูงกว่า) เป็นศาสตร์อื่น ๆ เช่นฟิสิกส์ - แต่มันเป็นคณิตศาสตร์ที่แตกต่างกันมาก หากคุณได้ทำวิทยาศาสตร์ที่แตกต่างจากนั้นคุณจะต้องทำคณิตศาสตร์และดังนั้นจึงเป็นไปได้ที่จะได้รับความเร็วที่แตกต่างจากคนที่ไม่มีพื้นฐานทางคณิตศาสตร์ แน่นอนว่าโปรแกรมเมอร์น้อยมากที่จำเป็นต้องรู้เกี่ยวกับทฤษฎีเซต, big-O หรืออะไรก็ตาม - ไม่แน่นอนในระดับสูง


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

1

ฉันเริ่มต้นด้วย BSEE ไปทำงานออกแบบวงจรตรรกะสำหรับห้องปฏิบัติการวิจัยและพัฒนาทางโทรศัพท์ขนาดใหญ่และ (เมื่อประมาณ 40 ปีที่แล้ว) ได้ตระหนักว่าสิ่งที่ฉันกำลังสร้างส่วนใหญ่สามารถทำได้ด้วยโปรแกรมคอมพิวเตอร์ในที่สุด ดังนั้นฉันจึงกลับไปเรียนปริญญา MSCS

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

หากไม่มีพื้นฐานใน CS ฉันคิดว่าฉันจะมีปัญหาในการเข้าใจแนวคิดที่เป็นนามธรรมมากขึ้น นอกจากภาษาแอสเซมเบลอร์หลายภาษาฉันใช้ C, C ++, C #, Pascal, Delphi, Perl, PHP และ Lisp บางตัว ฉันกำลังพยายามเรียนรู้ Ruby และ Python การออกแบบ OO ฉันค่อนข้างสบายใจ ฟังก์ชั่นการเขียนโปรแกรมฉันยังไม่ได้ (ยัง)

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

ฉันต้องการที่จะ "ดู" ว่าคอมพิวเตอร์จะรันโปรแกรมในหัวของฉันได้อย่างไร


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