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

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

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

16
ฉันควรดูแลสภาพการแข่งขันซึ่งแทบไม่มีโอกาสเกิดขึ้นจริงหรือ
ลองพิจารณาบางอย่างเช่นแอปพลิเคชัน GUI ที่เธรดหลักกำลังอัปเดต UI เกือบจะทันทีและเธรดอื่น ๆ กำลังโพลข้อมูลผ่านเครือข่ายหรือสิ่งที่รับประกันว่าจะใช้เวลา 5-10 วินาทีเพื่อให้งานเสร็จ ฉันได้รับคำตอบที่แตกต่างกันสำหรับเรื่องนี้ แต่บางคนบอกว่าถ้ามันเป็นสภาพการแข่งขันที่เป็นไปไม่ได้ทางสถิติไม่ต้องกังวลเลย แต่คนอื่น ๆ ก็บอกว่าถ้ามี 10 -53 % คุณไม่ได้อยู่ที่ตัวเลขนี่คือสิ่งที่ฉันเคยได้ยิน) เกี่ยวกับเวทมนตร์ของวูดูที่เกิดขึ้นเนื่องจากสภาพการแข่งขันให้ขอรับ / ปลดล็อกเธรดที่ต้องการเสมอ คุณคิดยังไง? มันเป็นวิธีการเขียนโปรแกรมที่ดีในการจัดการสภาพการแข่งขันในสถานการณ์ที่เป็นไปไม่ได้ทางสถิติหรือไม่? หรือมันจะไม่จำเป็นโดยสิ้นเชิงหรือต่อต้านการเพิ่มรหัสบรรทัดเพิ่มเติมเพื่อขัดขวางการอ่าน?

5
ข้อดีและข้อเสียของการสร้างเว็บแอปพลิเคชันหน้าเดียว [ปิด]
ฉันใกล้จะสิ้นสุดการสร้างต้นแบบ / พิสูจน์เฟสแนวคิดสำหรับโครงการด้านที่ฉันกำลังทำงานและพยายามตัดสินใจเกี่ยวกับการตัดสินใจออกแบบแอปพลิเคชันขนาดใหญ่ขึ้น แอพนี้เป็นระบบการจัดการโครงการที่ปรับให้เข้ากับกระบวนการพัฒนาที่คล่องตัวยิ่งขึ้น หนึ่งในการตัดสินใจที่ฉันต้องทำคือเลือกว่าจะใช้แอปพลิเคชั่นหลายหน้าแบบดั้งเดิมหรือแอปพลิเคชันหน้าเดียว ปัจจุบันต้นแบบของฉันคือการตั้งค่าแบบหลายหน้าแบบดั้งเดิม แต่ฉันได้ดู backbone.js เพื่อล้างข้อมูลและใช้โครงสร้างบางอย่างกับโค้ด Javascript (jQuery) ของฉัน ดูเหมือนว่าในขณะที่ backbone.js สามารถใช้ในแอปพลิเคชันแบบหลายหน้าได้ ฉันกำลังพยายามหารายการข้อดีและข้อเสียของการใช้วิธีการออกแบบแอปพลิเคชันหน้าเดียว จนถึงตอนนี้ฉันมี: ข้อดี ข้อมูลทั้งหมดจะต้องพร้อมใช้งานผ่าน API บางประเภท - นี่เป็นข้อได้เปรียบที่ยิ่งใหญ่สำหรับกรณีการใช้งานของฉันเนื่องจากฉันต้องการมี API สำหรับแอปพลิเคชันของฉันอยู่ดี ตอนนี้ประมาณ 60-70% ของการโทรของฉันเพื่อรับ / อัปเดตข้อมูลจะกระทำผ่าน REST API การใช้แอปพลิเคชันหน้าเดียวจะทำให้ฉันทดสอบ REST API ของฉันได้ดีขึ้นเนื่องจากแอปพลิเคชันนั้นจะใช้งาน นอกจากนี้ยังหมายความว่าเมื่อแอปพลิเคชันเติบโตขึ้น API ของตัวเองจะเพิ่มขึ้นเนื่องจากเป็นสิ่งที่แอปพลิเคชันใช้ ไม่จำเป็นต้องเก็บรักษา API ไว้เป็นส่วนเสริมของแอปพลิเคชัน แอปพลิเคชันที่ตอบสนองได้ดีขึ้น - เนื่องจากข้อมูลทั้งหมดที่โหลดหลังจากหน้าเริ่มต้นถูกเก็บไว้ในระดับต่ำสุดและส่งในรูปแบบกะทัดรัด (เช่น JSON) การร้องขอข้อมูลโดยทั่วไปควรจะเร็วกว่าและเซิร์ฟเวอร์จะประมวลผลน้อยลงเล็กน้อย ข้อเสีย การทำสำเนารหัส …

15
เป็นเรื่องปกติหรือไม่ที่จะคิดถึงปัญหาการออกแบบเป็นเวลาหลายวันโดยที่ไม่มีการเขียนโค้ด? [ปิด]
บางครั้งฉันจ้องไปที่ช่องว่างหรือวาดภาพไอเดียและเขียนโค้ดหลอกลงบนกระดาษ จากนั้นฉันเกามันและเริ่มใหม่อีกครั้งจากนั้นเมื่อฉันคิดว่าฉันมีทางออกที่ถูกต้องสำหรับปัญหาที่ฉันเริ่มเขียนรหัส เป็นเรื่องปกติหรือเปล่าที่ต้องคิดมากเป็นเวลาหลายวันโดยไม่ต้องเขียนโค้ด? นี่เป็นสัญญาณที่บ่งบอกว่าฉันกำลังเข้าใกล้ปัญหาผิดทั้งหมดหรือไม่? มันทำให้ฉันกังวลที่จะไม่ได้รับรหัสที่เป็นรูปธรรมใด ๆ ที่เขียนใน IDE ของฉัน
52 design 

18
วิธีจัดการผู้พัฒนาที่มีทักษะการสื่อสารไม่ดี
ฉันจัดการทีมนักพัฒนาเล็ก ๆ ในแอปพลิเคชันซึ่งอยู่ในช่วงกลางของวงจรชีวิตภายใน บริษัท ใหญ่ น่าเสียดายที่นี่หมายถึงมีการแบ่งงานการเขียนโปรแกรม 30/70 เป็น "งานด้านเทคนิคอื่น ๆ " โดยทั่วไป งานนี้รวมถึง: ทำงานกับทีม DBA / Unix / Network / Loadbalancer ในงานต่างๆ การวางและจัดการคำสั่งซื้อฮาร์ดแวร์หรือโครงสร้างพื้นฐานในภูมิภาคต่างๆ กำลังรันการทดสอบที่ยังไม่ได้ย้ายไปยัง CI การวิเคราะห์ สนับสนุน / สืบสวน มันยุติธรรมที่จะบอกว่านักพัฒนาทุกคนชอบที่จะเขียนโค้ดมากกว่าที่จะทำภารกิจทางโลกมากกว่านี้ดังนั้นฉันพยายามแจกงานเขียนโปรแกรมสนุก ๆ ให้กับทีม ทีมส่วนใหญ่ได้รับการว่าจ้างเพราะถึงแม้ว่าพวกเขาอาจไม่มีทักษะการเขียนโปรแกรมยอดเยี่ยมในการเขียนคอมไพเลอร์ / เกมของตัวเอง / ระบบการซื้อขายที่มีความถี่สูง ฯลฯ พวกเขาเป็นนักสื่อสารที่ดี และค่อนข้างนำทางระบบราชการที่ซับซ้อนที่นี่ พวกเขาเป็นนักพัฒนาที่ดี แต่พวกเขาก็เป็นเจ้าหน้าที่เทคนิคที่ดีทุกด้าน อย่างไรก็ตามสมาชิกคนหนึ่งของทีมอาจมีทักษะการเขียนโค้ดโดยเฉลี่ยสูงกว่า แต่ทักษะการสื่อสารต่ำกว่าค่าเฉลี่ย ตามเนื้อผ้าผู้จัดการฝ่ายพัฒนาคนก่อนมีแนวโน้มที่จะให้งานการเขียนโปรแกรมแก่เขาและไม่ใช่งานทางโลกที่มีรายชื่อด้านบน อย่างไรก็ตามฉันไม่รู้สึกว่าสิ่งนี้ยุติธรรมสำหรับคนอื่น ๆ ในทีมที่แสดงความสามารถในการพัฒนาชุดทักษะรอบด้านที่จำเป็นสำหรับแผนกไอทีขนาดใหญ่ของธุรกิจ ฉันควรทำอย่างไรในสถานการณ์เช่นนี้? ถ้าฉันยังคงทำงานเขียนโปรแกรมให้เขาต่อไปฉันรู้ว่ามันจะเสร็จเร็วขึ้น …

20
การเขียนโปรแกรมเชิงวัตถุจริง ๆ แบบจำลองโลกแห่งความจริงหรือไม่ [ปิด]
ฉันเคยเห็นมันซ้ำแล้วซ้ำเล่าการเขียนโปรแกรมเชิงวัตถุจะขึ้นอยู่กับการสร้างแบบจำลองโลกแห่งความจริง แต่มันคืออะไร? ดูเหมือนว่าฉันจะไม่เป็นความจริงกับสิ่งใดนอกชั้นธุรกิจ คลาส GUI / คลาสการเข้าถึงข้อมูลของฉันไม่ได้จำลองสิ่งใดในโลกแห่งความเป็นจริง แม้ในชั้นธุรกิจของฉันฉันมีชั้นเรียนเช่นผู้สังเกตการณ์ผู้จัดการโรงงาน ฯลฯ ซึ่งไม่ใช่วัตถุในโลกแห่งความเป็นจริง ฉันพยายามออกแบบชั้นเรียนของฉันเพื่อใช้ประโยชน์จากสิ่งต่าง ๆ เช่น encapsulation แต่โลกแห่งความจริงนั้นห่อหุ้มหรือไม่? ในขณะที่บางวัตถุที่ฉันสร้างกำลังสร้างแบบจำลองวัตถุในโลกแห่งความเป็นจริงจะไม่ทำโค้ดล่วงหน้าของ OOP หรือไม่ ฉันสงสัยว่า OO เป็นคนแรกที่รวมแนวคิดเช่นลูกค้าในฐานรหัสของพวกเขา แต่ OO เป็นจริงเกี่ยวกับวิธีจำลองสิ่งต่าง ๆ และวิธีการสร้างแบบจำลองนั้นดูเหมือนจะไม่ได้รับแรงบันดาลใจจากโลกแห่งความเป็นจริงสำหรับฉัน ดังนั้น: การเขียนโปรแกรมเชิงวัตถุจริง ๆ จำลองโลกแห่งความจริง?

20
สถานที่ที่ดีที่สุดสำหรับโปรแกรมเมอร์ไฮสคูลที่จะสังเกตเห็นการทำงานของเขาคืออะไร? [ปิด]
ฉันเป็นนักเรียนมัธยมปลายอายุ 16 ปีที่มีความหลงใหลในการเขียนโปรแกรมคอมพิวเตอร์ ฉันอยู่ในเกรด 11 และฉันเรียนรู้มันเป็นส่วนหนึ่งของหลักสูตรของโรงเรียนเป็นเวลาประมาณ 8 เดือน ฉันไปไกลกว่าสิ่งที่ถูกสอนที่โรงเรียนและใช้แอปพลิเคชั่นที่ดีพอสมควร ภาษาที่ฉันตั้งโปรแกรมคือ C ++ บนแพลตฟอร์ม windows ในที่สุดฉันต้องการเรียนวิชาเอก CS ที่วิทยาลัยที่ดีและทำงานเป็นโปรแกรมเมอร์ คำถามเฉพาะที่ฉันมีคือ: สถานที่ที่ดีสำหรับให้ฉันสังเกตการทำงานคืออะไร มีวารสารหรือสิ่งพิมพ์สำหรับโปรแกรมเมอร์หนุ่มโดยเฉพาะหรือไม่? ถ้าไม่ใช่สิ่งตีพิมพ์มีบล็อกดีๆบ้างหรือจะเป็นการดีกว่าถ้าคุณเริ่มต้นของคุณเอง? มีอะไรอีกบ้างที่จะช่วยให้ฉันสังเกตว่าเป็นโปรแกรมเมอร์? ฉันพยายามที่จะเป็นเป้าหมายที่สุด ถ้าทั้งหมดนี้เป็น tl; dr: อะไรคือวิธีที่ดีที่สุดที่จะสังเกตว่าเป็นโปรแกรมเมอร์หนุ่ม แก้ไข: ฉันไม่ต้องการได้รับการว่าจ้างโดยตรงจากโรงเรียนมัธยมจุดมุ่งหมายคือไม่สร้างความประทับใจให้ชุมชนในฐานะโปรแกรมเมอร์มืออาชีพ นี่คือความตั้งใจที่มีต่อแอปพลิเคชั่นของวิทยาลัยที่คนอื่นมองเห็นและวิจารณ์งานของคุณจะปรับปรุงใบสมัคร ฉันไม่ต้องการหารายได้จากสิ่งที่ฉันเขียน (จนถึงตอนนี้)

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

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

10
schrödinbugคืออะไร?
นี้หน้าวิกิพีเดียบอกว่า: schrödinbugเป็นบั๊กที่ปรากฏขึ้นหลังจากที่มีคนอ่านซอร์สโค้ดหรือใช้โปรแกรมในลักษณะที่ผิดปกติสังเกตว่ามันไม่ควรทำงานในสถานที่แรก ณ จุดที่โปรแกรมหยุดทำงานทันทีสำหรับทุกคนจนกว่าจะได้รับการแก้ไข ไฟล์ศัพท์แสงเพิ่ม: "แม้ว่า ... ฟังดูเป็นไปไม่ได้มันเกิดขึ้นบางโปรแกรมมีการซ่อนschrödinbugsแฝงมานานหลายปีแล้ว" สิ่งที่กำลังพูดถึงนั้นคลุมเครือมาก .. ใครสามารถให้ตัวอย่างของวิธีschrödinbugเป็นอย่างไร (เช่นกับสถานการณ์สมมติ / ชีวิตจริง)
52 bug 

11
มีหนังสือบัญญัติคณิตศาสตร์สำหรับโปรแกรมเมอร์หรือไม่ [ปิด]
ฉันเป็นโปรแกรมเมอร์ที่สอนตัวเอง ฉันไม่เก่งคณิตศาสตร์ คำแนะนำอะไรที่คุณสามารถให้เพื่อพัฒนาทักษะทางคณิตศาสตร์ของฉันเพื่อที่ฉันจะไม่รู้สึกปลอดภัยกับโปรแกรมเมอร์ของฉัน? ขั้นตอนหรือแนวทางใดบ้างที่คุณสามารถแนะนำเพื่อพัฒนาทักษะทางคณิตศาสตร์ของฉัน มีหนังสือที่มีมาตรฐาน de-พฤตินัยสำหรับอธิบายวิธีปฏิบัติที่ดีที่สุดวิธีการออกแบบและข้อมูลที่เป็นประโยชน์อื่น ๆ เกี่ยวกับคณิตศาสตร์สำหรับโปรแกรมเมอร์? หนังสือเล่มไหนที่ทำให้มันพิเศษ?
52 math 

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

1
คุณออกแบบโปรแกรมใน Haskell หรือภาษาโปรแกรมภาษาอื่น ๆ
ฉันมีประสบการณ์ในการเขียนโปรแกรมเชิงวัตถุเช่น c # หรือ ruby ฉันรู้วิธีออกแบบโปรแกรมในลักษณะเชิงวัตถุวิธีสร้างคลาสและวัตถุและวิธีกำหนดความสัมพันธ์ระหว่างพวกเขา ฉันรู้รูปแบบการออกแบบด้วย คนเขียนโปรแกรมที่ใช้งานได้อย่างไร พวกเขาจะเริ่มอย่างไร มีรูปแบบการออกแบบสำหรับภาษาที่ใช้งานได้หรือไม่? วิธีการเช่นการเขียนโปรแกรมที่รุนแรงหรือการพัฒนาที่คล่องตัวสามารถใช้กับภาษาที่ใช้งานได้หรือไม่?

18
ดำเนินการโครงการให้สำเร็จแม้จะมีการจัดการที่เป็นมิตรหรือไม่ [ปิด]
ฉันทำงานให้กับ บริษัท ย่อยของ บริษัท ใหญ่ระดับโลก นี่ไม่ใช่ บริษัท ย่อยตั้งแต่ต้นมันเป็น บริษัท ที่ซื้อโดย บริษัท ขนาดใหญ่ ดูเหมือนว่าเราจะมุ่งหน้าไปสู่ความตายในเดือนมีนาคมและฉันสงสัยว่ามีอะไรที่ฉัน (หรือทีมของฉัน) สามารถทำได้เพื่อแก้ไขปัญหาการจัดการหรือทำโครงการให้เสร็จทั้ง ๆ ที่พวกเขาทำ เป็นสถานการณ์WTF รายวันทั่วไป: กำหนดเวลาไม่สมจริง (การจัดการ "ประมาณ" 6 เดือนทีมนักพัฒนาต้องการขั้นต่ำ 18 เดือน) การประชุมประจำวันนานสูงสุด 3 ชั่วโมงลดกำลังการผลิตของเรา ผู้บริหารปฏิเสธที่จะขยับตามกำหนดเวลาเพราะพวกเขาต้องการดูดีกับเจ้าของคนใหม่ นักพัฒนาถูกรังแกถูกกล่าวหาว่าไร้ความสามารถใส่ "กำแพงแห่งความละอาย" ฯลฯ หัวหน้าทีมเพิ่งลาออกไปและขวัญกำลังใจอยู่ในระดับต่ำตลอดเวลา ฉันต้องการจากไป - ทีม dev ส่วนใหญ่กำลังพิจารณาอยู่ - แต่ฉันลังเลที่จะลาออก ฉันต้องการเงินจริง ๆ และฉันก็อยู่ที่นี่เพียงระยะเวลาสั้น ๆ (5 เดือน) หลังจากระยะเวลาการว่างงานดังนั้นการเลิกจ้างในตอนนี้อาจยกธงสีแดงให้กับนายจ้างในอนาคต มีกลยุทธ์ใดบ้างที่อาจมีประสิทธิผลในการเสริมสร้างความร่วมมือจากผู้บริหารหรืออย่างน้อยก็ลดการหยุดชะงักที่เกิดขึ้นอย่างต่อเนื่อง? แก้ไข: …

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

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