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

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

17
คุณตอบคำขอสำหรับ 'ข้อมูลการติดต่อในกรณีฉุกเฉิน' อย่างไรเมื่อคุณอยู่ในช่วงวันหยุด?
ฉันต้องการไปพักผ่อนและไม่คิดว่าจะทำงาน แต่พวกเขาต้องการให้ฉันแจ้งหมายเลขติดต่อในกรณีที่เกิดเหตุฉุกเฉิน (เซิร์ฟเวอร์หยุดทำงานบริการเว็บทำงานผิดปกติ ฯลฯ ) ฉันกลัวว่ามันจะถูกทารุณกรรม (พวกเขาจะติดต่อฉันก่อนที่จะลองทุกอย่างเป็นต้น) แต่ฉันก็คิดเช่นกันว่าถ้าฉันไปเที่ยวพักผ่อนฉันไม่ควรกังวลแม้ว่าจะมีไฟดับ ไม่มีใครมีประสบการณ์กับสถานการณ์เช่นนี้หรือไม่? วิธีการที่มีไหวพริบคืออะไร? โซลูชันที่สร้างสรรค์ใด ๆ
38 support 

19
เทคนิคการเขียนโปรแกรมมากเกินไปหรือถูกทารุณกรรม [ปิด]
มีเทคนิคใด ๆ ในการเขียนโปรแกรมที่คุณพบว่ามีการใช้งานมากเกินไป (IE ใช้วิธีที่มากเกินกว่าที่ควรจะเป็น) หรือถูกทารุณกรรมหรือใช้บิตสำหรับทุกสิ่งในขณะที่ไม่ใช่วิธีการแก้ปัญหาที่ดีมากสำหรับปัญหาต่างๆ แก้ปัญหาด้วย อาจเป็นนิพจน์ทั่วไปรูปแบบการออกแบบบางอย่างหรืออัลกอริทึมหรือสิ่งที่แตกต่างอย่างสิ้นเชิง บางทีคุณคิดว่าผู้คนละเมิดมรดกหลายอย่างเป็นต้น
38 design 

9
การขอเหตุผลหลังจากถูกปฏิเสธหลังจากการสัมภาษณ์เหมาะสมหรือไม่? [ปิด]
ฉันคิดว่าฉันไม่เป็นไรในการสัมภาษณ์ แต่เห็นได้ชัดว่าผู้สัมภาษณ์ไม่ได้คิดอย่างนั้น การขอเหตุผลหลังจากที่ฉันได้รับอีเมลปฏิเสธนั้นเหมาะสมหรือไม่ หลังจากทั้งหมดฉันไม่ต้องการรบกวนคน HR ฉันเป็นนักเรียนจึงไม่เคยมีประสบการณ์การหางานทำมากนักจนถึงตอนนี้ อดทนกับฉันถ้าคำถามนี้ฟังดูโง่
38 interview 

10
ฉันจะเรียนรู้อัลกอริทึมและโครงสร้างข้อมูลได้อย่างไร [ปิด]
นี่คือความต่อเนื่องของคำถามก่อนหน้าของฉันที่ฉันถามมันจำเป็นต้องเรียนรู้อัลกอริทึมและโครงสร้างข้อมูล ฉันรู้สึกว่าใช่ ตอนนี้ฉันทำงานในสภาพแวดล้อมที่ฉันจะไม่ได้รับโอกาสที่จะเรียนรู้มันโดยการทดลองหรือปฏิบัติหรือในการมอบหมายใด ๆ อะไรคือแนวทางที่ถูกต้องเช่นหนังสือที่ถูกต้องปัญหาที่เหมาะสมประเภทของทรัพยากรที่ฉันสามารถผ่านเพื่อให้เวลาหกเดือนหรือหนึ่งปีหรือสองปีเพื่อเรียนรู้อัลกอริทึมและโครงสร้างข้อมูล และสร้างความคิดของฉันในแบบที่มันสามารถเชื่อมโยงปัญหากับโครงสร้างข้อมูลและอัลกอริทึม

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

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

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

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

28
คำถามที่แย่ที่สุดที่คุณเคยถามตอนสัมภาษณ์คืออะไร? [ปิด]
ไม่จำเป็นต้องเกี่ยวข้องกับการเขียนโปรแกรมหรือการพัฒนาซอฟต์แวร์ แต่เพียงแค่ถามระหว่างการสัมภาษณ์สำหรับงานที่เกี่ยวข้องกับไอที ฉันรู้ว่าบางคำถาม "ทิ้งฟิลด์" มีไว้เพื่อดูว่าผู้สมัครรับมือกับสถานการณ์ที่คาดไม่ถึงและแปลกใหม่อย่างไร แต่ที่นี่ฉันกำลังมองหาคำถามที่ดูเหมือนจะไม่เกี่ยวข้องกับงานที่พวกเขาสัมภาษณ์คุณหรือสิ่งที่ทำ คุณคิดว่า "ข้อมูลที่เป็นประโยชน์อะไรบ้างที่พวกเขาอาจได้รับจากคำตอบของฉันสำหรับคำถามนั้น "
38 interview 

2
การฉีดพึ่งพามากเกินไปมากแค่ไหน?
ฉันทำงานในโครงการที่ใช้ (Spring) Dependency Injection สำหรับทุกสิ่งที่เป็นที่พึ่งของชั้นเรียน เราอยู่ในจุดที่ไฟล์การกำหนดค่าของ Spring โตขึ้นประมาณ 4,000 บรรทัด เมื่อไม่นานมานี้ฉันได้ดูหนึ่งในการพูดคุยของลุงบ็อบบน YouTube (น่าเสียดายที่ฉันไม่สามารถหาลิงก์ได้) ซึ่งเขาแนะนำให้ฉีดการพึ่งพาจากศูนย์กลางเพียงไม่กี่คู่ (เช่นโรงงานฐานข้อมูล ... ) ลงในองค์ประกอบหลักจากนั้น แจกจ่าย ข้อดีของวิธีนี้คือการแยกส่วนของ DI Framework จากแอปพลิเคชั่นส่วนใหญ่และทำให้ Spring config Cleaner เป็นโรงงานจะมีสิ่งที่อยู่ใน config ก่อนหน้านี้ ในทางตรงกันข้ามสิ่งนี้จะส่งผลให้เกิดการแพร่กระจายตรรกะการสร้างในคลาสโรงงานจำนวนมากและการทดสอบอาจยากขึ้น ดังนั้นคำถามของฉันคืออะไรคือข้อดีหรือข้อเสียอื่น ๆ ที่คุณเห็นในแนวทางหนึ่งหรืออีกวิธีหนึ่ง มีวิธีปฏิบัติที่ดีที่สุดหรือไม่? ขอบคุณมากสำหรับคำตอบของคุณ!

3
มันเสียเปล่าไหมที่จะสร้างตารางฐานข้อมูลใหม่แทนที่จะใช้ชนิดข้อมูล enum?
สมมติว่าฉันมีบริการ 4 ประเภทที่ฉันเสนอให้ (พวกเขาไม่น่าจะเปลี่ยนแปลงบ่อย): การทดสอบ ออกแบบ การเขียนโปรแกรม อื่น ๆ สมมติว่าฉันมีบริการจริง 60-80 รายการที่แต่ละบริการจัดอยู่ในหมวดหมู่ข้างต้น ตัวอย่างเช่น 'บริการ' สามารถเป็น "โปรแกรมทดสอบโดยใช้เทคนิค A" และเป็นประเภท "การทดสอบ" ฉันต้องการเข้ารหัสให้เป็นฐานข้อมูล ฉันมากับตัวเลือกไม่กี่: ตัวเลือก 0: ใช้VARCHARโดยตรงเพื่อเข้ารหัสประเภทบริการโดยตรงเป็นสตริง ตัวเลือกที่ 1: enumฐานข้อมูลการใช้งาน แต่enum นั้นชั่วร้าย ตัวเลือก 2: ใช้สองตาราง: service_line_item (id, service_type_id INT, description VARCHAR); service_type (id, service_type VARCHAR); ฉันยังสามารถเพลิดเพลินกับ Referential Integrity: ALTER service_line_item ADD FOREIGN KEY …

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

4
วิธีที่เป็นมิตรกับมนุษย์มากที่สุดในการสั่งซื้อคำจำกัดความวิธีการเรียน?
ในคำจำกัดความของคลาสใดก็ตามฉันเคยเห็นคำจำกัดความของวิธีการเรียงลำดับในหลายวิธี: เรียงตามตัวอักษร, เรียงตามลำดับการใช้งานทั่วไป, เรียงตามตัวอักษรตามทัศนวิสัย, เรียงตามตัวอักษร ฉันมักจะพิมพ์ทุกอย่างแล้วเรียงลำดับใหม่เมื่อฉันเขียนทั้งชั้น ในบันทึกนั้นฉันมีคำถามสามข้อ: การสั่งซื้อมีความสำคัญหรือไม่ มีคำสั่ง "ดีที่สุด" หรือไม่? ฉันเดาว่าไม่ได้ดังนั้นข้อดีและข้อเสียของกลยุทธ์การสั่งซื้อที่แตกต่างกันคืออะไร

5
คำสำหรับการดำเนินการที่สามารถนำมาใช้หลายครั้งและไม่เคยเปลี่ยนสถานะเกินกว่าแอปพลิเคชันเริ่มต้นคืออะไร
ฉันพยายามจำคำหนึ่งฉันคิดว่ามันเกี่ยวข้องกับทฤษฎีการคำนวณหรือฐานข้อมูล คำพ้องความหมายที่ใกล้เคียงที่สุดคือatomicแต่นั่นไม่ใช่สิ่งที่แน่นอน โดยทั่วไปมันเป็นการคำนวณที่ควรให้ผลลัพธ์เหมือนกันแม้ว่าจะทำงานหลาย ๆ ครั้งในแถวหมายความว่ามันจะไม่สร้างผลข้างเคียงให้กับตัวเอง ฉันวิ่งข้ามคำนี้ในคำตอบ Stack Overflow เกี่ยวกับคำสั่ง chmod (หรือการดำเนินการอื่น ๆ ที่เกี่ยวข้องกับการอนุญาต) หวังว่าจะเพียงพอต่อไป การพูดถึงวิกิพีเดียไม่ได้ช่วยอะไรมาก

2
ความแตกต่างระหว่างข้อกำหนดทางเทคนิคและเอกสารการออกแบบคืออะไร?
ข้อกำหนดทางเทคนิคคืออะไร? พวกเขาเหมือนกับเอกสารการออกแบบหรือไม่ ถ้าไม่แตกต่างกันและมีตัวอย่างอะไรบ้าง?

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