ฉันมีปัญหาเดียวกัน (น่าจะ) หลายปีที่ผ่านมามันกินเวลาไม่กี่ปีและฉันเอาชนะมัน ดังนั้นอาจเป็นเรื่องที่คุณสนใจที่จะรู้ว่าฉันประสบความสำเร็จอย่างไรแม้ว่าฉันไม่แน่ใจว่าวิธีการของฉันจะนำไปใช้กับคุณเช่นกัน
คุณควรดูที่นี่: เจ็ดขั้นตอนของความเชี่ยวชาญในวิศวกรรมซอฟต์แวร์มันแสดงให้เห็นว่าการผลิตเป็นส่วนใหญ่ผลข้างเคียงของระดับทักษะ อาจเป็นได้ว่าคุณยังคงอยู่ระหว่างขั้นตอนที่ 3 ถึงขั้นตอนที่ 4 เกี่ยวกับเทคโนโลยีที่คุณใช้อยู่ในปัจจุบัน (ความสามารถด้านทักษะขึ้นอยู่กับเทคโนโลยีคุณสามารถเป็นผู้เชี่ยวชาญด้านเทคโนโลยีบางอย่างในขณะที่ยังเรียนรู้คนอื่น)
ตอนนี้ฉันเริ่มต้นด้วยคำเบิกความทางชีวประวัติ
บริบทนิดหน่อย ฉันอายุ 47 ปีฉันเริ่มเขียนโปรแกรมตอนอายุ 12 ใน 80 ในขณะที่อยู่ในโรงเรียนมัธยมฉันก็ทำงานเป็นโปรแกรมเมอร์เกมมืออาชีพนอกเวลา โดยพื้นฐานแล้วมันไม่ได้มีเงินจำนวนมากพอที่จะซื้อฮาร์ดแวร์ แต่ฉันสนุกกับมันและเรียนรู้มากมาย ตอนอายุ 18 ปีฉันเริ่มเรียนรู้วิทยาศาสตร์คอมพิวเตอร์อย่างเป็นทางการ
ผลก็คือเมื่อฉันอายุครบ 20 ปีทุกครั้งที่เริ่มงานเขียนโปรแกรมฉันรู้วิธีแก้ปัญหาที่กำหนดและตระหนักถึงพารามิเตอร์และข้อผิดพลาดต่าง ๆ ในมือรวมถึงข้อเสียและข้อ จำกัด ของวิธีการต่างๆ
ในบางจุด (พูดอายุประมาณ 26 ปี) มันยากสำหรับฉันที่จะเขียนโปรแกรมใด ๆ เลย มีความเป็นไปได้มากมายที่เปิดออกซึ่งฉันไม่สามารถเลือกระหว่างพวกเขาได้อีก สองสามปีที่ผ่านมา (ทำให้เป็น 6) ฉันยังหยุดเขียนโปรแกรมและกลายเป็นนักเขียนข่าวด้านเทคนิค
ฉันไม่เคยหยุดพยายามที่จะเขียนโปรแกรมทั้งหมด และในบางจุดมันก็กลับมา กุญแจสำคัญสำหรับฉันคือการเขียนโปรแกรมขั้นสูงโดยเฉพาะอย่างยิ่งหลักการ Simplicity: "เขียนสิ่งที่ง่ายที่สุดที่อาจเป็นไปได้"
โดยทั่วไปฉันบังคับให้ตัวเองไม่สนใจเกี่ยวกับประสิทธิภาพของรหัส (นั่นคือสิ่งกีดขวางบนถนนหลักของฉันหลีกเลี่ยงการออกแบบที่ไม่มีประสิทธิภาพ) แต่เพียงไปในวิธีที่ง่ายที่สุด ฉันยังบังคับให้ฉันใส่ใจน้อยลงเกี่ยวกับข้อผิดพลาดและเลื่อนการจัดการข้อผิดพลาดไปในภายหลังหลังจากเขียนการทดสอบเพื่อเพิ่มข้อผิดพลาด (จริงๆแล้วมันคือ TDD)
นั่นคือสิ่งที่ฉันเรียนรู้เมื่อฉันเขียน เมื่อผมไม่ทราบว่าสิ่งที่จะเขียนหรือฉันรู้ว่าสิ่งที่ผมเขียนก็ไม่ดี เพิ่งไปต่อ จริงๆเขียนสิ่งที่ไม่ดี ในที่สุดฉันจะแก้ไขให้ถูกต้องในภายหลัง หรือถ้ามันไม่ดีจริง ๆ ลบมันและเขียนใหม่ แต่มันเร็วกว่าที่จะเขียนสิ่งสองครั้งที่เขียนอะไรที่สมบูรณ์แบบในครั้งแรก
อาจเป็นไปได้ว่ารหัสที่คุณเชื่อว่าดีในการเขียนครั้งแรกนั้นจะต้องมีการปรับปรุงให้ดีขึ้นอย่างมาก
หากคุณทำตามเส้นทาง Simplicity คุณจะได้รับโบนัสเพิ่มอีกด้วย คุณยอมรับได้อย่างง่ายดายว่าจะลบ / เปลี่ยนการออกแบบ / การเข้ารหัสเริ่มต้น คุณจะได้รับจิตใจที่ยืดหยุ่นมากขึ้น
ฉันยังมีนิสัยที่จะใส่ความคิดเห็นชั่วคราวในรหัสอธิบายสิ่งที่ฉันไม่ได้ทำตอนนี้และตั้งใจจะทำในภายหลังเมื่อรหัสจะทำงานในกรณีการใช้งานปกติ
ฉันยังได้เข้าร่วม XP Dojo กับรหัส katas ที่ฝึกหัดกับโปรแกรมเมอร์คนอื่น ๆ มันช่วยได้ มันทำให้วิธีการทางการดังกล่าวข้างต้นสัญชาตญาณ การเขียนโปรแกรมคู่ยังช่วย การทำงานกับโปรแกรมเมอร์หนุ่มให้แรงผลักดันบางอย่าง แต่ด้วยประสบการณ์คุณจะเห็นสิ่งที่พวกเขาไม่ได้ เช่นในกรณีของฉันฉันมักจะเห็นพวกเขามีส่วนร่วมในการออกแบบที่ซับซ้อนมากเกินไปและฉันรู้ว่าฝันร้ายของการออกแบบที่อาจนำไปสู่ ไปทางนั้น ทำอย่างนั้น มีปัญหา
จุดสำคัญที่สุดสำหรับฉันคือการคงการไหล ความรวดเร็วนั้นประสบความสำเร็จอย่างมากในการทำให้การไหลเวียน
ตอนนี้ฉันกลับมาเป็นโปรแกรมเมอร์มืออาชีพและฉันเชื่อว่าฉันทั้งดีขึ้นและเร็วขึ้นด้วยความเข้าใจที่ลึกซึ้งยิ่งขึ้นเกี่ยวกับสิ่งที่ฉันทำ ฝึกซ้อม TDD ฉันอาจยังช้ากว่าตอนที่ฉันยังเป็นกระทิงอยู่เล็กน้อย (และทดสอบอะไรเลย) แต่ฉันก็ไม่กลัวการเปลี่ยนโครงสร้างและใช้เวลาในการดีบั๊กน้อยลง (เกือบจะไม่มีเวลาเลยทำให้น้อยกว่า 10% ของเวลา) )
สรุป: ฉันเอาชนะ codeblock ของฉันโดยใช้วิธี agile (XP) เพื่อความเรียบง่ายจากนั้นทำการสร้างใหม่และฝึกฝนเพื่อให้สัญชาตญาณนั้น มันใช้งานได้สำหรับฉัน ไม่แน่ใจว่าสามารถนำไปใช้กับคนอื่นได้
ในแง่ของระดับทักษะการได้มาซึ่งส่วนใหญ่ฉันเรียนรู้ที่จะยอมรับว่าทุกครั้งที่ฉันเปลี่ยนเทคโนโลยี (เรียนรู้ภาษาใหม่กรอบใหม่ ฯลฯ ) ฉันจะผ่านขั้นตอนเมื่อฉันชะลอตัว นี่เป็นเรื่องปกติและจะเอาชนะมันได้ในที่สุด ฉันสามารถชดเชยสิ่งนั้นด้วยวิธีการที่ดีและทักษะการเขียนโปรแกรมตามวัตถุประสงค์ทั่วไปและมันจะไม่เป็นปัญหามากนัก