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

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

11
“ การแสดงความคิดเห็นตลก ๆ ” เป็นการปฏิบัติที่ไม่ดีหรือไม่? [ปิด]
ฉันต้องการถามคุณว่าการเพิ่ม "ไข่อีสเตอร์" ในเอกสารต้นฉบับนั้นไม่เป็นมืออาชีพหรือไม่ คุณอาจต้องอ่านStackOverflowโพลสำรวจความคิดเห็นตลกในเอกสารแหล่งที่มาและผมก็มีสะดุดส่วนตัวที่สิ่งดังกล่าวจำนวนมากในระหว่างการทำงานของฉันรวมทั้งตลก (หรือไม่) สิ่งที่อยู่ในเอกสาร API สาธารณะ (เช่นนี้อ่อนแอBZZZTT !! 1!สิ่ง ในเอกสารสาธารณะของ Android ฉันสามารถยกตัวอย่างได้อีกอย่างน้อยหนึ่งโหล) ฉันไม่สามารถมาถึงความเห็นขั้นสุดท้ายสำหรับตัวเองเพราะฉันมีข้อโต้แย้งที่ขัดแย้งกันด้วยตัวเอง อาร์กิวเมนต์ Pro: มันสามารถส่งเสียงเชียร์ใครบางคนและทำให้วันของเขา / เธอสนุกสนาน / มีประสิทธิผลมากขึ้น ส่วนใหญ่ของซอร์สโค้ดไม่จำเป็นต้องให้ความเห็นอยู่ดี (ถ้าโครงการทำอย่างถูกต้อง) เพราะวิธีการที่เฉพาะเจาะจง (ตัวอย่างเช่น) เป็นการอธิบายตนเองหรือถ้ามันเป็นกองรหัสเส็งเคร็งแปลก ๆ ก็ไม่สามารถทำได้ ได้รับการอธิบายอย่างมีความหมายดังนั้นเรื่องตลกที่ตลกไม่เป็นอันตรายต่อข้อมูลที่เป็นไปได้ที่คุณสามารถได้รับจากเอกสาร ข้อโต้แย้ง: หากคุณมีสมาธิ / ท้อแท้มากสิ่งสุดท้ายที่คุณต้องการก็คือเรื่องตลกของใครบางคนแทนที่จะให้ข้อมูลที่คุณต้องการเกี่ยวกับส่วนของรหัสที่ทำเป็นเอกสารมันจะทำให้คุณผิดหวังมากขึ้น และความคิดที่ว่าเอกสารจะเป็นอย่างไรถ้าทุกคนเริ่มทำมันช่างน่ากลัว บวกกับคนที่เขียนเรื่องตลกอาจเป็นคนเดียวที่คิดว่ามันเป็นเรื่องตลก / น่าสนใจ / คุ้มค่ากับการเสียเวลาอ่าน คุณคิดอย่างไร?

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

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

7
C # Dev - ฉันได้ลองใช้ Lisps แล้ว แต่ฉันไม่เข้าใจ [ปิด]
หลังจากสองสามเดือนของการเรียนรู้และเล่นกับ Lisp ทั้ง CL และบิตของ Clojure ฉันยังไม่เห็นเหตุผลที่น่าสนใจที่จะเขียนอะไรลงไปแทนที่จะเป็น C # ฉันจะชอบเหตุผลที่น่าสนใจบางส่วนหรือสำหรับคนที่จะชี้ให้เห็นว่าฉันหายไปบางสิ่งบางอย่างที่ยิ่งใหญ่จริงๆ จุดแข็งของ Lisp (ต่อการวิจัยของฉัน): กะทัดรัดสัญกรณ์ที่แสดงออก - มากกว่า C # ใช่ใช่ ... แต่ฉันดูเหมือนจะสามารถแสดงความคิดเห็นเหล่านั้นใน C # ด้วย การสนับสนุนโดยนัยสำหรับการตั้งโปรแกรมการทำงาน - C # พร้อมด้วยวิธีการขยาย LINQ: mapcar = .Select (แลมบ์ดา) mapcan = .Select (แลมบ์ดา) .regregate ((a, b) => a.Union (b)) car / first = .First () …
37 clojure  lisp 

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

11
อัลกอริธึมการสร้างตัวเลขสุ่มสำหรับสมองมนุษย์? [ปิด]
คุณรู้หรือไม่หรือคุณคิดว่ามีอัลกอริทึม "in-head" ที่เป็นประโยชน์และเรียนรู้ได้ง่าย ๆ ที่ให้มนุษย์สร้างตัวเลขสุ่ม (ค่อนข้าง "จริง") หรือไม่? โดย "in-head" ฉันหมายถึง .. โดยเฉพาะอย่างยิ่งไม่มีเครื่องมือหรืออุปกรณ์ภายนอกใด ๆ นอกจากนี้ยังต้องการการส่งออกสูง (ตัวเลขสุ่มหลายต่อนาที) ถามในเรื่องนี้ แต่มันก็ไม่ได้รับความสนใจมากนัก บางทีนี่อาจจะเหมาะสำหรับโปรแกรมเมอร์

7
ASP.NET MVC สามารถทำอะไรได้บ้างและ Ruby on Rails ไม่สามารถทำได้? [ปิด]
ASP.NET MVC และ Rails มีพื้นที่การใช้งานที่คล้ายกันสร้างขึ้นรอบ ๆ สถาปัตยกรรมเดียวกันทั้งเฟรมเวิร์กค่อนข้างใหม่และโอเพ่นซอร์ส ดังนั้นในฐานะที่เป็นโปรแกรมเมอร์ Rails ที่ฉันอยากรู้ ASP.NET MVC สามารถทำอะไรได้บ้างและ Ruby on Rails ไม่สามารถทำได้และวีซ่ากลับกัน?

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


30
การเขียนโปรแกรมทำได้อย่างไรเมื่อ 20 ปีก่อน? [ปิด]
ทุกวันนี้เรามีโปรแกรมช่วยมากมายที่ทำให้การทำงานง่ายขึ้นรวมไปถึง: IDEs ดีบั๊ก (บรรทัดต่อบรรทัดจุดพัก ฯลฯ ) สคริปต์ Ant และอื่น ๆ สำหรับการรวบรวม ไซต์เช่น StackOverflow เพื่อช่วยหากคุณประสบปัญหาการเขียนโปรแกรม 20 ปีที่แล้วไม่มีสิ่งเหล่านี้อยู่รอบตัว เครื่องมือใดที่ผู้คนใช้ในการเขียนโปรแกรมและพวกเขาทำอย่างไรโดยไม่มีเครื่องมือที่ใหม่กว่านี้ ฉันสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการเขียนโปรแกรมหลังจากนั้น
37 history 

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

6
ตัวอย่างที่ดีของรหัสที่ซับซ้อนโดยใช้ TDD [ปิด]
อะไรจะเป็นตัวอย่างที่ดีของการใช้ TDD ในโครงการขนาดใหญ่ชีวิตจริงที่ซับซ้อน? ตัวอย่างทั้งหมดที่ฉันเคยเห็นเป็นโครงการของเล่นสำหรับหนังสือหรือกระดาษ ... คุณสามารถตั้งชื่อโครงการโอเพ่นซอร์สที่ใช้ TDD อย่างหนักได้หรือไม่? โดยเฉพาะอย่างยิ่งใน C ++ แต่ฉันสามารถอ่าน Java และ C # หรือภาษาอื่นที่คล้ายคลึงกัน
37 java  c#  open-source  c++  tdd 

9
ข้อผิดพลาดในโลกแห่งความเป็นจริงในการแนะนำ F # เข้ากับ codebase ขนาดใหญ่และทีมวิศวกร [ปิด]
ฉันเป็น CTO ของ บริษัท ซอฟต์แวร์ที่มี codebase ขนาดใหญ่ (ทั้งหมด C #) และทีมวิศวกรขนาดใหญ่ ฉันสามารถดูได้ว่าส่วนต่าง ๆ ของรหัสจะง่ายกว่าในการเขียนใน F # ทำให้เกิดเวลาในการพัฒนาที่เร็วขึ้นข้อผิดพลาดที่น้อยลงการใช้งานแบบขนานที่ง่ายขึ้น ฯลฯ โดยทั่วไปแล้วการเพิ่มผลิตผลโดยรวมสำหรับทีมของฉัน อย่างไรก็ตามฉันยังสามารถเห็นข้อผิดพลาดในการทำงานหลายประการของการแนะนำ F # ได้แก่ : 1) ทุกคนต้องเรียนรู้ F # และมันไม่สำคัญเหมือนการเปลี่ยนจากพูด Java เป็น C # สมาชิกในทีมที่ไม่ได้เรียนรู้ F # จะไม่สามารถทำงานในส่วน F # ของ codebase 2) กลุ่มของโปรแกรมเมอร์ F # ที่จ้างได้ ณ ขณะนี้ (ธ.ค. 2010) …

12
ฉันจำเป็นต้องเข้าใจอัลกอริทึมและโครงสร้างข้อมูลเพื่อที่จะเรียกว่าโปรแกรมเมอร์หรือไม่? [ปิด]
หกปีแล้วที่ฉันเขียนโปรแกรม การเขียนโค้ดลงในทุกสิ่งเช่น ActionScript, JavaScript, Java, PHP, Ajax, XML HTML, ASP และอื่น ๆ ฉันใช้อาร์เรย์, แผนที่, รายการที่เชื่อมโยง, ชุด, ฯลฯ ทุกที่ที่ฉันทำงานคนเช่นฉัน แต่เมื่อใดก็ตามที่ฉันสัมภาษณ์มันมีโอกาสมากที่ผู้คนจะถามฉันเกี่ยวกับแฮชต้นไม้กองและคิว คำถามบางข้อเกี่ยวกับการเล่นกลอัลกอริทึมการเรียงลำดับ ฉันไม่รู้ว่าควรจะรู้จักพวกเขาจริง ๆ หรือฉันควรหยุดเรียกตัวเองว่าเป็นโปรแกรมเมอร์ มีบางอย่างในตัวฉันที่บอกฉันด้วยถึงแม้ว่าคนที่ถามคำถามเหล่านี้ทั้งหมดจะเลือกฉันพวกเขาจะไม่ทำให้ฉันทำงานกับสิ่งเหล่านี้ ฉันจำเป็นต้องรู้ทั้งหมดนี้จริง ๆ หรือไม่

7
การทดสอบหน่วยทีมมือใหม่ต้องทำการทดสอบหน่วย
ฉันทำงานกับทีมใหม่ที่ไม่ได้ทำการทดสอบหน่วยใด ๆ ในอดีต เป้าหมายของฉันคือให้ทีมใช้ TDD (Test Driven Development) ในที่สุดก็เป็นกระบวนการตามธรรมชาติ แต่เนื่องจาก TDD นั้นเป็นความคิดที่รุนแรงสำหรับทีมทดสอบที่ไม่ใช่หน่วยฉันจึงคิดว่าฉันจะเริ่มต้นด้วยการเขียนบททดสอบหลังจากเขียนโค้ด มีใครอยู่ในสถานการณ์ที่คล้ายคลึงกันหรือไม่? วิธีที่มีประสิทธิภาพในการทำให้ทีมรู้สึกคุ้นเคยกับ TDD เมื่อพวกเขาไม่ได้ทำการทดสอบหน่วยใด ๆ มันสมเหตุสมผลไหมที่จะทำเช่นนี้ในไม่กี่ขั้นตอน? หรือว่าเราควรจะดำดิ่งเข้าหาและเผชิญหน้ากับความเจ็บปวดทั้งหมดในครั้งเดียว? แก้ไข เพื่อความกระจ่างแจ้งไม่มีใครในทีม (นอกเหนือจากตัวเอง) ที่มีการเปิดรับ / ทดสอบหน่วยใด ๆ และเราวางแผนที่จะใช้ฟังก์ชั่นทดสอบหน่วยที่สร้างขึ้นใน Visual Studio
37 unit-testing  tdd 

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