Birkaç yıl önce (muhtemelen) aynı problemi yaşadım, birkaç yıl sürdü ve üstesinden geldim. Bu yüzden belki de, benim tarzımın sizin için de geçerli olacağından emin olmasam bile, bunu nasıl başardığımı bilmek sizin için ilginç olacaktır.
Ayrıca burada bir göz atmalısınız: Yazılım Mühendisliğinde Yedi Uzmanlık Aşaması Verimliliğin büyük ölçüde beceri seviyesinin bir yan etkisi olduğunu gösteriyor. Halen kullanmakta olduğunuz teknoloji konusunda aşama 3 ve aşama 4 arasında hala bir noktada olabilirsiniz (beceri yeterliliği teknolojiye bağlıdır, diğerlerini öğrenirken bazı teknolojilerin ustası olabilirsiniz).
Şimdi biyografik tanıklıkla başlıyorum.
Biraz içerik. 47 yaşındayım. 80'lerde 12'de programlamaya başladım. Lisedeyken yarı zamanlı profesyonel oyun programcısı olarak da çalıştım. Temel olarak bana o kadar para alamadı, sadece donanım almaya yetti, ama çok eğlendim ve çok şey öğrendim. 18 yaşında resmi bir Bilgisayar Bilimleri öğrenmeye başladım.
Sonuç olarak, 20 yaşına geldiğimde, herhangi bir programlama görevine başlarken, verilen sorunları çözmenin birçok yolunu biliyordum ve eldeki birçok parametre ve tuzaklar ve her yöntemin dezavantajları ve sınırlarının çok farkındaydım.
Bazı noktalarda (yaklaşık 26 yaşında) herhangi bir program yazmam çok zor oldu. Açılan o kadar çok olasılık vardı ki aralarında seçim yapamadım. Birkaç yıl boyunca (6 yap) Programlamayı bıraktım ve teknik bir haber yazarı oldum.
Yine de programlamayı denemekten asla vazgeçmedim. Ve bir noktada geri geldi. Benim için kilit nokta aşırı programlamaydı, özellikle de Sadelik ilkesiydi: “Muhtemel İşleyebilecek En Basit Şey Yaz”.
Temelde kod verimliliğini önemsememeye zorlamıştım (bu benim ana engelimdi, verimsiz tasarımlardan kaçının), ama sadece en kolay yoldan gitmeliyim. Ayrıca beni hataları daha az görmeye zorluyorum ve hatayı yükselten testler yazdıktan sonra daha sonraki bir zamana kadar hata işlemeyi geciktirdim (gerçekten TDD).
Bu yazarken öğrendiğim bir şey. Ne yazacağımı bilmediğimde veya yazdığımın kötü olduğunu biliyordum . Sadece devam et. Aslında kötü şeyleri yaz. Sonunda daha sonra düzelteceğim. Ya da gerçekten o kadar kötüyse, onu silin ve yeniden yazın, ancak ilk seferinde mükemmel bir şeyler yazan şeyleri iki kez yazmak daha hızlı olur.
Gerçekten de, ilk yazarken iyi olduğuna inandığınız bir kodun gerçekten kötü bir kod kadar iyileştirilmesi gerekeceği çok muhtemeldir.
Sadelik yolunu izlerseniz, ayrıca bir bonus kazanırsınız. İlk tasarım / kodlamayı çıkarmayı / değiştirmeyi kolayca kabul edersiniz. Daha esnek bir zihin elde edersiniz.
Ayrıca, şu anda ne yapmadığımı açıklayan ve daha sonra normal kullanım durumunda kodun ne zaman işlevsel olacağını düşündüğümüzü açıklayan geçici bir yorum yapma alışkanlığına girdim.
Ayrıca, XP uygulamalarını içselleştirmek için diğer programcılarla birlikte uygulanmış bir kod katas olan bir XP Dojo'ya katıldım. Yardımcı oldu. Yukarıdaki resmi yöntemleri içgüdüsel kılmıştır. Çift programlama da yardımcı oldu. Genç programcılar ile çalışmak biraz hız veriyor, ancak deneyimlerle ne yapmadıklarını da görüyoruz. Mesela benim durumumda sık sık aşırı karmaşık tasarımlara girdiklerini görüyorum ve yol açabilecek tasarım kabuslarını biliyorum. Bu tarafa gitti. Bunu yaptım. Sorun vardı.
Benim için en önemli nokta akışı korumak. Hızlı olmak, akışı korumada gerçekten başarılı oluyor.
Şimdi profesyonel bir programcı olarak döndüm ve yaptığım şeyi daha iyi anladığım için hem daha iyi hem de daha hızlı olduğuma inanıyorum. TDD Uygulaması, küçük bir boğa olduğumdan biraz daha yavaş olabilir (ve hiçbir şeyi test etmedim), fakat aynı zamanda yeniden yapılanma korkusu da yok ve kesinlikle hata ayıklamada daha az zaman harcıyorum (neredeyse hiç zaman yok, zamanın% 10'undan azını yapıyoruz) ).
Özetle: çevik yöntemler (XP) kullanarak kod basitliği aştım, sadelikten sonra yeniden yapıştırarak ve içgüdüsel hale getirmek için pratik yaparak. Benim için çalıştı. Bundan başkalarına genelleştirilebileceğinden emin değilim.
Beceri kazanma seviyesi açısından, çoğunlukla teknolojiyi her değiştirdiğimde (yeni dil, yeni çerçeve, vb. Öğrendiğim) yavaşladığımda bir aşamadan geçeceğimi kabul etmeyi öğrendim. Bu normaldir ve sonunda bunun üstesinden gelecektir. Bunu iyi bir metodoloji ve genel amaçlı programlama becerileri ile telafi edebilirim ve bu bir sorun olmayacak.