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

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

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

30
โปรแกรมเมอร์ในตะวันตกเห็นโปรแกรมเมอร์ในตะวันออกได้อย่างไร
อีกครึ่งหนึ่งของคำถามนี้: โปรแกรมเมอร์ในภาคตะวันออกเห็นโปรแกรมเมอร์ในตะวันตกได้อย่างไร ภาคตะวันออกของโลก (อินเดีย / จีน / ฟิลิปปินส์) ส่วนใหญ่ให้บริการเอาท์ซอร์สไปยังโลกตะวันตก (สหรัฐอเมริกาและยุโรป) คุณมีประสบการณ์ในการทำงานกับทีมในต่างประเทศหรือไม่? ถ้าใช่มันเป็นอย่างไร คุณมีความคิดเห็นทั่วไปหรือความคิดเห็นเกี่ยวกับโปรแกรมเมอร์จากตะวันออก (เช่นร่วมมือกันส่งตรงเวลาหรือทำงานที่มีคุณภาพหรือไม่) สิ่งเหล่านี้มีพื้นฐานมาจากอะไร?
101 teamwork 

30
อะไรคือสิ่งที่บ้าคลั่งที่สุดโง่ที่สุดที่ลูกค้า / เจ้านายขอให้คุณทำ [ปิด]
ดูชื่อเรื่อง แต่ฉันถามจากมุมมองทางเทคนิคไม่ใช่ พาหลานสาวพรหมจารีอายุ 40 ปีของฉันออกเดทหรือถูกไล่ออก

25
ควรใช้การตรวจสอบความถูกต้องของที่อยู่อีเมลไกลแค่ไหน
ฉันสงสัยว่าผู้คนควรตรวจสอบที่อยู่อีเมลได้ไกลแค่ไหน ฟิลด์ของฉันคือการพัฒนาเว็บเป็นหลัก แต่สิ่งนี้ใช้ได้กับทุกที่ ฉันเห็นบางแนวทางแล้ว: เพียงตรวจสอบว่ามี "@" อยู่ซึ่งตายง่าย แต่แน่นอนว่าไม่น่าเชื่อถือ การทดสอบ regex ที่ซับซ้อนมากขึ้นสำหรับรูปแบบอีเมลมาตรฐาน regex เต็มรูปแบบกับRFC 2822 - มีปัญหากับเรื่องนี้ก็คือมักจะเป็นอีเมลอาจจะถูกต้อง แต่มันอาจจะไม่ได้เป็นสิ่งที่ผู้ใช้มีความหมาย การตรวจสอบ DNS การตรวจสอบ SMTP ตามที่หลายคนอาจรู้ (แต่หลายคนไม่เข้าใจ) ที่อยู่อีเมลอาจมีการเปลี่ยนแปลงที่แปลกประหลาดมากมายที่คนส่วนใหญ่มักจะไม่พิจารณา (ดูRFC 2822 3.4.1 ) แต่คุณต้องคิดถึงเป้าหมายของ การตรวจสอบของคุณ: คุณเพียงแค่พยายามทำให้แน่ใจว่าข้อความอีเมลสามารถส่งไปยังที่อยู่หรือว่าเป็นสิ่งที่ผู้ใช้อาจจะใส่ (ซึ่งไม่น่าจะเป็นในกรณีที่คลุมเครือมากขึ้น) ที่อยู่ ') ตัวเลือกที่ฉันพิจารณาคือเพียงแค่ให้คำเตือนด้วยที่อยู่ที่ลึกลับ แต่ก็ยังอนุญาตให้ดำเนินการตามคำขอได้ แต่สิ่งนี้จะเพิ่มความซับซ้อนให้กับฟอร์มและผู้ใช้ส่วนใหญ่มีแนวโน้มที่จะสับสน ในขณะที่การตรวจสอบความถูกต้อง DNS / การตรวจสอบ SMTP ดูเหมือนไม่มีปัญหา แต่ฉันพบปัญหาที่เซิร์ฟเวอร์ DNS / เซิร์ฟเวอร์ SMTP หยุดทำงานชั่วคราวและผู้ใช้ไม่สามารถลงทะเบียนที่ไหนสักแห่งหรือเซิร์ฟเวอร์ SMTP …

30
ตำนานไร้สาระที่สุดเกี่ยวกับปัญหาการเขียนโปรแกรมคืออะไร?
หากต้องการนำไปใช้อีกทางหนึ่ง ... อะไรคือความเข้าใจผิดที่เกิดขึ้นบ่อยที่สุดและน่าผิดหวังเกี่ยวกับการเขียนโปรแกรม ท่านใดที่ตำนานอย่างกว้างขวางและยาวนาน / ความเข้าใจผิดหายากสำหรับโปรแกรมเมอร์ที่จะปัดเป่า / ที่ถูกต้อง กรุณาอธิบายว่าทำไมนี่เป็นตำนาน

5
จะจัดการประกาศเกี่ยวกับลิขสิทธิ์ในโครงการโอเพ่นซอร์สได้อย่างไร
ฉันกำลังดำเนินการและเพิ่มโครงการที่โฮสต์โดย GitHub ซึ่งมี LICENCE.md นี้ (เห็นได้ชัดว่าเป็นคำต่อคำลิขสิทธิ์ MIT): Copyright (c) 2012 [Acme Corp] Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, …

10
ฉันควรทำอย่างไรเมื่อฉันรอนานเกินไประหว่างการคอมมิท?
ฉันเป็นคนซน ... "รหัสโคบาล" มากเกินไปยังไม่พอ ตอนนี้ที่นี่ฉันมีความมุ่งมั่นอย่างมาก ใช่ฉันน่าจะทำมาตลอด แต่มันก็สายเกินไปแล้ว อะไรดีกว่า? ทำสิ่งหนึ่งที่มีขนาดใหญ่มากในรายการสิ่งที่ฉันเปลี่ยน พยายามแบ่งมันออกเป็นข้อผูกพันเล็ก ๆ ที่อาจไม่ได้รวบรวมเนื่องจากไฟล์มีการแก้ไขหลายอย่างเปลี่ยนแปลงชื่อเมธอดเพิ่มเติม ฯลฯ พยายามทำการย้อนกลับบางส่วนของไฟล์เพื่อความมุ่งมั่นที่เหมาะสมจากนั้นนำการเปลี่ยนแปลงใหม่กลับมา หมายเหตุ: ณ ตอนนี้ฉันเป็นโปรแกรมเมอร์คนเดียวที่ทำงานในโครงการนี้ บุคคลเพียงคนเดียวที่จะดูความคิดเห็นที่กระทำเหล่านี้คือฉันอย่างน้อยก็จนกว่าเราจะจ้างโปรแกรมเมอร์มากขึ้น โดยวิธีการ:ฉันใช้ SVN และ Subclipse ฉันสร้างสาขาใหม่ก่อนทำการเปลี่ยนแปลงใด ๆ เหล่านี้ ข้อมูลเพิ่มเติม : ฉันถามคำถามแยกต่างหากที่เกี่ยวข้องกับวิธีการที่ฉันได้รับในสถานการณ์นี้ในตอนแรก: วิธีเตรียมความพร้อมสำหรับการเขียนกาวของแอปพลิเคชันใหม่

13
หลายเธรดสามารถทำสิ่งใดที่เธรดเดี่ยวไม่สามารถทำได้? [ปิด]
แม้ว่าเธรดสามารถเพิ่มความเร็วในการเรียกใช้โค้ดได้จริงหรือไม่ ทุกชิ้นส่วนของรหัสสามารถทำได้โดยใช้หัวข้อเดียวหรือมีบางสิ่งที่มีอยู่ที่สามารถทำได้โดยใช้หลายกระทู้?

15
กำหนดเวลามีความคล่องตัวหรือไม่
เพื่อความชัดเจนกำหนดเวลาคือ: การ จำกัด เวลาหรือกำหนดเวลาเป็นเขตเวลาที่แคบหรือเป็นช่วงเวลาใดเวลาหนึ่งที่ต้องบรรลุวัตถุประสงค์หรือภารกิจ จากวิกิพีเดีย อาชีพการพัฒนาซอฟต์แวร์ทั้งหมดของฉันฉันได้ทำ "Agile" ซึ่งทุกที่ดูเหมือนจะมีความหมายอย่างน้อยปฏิบัติตามต่อไปนี้: การวิ่งรายสัปดาห์หรือรายปักษ์ การวางแผน Sprint ย้อนหลัง เจ้าของผลิตภัณฑ์ การทะเลาะกัน เรื่องราวของผู้ใช้ อย่างไรก็ตามทุกโครงการที่ฉันทำเคยยืนยันที่จะกำหนดเส้นตาย เนื่องจาก Agile พยายามมุ่งเน้นไปที่การวางแผนการปรับตัวความยืดหยุ่นและการเปลี่ยนแปลง กำหนดเวลา Agile คืออะไร ความคิดเห็นของฉันเองก็คือพวกเขาไม่ได้เป็นเพราะฉันเห็นกำหนดเวลาที่นำไปสู่การขาดความยืดหยุ่นและขาดคุณภาพ แต่ฉันคิดว่ามันให้คุณค่ามากกว่าที่จะมุ่งเน้นไปที่ Sprints และการส่งมอบต้น อย่างไรก็ตามดูเหมือนว่าในทุก ๆ วงการที่ฉันเข้าร่วมนี่ไม่ใช่กรณีและมีการกำหนดวันสุดท้ายเพื่อให้สอดคล้องกับการพัฒนาแบบ Agile
100 agile 

10
ฉันจะสอนคนที่ฉลาดได้อย่างไรโดยไม่มีประสบการณ์การเขียนโปรแกรมวิธีการเขียนโปรแกรม [ปิด]
ฉันถูกขอให้พาคนในแผนกไอทีของเราที่ไม่มีประสบการณ์การเขียนโปรแกรม แต่เป็นคนฉลาดและมีความสามารถและช่วยให้เขาเข้าสู่การเขียนโปรแกรมที่สมมติว่านักพัฒนาระดับเริ่มต้นสนับสนุนโปรแกรม. Net ที่มีอยู่ ฉันเชื่อว่าบุคคลนี้สามารถทำได้ แต่ฉันกำลังมองหาวิธีที่เร็วที่สุดเพื่อให้เขาเร่งความเร็ว ฉันมีความคิดมากมาย แต่ต้องการที่จะเห็นสิ่งที่คนอื่นคิด ฉันรู้ว่าสิ่งนี้จะขึ้นอยู่กับว่าเขาเรียนรู้อย่างไร แต่ฉันกำลังพูดโดยทั่วไป ดังนั้นคำถาม: สิ่งใดที่คุณคิดว่าเป็นวิธีที่ดีที่สุดในการทำให้ผู้พัฒนาที่ไม่ใช่นักพัฒนาเร็วขึ้นอย่างรวดเร็วในการพัฒนา (.Net ในกรณีนี้)
100 learning  teaching 

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

30
“ ความคิดเห็นเป็นกลิ่นรหัส” [ปิด]
ผู้ร่วมงานของผมเชื่อว่าการใด ๆ ที่ใช้ในการแสดงความคิดเห็นรหัส (เช่นไม่ใช่วิธีการรูปแบบ Javadoc หรือระดับความคิดเห็น) เป็นกลิ่นรหัส คุณคิดอย่างไร?

30
“ แนวทางปฏิบัติที่ดีที่สุด” ยอดนิยมแบบใดที่ไม่ได้ดีที่สุดเสมอไปและเพราะอะไร [ปิด]
"แนวปฏิบัติที่ดีที่สุด" มีอยู่ทั่วไปในอุตสาหกรรมของเรา การค้นหาของ Google ในเรื่อง "การเขียนโค้ดวิธีปฏิบัติที่ดีที่สุด" มีผลลัพธ์เกือบ 1.5 ล้านรายการ ความคิดที่ดูเหมือนจะนำความสะดวกสบายให้กับหลาย ๆ คน; เพียงทำตามคำแนะนำและทุกอย่างจะดีขึ้น เมื่อฉันอ่านเกี่ยวกับแนวปฏิบัติที่ดีที่สุด - ตัวอย่างเช่นฉันเพิ่งอ่านหลาย ๆ อย่างในClean Codeเมื่อเร็ว ๆ นี้ - ฉันตื่นเต้นมาก นี่หมายความว่าฉันควรใช้แบบฝึกหัดนี้ตลอดเวลาหรือไม่? มีเงื่อนไขที่แนบมา? มีสถานการณ์ที่มันอาจจะไม่ใช่แนวปฏิบัติที่ดีหรือไม่? ฉันจะรู้ได้อย่างไรอย่างแน่นอนจนกว่าฉันจะเรียนรู้เพิ่มเติมเกี่ยวกับปัญหานี้ แนวทางปฏิบัติหลายข้อที่กล่าวถึงในClean Codeไม่ถูกต้องกับฉัน แต่ฉันไม่แน่ใจว่าเป็นเพราะพวกเขาอาจไม่ดีหรือว่าเป็นเพียงความลำเอียงส่วนตัวของฉัน ฉันรู้ว่าคนที่โดดเด่นหลายคนในอุตสาหกรรมเทคโนโลยีดูเหมือนจะคิดว่าไม่มีแนวปฏิบัติที่ดีที่สุดดังนั้นอย่างน้อยความสงสัยที่จู้จี้ของฉันทำให้ฉันอยู่ใน บริษัท ที่ดี จำนวนแนวปฏิบัติที่ดีที่สุดที่ฉันได้อ่านมีจำนวนมากเกินกว่าที่จะแสดงรายการได้ที่นี่หรือถามคำถามแต่ละข้อเกี่ยวกับดังนั้นฉันจึงอยากจะพูดประโยคนี้เป็นคำถามทั่วไป: การเข้ารหัสแบบใดที่มีการระบุว่า "วิธีปฏิบัติที่ดีที่สุด" ที่เป็นที่นิยมอาจมีประโยชน์สูงสุดหรือแม้แต่เป็นอันตรายภายใต้สถานการณ์บางอย่าง สถานการณ์เหล่านั้นคืออะไรและทำไมพวกเขาถึงทำให้การฝึกฝนแย่ลง? ฉันต้องการรับฟังตัวอย่างและประสบการณ์ที่เฉพาะเจาะจง

14
ฉันควรใช้วงเล็บในคำสั่งทางตรรกะแม้ว่าไม่จำเป็น?
สมมติว่าผมมีสภาพบูลีนa AND b OR c AND dและฉันใช้ภาษาที่มีการสั่งซื้อที่สูงขึ้นของแบบอย่างการดำเนินงานกว่าAND ORฉันสามารถเขียนรหัสบรรทัดนี้: If (a AND b) OR (c AND d) Then ... แต่จริงๆแล้วมันเทียบเท่ากับ: If a AND b OR c AND d Then ... มีข้อโต้แย้งใด ๆ ในหรือต่อต้านรวมถึงวงเล็บนอก? ประสบการณ์ภาคปฏิบัติแนะนำว่ามันคุ้มค่าหรือไม่ที่จะต้องอ่านให้เข้าใจ หรือมันเป็นสัญญาณว่านักพัฒนาต้องการนั่งลงและมั่นใจในพื้นฐานของภาษาของพวกเขา?

7
Ship of Theseus นำไปใช้กับ GPL - ฉันสามารถขอโปรแกรมของฉันใหม่ได้หรือไม่ถ้าฉันเปลี่ยนชิ้นส่วนอนุพันธ์ทั้งหมด?
ฉันแปลCโปรแกรมGPLv2 เป็นPythonแต่ก็พบว่ามันยากที่จะขยายตามที่ออกแบบและเขียนซ้ำส่วนที่สำคัญของมัน โปรแกรมนี้มีโครงสร้างที่แตกต่างกันโดยสิ้นเชิง แต่มีฟังก์ชั่นการแปลหลายคำที่ใช้งานอยู่ เรือของเซอุส Paradox (ตามที่ระบุไว้จากวิกิพีเดีย) "ทำให้เกิดคำถามว่าวัตถุที่มีส่วนประกอบของมันแทนที่ยังคงพื้นฐานวัตถุเดียวกัน." หากฉันจัดการเขียนแทนฟังก์ชั่นคำต่อคำฉันจะสามารถขอใบอนุญาตที่ฉันต้องการได้หรือไม่? ที่เกี่ยวข้องฉันจะสามารถดึงสถาปัตยกรรมที่วิวัฒนาการออกมาและนำกลับมาใช้ใหม่ด้วยสิทธิ์ใช้งานอื่นได้หรือไม่ ฉันคิดว่ามันจะมีประโยชน์มากในตัวมันเอง แต่ไม่ชอบความคิดที่ว่าตอนนี้ "เสีย" ด้วยใบอนุญาต GPL ติดตาม : ฉันตัดสินใจที่จะติดต่อเจ้าของลิขสิทธิ์และได้รับอนุญาตให้สัญญาอนุญาต บางครั้งวิธีที่ดีที่สุดคือการปฏิสัมพันธ์ทางสังคมมากกว่าทางโปรแกรม!
99 licensing  gpl 

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