วิศวกรรมซอฟต์แวร์

ถาม - ตอบสำหรับมืออาชีพนักวิชาการและนักเรียนที่ทำงานในวงจรการพัฒนาระบบ

19
“ ครึ่งหนึ่งของทุกสิ่งที่คุณรู้ว่าจะล้าสมัยใน 18-24 เดือน” = (จริงหรือเท็จ?) [ปิด]
เพียงวิ่งข้ามสิ่งนี้และสงสัยว่าใครมีวิธีที่จะพิสูจน์หรือพิสูจน์ข้อความนี้: สิ่งที่ต้องจำไว้ ... ครึ่งชีวิตของความรู้ในเทคโนโลยีขั้นสูงคืออะไร? มันติดตามด้วยกฎของมัวร์: ครึ่งหนึ่งของทุกสิ่งที่คุณรู้ว่าจะล้าสมัยใน 18-24 เดือน ที่มา:ภายในคำตอบของCraig Traderสำหรับคำถามนี้ " อะไรคือสิ่งที่มีประสิทธิภาพมากที่สุดในการพัฒนาทักษะการเขียนโปรแกรมของคุณ "
33 skills 

9
ความรู้เกี่ยวกับโดเมนมีความสำคัญกับความรู้ด้านเทคนิคอย่างไร
ฉันกำลังทำงานกับแอพพลิเคชั่นการซื้อขายและการจัดการความเสี่ยงและแม้ว่าจะมาจากพื้นหลัง C # ฉันถูกขอให้ทำงานกับแพ็คเกจ SSIS ตอนนี้ฉันสามารถอยู่กับสิ่งนั้นได้ จุดปวดคือการเน้นความเข้าใจในธุรกิจมากเกินไป การค้าขาย (การซื้อขายพลังงานเป็นสิ่งที่ถูกต้อง) เป็นพื้นที่ขนาดใหญ่และเข้าใจทุก ๆ อย่างที่มันท่วมท้น แต่ในช่วงสองเดือนที่ผ่านมาฉันทำงานทำความเข้าใจเกี่ยวกับเงื่อนไขทางธุรกิจ - ทำเครื่องหมายตลาด, ตัวชี้วัดความเสี่ยง, ตำแหน่ง, PnL, กรีก, เครื่องมือ, โครงสร้างหนังสือ ... ทุกรายละเอียดเล็ก ๆ น้อย ๆ ตอนนี้ IMHO นี่คืองานของ BA แน่นอนว่ามันสำคัญมากสำหรับนักพัฒนาที่จะเข้าใจธุรกิจ แต่คุณจะวาดเส้นตรงไหน? เมื่อฉันพูดคุยกับผู้จัดการเกี่ยวกับเรื่องนี้เขาเกือบจะล้อเลียนฉันโดยบอกว่าทุกคนสามารถเรียนรู้เทคโนโลยีในหนึ่งสัปดาห์ มันเป็นธุรกิจที่ยากขึ้น ความใฝ่ฝันในระยะยาวของฉันคือการคงอยู่ทางด้านเทคนิคและอาจกลายเป็นสถาปนิก (ถ้าเป็นไปได้) ถ้าฉันต้องการที่จะมุ่งเน้นไปที่ธุรกิจอย่างมากฉันจะได้เรียนหลักสูตร MBA! ฉันต้องการทราบว่าฉันผิดหรือไร้เดียงสาเกินไปในการทำความเข้าใจความสำคัญของธุรกิจหรือความหงุดหงิดของฉันเป็นธรรมหรือไม่?

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

6
คุณจะฝึกพ้องความพร้อมและมัลติเธรดอย่างไร [ปิด]
ฉันได้อ่านเกี่ยวกับการทำงานพร้อมกันหลายเธรดและวิธีการ"อาหารกลางวันฟรีมีมากกว่า" แต่ฉันยังไม่มีโอกาสที่จะใช้ MT ในงานของฉัน ฉันกำลังมองหาคำแนะนำเกี่ยวกับสิ่งที่ฉันสามารถทำได้เพื่อฝึกฝน CPU หนัก ๆ MT ผ่านการฝึกหัดหรือการมีส่วนร่วมในโครงการโอเพนซอร์สบางแห่ง ขอบคุณ แก้ไข: ฉันสนใจโครงการโอเพ่นซอร์สที่ใช้ MT สำหรับงานที่ผูกกับ CPU หรืออัลกอริทึมที่น่าสนใจในการใช้งาน MT แทนที่จะเป็นหนังสือหรือเอกสารที่อธิบายเครื่องมือเช่นเธรด mutex และล็อกเท่านั้น วิธีใช้ MT เพื่อให้มี GUI ที่ตอบสนองต่อ ...

11
จะทำอย่างไรเมื่อการเข้ารหัสเริ่มรู้สึกเบื่อเหมือนจะเหมือนกันทั้งหมด? [ปิด]
ฉันเริ่มเขียนโปรแกรมตอนอายุ 6 ขวบใน Commodore 64 ตอนนี้ฉันอายุ 28 ปีและฉันต้องเรียน 4 วิชาจากระดับปริญญาแรกในสาขาวิทยาศาสตร์คอมพิวเตอร์ ฉันเริ่มเบื่อกับการเขียนโค้ดหลังจากหลายปีที่ผ่านมา ฉันเรียนวิชาวิทยาการคอมพิวเตอร์ในภาษาคอมพิวเตอร์เชิงทฤษฎีและการเขียนโปรแกรม C เป็นเวลา 10 ปีในด้านความปลอดภัยเครือข่ายและฉันก็ไม่ได้รับการกระตุ้นจากการเขียนโค้ด ฉันสามารถเขียนโค้ดใน C, C ++, Python หรือภาษาใดก็ได้ที่คุณต้องการ แต่ฉันไม่สามารถตื่นเต้นกับสิ่งที่ฉันทำ ฉันไม่สามารถรู้สึกท้าทายใด ๆ ฉันเขียนโค้ดหลายเธรด HTTPS MITM proxy และแอปพลิเคชั่น WSGI โดยไม่จำเป็นต้องมีทักษะอัลกอริทึมใด ๆ ฉันรู้สึกว่าสิ่งใหม่ทั้งหมดนี้เหมือนกันทั้งหมดด้วย abstractions (หรือมากกว่า) ที่ง่ายกว่าหรือมีระบบอัตโนมัติอยู่ในนั้น แต่ทั้งหมดก็ฟังดูเหมือนกันสำหรับฉัน ครั้งแล้วครั้งเล่า. ภาษาที่คำนวณได้คือทัวริงที่คำนวณได้ทั้งหมดดังนั้นการเข้ารหัสจึงเป็นเพียงการจำลองแบบที่คล้ายกันในชุดย่อยของฟังก์ชันบางส่วนนี้ ในงานประจำวันของฉันฉันรู้สึกเบื่อแม้จะค้นหาข้อบกพร่องหรือทำเกณฑ์มาตรฐานในรหัสหรือแก้ไขปัญหาด้วยไลบรารี X, Y, Z ฉันเป็นคนที่อยากรู้อยากเห็นมาก ฉันมักจะถูกกระตุ้นจากบางสิ่ง แต่ฉันไม่สามารถแม้กระทั่งเมื่อฉันดูรหัสที่ดี ฉันรู้สึกสะดวกสบายในการทำงาน ถึงเวลาแล้วที่จะก้าวหน้าในอาชีพการงานของฉัน หรือเพื่อให้ได้สิ่งที่ท้าทายยิ่งขึ้นในสาขาวิทยาศาสตร์คอมพิวเตอร์ …

4
คอมไพเลอร์ JIT สำหรับ C, C ++ และไลค์
มีคอมไพเลอร์ทันเวลาหรือไม่สำหรับภาษาที่คอมไพล์เช่น C และ C ++ (ชื่อแรกที่นึกได้คือ Clang และ LLVM! แต่ฉันไม่คิดว่าพวกเขาจะสนับสนุน) คำอธิบาย: ฉันคิดว่าซอฟต์แวร์สามารถได้รับประโยชน์จากข้อเสนอแนะการทำโปรไฟล์รันไทม์และการรวบรวมฮอตสปอตที่รันไทม์ให้ได้ประสิทธิภาพสูงสุดแม้สำหรับภาษาที่คอมไพล์ระหว่างเครื่องเช่น C และ C ++ การปรับให้เหมาะสมแบบแนะนำตัวด้วยโปรไฟล์ทำหน้าที่คล้ายกัน แต่ด้วยความแตกต่าง JIT จะมีความยืดหยุ่นมากขึ้นในสภาพแวดล้อมที่แตกต่างกัน ใน PGO คุณเรียกใช้ไบนารีของคุณก่อนที่จะปล่อย หลังจากคุณเผยแพร่แล้วจะไม่มีการรวบรวมผลตอบรับจากสภาพแวดล้อม / อินพุตที่รันไทม์ ดังนั้นหากรูปแบบการป้อนข้อมูลมีการเปลี่ยนแปลงมันจะสอบสวนเพื่อปรับประสิทธิภาพ แต่ JIT ใช้งานได้ดีแม้ในสภาพนั้น อย่างไรก็ตามฉันคิดว่ามันเป็นเรื่องที่ถกเถียงกันอยู่ว่าการรวบรวม JIT นั้นมีประโยชน์มากกว่าค่าใช้จ่ายของตัวเอง

9
สิ่งที่เป็นนามธรรม: สงครามระหว่างการแก้ปัญหาและการแก้ปัญหาทั่วไป [ปิด]
ในฐานะโปรแกรมเมอร์ฉันพบว่าตัวเองอยู่ในภาวะที่กลืนไม่เข้าคายไม่ออกที่ฉันต้องการให้โปรแกรมของฉันเป็นนามธรรมและทั่วไปที่สุด การทำเช่นนั้นมักจะอนุญาตให้ฉันนำรหัสของฉันมาใช้ซ้ำและมีวิธีแก้ปัญหาทั่วไปที่มากขึ้นสำหรับปัญหาที่อาจเกิดขึ้น (หรืออาจจะไม่เกิดขึ้น) อีกครั้ง จากนั้นเสียงนี้ในหัวของฉันบอกว่าเพียงแก้ปัญหาหลอกตามันเป็นเรื่องง่าย! ทำไมต้องใช้เวลามากกว่าที่คุณต้องทำ เราทุกคนต้องเผชิญกับคำถามนี้อย่างแน่นอนซึ่งสิ่งที่เป็นนามธรรมอยู่บนไหล่ขวาของคุณและ Solve-it-stupid นั่งทางซ้าย สิ่งที่ฟังและบ่อยครั้ง? กลยุทธ์ของคุณสำหรับสิ่งนี้คืออะไร? คุณควรสรุปทุกอย่างหรือไม่

7
ระบบประเภทของ Haskell เป็นอุปสรรคต่อการทำความเข้าใจการเขียนโปรแกรมที่ใช้งานได้จริงหรือไม่? [ปิด]
ฉันกำลังศึกษา Haskell เพื่อจุดประสงค์ในการทำความเข้าใจเกี่ยวกับการเขียนโปรแกรมฟังก์ชั่นด้วยความคาดหวังว่าฉันจะใช้ความเข้าใจที่ฉันได้รับในภาษาอื่น ๆ (Groovy, Python, JavaScript เป็นหลัก) ฉันเลือกแฮสเค็ลล์เพราะฉันรู้สึกว่ามันใช้งานได้อย่างหมดจดและไม่ยอมพึ่งพารัฐ ฉันไม่ได้เลือกที่จะเรียนรู้ Haskell เพราะฉันสนใจที่จะสำรวจระบบที่เข้มงวดมาก ๆ คำถามของฉันคือสิ่งนี้: ระบบพิมพ์ที่แข็งแกร่งเป็นผลพลอยได้ที่จำเป็นของภาษาที่ใช้งานได้อย่างสมบูรณ์หรือเป็นตัวเลือกการออกแบบที่ไม่เกี่ยวข้องกับ Haskell โดยเฉพาะหรือไม่?

2
การเก็บสมองในระหว่างการสัมภาษณ์งาน [ปิด]
เมื่อเร็ว ๆ นี้ฉันได้สัมภาษณ์งานที่ บริษัท ใหญ่ใน Silicon Valley สำหรับตำแหน่งผู้พัฒนาซอฟต์แวร์อาวุโส / ตำแหน่ง R & D ฉันมีหน้าจอโทรศัพท์ด้านเทคนิคหลายหน้าจอสัมภาษณ์ทั้งวันและหน้าจอโทรศัพท์ด้านเทคนิคเพิ่มเติมสำหรับตำแหน่งอื่นในภายหลัง การสัมภาษณ์เป็นไปด้วยดีมากฉันมีปริญญาเอกและมีประสบการณ์การทำงานในพื้นที่ที่ฉันสมัคร แต่ยังไม่มีข้อเสนอ จนถึงตอนนี้ดีมาก มันเป็นประสบการณ์ที่น่าสนใจฉันได้รับการว่าจ้างไม่มีความรู้สึกที่หนักแน่นเกี่ยวกับเรื่องนี้ ผู้สัมภาษณ์บางคนถามคำถามโดยละเอียดถึงจุดที่น่าสงสัยเกี่ยวกับเทคโนโลยีใหม่ที่ฉันได้ทำ เทคโนโลยีเหล่านี้ยังอยู่ในระหว่างการพัฒนาและยังไม่ได้ออกสู่ตลาด ฉันรู้ว่า บริษัท ฮาร์ดแวร์ / ซอฟต์แวร์รายใหญ่บางรายกำลังทำสิ่งนี้เช่นกัน ก่อนหน้านี้ฉันมีการสัมภาษณ์หลายครั้งและจากประสบการณ์การสัมภาษณ์ในอดีตของฉันและความประทับใจของผู้สัมภาษณ์ที่เหลือฉันรู้ว่าตอนนี้ทุก บริษัท ที่ฉันต้องการคือการดึงความคิดเกี่ยวกับสิ่งที่ฉันทำในสาขานี้ จำไว้ว่าฉันหมายถึงตำแหน่ง R&D ไม่ใช่ของนักพัฒนาซอฟต์แวร์มาตรฐาน มีใครเคยเจอสถานการณ์นี้บ้างไหม? และคุณจัดการกับมันอย่างไร? ฉันไม่ได้กังวลมากเกี่ยวกับความคิดที่ "ขโมย" แต่อีกเรื่องเกี่ยวกับการถูกหลอกให้เข้าร่วมการสัมภาษณ์เมื่อไม่มีความตั้งใจที่จะจ้างงาน ฉันกำลังพิจารณาที่จะปฏิเสธการให้สัมภาษณ์ทางเทคนิคในอนาคตและแทนที่จะเสนอระยะเวลาทดลองใช้ซึ่ง บริษัท สามารถพิจารณาการตัดสินใจจ้างงานใหม่ได้ง่ายขึ้น
33 interview 

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

14
คุณโต้ตอบกับผู้ที่ไม่ได้เขียนโปรแกรมด้วยแนวคิดของ 'The Big Big Thing' อย่างไร
เมื่อเร็ว ๆ นี้และบ่อยครั้งที่ผู้ที่ไม่มีพื้นฐานการเขียนโปรแกรมมาและกล่าวว่าพวกเขามีความคิดที่ยอดเยี่ยมที่สามารถเป็นเรื่องใหญ่ต่อไปและความคิดนั้นคุ้มค่ากับโชค จากนั้นเมื่อพวกเขารู้ว่าฉันเป็นโปรแกรมเมอร์พวกเขาถามฉันว่าฉันยินดีที่จะ "เขียนมันหรือไม่" สำหรับพวกเขาหรือค้นหาคนที่เต็มใจที่จะทำเพื่อสิ่งใด เมื่อพิจารณาจากความกระตือรือร้นมันเหมือนกับว่าพวกเขาเมาในความคิดของพวกเขาและนั่นเป็นสิ่งที่สำคัญที่สุด แต่พวกเขาต้องการโปรแกรมเมอร์ การตอบสนองของฉันต่อพวกเขาขึ้นอยู่กับอารมณ์และทัศนคติทั่วไปของพวกเขาที่มีต่อสิ่งที่เราทำคือบางสิ่งตามแนวของ: "การมีหลักความคิดเป็นสิ่งหนึ่งการพัฒนาไปจนถึงจุดที่กลายเป็นแพลตฟอร์มที่เปลี่ยนแปลงโลก ซึ่งเป็นอีกชีวิตหนึ่งและคุณก็เต็มใจที่จะจ่ายอย่างเป็นสัดส่วนกับความคิดของคุณที่มีค่ามาก คุณได้รับการติดต่อจากผู้ประกอบการประเภทธุรกิจเหล่านี้ (ที่ไม่มีความรู้ด้านเทคนิค / นักพัฒนา) เกี่ยวกับข้อเสนอดังกล่าวและคุณโต้ตอบกับพวกเขาอย่างไร

17
การวัดที่มีประโยชน์สำหรับซอร์สโค้ดคืออะไร [ปิด]
การวัดที่มีประโยชน์ในการจับภาพสำหรับซอร์สโค้ดคืออะไร เช่นเมตริก(ปฏิบัติการ) เส้นของรหัสหรือความซับซ้อน Cyclomaticช่วยให้มีการประกันคุณภาพหรือพวกเขาเป็นประโยชน์โดยทั่วไปสำหรับกระบวนการพัฒนาซอฟต์แวร์?

10
ทำไมเว็บไซต์ขนาดใหญ่จำนวนน้อยมากถึงเรียกใช้ Microsoft stack? [ปิด]
ด้านบนของหัวของฉันฉันสามารถนึกถึงไซต์ขนาดใหญ่จำนวนหนึ่งซึ่งใช้กองซ้อน Microsoft Microsoft.com Dell พื้นที่ของฉัน PlentyOfFish StackOverflow Hotmail, Bing, WindowsLive อย่างไรก็ตามจากการสังเกตพบว่าเกือบ500 เว็บไซต์ที่ติดอันดับต้น ๆดูเหมือนจะใช้แพลตฟอร์มอื่น ๆ สาเหตุหลัก ๆ ที่มีการเจาะตลาดน้อยมากคืออะไร? ค่าใช้จ่าย? ข้อ จำกัด ทางเทคโนโลยี? Microsoft ให้ความสำคัญกับสภาพแวดล้อมขององค์กร / อินทราเน็ตมากกว่าเว็บไซต์สาธารณะหรือไม่? ฉันไม่ได้มองหาส่วนแบ่งการตลาด แต่การยอมรับ MS กองซ้อนค่อนข้างมาก

12
คุณใช้ UML อย่างเป็นทางการบ่อยแค่ไหน?
ฉันใช้ ad-hoc MUML (ภาษาการสร้างแบบจำลองการแต่งหน้า) เพื่อออกแบบและอธิบายระบบบ่อยครั้ง ดูเหมือนว่า UML และมีแนวโน้มที่จะเข้าใจได้ดี อย่างไรก็ตามฉันมีอาจารย์หนึ่งหรือสองคนที่ใช้การใช้ UML อย่างเป็นทางการที่เข้มงวดและใกล้เคียงกับข้อมูลจำเพาะที่สุดเท่าที่จะเป็นไปได้ ฉันมักจะสงสัยว่า UML ที่เข้มงวดนั้นไม่ใช่เรื่องธรรมดาตามที่อ้าง ดังนั้น, 'การแข่งขัน - บ่อยแค่ไหนที่คุณวาดไดอะแกรมที่สมบูรณ์ซึ่งใช้การจบบรรทัดที่เหมาะสม, หลายหลาก, สัญลักษณ์ประเภทสมาชิก, ฯลฯ ?
33 uml  diagrams 

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

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