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

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

13
การเขียนโปรแกรมระดับต่ำ - มีอะไรให้ฉันบ้าง [ปิด]
เป็นเวลาหลายปีที่ฉันได้พิจารณาการขุดลงไปในสิ่งที่ฉันคิดว่าเป็นภาษา "ระดับต่ำ" สำหรับฉันนี่หมายถึง C และการชุมนุม อย่างไรก็ตามฉันยังไม่มีเวลาสำหรับเรื่องนี้และมันก็ไม่จำเป็นเลย ตอนนี้เพราะฉันไม่เห็นความจำเป็นที่จะเกิดขึ้นฉันรู้สึกว่าฉันควรจะกำหนดเวลาในการศึกษาหัวข้อหรือวางแผนตลอดไป ตำแหน่งของฉัน ในช่วง 4 ปีที่ผ่านมาฉันได้มุ่งเน้นไปที่ "เทคโนโลยีเว็บ" ซึ่งอาจเปลี่ยนแปลงได้และฉันเป็นผู้พัฒนาแอปพลิเคชันซึ่งไม่น่าจะเปลี่ยนแปลงได้ ในการพัฒนาแอพพลิเคชั่นฉันคิดว่าการใช้งานเป็นสิ่งที่สำคัญที่สุด คุณเขียนแอปพลิเคชันที่จะ "บริโภค" โดยผู้ใช้ ยิ่งแอปพลิเคชั่นเหล่านั้นใช้งานได้มากเท่าไหร่คุณก็ยิ่งสร้างมูลค่าได้มากขึ้นเท่านั้น เพื่อให้บรรลุการใช้งานที่ดีฉันเชื่อว่าสิ่งต่อไปนี้เป็นไปได้ การออกแบบที่ดีดี: คุณสมบัติที่ถึงผู้ใช้สามารถเข้าถึงได้ผ่านส่วนต่อประสานผู้ใช้ที่มีความคิดดี ความถูกต้อง : การออกแบบที่ดีที่สุดไม่คุ้มค่าอะไรเลยหากใช้ไม่ถูกต้อง ความยืดหยุ่น : แอปพลิเคชัน A ควรมีการพัฒนาอยู่ตลอดเวลาเพื่อให้ผู้ใช้ไม่จำเป็นต้องเปลี่ยนไปใช้แอปพลิเคชัน B อื่นที่มีคุณสมบัติใหม่ที่ A สามารถนำไปใช้ได้ แอปพลิเคชันที่แก้ไขปัญหาเดียวกันไม่ควรมีคุณสมบัติแตกต่างกัน แต่ใช้หลักปรัชญา ประสิทธิภาพการทำงาน : ประสิทธิภาพก่อให้เกิดประสบการณ์การใช้งานที่ดี แอปพลิเคชันตอบสนองต่อความนึกคิดเสมอและทำงานได้อย่างรวดเร็วพอสมควร (ขึ้นอยู่กับความถี่) มูลค่าของการปรับประสิทธิภาพให้ดีขึ้นกว่าจุดที่ผู้ใช้สงสัย ฉันคิดว่าการเขียนโปรแกรมระดับต่ำจะไม่ช่วยฉันยกเว้นเรื่องประสิทธิภาพ แต่การเขียนแอพทั้งหมดในภาษาระดับต่ำเพื่อประสิทธิภาพการทำงานก็คือการปรับให้เหมาะสมก่อนเวลาสำหรับฉัน คำถามของฉัน การเขียนโปรแกรมระดับต่ำสามารถสอนอะไรฉันได้ภาษาอื่นจะไม่สอนฉัน ฉันขาดอะไรบางอย่างหรือเป็นเพียงทักษะที่ใช้ในการพัฒนาแอพพลิเคชั่นน้อยมาก? โปรดเข้าใจว่าฉันไม่ได้ตั้งคำถามเกี่ยวกับคุณค่าของ C และชุดประกอบ เป็นเพียงแค่ในชีวิตประจำวันของฉันฉันมีความสุขมากที่ความสลับซับซ้อนทั้งหมดของโลกนั้นถูกแยกออกไปและจัดการให้ฉัน …

16
คุณมีห้องสมุด 'misc utils' ของคุณเองหรือไม่? ส่วนไหนที่คุณภูมิใจมากที่สุด [ปิด]
ฉันรู้ว่าพวกเราหลายคนรักษาห้องสมุดส่วนตัวเล็ก ๆ ของเราเองด้วยเครื่องมือและโปรแกรมอรรถประโยชน์ที่เราใช้บ่อย ๆ ฉันมีของฉันตั้งแต่ฉันอายุ 16 ปีดังนั้นมันจึงมีขนาดค่อนข้างใหญ่ บางสิ่งที่ฉันเขียนได้ถูกเพิ่มลงในเฟรมเวิร์ก ฉันเขียนการนำต้นไม้แสดงออกมาใช้เล็กน้อยเพื่อใช้กับอัลกอริธึมทางพันธุกรรมมานานก่อน LINQ ซึ่งฉันค่อนข้างชอบและภูมิใจในเวลานั้นแน่นอนว่ามันไร้ประโยชน์อย่างแน่นอน แต่เมื่อเร็ว ๆ นี้ฉันได้ผ่านมันไปแล้วและอัปเกรดเป็น. NET 4.0 และกระตุ้นความสนใจอีกครั้ง ดังนั้นฉันอยากรู้ว่าคุณใช้ห้องสมุดของคุณเพื่ออะไร บางทีเราอาจได้ไอเดียเจ๋ง ๆ บางอย่างมาเพื่อตัวอย่างเล็ก ๆ น้อย ๆ ที่มีประโยชน์และแบ่งปันกับพวกเรา ดังนั้นคำถามของฉันคือ: คุณมีห้องสมุดสาธารณูปโภคอื่น ๆ หรือไม่? ส่วนไหนที่คุณภูมิใจมากที่สุดและเพราะอะไร ยกตัวอย่างรหัสถ้าคุณชอบ :-)

30
คุณได้อ่านอะไรบ้างที่เป็นแรงบันดาลใจและชี้นำคุณในฐานะโปรแกรมเมอร์ [ปิด]
ยกตัวอย่างเช่นการเป็นผู้เริ่มต้นผมพบมากของแรงบันดาลใจและทิศทางจากการอ่านโพสต์นี้โดยไบรอันวูดส์

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

3
การเรียกเก็บเงินตามสัญญา - คุณจะจัดการกับ 'เวลาเรียนรู้' อย่างไร
ดังนั้นคุณต้องทำสัญญาที่คุณมีประสบการณ์ที่แข็งแกร่งด้วย 75% ของเทคโนโลยีที่จำเป็น คุณจัดการเวลาของคุณในการเรียนรู้อีก 25% ได้อย่างไร ทำงานเป็นเวลาเรียกเก็บเงินได้หรือไม่ เปิดเผย 25% ในสัญญาเป็น 'การวิจัย' หรือไม่ การเรียนรู้ตามเวลาของฉันเอง (ไม่ถูกเรียกเก็บเงิน) หรือไม่? ไม่ใช้สัญญา (มีขนาดใหญ่เกินไปที่ไม่รู้จักสำหรับฉันและลูกค้า)? ในตอนท้ายของเรื่องนี้ฉันได้ยินเรื่องราวเกี่ยวกับ Mark Cuban (เศรษฐีดัลลัสผู้เริ่มต้น Broadcast.com และขายให้กับ Yahoo!) เมื่อเขาอยู่ที่ Indiana University มีคนถามเขาว่าเขาสามารถสร้างแอพธุรกิจให้พวกเขาได้หรือไม่และเขาก็พูดว่า "ใช่" ทันที ... เขาไม่รู้ว่าทำอย่างไร ดังนั้นเขาจึงซื้อหนังสือพักค้างคืนศึกษาและเขียนรหัส ... เขาทำมันเสร็จ (ฉันแน่ใจว่ามันน่าเกลียด) มันใช้ได้ผลและเขาก็ยังคงไปต่อ ฉันไม่แนะนำให้ทำสัญญาด้วยวิธีนี้ (เน้น!) แต่มีพื้นกลาง มันคืออะไรและคุณจะเรียกเก็บเงินค่าที่ไม่รู้จัก (หรือคุณ) ได้อย่างไร?

6
ขอบเขตคงที่ + กำหนดเวลาตายตัว + สัญญาราคาคงที่ที่เคยทำเพื่อทำงานกับ“ เปรียว” หรือไม่?
บางโครงการที่เราใช้ภายในใช้คือ Scrum ในขณะที่ยังคงเป็น "แก้ไขทุกอย่าง" ให้กับลูกค้า เราประสบกับความสำเร็จที่หลากหลายในส่วนของเรา (ลูกค้าชอบการมองเห็นแผนภูมิการเผาไหม้) ประเภทของโครงการที่เราทำงานสามารถทำได้สำเร็จโดยใช้วิธีการแบบว่องไวหรือไม่
32 agile  scrum 

16
คุณคิดว่าการเปิดรับ BASIC สามารถทำลายจิตใจของคุณหรือไม่? [ปิด]
มันเป็นไปไม่ได้ในทางปฏิบัติที่จะสอนการเขียนโปรแกรมที่ดีให้กับนักเรียนที่มีการเปิดเผยก่อนหน้าพื้นฐาน: เป็นโปรแกรมเมอร์ที่มีศักยภาพพวกเขาจะถูกทำลายจิตใจจิตใจเกินความหวังของการฟื้นฟู - Edsger W. Dijkstra ฉันมีความเคารพอย่างลึกซึ้งต่อ Dijkstra แต่ฉันไม่เห็นด้วยกับทุกสิ่งที่เขาพูด / เขียน ฉันไม่เห็นด้วยเป็นพิเศษกับใบเสนอราคานี้ในบทความที่เชื่อมโยงเขียนเมื่อ 35 ปีที่แล้วเกี่ยวกับการใช้งานดาร์ทเมาท์เบสิค เพื่อนร่วมงานหรือโปรแกรมเมอร์ของฉันหลายคนเริ่มต้นด้วย BASIC คำถามด้านล่างมีคำตอบที่ระบุว่าโปรแกรมเมอร์หลายคนมีประสบการณ์ครั้งแรกในการเขียนโปรแกรมที่ BASIC AFAIK โปรแกรมเมอร์ที่ดีหลายคนเริ่มต้นที่การเขียนโปรแกรมพื้นฐาน ฉันไม่ได้พูดถึง Visual Basic หรือภาษา "ทันสมัย" อื่น ๆ ของ BASIC ที่ทำงานบนเครื่องที่เต็มไปด้วยทรัพยากร ฉันกำลังพูดถึง BASIC รุ่นเก่าที่ทำงานบนคอมพิวเตอร์ "ของเล่น" ที่โปรแกรมเมอร์ต้องกังวลเกี่ยวกับการบันทึกตัวเลขขนาดเล็กที่ไม่จำเป็นต้องคำนวณเป็นสตริงเพื่อบันทึกไบต์ที่เลวร้ายเพราะคอมพิวเตอร์มีเพียงไม่กี่ร้อยหรือ ต้องใช้ goto ที่คำนวณได้เนื่องจากขาดคุณสมบัติที่มีประสิทธิภาพมากกว่าและสิ่งอื่น ๆ อีกมากมายที่ผู้เขียนโปรแกรมต้องคิดมากก่อนที่จะทำอะไรบางอย่างและบังคับให้โปรแกรมเมอร์มีความคิดสร้างสรรค์ หากคุณเคยมีประสบการณ์กับ BASIC แบบเก่าบนเครื่องที่มีทรัพยากร จำกัด (จำไว้ว่าไมโครคอนโทรลเลอร์ที่เรียบง่ายในปัจจุบันมีทรัพยากรมากกว่าคอมพิวเตอร์ในปี 1975 คุณคิดว่า BASIC ช่วยให้จิตใจของคุณหาวิธีแก้ปัญหาที่ดีกว่า เช่นวิศวกรหรือเบสิกลากคุณไปยังด้านมืดของการเขียนโปรแกรมและทำลายจิตใจคุณไหม? …

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

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


10
การเข้าถึงสถานะการเขียนโปรแกรมระดับกลาง [ปิด]
ฉันเป็นวิศวกรซอฟต์แวร์ที่มีตำแหน่งการเขียนโปรแกรมใน VBA (แม้ว่าฉันจะไม่พิจารณาประสบการณ์ที่ 'จริง' เพราะมันเป็นรุ่นทดลองใช้และข้อผิดพลาด!), Perl w / CGI, C # และ ASP.NET สองหลังเป็นระดับปริญญาตรีโดยที่ฉันเข้าสู่ 'โลกแห่งความจริง' ฉันออกจากวิทยาลัย 2 ปีและมีประสบการณ์ 5 ปี (รวม) ในภาษาที่ฉันพูดถึง อย่างไรก็ตามเมื่อพูดถึงประวัติการทำงานของฉันฉันสามารถวาง C # ลงเพียง 2 ปีเท่านั้นและน้อยกว่าหนึ่งปีสำหรับ ASP.NET ฉันรู้สึกว่าฉันรู้ C # แต่ฉันยังต้องใช้เวลาในการดำเนินการ 'วิธีการนี้ทำอะไร?' ในขณะที่วิศวกรระดับสูงกว่าบางคนสามารถพูดได้ทันที "โอ้วิธี X ทำสิ่งนี้โดยไม่ต้องดูเลย วิธีการก่อน " ดังนั้นฉันจึงรู้ด้วยสังเกตุว่ามีอ่าวอยู่ตรงนั้น แต่ฉันไม่แน่ใจว่าจะเชื่อมมันอย่างไร ฉันเริ่มเขียนโปรแกรมในProject Eulerแล้วฉันก็หยิบหนังสือเกี่ยวกับรูปแบบการออกแบบ แต่ฉันก็ยังรู้สึกว่าฉันใช้น้ำในแต่ละวันมากกว่าจะก้าวไปข้างหน้า ไม่ได้หมายความว่าฉันไม่รู้สึกว่าตัวเองก้าวหน้าไปแค่หมายความว่าถ้าฉันมาทุกวันฉันก็ยังเห็นยอดเขาอยู่ไกล ๆ คำถามของฉันคือ: คุณเอาชนะที่ราบสูงนี้ได้อย่างไร มันใช้เวลานานเท่าไหร่ …

1
ทำไมเครื่องหมายรูปหมวกใช้สำหรับ XOR แทนการยกกำลัง?
ไม่ว่ามันจะเป็นปัญหาสำหรับทุกคนที่เคยประสบปัญหาเกี่ยวกับวากยสัมพันธ์นี้มาก่อน แต่ฉันเห็นความสับสนจำนวนมากที่เกิดขึ้นจากการใช้คาเร็ต ( ^) เนื่องจากการทำงานของ XOR แทนการปฏิบัติการยกกำลังทางคณิตศาสตร์ที่ยอมรับกันอย่างกว้างขวาง แน่นอนว่ามีหลายแห่งที่อธิบายและแก้ไขการใช้คาเร็ต (mis-) แต่ฉันไม่ได้เจอแหล่งข้อมูลที่ชัดเจนว่าทำไมคาเร็ตได้รับความหมายที่แตกต่างกัน มันเป็นเรื่องของความสะดวกสบายหรือไม่? อุบัติเหติ? เห็นได้ชัดว่าการใช้เหตุผลอาจแตกต่างกันไปในแต่ละภาษาดังนั้นข้อมูลใด ๆ ก็ตามจะมีความเฉียบแหลม

10
การใช้ GUID เป็นคีย์หลัก
โดยทั่วไปฉันใช้รหัสการเพิ่มอัตโนมัติเป็นคีย์หลักในฐานข้อมูล ฉันพยายามเรียนรู้ประโยชน์ของการใช้ GUID ฉันได้อ่านบทความนี้: https://betterexplained.com/articles/the-quick-guide-to-guids/ ฉันรู้ว่า GUID เหล่านี้ใช้เพื่อระบุวัตถุในระดับแอปพลิเคชัน พวกเขายังเก็บไว้เป็นคีย์หลักในระดับฐานข้อมูล ตัวอย่างเช่นสมมติว่าฉันมีคลาสต่อไปนี้: public class Person { public GUID ID; public string Name; .. //Person Methods follow } ว่าฉันต้องการสร้างคนใหม่ในหน่วยความจำแล้วใส่คนลงในฐานข้อมูล ฉันขอทำสิ่งนี้ได้ไหม Person p1 = new Person(); p1.ID=GUID.NewGUID(); PersonRepository.Insert(p1); สมมติว่าฉันมีฐานข้อมูลที่ประกอบด้วยแถวนับล้านแถวที่มี GUID เป็นคีย์หลัก สิ่งนี้จะไม่ซ้ำกันหรือไม่ ฉันเข้าใจแม้แต่ GUID อย่างถูกต้องหรือไม่ ผมอ่านบทความนี้ก่อนหน้านี้: http://enterprisecraftsmanship.com/2014/11/15/cqs-with-database-generated-ids/ มันทำให้ฉันสับสนเล็กน้อยตามที่ปรากฏเพื่อแนะนำสื่อกลางที่มีความสุขระหว่าง GUID และจำนวนเต็มเป็นคีย์หลัก แก้ไข 11/06/18 ฉันเชื่อว่า Guids …

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

3
วิธีการแสดง (enum) ประเภทใน API สาธารณะ
ฉันกำลังทำงานกับ API อย่างง่ายที่ฉันต้องการใช้สำหรับลูกค้าของตัวเองและเพื่อเปิดให้ประชาชนในอนาคต ฉันมีวัตถุ "รายการ" ซึ่งสามารถมี "ประเภท" ที่แตกต่างกัน ประเภทคือ C "typedef enum" ในขณะที่ฉันมี: typedef enum { ItemTypeBool, ItemTypeNumber, ItemTypeDate, } ItemType; (ฉันอาจเพิ่มบางอย่างในอนาคต) ฉันสงสัยว่าฉันควรจะถ่ายโอนมันเป็นจำนวนเต็มหรือตามที่กำหนดไว้ "สตริง" JSON จะเป็น: สำหรับจำนวนเต็ม: { "name": "The name", "type": 0, ... } สำหรับสตริง: { "name": "The name" "type": "boolean" ... } ฉันสงสัยว่ามีวิธีปฏิบัติที่ดีที่สุดสำหรับสิ่งนี้หรือไม่ การรักษาจำนวนเต็มจะลดความซับซ้อนของรหัสเล็กน้อยและลดแบนด์วิดธ์ แต่สตริงจะง่ายขึ้นสำหรับนักพัฒนาที่จะจำ ฉันจำได้ว่าฉันทำงานในโครงการและฉันต้องจำ 1 = …

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