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

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

11
เราจะทำให้ความสนุกคล่องแคล่วสำหรับนักพัฒนาที่ต้องการส่วนตัวเป็นเจ้าของชิ้นใหญ่ตั้งแต่ต้นจนจบได้อย่างไร
เราอยู่ตรงกลางผ่านการเปลี่ยนจากน้ำตกเป็นเปรียวโดยใช้การต่อสู้ เราได้เปลี่ยนจากทีมใหญ่ในไซโลเทคโนโลยี / สาขาวินัยเป็นทีมข้ามสายงานขนาดเล็ก ตามที่คาดไว้การเปลี่ยนแปลงสู่ความคล่องตัวไม่เหมาะกับทุกคน มีนักพัฒนาจำนวนหนึ่งที่มีช่วงเวลาที่ยากลำบากในการปรับตัวให้เข้ากับความคล่องตัว ฉันต้องการให้พวกเขามีส่วนร่วมและท้าทายและในที่สุดก็เพลิดเพลินใจไปกับการทำงานในแต่ละวัน เหล่านี้เป็นคนฉลาดมีความสุขมีแรงบันดาลใจที่ฉันเคารพทั้งในระดับบุคคลและระดับมืออาชีพ ปัญหาพื้นฐานคือ: นักพัฒนาบางคนได้รับแรงบันดาลใจจากความปิติของการทำงานที่ยาก, การคิดผ่านการออกแบบ, การคิดผ่านปัญหาที่อาจเกิดขึ้น, จากนั้นการแก้ปัญหาทีละชิ้นโดยมีปฏิสัมพันธ์น้อยที่สุดกับคนอื่น ๆ ช่วงเวลา. พวกเขามักจะทำงานให้เสร็จสมบูรณ์ในระดับสูงและในเวลาที่เหมาะสม; งานของพวกเขาบำรุงรักษาได้และเหมาะสมกับสถาปัตยกรรมโดยรวม การเปลี่ยนไปใช้ทีมข้ามสายงานที่ให้ความสำคัญกับการมีปฏิสัมพันธ์และความรับผิดชอบร่วมกันสำหรับการทำงานและการส่งมอบฟังก์ชั่นการทำงานภายในระยะเวลาอันสั้นทีมพัฒนาขึ้นเพื่อให้ทั้งทีมได้รับความเดือดร้อนจากปัญหาที่ยาก หลายคนพบว่านี่เป็นการเปลี่ยนแปลงเชิงบวก คนที่รักที่จะใช้ปัญหาและเป็นเจ้าของอย่างอิสระตั้งแต่ต้นจนจบสูญเสียโอกาสในการทำงานเช่นนั้น นี่ไม่ใช่ปัญหากับผู้ที่เปิดรับการเปลี่ยนแปลง แน่นอนว่าเราเห็นคนไม่กี่คนที่ไม่ชอบการเปลี่ยนแปลง แต่ในกรณีที่ฉันเป็นห่วงคนที่เป็นนักแสดงที่ดีเปิดรับการเปลี่ยนแปลงอย่างแท้จริงพวกเขาใช้ความพยายามพวกเขาเห็นว่าส่วนที่เหลือของทีมเป็นอย่างไร การเปลี่ยนแปลงและพวกเขาต้องการที่จะพอดีมันไม่ใช่กรณีของใครบางคนที่เป็นเรื่องยากหรือกีดขวางหรือต้องการที่จะสะสมงานที่สนุกที่สุด พวกเขาไม่พบความสุขในการทำงานเหมือนที่เคยทำ ฉันแน่ใจว่าเราไม่สามารถเป็นสถานที่เดียวที่ไม่ได้ชนกับสิ่งนี้ คนอื่น ๆ เข้าหาสิ่งนี้ได้อย่างไร หากคุณเป็นนักพัฒนาที่มีแรงบันดาลใจจากการเป็นเจ้าของชิ้นงานขนาดใหญ่ตั้งแต่ต้นจนจบและคุณได้ปรับวิธีการทำงานต่าง ๆ แล้วอะไรที่เหมาะกับคุณ
52 agile  scrum 

8
ฉันเป็นนักเรียน CS และโดยสุจริตฉันไม่เข้าใจหนังสือของ Knuth [ปิด]
ฉันสะดุดกับคำพูดนี้จาก Bill Gates: "คุณควรส่งประวัติให้ฉันหากคุณสามารถอ่านทั้งหมดได้" เขาได้รับการพูดคุยเกี่ยวกับศิลปะของการเขียนโปรแกรมหนังสือ ดังนั้นฉันค่อนข้างอยากรู้อยากเห็นและต้องการอ่านมันทั้งหมด แต่จริงๆแล้วฉันไม่เข้าใจ ฉันไม่ใช่คนฉลาดจริง ๆ ดังนั้นนี่คือเหตุผลที่ฉันไม่เข้าใจ แต่ฉันกระตือรือร้นที่จะเรียนรู้ ฉันกำลังอ่านเล่มที่ 1 เกี่ยวกับอัลกอริทึมพื้นฐาน มีหนังสือเล่มไหนบ้างที่เป็นมิตรสำหรับมือใหม่ / คนช้าเช่นฉันซึ่งจะช่วยเสริมสร้างความรู้ของฉันเพื่อที่ฉันจะสามารถอ่านหนังสือของ Knuth ได้อย่างง่ายดายในอนาคต?

14
เหตุใด DirectX จึงใช้ระบบพิกัดซ้าย?
ฉันถือว่าการโพสต์ใน Stack Overflow แต่คำถามก็ทำให้ฉันรู้สึกว่าเป็นเรื่องส่วนตัวเกินไปเพราะฉันไม่สามารถคิดถึงคำอธิบายทางเทคนิคที่สมเหตุสมผลสำหรับทางเลือกของ Microsoft ในเรื่องนี้ แต่คำถามนี้บั๊กฉันมานานและปัญหายังคงเกิดขึ้นในโครงการของฉันและฉันไม่เคยเห็นความพยายามที่จะอธิบายสิ่งนี้: OpenGLใช้ระบบพิกัดขวามือโดยที่ส่วน + Z ของระบบพิกัดโลกขยายไปยังผู้ชม DirectXใช้ระบบซ้ายมือที่ส่วน + Z ของพิกัดโลกขยายไปถึงหน้าจอห่างจากผู้ชม ฉันไม่เคยใช้Glide APIดังนั้นฉันจึงไม่รู้ว่ามันทำงานอย่างไร แต่จากสิ่งที่ฉันสามารถรวบรวมได้ก็ใช้ระบบมือซ้ายเช่นกัน มีเหตุผลทางเทคนิคสำหรับสิ่งนี้หรือไม่? และถ้าไม่เป็นเช่นนั้นมีความได้เปรียบทางความคิดบางอย่างเกี่ยวกับความถนัดเฉพาะของระบบพิกัดหรือไม่? ทำไมหนึ่งจะเลือกหนึ่งมากกว่าอีก?
52 math  directx  opengl 

12
ปริญญาเอกคืออะไร ดีสำหรับอุตสาหกรรมซอฟต์แวร์ใช่หรือไม่ [ปิด]
ฉันเป็นโปรแกรมเมอร์ที่สอนตัวเองและเพิ่งเริ่มปริญญาวิทยาศาสตร์คอมพิวเตอร์เพื่อเสริมความรู้ของฉันและเติมเต็มช่องว่าง อย่างไรก็ตามฉันกำลังถกเถียงทิศทางการศึกษาของฉันอยู่แล้ว ฉันต้องการระดับปริญญาตรี 4 ปีอย่างแน่นอน แต่หลังจากนั้นฉันไม่แน่ใจ: มันคุ้มค่าไหมที่จะได้รับปริญญาวิทยาศาสตร์มหาบัณฑิต? แล้วปริญญาเอกล่ะ องศาเหล่านี้เปิดโอกาสใดบ้าง ปัจจุบันเป้าหมายของฉันคือการเป็นนักพัฒนาซอฟต์แวร์ แต่มีหลายสาขาที่น่าสนใจในอุตสาหกรรมซอฟต์แวร์และฉันสนใจที่จะตรวจสอบหลาย ๆ อย่าง ในแง่นี้ฉันคิดว่าระดับที่สูงขึ้นอาจคุ้มค่า - แม้ว่าจะไม่จำเป็นต้องช่วยในการพัฒนาซอฟต์แวร์ ดังนั้นมันจะคุ้มค่าหรือไม่ โรงเรียนระดับบัณฑิตศึกษาจะเปิดประตูหรือไม่

21
คุณจะอธิบายการปรับโครงสร้างให้กับบุคคลที่ไม่ใช่ด้านเทคนิคได้อย่างไร
คุณจะอธิบายเกี่ยวกับการปรับโครงสร้างใหม่ (และหนี้สินทางเทคนิค) ให้กับบุคคลที่ไม่ใช่ด้านเทคนิคได้อย่างไร (โดยทั่วไปคือ PHB หรือลูกค้า) ("อะไรจะทำให้ฉันเสียค่าใช้จ่ายหนึ่งเดือนในการทำงานของคุณโดยไม่มีความแตกต่างที่มองเห็นได้ !") อัปเดตขอบคุณสำหรับคำตอบทั้งหมดจนถึงตอนนี้ฉันคิดว่ารายการนี้จะให้การเปรียบเทียบที่มีประโยชน์หลายอย่างซึ่งเราสามารถชี้คนที่เหมาะสม (แม้ว่าการแก้ไขการอ้างอิง PHB อาจฉลาด!)

4
ฉันควรทำอย่างไรเพื่อไม่เชื่อเรื่องภาษา?
ตอนนี้ฉันทำงานกับ asp.net และ C # ฉันได้ทำงานที่น่าพอใจใน Java เช่นกัน ฉันกำลังวางแผนอาชีพของฉันในแบบที่ฉันควรจะเป็นผู้ไม่เชื่อเรื่องภาษาสักวันหนึ่ง ฉันต้องเรียนรู้อะไรบ้าง กระบวนทัศน์แรกของ OOP คือพูดถึงการออกแบบระดับ มีคนอื่นอีกไหม?

28
ปัญหาการสัมภาษณ์ไวท์บอร์ดที่คุณชื่นชอบคืออะไร? [ปิด]
ปัญหาการสัมภาษณ์ไวท์บอร์ดที่คุณชื่นชอบคืออะไรและทำไมมันถึงมีประสิทธิภาพสำหรับคุณ จูเนียร์, อาวุโส, Java, C, Javascript, PHP, SQL, รหัสหลอก ฯลฯ


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

6
“ ไม่มีผลลัพธ์” ควรเป็นข้อผิดพลาดในการตอบสนองสงบหรือไม่?
ฉันจะอธิบายตัวอย่าง: ฉันเริ่มทำ API สำหรับร้านเบเกอรี่ API api.examplebakery.com/search?q=.....ที่จะช่วยให้คนที่จะค้นหาแค็ตตาล็อกของพวกเขาสำหรับผลิตภัณฑ์เบเกอรี่เช่นทำที่บ้านมิ้นต์คุกกี้ช็อคโกแลตชิปใช้ มีคนใช้รายการนี้เพื่อค้นหาผลิตภัณฑ์ที่มีชื่อpineapple-banana flavoured cookiesและจะไม่พบผลลัพธ์ใด ๆ ควรส่งคืนสิ่งนี้เป็นข้อผิดพลาดหรือไม่? การค้นหาไม่ล้มเหลว API ค้นหาและสรุปว่าประสบความสำเร็จไม่พบคุกกี้ API ไม่ควรส่งคืน404เนื่องจากพบ API จริงๆ

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

2
แนวปฏิบัติที่ดีที่สุด / รูปแบบสำหรับการซิงโครไนซ์ข้อมูลแบบสองทาง
บ่อยครั้งในงานของฉันแนวคิดเกี่ยวกับการซิงโครไนซ์ข้อมูลแบบ 2 ทางระหว่างระบบฐานข้อมูลทำให้ข้อมูลเกิด ตัวอย่างคลาสสิกคือระบบ CRM ที่แตกต่างกันสองระบบ (เช่น Raiser's Edge และ Salesforce) และจำเป็นต้องมีการซิงค์ข้อมูลผู้ติดต่อสองทางระหว่างกัน ข้อควรพิจารณาเกี่ยวกับ API นอกเหนือจากสมมติว่าคุณมีคีย์ที่ใช้ร่วมกันในการซิงค์และคิดถึงอัลกอริธึม / รูปแบบที่จะใช้อย่างหมดจดนี่เป็นงานที่มักจะถูกประเมินโดยผู้ที่ไม่ใช่ช่างเทคนิค ตัวอย่างเช่นคุณต้องระวัง: คุณสามารถตรวจสอบระเบียนที่มีการเปลี่ยนแปลงในทั้งสองระบบได้อย่างง่ายดาย (หรือคุณจะต้องเปรียบเทียบระเบียนทั้งหมดระหว่างระบบเพื่อตรวจจับการเปลี่ยนแปลง) หากคุณกำลังจะทำการซิงค์หนึ่งครั้งทุก ๆ ชั่วโมงวิธีการจัดการกับความขัดแย้งที่การเปลี่ยนแปลงระเบียนเดียวกันในเวลาเดียวกันมากขึ้นหรือน้อยลงในทั้งสองระบบ หากคุณกำลังทำการซิงค์แบบเรียลไทม์ (เช่นการอัปเดตในระบบหนึ่งจะกระตุ้นการอัปเดตไปยังระบบอื่นทันที) วิธีจัดการความแตกต่างเมื่อเวลาผ่านไปเนื่องจากข้อบกพร่องหรือระบบล่ม โดยส่วนตัวฉันสามารถคิดหาวิธีจัดการกับสิ่งเหล่านี้ทั้งหมด แต่ฉันสงสัยว่ามีรูปแบบที่เป็นที่รู้จักกันดีวรรณกรรมหรือแนวปฏิบัติที่ดีที่สุดที่ฉันสามารถอ้างถึงได้หรือไม่

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

9
คุณควรป้องกันค่าที่ไม่คาดคิดจาก API ภายนอกหรือไม่
ช่วยบอกว่าคุณมีการเข้ารหัสฟังก์ชั่นที่ต้องใช้ข้อมูลจาก MyAPIAPI ที่ภายนอก ที่ภายนอก API MyAPIมีสัญญาที่ระบุว่ามันจะกลับมาได้หรือstringnumber มันคือการแนะนำเพื่อป้องกันสิ่งที่ชอบnull, undefined, booleanฯลฯ แม้ว่ามันจะไม่ได้เป็นส่วนหนึ่งของ API ของMyAPI? โดยเฉพาะอย่างยิ่งเนื่องจากคุณไม่สามารถควบคุม API นั้นคุณไม่สามารถรับประกันผ่านการวิเคราะห์ประเภทแบบคงที่ดังนั้นจะปลอดภัยกว่าขออภัยหรือไม่ ฉันกำลังคิดเกี่ยวกับหลักการความแข็งแกร่ง

10
รหัสสถานะ http สำหรับข้อผิดพลาด“ บริการไม่พร้อมให้บริการในพื้นที่ของคุณ” ควรเป็นอย่างไร
บริการของเราอยู่ใน 5 เมืองในขณะนี้ หากมีคนพยายามโทรหา API บริการของเราจากเมืองอื่นเราต้องการส่งข้อผิดพลาดService not available in your areaนี้ คำถามคือรหัส http ที่เหมาะสมสำหรับข้อผิดพลาดนี้คืออะไร? 503: บริการไม่พร้อมใช้งาน 403: ถูกห้าม หรืออย่างอื่น?
51 api  api-design  http 

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