การเป็นโปรแกรมเมอร์โดยไม่ตั้งใจ: จะทำอย่างไรให้ถูกต้อง? [ปิด]


21

พื้นหลังของฉันคือวิศวกรรมไฟฟ้า DSP ต้องแม่นยำมากขึ้น บริษัท ที่ฉันทำงานอยู่ในขณะนี้ทำโครงการที่หลากหลายหลากหลายซึ่งส่วนใหญ่เป็นการสร้างฮาร์ดแวร์อะนาล็อก การอยู่ใกล้กับคอมพิวเตอร์มากกว่าคนอื่น ๆ ที่นี่ฉันมักจะเขียนโค้ดสำหรับอุปกรณ์ฝังตัว (ซึ่งฉันใช้ได้ดี) และ Windows หรือ Linux OS มันเป็นดินแดนหลังที่เป็นดินแดนของฉัน

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

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


หากคุณบอกภาษาที่คุณใช้กับเราเราอาจจะให้คำตอบเชิงลึกกับคุณมากขึ้น จากนั้นอีกครั้งซึ่งจะลบล้างจุดของคำตอบทั่วไป
Sardathrion - Reinstate Monica

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

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

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

6
@Phonon Great นั่นเป็นทัศนคติที่ดี แต่ให้แน่ใจว่า บริษัท ของคุณซื้อหนังสือหลักสูตรฝึกอบรมและให้เวลาคุณในการเรียนรู้หากพวกเขาต้องการให้คุณมีบทบาทนั้น นั่นคือทั้งหมดที่ฉันพูด บริษัท หลายแห่งจะพยายามโกงคุณโดยทำให้คุณเชื่อว่าเป็นความรับผิดชอบของคุณที่จะซื้อสิ่งเหล่านี้ด้วยตัวคุณเอง
maple_shaft

คำตอบ:


11

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

Pragmatic Programmerเป็นทรัพยากรที่มีประโยชน์จริง ๆ และค่อนข้างสั้น แต่ฉันแนะนำให้คุณอ่านหลังจาก Code Complete

หนังสือเหล่านี้จะช่วยให้คุณเริ่มต้นได้จากนั้นรหัสโค้ดรหัสและรหัสอื่น ๆ ... แต่เมื่อรู้ว่าเมื่อใดจะหยุดซอฟต์แวร์ของคุณจะไม่สมบูรณ์แบบ


6

บริษัท ของฉันทำสิ่งนี้ตลอดเวลา ... และมันทำให้ฉันกลัว

"ฉันเป็นนักพัฒนาซอฟต์แวร์ฉันจะกลายเป็น EE ได้อย่างไร"

ฉันคิดว่าคำตอบนั้นค่อนข้างชัดเจน ต้องใช้เวลาและทำงานอย่างหนัก และแน่นอนว่าสื่อการเรียนรู้ที่ถูกต้อง พื้นหลังด้านวิศวกรรมช่วยในมหาวิทยาลัยของฉัน CS และโรงเรียนวิศวกรรมอยู่ในอาคารเดียวกันที่มีการทับซ้อนกันมากมาย มีอัลกอริทึมและพื้นฐานทางคณิตศาสตร์อยู่ที่นั่น

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

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

ด้วยเหตุนี้จึงไม่มี "catch-all" กลายเป็นอุปกรณ์ที่ยอดเยี่ยมสำหรับหนังสือเล่มนี้ ฉันขอแนะนำให้คุณเริ่มต้นด้วยการหยิบหนังสือที่ได้รับการจัดอันดับอย่างดีเกี่ยวกับภาษาที่คุณใช้บ่อยที่สุดและเข้าร่วมในชุมชนสแต็คโดยเฉพาะสำหรับการตรวจสอบโค้ด

ลองใช้ Amazon.com พวกเขามีรีวิวหนังสือดีๆ


3

หนังสือ : สิ่งสำคัญคือการอ่านหนังสือ (ดี) เกี่ยวกับภาษาที่คุณเลือก เมื่อคุณรู้ภาษาที่คุณเลือกคุณจะได้รับ " More X ที่มีประสิทธิภาพ " หรือ "Y best Practices" เป็นต้น ฉันพบว่าตำราอาหารจะดีมากในการลดช่องว่างที่คุณอาจมี ดังนั้นฉันเดาว่าเป็นหนังสืออย่างน้อยสามเล่มที่คุณต้องได้รับ สิ่งหนึ่งที่: ทำแบบฝึกหัดและรหัสกะตะเพื่อพัฒนาความเข้าใจภาษา แน่นอนคุณต้องมีรูปแบบxUnitที่ดี

อัลกอริทึมนั้นมีความสำคัญเป็นพิเศษและคุณควรเลือกหนังสือที่ให้รายละเอียดพวกเขา - อีกครั้งในภาษาที่คุณเลือก รูปแบบการออกแบบและรูปแบบการต่อต้านมีค่าในขณะที่รู้ในภาษาใด ๆ

ด้านล่างบรรทัด: มันต้องใช้เวลา อย่ารีบเร่ง


+1 แต่ต้องระวังเสมอว่ามีเพียงกฎเดียวเท่านั้นที่ไม่มีข้อยกเว้น: กฎทั้งหมดมีข้อยกเว้น
Jan Hudec

@JanHudec: อันไหนที่คุณมีในใจที่นี่?
Sardathrion - Reinstate Monica

3

คุณดูดในการเข้ารหัส ใช่.

แต่นั่นไม่ได้หมายความว่าคุณไม่สามารถส่งมอบซอฟต์แวร์ได้ซึ่งทำให้คนมีความสุข;)

จงนอบน้อมเขียนตรรกะ"ธุรกิจ"ที่คุณต้องการ ใช้รหัสห้องสมุดสำหรับทุกอย่างอื่น อย่าพยายามเขียนอัลกอริธึมพื้นฐาน (เช่นการเรียงลำดับอาเรย์ ) อย่าใช้ "เคล็ดลับแฟนซี" ใด ๆ ลองทำตามข้อตกลงรหัสdraconian

ใช้ IDE ที่ดี สิ่งนี้เป็นสิ่งสำคัญเนื่องจากจะช่วยให้คุณจัดรูปแบบโค้ดและติดตามความผิดพลาด / ความผิดพลาดง่าย ๆ

อ่านหนังสือเช่น " Code Complete " และ " Pragmatic Programmer " พยายามบังคับตัวเองและเรียนรู้ OOP (ง่าย ๆ และจะช่วยให้คุณรักษารหัสของคุณได้มากขึ้น)

ใช้ SVNกระทำบ่อยๆ - ดังนั้นคุณจะสามารถย้อนกลับการเปลี่ยนแปลงของคุณได้ (เมื่อคุณจะทำลายบางอย่าง)

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

และแน่นอนสิ่งที่สำคัญที่สุดก็คือ ให้การเข้ารหัส, การเข้ารหัส, การเข้ารหัส


ป.ล. : ถ้าคุณสามารถเขียนรหัส C ++ ที่ใช้งานได้และคุณเขียนเครือข่ายประสาท (!) - จากนั้นสมองของคุณเหมาะสำหรับการเขียนโปรแกรม;) โชคดี!


2

มีคำตอบที่ดีอยู่ที่นี่

การหมุนครั้งใหญ่ในความโปรดปรานของคุณคือความจริงง่ายๆที่คุณต้องการรู้

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

ด้วยวิธีนี้เมื่อคุณกลับมาใช้รหัสในอีกหนึ่งปีหรือมากกว่านั้นคุณจะไม่คิดว่า "ใครเป็นคนทำเรื่องนี้" คุณจะสามารถค้นหาสิ่งต่าง ๆ และเปลี่ยนแปลงได้โดยไม่เสี่ยงต่อการแตกหัก **

วิธีที่ดีในการเริ่มต้นคือการหาโปรแกรมตัวอย่างและทำงานผ่านพวกเขา จากนั้นคุณสามารถปรับให้เข้ากับความต้องการของคุณ

** หนึ่งในอาการปวดหัวที่ใหญ่ที่สุดของฉันคือการพยายามทำงานกับโค้ดที่เขียนขึ้นโดยคนที่ไม่คิดว่าการจัดรูปแบบหรือการตั้งชื่อมีความสำคัญ


1

ในขณะที่มีแหล่งข้อมูลมากมายที่ดีเกี่ยวกับวิธีการทำและไม่ทำสิ่งต่างๆในที่สุดสิ่งที่สำคัญที่สุดคือการเห็นรหัสจำนวนมากและทำงานกับมันและดูว่าง่ายหรือซับซ้อนแค่ไหนในการดูแลรักษาตัวเอง

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

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


0

สิ่งหนึ่งที่ฉันอยากจะแนะนำสำหรับการเรียนรู้การเขียนโค้ดที่มีคุณภาพและความกังวลด้านสถาปัตยกรรมคือคำสอนของ "ลุงบ๊อบ" (Robert Martin) เขามีวิดีโอราคา $ 1ที่มีขนาดเท่าคำพังเพยถ้าบางทีแปลกเกินไปรวมถึงหนังสือดีๆสักเล่ม

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