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

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

13
การเขียนโปรแกรมเป็นอาชีพที่ไม่เหมาะสำหรับผู้ที่มีปัญหาด้านการพูดหรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว เพื่อนของฉันมีประสบการณ์ 15 ปีในการเขียนโปรแกรมและปริญญาเอก ในวิชาคณิตศาสตร์ เขายังเป็นอัมพาตสมองที่มีความบกพร่องในการพูด เนื่องจากแต้มต่อของเขาเขาเลือกที่จะเป็นนักพัฒนาซอฟต์แวร์หลังจากปริญญาเอกของเขา เท่าที่ฉันเห็นเขายังคงเป็นนักพัฒนา c # ที่ยอดเยี่ยม อย่างไรก็ตามทุกวันนี้เขามีเวลายากที่จะหางานให้กับตัวเองเพราะงานของนักพัฒนาส่วนใหญ่ต้องการทักษะการสื่อสารที่ดี เมื่อมองดูเขาที่ต้องดิ้นรนมากฉันต้องให้คำแนะนำแก่เขาว่าอุตสาหกรรมซอฟต์แวร์ไม่เหมาะกับเขาอีกหรือไม่? มันจะยากมากสำหรับฉันที่จะทำเช่นนั้นกับเพื่อน แต่ฉันคิดว่ามันจะดีกว่าการทำให้เขาเสียเวลา คุณคิดอย่างไร? ปรับปรุง:ขอบคุณมากสำหรับคำตอบที่ยอดเยี่ยมของคุณ ฉันสามารถดูคำตอบส่วนใหญ่แนะนำต่อต้านคำแนะนำของฉันและฉันหวังว่าพวกคุณถูกต้อง อย่างไรก็ตามในความเป็นจริงเขาถูกปฏิเสธในการสัมภาษณ์ทางโทรศัพท์ประมาณ 100 ครั้ง นั่นคือสิ่งที่ฉันต้องการที่จะเป็นที่ปรึกษาที่ไม่ดีที่อาจเกิดขึ้นมากกว่าเพื่อนที่เหมาะสมทางการเมือง
12 hiring 

3
ฉันจะระบุไวยากรณ์สำหรับ parser ได้อย่างไร
ฉันได้เขียนโปรแกรมมาหลายปีแล้ว แต่สิ่งหนึ่งที่ฉันต้องใช้เวลานานมากคือการระบุไวยกรณ์สำหรับโปรแกรมแยกวิเคราะห์และแม้จะใช้ความพยายามมากเกินไปฉันก็ไม่แน่ใจว่าไวยากรณ์ที่ฉันใช้มานั้นดีมาก ( โดยการวัดที่เหมาะสมของ "ดี") ฉันไม่คาดหวังว่าจะมีอัลกอริทึมสำหรับกระบวนการระบุไวยากรณ์โดยอัตโนมัติ แต่ฉันหวังว่าจะมีวิธีการจัดโครงสร้างปัญหาที่กำจัดการคาดเดาและการลองผิดลองถูกของวิธีการปัจจุบันของฉัน ความคิดแรกของฉันคืออ่าน parsers และฉันทำสิ่งนี้ไปแล้ว แต่ทุกอย่างที่ฉันอ่านในเรื่องนี้ต้องใช้ไวยากรณ์ตามที่กำหนด ปัญหาของการแปลไวยากรณ์นี้เป็น parser ฉันสนใจปัญหานี้มาก่อน: วิธีการระบุไวยากรณ์ตั้งแต่แรก ฉันสนใจหลักในปัญหาของการระบุไวยากรณ์ที่เป็นตัวแทนของตัวอย่างที่เป็นรูปธรรม (บวกและลบ) อย่างเป็นทางการ ซึ่งแตกต่างจากปัญหาของการออกแบบใหม่ไวยากรณ์ ขอบคุณ Macneil ที่ชี้ให้เห็นความแตกต่างนี้ ฉันไม่เคยซาบซึ้งถึงความแตกต่างระหว่างไวยากรณ์และไวยากรณ์ แต่ตอนนี้ฉันเริ่มเห็นแล้วฉันสามารถเพิ่มความชัดเจนในการชี้แจงครั้งแรกโดยบอกว่าฉันสนใจในปัญหาการระบุไวยากรณ์ที่จะบังคับใช้ ไวยากรณ์ที่กำหนดไว้ล่วงหน้า: มันเกิดขึ้นอย่างนั้นในกรณีของฉันพื้นฐานสำหรับไวยากรณ์นี้มักจะเป็นชุดของตัวอย่างบวกและลบ มีการระบุไวยกรณ์สำหรับ parser อย่างไร มีหนังสือหรือเอกสารอ้างอิงนั่นคือมาตรฐาน de-facto สำหรับอธิบายวิธีปฏิบัติที่ดีที่สุดวิธีการออกแบบและข้อมูลที่เป็นประโยชน์อื่น ๆ เกี่ยวกับการระบุไวยากรณ์สำหรับโปรแกรมวิเคราะห์คำหรือไม่? เมื่ออ่านเกี่ยวกับไวยากรณ์ parser ฉันควรเน้นเรื่องใด

6
ฉันจะแปลงทักษะผู้เล่นในทีมให้คมขึ้นได้อย่างไร? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน7 ปีที่ผ่านมา ขณะนี้ฉันทำงานในฝันของฉันในห้องปฏิบัติการวิจัยในฐานะนักพัฒนาเพียงคนเดียวในทีมสหสาขาวิชาชีพ ฉันกังวลเล็กน้อยเพราะฉันลืมรหัสในทีม (ฉันไม่มีรหัสดั้งเดิมฉันรักษารหัสของตัวเองฉันจัดการวาระของตัวเอง ฯลฯ ) แม้ว่าฉันจะพยายามปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดบางอย่างเช่นการส่งต่อเนื่อง TDD และ SCRUM สำหรับฉัน แต่ฉันคิดว่าฉันสูญเสียความสามารถในการทำงานในทีมนักพัฒนาซอฟต์แวร์ ฉันได้เข้าร่วมโครงการโอเพนซอร์สและเริ่มเข้าสู่โค๊ตคาตาสและโคดกอล์ฟ แต่สิ่งเหล่านี้จะไม่ขัดโปรไฟล์ผู้เล่นของฉัน อะไรคือคำแนะนำของคุณในการฝึกฝนทักษะผู้เล่นของฉัน? อัปเดต:ใช่ทักษะการสื่อสารของฉันดีขึ้นแล้วและฉันสามารถพูดคุยกับปริญญาเอกได้อย่างที่ไม่เคยมีมาก่อน Like @Nicholas และ @Erick กล่าวว่าสักวันฉันจะเผชิญหน้ากับทีมพัฒนา (อาจจะอยู่ในงานปัจจุบันของฉันอาจจะไม่ใช่) และฉันต้องการให้ทันสมัยกับการปฏิบัติเหล่านั้นที่ทำให้นักพัฒนาที่ดีเป็นสมาชิกในทีมที่ดีขึ้นเช่นการเขียนโปรแกรมคู่หรือรหัส ทบทวน

4
วิธีจัดการเวลาเรียนขณะทำงาน? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน7 ปีที่ผ่านมา ฉันเขียนโปรแกรมมา 8 ปีสำหรับ บริษัท แห่งหนึ่ง เราสร้างระบบซอฟต์แวร์ระบบธุรกิจอัจฉริยะ เนื่องจากฉันคิดว่าการทำงานคือการเรียนรู้ฉันจึงศึกษาอยู่เสมอในแง่ของสิ่งที่ฉันทำที่ บริษัท ขณะทำงาน 60 ชั่วโมงต่อสัปดาห์ แต่ทุกวันนี้ฉันกำลังมองหา บริษัท ใหม่สำหรับการจ้างงานฉันเห็นว่าความคิดนั้นเป็นความคิดที่โง่เพราะฉันมักล้มเหลวในการสัมภาษณ์งานส่วนใหญ่เนื่องจากขาดความรู้ในด้านอื่น ๆ แน่นอนฉันยังคงเต็มใจที่จะปรับปรุงตัวเองและพยายามอย่างแท้จริง แต่ในขณะที่ทำงานสัปดาห์ละมากฉันไม่สามารถหาเวลาเรียนได้ทัน ฉันไม่คิดว่าฉันเป็นเพียงคนเดียวที่กังวลเกี่ยวกับเรื่องนี้ดังนั้นฉันจึงอยากถามว่าพวกคุณหาเวลาเพื่อศึกษาอาชีพของคุณได้อย่างไร? คุณมอบหมายให้ศึกษาด้านอื่นกี่ชั่วโมง ฉันขาดทักษะการจัดการเวลาหรือไม่?

5
วิธีการที่คล่องตัวและฐานข้อมูลที่จุดเริ่มต้นของโครงการ
ใหม่เพื่อความคล่องตัวและฉันไม่แน่ใจว่าจะเริ่มอย่างไร ความคิดคือการสร้างส่วนเล็ก ๆ ของโครงการในการวิ่ง อย่างไรก็ตามโครงการที่ฉันทำงานอยู่ต้องใช้ฐานข้อมูลและฐานข้อมูลจะต้องใช้งานได้เกือบทุกอย่างเพื่อทำสิ่งต่างๆกับโครงการ ดังนั้นโปรเจ็กต์ Agile จัดการกับสิ่งนี้อย่างไรคุณเริ่มต้นด้วยการสร้างฐานข้อมูลหรือไม่ คุณจะทำอย่างไรเช่นใช้ Scrum คุณจะทำเรื่องราวของผู้ใช้อย่างไรและทดสอบ db คุณต้องการทำบางส่วนของ db ในเรื่องที่ต้องใช้รหัสด้วยหรือไม่ สมมติว่าคุณมีเรื่องราวที่เป็น "ในฐานะผู้ใช้คุณต้องลงทะเบียน ... " คุณจะสร้างตารางผู้ใช้ในฐานข้อมูลเป็นส่วนหนึ่งของเรื่องนี้หรือไม่? ว่องไวจะช่วยคุณออกแบบฐานข้อมูลได้อย่างไร?

3
ทำไมฉันไม่สามารถแก้ไขข้อความยืนยัน SVN ได้?
ฉันใช้ SVN บางครั้งฉันคิดถึงบางอย่างเมื่อฉันเขียนข้อความยืนยัน แต่เมื่อมีการยืนยันแล้วจะไม่สามารถเปลี่ยนกลับได้และฉันไม่สามารถแก้ไขข้อความได้ ทำไมพวกเขาถึงไม่ใส่ฟังก์ชั่นแก้ไขเข้าไป?

4
อะไรคือข้อเสียของการใช้ / writting a. Net Custom Membership Provider
เมื่อเร็ว ๆ นี้ฉันโพสต์คำถามต่อไปนี้ใน SO: /programming/7197337/using-asp-net-membership-provider-with-an-existing-user-database ดังที่คุณอาจสังเกตเห็นว่าฉันสิ้นสุดการตอบคำถามของฉันเองโดยระบุว่าดูเหมือนว่าการเขียน / ใช้ "ผู้ให้บริการสมาชิกที่กำหนดเอง" เป็นหนทางที่จะไป ตามตัวอักษรไม่กี่นาทีต่อมาฉันเจอคำถามนี้: /programming/7222306/simple-login-attempt-counter-using-mvc-3-and-ajax/7222407#7222407 ฉันพยายามที่จะตอบและรับความคิดเห็นกลับว่าผู้ให้บริการสมาชิก. Net "แย่มากในหลาย ๆ ระดับ" ฉันจะยอมรับนี่เป็นครั้งแรกที่ฉันใช้ผู้ให้บริการสมาชิก แต่แน่ใจว่ามันเนียนสำหรับฉัน ฉันไม่ได้เห็นอะไรเลยที่สนับสนุนการอ้างสิทธิ์ "แย่มาก" ดังนั้นก่อนที่ฉันจะนำสิ่งที่ "น่ากลัว" มาใช้ฉันหวังว่าจะได้รับคำติชมจากชุมชน

11
นักพัฒนาควรยอมรับการประมาณการปริมาณงานที่ทำโดยแมโคร Excel หรือไม่
ในโครงการใหม่เพื่อนต้องเขียนแบบทดสอบซึ่งเวลาที่ใช้ในการเขียนนั้นถูกคำนวณโดยมาโคร Excel ที่เขียนโดยผู้จัดการที่ไม่ใช่นักพัฒนา ในกรณีดังกล่าวผู้พัฒนาควรยอมรับความรับผิดชอบในการเขียนและเรียกใช้การทดสอบในเวลาที่คำนวณได้หรือไม่ ผลลัพธ์ของการทดสอบเหล่านี้น่าเชื่อถือหรือไม่? สำหรับข้อมูลเพื่อนของฉันปฏิเสธที่จะรับผิดชอบต่อการประเมินที่เขาไม่ได้ทำขอให้ประสบความสำเร็จในการทำงานในโครงการอื่นและถูกแทนที่ด้วยประสบการณ์นอกโรงเรียนที่ไม่มีประสบการณ์

6
ฉันจะจัดการกับการป้อนข้อมูลผู้ใช้ที่ไม่ถูกต้องได้อย่างไร?
ฉันคิดถึงเรื่องนี้มาระยะหนึ่งแล้วและอยากรู้อยากเห็นจากนักพัฒนาคนอื่น ๆ ฉันมักจะมีรูปแบบการเขียนโปรแกรมที่ป้องกันมาก บล็อกหรือวิธีทั่วไปของฉันมีลักษณะดังนี้: T foo(par1, par2, par3, ...) { // Check that all parameters are correct, return undefined (null) // or throw exception if this is not the case. // Compute and (possibly) return result. } นอกจากนี้ในระหว่างการคำนวณฉันจะตรวจสอบพอยน์เตอร์ทั้งหมดก่อนที่จะทำการลงทะเบียนอีกครั้ง ความคิดของฉันคือถ้ามีข้อผิดพลาดและตัวชี้ NULL บางอย่างควรปรากฏที่ใดที่หนึ่งโปรแกรมของฉันควรจัดการสิ่งนี้อย่างดีและเพียงปฏิเสธที่จะคำนวณต่อไป แน่นอนมันสามารถแจ้งปัญหาที่เกิดขึ้นกับข้อผิดพลาดในบันทึกหรือกลไกอื่น ๆ เพื่อให้เป็นไปในทางที่เป็นนามธรรมยิ่งกว่าแนวทางของฉันคือ if all input is OK --> …

5
ทำไมมันไม่สมจริงที่จะคาดหวังว่าเบราว์เซอร์ทั้งหมดเพื่อรองรับมาตรฐานเดียวกัน? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน8 ปีที่ผ่านมา ตามหลักแล้วเราจะมีเบราว์เซอร์ต่าง ๆ ที่สนับสนุนมาตรฐานเดียวกันและรหัสเดียวกันที่ให้ผลลัพธ์เหมือนกันกับเบราว์เซอร์ทั้งหมด นั่นยังไม่เกิดขึ้น อะไรคือเหตุผลว่าทำไม

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

4
อัลกอริทึมที่อยู่เบื้องหลังการหยุด GC ชั่วคราวมีอะไรบ้าง
บางภาษาสำหรับจาวา exemple ได้แนะนำ GC ชั่วคราว GC เหล่านั้นสามารถทำงานส่วนใหญ่ได้โดยไม่ต้องหยุดทั้งโลก เห็นได้ชัดว่าเป็นปัญหาที่ค่อนข้างยากเพราะมันต้องการการวิเคราะห์หน่วยความจำเมื่อเธรดกำลังแก้ไขมันส่งผลให้ข้อมูลที่สามารถใช้ในการเริ่มต้นของกระบวนการและไม่ได้อีกต่อไปเมื่อมันเสร็จสิ้นหรือข้อมูลที่ดูเหมือนจะเป็น garbages แต่เนื่องจาก การอ้างอิงถูกย้ายในหน่วยความจำและไม่เคยปรากฏที่ใดที่ GC กำลังมองหา ดังนั้นโดยพื้นฐานแล้วอัลกอริธึมคืออะไร? บทความวิจัยหรือลิงค์บทความทางเทคนิคจริง ๆ จะถือว่าเป็นคำตอบที่ถูกต้องเนื่องจากหัวข้อนี้เป็นเรื่องทางเทคนิคจริงๆ

3
วิธีการพัฒนาโปรแกรมการทำงานระดับสูงขึ้น [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ก่อนอื่นฉันต้องขออภัยถ้านี่ไม่ใช่สถานที่ที่เหมาะสมสำหรับคำถามนี้ แต่ฉันคิดว่า th.CS ไม่ใช่สถานที่ที่เหมาะสมแน่นอนไม่มี StackOverflow ฉันชอบการเขียนโปรแกรมที่ใช้งานได้จริงและฉันคิดว่าฉันเป็นคนระดับกลางใน F # และเข้าใจแนวคิดพื้นฐานของ Haskell ค่อนข้างดี - และใช่ฉันคิดว่าฉันรู้ / ล้มเหมือนที่ฉันรู้ว่า Monad คืออะไร ตอนนี้ฉันต้องการที่จะยกระดับไปสู่ระดับถัดไปและต้องการที่จะเข้าใจสิ่งที่การพูดคุยเกี่ยวกับหน้าที่และสิ่งที่เป็นทั้งหมดเกี่ยวกับ ฉันแค่ไม่รู้ว่าจะเริ่มจากตรงไหน อ่านอะไรเกี่ยวกับแลมบ์ดาแคลคูลัส? ทฤษฎีหมวดหมู่? ทั้งฉันรู้เพียงเล็กน้อยและฉันไม่คิดว่านี่เป็นวิธีที่ถูกต้อง / รวดเร็วที่สุดในการรับรู้ บางทีคุณอาจให้คำแนะนำบางอย่างกับฉัน ป.ล. : ฉันไม่กลัวคณิตศาสตร์และฉันไม่หงุดหงิดกับการออกกำลังกายอย่างง่ายดาย แต่ฉันจะใส่ล่วงหน้า intros / ข้อความที่คุณสามารถใส่รหัสลงเพราะวิธีนี้คุณจะได้รับผลตอบรับทันที

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

3
สินทรัพย์และทรัพยากรต่างกันอย่างไร
ฉันใช้ IDE หลายตัวและสร้างโครงการเริ่มต้นหลายโครงการ เมื่อสร้างแล้วฉันจะพบโครงสร้างโฟลเดอร์ที่สร้างขึ้นสำหรับฉัน บางครั้งฉันจะเห็นโฟลเดอร์ทรัพยากรบางครั้งก็เป็นโฟลเดอร์สินทรัพย์และบางครั้งทั้งสองอย่าง จริง ๆ แล้วมีความแตกต่าง (มาตรฐาน) หรือไม่

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