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

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

11
ฉันจะออกแบบระบบโดยพลการในการสัมภาษณ์ได้อย่างไร [ปิด]
คำถามทั่วไปในการสัมภาษณ์ทางเทคนิคคือการออกแบบระบบเฉพาะซึ่งโดยปกติจะเป็นผลิตภัณฑ์ที่มีอยู่ของ บริษัท ตัวอย่างเช่น "ออกแบบ Google เอกสาร" คำตอบที่คาดหวังสำหรับคำถามดังกล่าวคืออะไร? ฉันหมายถึงระบบดังกล่าวมีการออกแบบที่ซับซ้อนซึ่งอยู่นอกเหนือขอบเขตของการสัมภาษณ์ใด ๆ ผู้สัมภาษณ์คาดหวังอะไรในช่วงเวลาสั้น ๆ
36 interview 

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

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

12
Scheme vs Haskell สำหรับการแนะนำการเขียนโปรแกรมเชิงฟังก์ชั่น?
ฉันพอใจกับการเขียนโปรแกรมใน C และ C # และจะสำรวจ C ++ ในอนาคต ฉันอาจมีความสนใจในการสำรวจการเขียนโปรแกรมการทำงานเป็นกระบวนทัศน์การเขียนโปรแกรมที่แตกต่างกัน ฉันกำลังทำสิ่งนี้เพื่อความสนุกงานของฉันไม่ได้เกี่ยวข้องกับการเขียนโปรแกรมคอมพิวเตอร์และฉันได้รับแรงบันดาลใจจากการใช้งานการเขียนโปรแกรมการสอนค่อนข้างเร็วในหลักสูตรวิทยาศาสตร์คอมพิวเตอร์ในวิทยาลัย แคลคูลัสแลมบ์ดานั้นเกินความสามารถทางคณิตศาสตร์ของฉันอย่างแน่นอน Haskell หรือ Scheme ใดที่จะทำหน้าที่เป็นบทนำที่ดีในการเขียนโปรแกรมการทำงาน ฉันใช้ emacs เป็นเครื่องมือแก้ไขข้อความและต้องการให้สามารถกำหนดค่าได้ง่ายขึ้นในอนาคตซึ่งจะทำให้เกิดการเรียนรู้ Emacs Lisp อย่างไรก็ตามความเข้าใจของฉันคือ Emacs Lisp นั้นค่อนข้างแตกต่างจาก Scheme และยังเป็นขั้นตอนที่มากกว่าการทำงาน ฉันน่าจะใช้หนังสือ "The Little Schemer" ซึ่งฉันได้ซื้อไปแล้วถ้าฉันติดตาม Scheme (ดูเหมือนว่าฉันจะแปลกเล็กน้อยจากการ จำกัด การอ่านผ่าน) หรือจะใช้ "Learn You a Haskell เพื่อสิ่งดีๆ" ถ้าฉันติดตาม Haskell ฉันจะดูวิดีโอแนะนำ Intro ถึง Haskell โดย Dr …

4
ฉันสามารถย่อจาวาสคริปต์ที่ต้องมีการแจ้งเตือนเรื่องลิขสิทธิ์ได้หรือไม่
ฉันเดาว่านี่เป็นคำถามทางกฎหมาย แต่เกี่ยวข้องกับซอฟต์แวร์ ฉันกำลังจะรวมปลั๊กอิน JS ในโครงการ ความคิดเห็นรวมถึง: การเผยแพร่ซอร์สโค้ดจะต้องเก็บรักษาประกาศลิขสิทธิ์ข้างต้นรายการเงื่อนไขนี้และข้อจำกัดความรับผิดชอบต่อไปนี้ * การแจกจ่ายซ้ำในรูปแบบไบนารีจะต้องทำซ้ำประกาศลิขสิทธิ์ข้างต้นรายการเงื่อนไขนี้และข้อจำกัดความรับผิดชอบต่อไปนี้ในเอกสารประกอบและ / หรือวัสดุอื่น ๆ ที่มาพร้อมกับการแจกจ่าย ใช้สิ่งนี้ในเว็บไซต์ของฉัน "แจกจ่ายซ้ำ" หากฉันย่อขนาดนี้เพื่อประหยัดแบนด์วิดท์ฉันคิดว่ามันจะตัดความคิดเห็นทั้งหมด หากคำตอบของ # 1 คือใช่นั่นไม่ได้หมายความว่าฉันไม่ได้รับอนุญาตตามกฎหมายให้ย่อหย่อนใช่ไหม? (นั่นจะเหม็นเนื่องจากฉันวางแผนที่จะลดขนาด JS ทั้งหมดโดยอัตโนมัติเป็นส่วนหนึ่งของกระบวนการปรับใช้)
36 copyright 

12
จะอธิบาย 5 ปีที่ถูกไฟไหม้ให้กับนายจ้างใหม่ได้อย่างไร? [ปิด]
ห้าปีที่แล้วฉันสูญเสียความสามารถในการตั้งสมาธิในระยะยาวดังนั้นความสามารถในการเขียนโค้ดอย่างมีประสิทธิภาพระดับมืออาชีพ ฉันรู้ว่าทำไมมันเกิดขึ้นฉันเข้าใจว่ามันเกิดขึ้นได้อย่างไรและบนความสามารถในการสร้างความสงบใหม่และการมุ่งเน้นที่ผ่อนคลายฉันได้เอาชนะเหตุผลดั้งเดิม (หยั่งรากในวัยเด็ก) เหตุผลที่ใจของฉันเอียงต่อสถานการณ์โดยรวมแล้ว ความเข้าใจของฉันไม่ได้ถูกหยั่งรากในคำที่นักจิตวิทยาบอกฉันฉันจริง ๆ แล้วพวกเขาจับมือพวกเขาโดยตรง ฉันค่อนข้างมั่นใจว่าจะสามารถลดกำลังการผลิตอาจเป็นไปได้มากกว่าการเหนื่อยหน่าย ฉันไม่เคยหมดความสนใจในโค้ดและไม่หลงทางจากการพยายามดึงความสามารถกลับคืนมา ฉันเก็บความรู้ของฉันอยู่เสมอ (ฉันสามารถเรียนรู้สิ่งต่าง ๆ ที่เกี่ยวข้องกับการเข้ารหัสได้อย่างไม่ลำบากเพียงแค่ใช้ไม่ได้) และสามารถพูดได้ว่าฉันเป็นนักพัฒนาที่ดีกว่า แต่ก่อนแม้ว่าค่าเฉลี่ย LOC ของฉันในช่วงหลายปีนั้น ต่ำ. ในอีกทางหนึ่งตอนนี้ฉันมีชีวประวัติที่รวมเวลาบนโดลมากกว่างาน อะไรคือสิ่งที่จะโน้มน้าวให้คุณในฐานะนายจ้างเพื่อเปิดโอกาสให้ใบสมัครของฉัน ฉันไม่เชื่อว่าฉันควรป้องกันไม่ให้หัวข้อทั้งหมดหายไป แก้ไข:ฉันคิดว่าฉันควรเพิ่มที่ฉันไม่ได้เริ่มค้นหาวัยเด็กของฉันสำหรับสาเหตุมันเป็นวิธีการแก้ปัญหาที่ชี้ให้ฉันไปที่สาเหตุ อนิจจาไม่ได้ทำให้ดีที่สุดเพื่อแก้ไข บริษัท (ซึ่งพังทลายในขณะที่ฉันจากไปและยุบวงไปอย่างสิ้นเชิงในอีกหนึ่งปีต่อมา) หยั่งรากลึกในความจริงที่ว่าในวัยเด็กของฉันฉันถึงจุดหนึ่งในการแก้ไขความสัมพันธ์ของพ่อแม่ มันเป็นความล้มเหลวของฉันที่เห็นอกเห็นใจแทนที่จะเป็นกรณีที่สิ้นหวังอย่างที่สุดและฉันก็ไม่เห็นวิธีที่จะอธิบายสิ่งนั้นได้โดยไม่ต้องพูดถึงวัยเด็ก แต่ฉันก็สามารถพูดได้อย่างสมบูรณ์แบบโดยไม่ต้องร้องไห้ออกมา ที่กล่าวว่าใช่ฉันรู้ว่าฉันเขียนถึงพวกคุณในฐานะเพื่อนไม่ใช่นายจ้างในตอนนี้นั่นคือเหตุผลที่ฉันแสดงความไม่ไว้วางใจในตัวคุณโดยใช้บัญชีขาจร. oO (... ) ใช่ฉันวางแผนที่จะเผยแพร่รหัส OSS บางอย่างก่อนที่ฉันจะใช้ทุกที่ แก้ไข 2:ฉันเป็นคนเยอรมันและจะสมัครที่ บริษัท เยอรมันดังนั้น "ความจริงเชิงสร้างสรรค์" จึงไม่ใช่ทางเลือก สำหรับคำตอบที่เลือก:ฉันเลือก Renesis มากกว่า Pierre เพราะในขณะที่หลังทำผลงานได้อย่างยอดเยี่ยมโดยที่ฉันไม่ควรยอมแพ้และให้คะแนนกับฉันในการเสริมทักษะทางสังคมด้วย Renesis ตอบคำถามของฉันอย่างแท้จริง โดยการสรุปปัจจัยสำคัญที่เกี่ยวข้อง

6
อะไรคือคำอธิบายที่ดีที่สุดเกี่ยวกับเรื่องคะแนนคืออะไร
เราเริ่มใช้ Story Points ที่นี่เพื่อการพัฒนาแบบ Agile ของเรา แต่ฉันคิดว่ามันยากที่จะอธิบายและไม่สามารถหาคำตอบที่ชัดเจนสำหรับสิ่งที่พวกเขาเป็น สิ่งที่ดีที่สุดที่ฉันสามารถทำได้คือชี้ไปที่เว็บไซต์อื่น ๆ (เช่นhttp://blog.mountaingoatsoftware.com/tag/story-points ) และให้ลักษณะทั่วไปที่คลุมเครือของสิ่งที่พวกเขาเป็น ฉันกำลังมองหาคำอธิบายที่ดีพร้อมตัวอย่างการใช้งานที่จะเป็นประโยชน์สำหรับผู้อื่นในการใช้งาน มีแหล่งข้อมูลที่ดีสำหรับการอธิบายประเด็นหรือไม่?

16
คุณควรเสียสละการอ่านรหัสด้วยรหัสที่มีประสิทธิภาพหรือไม่ [ปิด]
คุณควรเสียสละการอ่านรหัสด้วยรหัสที่มีประสิทธิภาพหรือไม่ เช่น 3 บรรทัดของรหัสเป็น 1 บรรทัด ฉันอ่านในCode Craftโดย Pete Goodliffe ว่าการอ่านเป็นกุญแจสำคัญ ความคิดของคุณ?

10
กำจัดหมายเลขเวทย์มนตร์: เมื่อไหร่เวลาที่จะพูดว่า "ไม่"
เราทุกคนทราบดีว่าเลขอาถรรพ์ (ค่าฮาร์ดโค้ด) สามารถสร้างความหายนะในโปรแกรมของคุณโดยเฉพาะเมื่อถึงเวลาที่จะแก้ไขส่วนของรหัสที่ไม่มีความคิดเห็น แต่คุณจะวาดเส้นที่ไหน ตัวอย่างเช่นหากคุณมีฟังก์ชันที่คำนวณจำนวนวินาทีระหว่างสองวันคุณจะเปลี่ยนหรือไม่ seconds = num_days * 24 * 60 * 60 กับ seconds = num_days * HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE ณ จุดใดที่คุณตัดสินใจว่ามันชัดเจนอย่างชัดเจนว่าค่าฮาร์ดโค้ดมีความหมายอย่างไรและทิ้งไว้คนเดียว?

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


30
เป็นเรื่องปกติไหมที่จะพิมพ์รหัสลงบนกระดาษ? [ปิด]
ฉันชอบที่จะเก็บรหัสบรรทัดไว้ไม่เกิน 80 ตัวอักษรเพราะ: ฉันไม่ต้องทำการเลื่อนแนวนอน ฉันรู้ว่าบรรทัดนั้นอาจซับซ้อนเกินไปหากเกินขีด จำกัด นี้ และ มันพิมพ์ออกมาอย่างสวยงามบนกระดาษ เกี่ยวกับสิ่งหลังฉันได้พบเพียงไม่กี่คนที่พิมพ์รหัสเพื่อดู (ฉันเป็นหนึ่งในนั้น) ดังนั้นวิธีการทั่วไปในการพิมพ์รหัส?

10
ฉันควรใช้คำสั่งสลับหรือยาวถ้า…โซ่อื่น ๆ ?
บ่อยครั้งที่ฉันได้ยินเกี่ยวกับคำสั่ง switch มันวางตัวเป็นวิธีการแทนที่ยาวถ้า ... else chains แต่ดูเหมือนว่าเมื่อฉันใช้คำสั่งเปลี่ยนฉันกำลังเขียนรหัสเพิ่มเติมที่ฉันจะเขียนถ้า ... อื่น นอกจากนี้คุณยังมีปัญหาอื่น ๆ เช่นการรักษาตัวแปรทั้งหมดสำหรับการโทรทั้งหมดอยู่ในขอบเขตเดียวกัน นี่คือโค้ดบางส่วนที่แทนโฟลว์ที่ฉันเขียนตามปกติ ( ขอบคุณ diam ) String comment; // The generated insult. int which = (int)(Math.random() * 3); // Result is 0, 1, or 2. if (which == 0) { comment = "You look so much better than usual."; …

8
ทำไมหนังสือ. Net พูดถึงการจัดสรรหน่วยความจำ stack vs heap
ดูเหมือนว่าหนังสือ. net ทุกเล่มจะพูดถึงประเภทค่าเทียบกับประเภทการอ้างอิงและทำให้เป็นจุด (มักจะไม่ถูกต้อง) ซึ่งเป็นที่เก็บแต่ละประเภท - กองหรือกองซ้อน โดยปกติจะอยู่ในบทแรก ๆ และนำเสนอเป็นข้อเท็จจริงที่สำคัญบางอย่าง ฉันคิดว่ามันครอบคลุมแม้ในการสอบรับรอง ทำไม stack vs heap ถึงสำคัญสำหรับนักพัฒนา. net คุณจัดสรรสิ่งของและใช้งานได้ใช่ไหม
36 .net 

11
การเขียนโค้ดขั้นต่ำเพื่อผ่านการทดสอบหน่วย - โดยไม่ต้องโกง!
เมื่อทำการทดสอบ TDD และเขียนการทดสอบหน่วยหนึ่งจะต่อต้านการกระตุ้นให้ "โกง" เมื่อเขียนรหัสซ้ำ "ครั้งแรกของ" การใช้งาน "ที่คุณกำลังทดสอบอยู่ได้อย่างไร ตัวอย่างเช่น: ฉันจะต้องคำนวณแฟคทอเรียลของตัวเลข ฉันเริ่มต้นด้วยการทดสอบหน่วย (ใช้ MSTest) สิ่งที่ชอบ: [TestClass] public class CalculateFactorialTests { [TestMethod] public void CalculateFactorial_5_input_returns_120() { // Arrange var myMath = new MyMath(); // Act long output = myMath.CalculateFactorial(5); // Assert Assert.AreEqual(120, output); } } ฉันเรียกใช้รหัสนี้และมันล้มเหลวเนื่องจากCalculateFactorialวิธีการไม่ได้อยู่ ดังนั้นตอนนี้ฉันเขียนการวนซ้ำครั้งแรกของรหัสเพื่อใช้วิธีการภายใต้การทดสอบการเขียนรหัสขั้นต่ำที่ จำเป็นในการผ่านการทดสอบ สิ่งคือฉันอยากจะเขียนต่อไปนี้: public class MyMath …
36 unit-testing  tdd 

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