Tarif ettiğiniz döngü normal. Bir şeyleri iyileştirmenin yolu bu döngüyü önlemek değil, düzene sokmaktır. İlk adım şunu kabul etmektir:
- Bir projenin ilk gününde her şeyi bilmek neredeyse imkansız .
- Her şeyi bir şekilde biliyor olsanız bile, projeyi bitirdiğiniz zaman bir şey (müşterinin gereksinimleri, içinde bulundukları pazar, çalıştığınız teknoloji, müşterilerin istekleri) değişmiş ve geçersiz veya yanlış bildiğiniz şeylerin en az bir kısmı.
Bu nedenle, her şeyi önceden planlamak imkansızdır, ve yapabilseniz bile, bu planı takip etmek sizi kusurlu veya eski bir şey inşa etmeye yönlendirecektir. Bunu bilerek, değişimi planımıza dahil ediyoruz. Adımlarına bakalım:
- Birkaç kullanım durumuyla başlayın
- Kodlamaya başla
- İyi işlemediğim ve şu anki kod tabanına uymadığı birkaç şeyi fark et.
- Kodun çoğunu yeniden yaz
Bu aslında harika bir başlangıç noktası. İşte nasıl yaklaşırım:
1. Birkaç kullanım durumuyla başlayın
İyi. "Kullanım durumları" derken, yazılımın ne olduğunu odaklanıyoruz için . "Birkaç" diyerek her şeyi keşfetmeye çalışmıyorsunuz; Yönetilebilir bir iş miktarına bağlı kalıyorsunuz. Buraya ekleyeceğim tek şey onları önceliklendirmek. Müşteriniz veya son kullanıcıyla, bu sorunun cevabını hesaplayın:
Durumunuzu iyileştirecek, size verebileceğim en küçük ve en basit yazılım nedir?
Bu, asgari uygulanabilir ürününüzdür - bundan daha küçük herhangi bir şey, kullanıcı için yararlı değildir, ancak çok daha büyük bir risk çok yakında çok fazla planlama yapar. Bunu oluşturmak için yeterli bilgi edinin, sonra devam edin. Bu noktada her şeyi bilemeyeceğinize dikkat edin.
2. Kodlamaya başlayın.
Harika. En kısa sürede çalışıyorsun. Kod yazana kadar, müşterilerinize sıfır avantaj elde edilmiştir. Planlamayı ne kadar çok zaman harcarsanız, müşteri geri ödemesiz beklemeye devam eder.
Burada iyi kod yazmak için bir hatırlatıcı eklerdim . SOLID Prensiplerini hatırlayın ve uygulayın , kırılgan veya karmaşık herhangi bir şeyin etrafına iyi birim testleri yazın, unutabileceğiniz veya daha sonra sorunlara neden olabilecek herhangi bir şey hakkında not alın. Kodunuzu, değişikliklerin soruna neden olmayacak şekilde yapılandırmak istiyorsunuz. Bunu yapmak için, her zaman bir şeyler inşa etmek bir karar bu yolu yerine o mümkün olduğunca az kod bu karardan etkilenecek şekilde siz kodunuzu yapılandırırken, yol. Genel olarak, bunu yapmanın iyi bir yolu kodunuzu ayırmaktır:
- Basit, ayrık bileşenler kullanın (dilinize ve durumunuza bağlı olarak, bu bileşen bir işlev, bir sınıf, bir montaj, bir modül, bir servis, vb. olabilir. çok işlevli bir sınıf veya çok sayıda sınıf içeren bir derleme.)
- her bileşen bir işi veya bir şeye ilişkin işleri yapar
- Bir bileşenin iç işleyişini yapma şeklindeki değişiklikler diğer bileşenlerin değişmesine neden olmamalıdır
- bileşenler edilmelidir verilen kullandıkları veya yerine bağlıdır şeyler getirme veya oluşturarak bunları
- bileşenler gerekir vermek diğer bileşenlere bilgileri ve yerine, işi yapmak için onlara sormak getirilirken bilgileri ve işi kendileri yapıyor
- bileşenler, diğer bileşenlerin iç çalışmalarına erişmemeli, kullanmamalı veya kullanımına bağlı olmamalıdır - yalnızca halka açık fonksiyonlarını kullanın.
Bunu yaparak, bir değişimin etkilerini izole edersiniz, böylece çoğu durumda bir sorunu bir yerde çözebilirsiniz ve kodunuzun geri kalanı fark etmez.
3. Tasarımda karşılaşılan sorunlar veya eksiklikler.
Bu olacak. Kaçınılmaz. Bunu kabul et. Bu sorunlardan birine çarptığınızda, bunun ne tür bir sorun olduğuna karar verin.
Bazı sorunlar, kodunuzda veya tasarımınızda yazılımın yapması gerekeni zorlaştıran konulardır. Bu problemler için geri dönüp sorunu çözmek için tasarımınızı değiştirmeniz gerekir.
Bazı sorunlara, yeterli bilgiye sahip olmamadan veya daha önce düşünmediğiniz bir şeyden kaynaklanır. Bu problemler için, kullanıcı veya müşterinize geri dönmeniz ve bu sorunu nasıl ele almak istediklerini sormanız gerekir. Cevabınız olduğunda, git ve onu ele almak için tasarımınızı güncelleyin.
Her iki durumda da, kodunuzun hangi bölümlerinin değişmesi gerektiğine dikkat etmelisiniz ve daha fazla kod yazarken, gelecekte hangi bölümlerin değişmesi gerektiğini düşünmelisiniz. Bu, hangi parçaların birbirleriyle çok fazla bağlantılı olabileceğini ve hangi parçaların daha fazla izole edilmesinin gerekebileceğini hesaplamayı kolaylaştırır.
4. Kodun bir kısmını yeniden yazın
Kodu nasıl değiştirmeniz gerektiğini belirledikten sonra, gidip değişikliği yapabilirsiniz. Kodunuzu iyi yapılandırdıysanız, bu genellikle yalnızca bir bileşenin değiştirilmesini içerir, ancak bazı durumlarda bazı bileşenler eklemeyi de içerebilir. Birçok yerde birçok şeyi değiştirmek zorunda kaldığınızı tespit ederseniz, bunun neden olduğunu düşünün. Tüm bu kodu kendi içinde tutan ve sonra da tüm bu yerlerin bu bileşeni kullanmasını sağlayan bir bileşen ekler misiniz? Yapabilir, yapabilir ve bir dahaki sefere bu özelliği değiştirmek zorunda kalırsanız, tek bir yerde yapabilirsiniz.
5. Test
Yazılımdaki sorunların yaygın bir nedeni, gereklilikleri yeterince iyi bilmemektir. Bu genellikle geliştiricilerin hatası değildir - çoğu zaman kullanıcı da neye ihtiyaç duyduklarından emin değildir. Bunu çözmenin en kolay yolu soruyu tersine çevirmektir. Her ne zaman bu adımlardan geçiyorsanız, kullanıcıya şu ana kadar ne inşa ettiğinizi verin ve onlara “Bunu yaptım - ihtiyacınız olanı yapar mı?” Sorusunu sormak yerine, “yazılıma ne yapmanız gerekiyor?” Evet derlerse, sorununu çözen bir şey yaptınız ve çalışmayı bırakabilirsiniz! Hayır diyorlarsa, o zaman size yazılımınızda neyin yanlış olduğunu daha belirli terimlerle anlatabileceklerdir ve o özel şeyi geliştirebilir ve daha fazla geri bildirim için geri dönebilirsiniz.
6. Öğrenin
Bu döngüden geçerken bulduğunuz sorunlara ve yaptığınız değişikliklere dikkat edin. Desenler var mı? Geliştirebilir misin
Bazı örnekler:
- Belirli bir kullanıcının bakış açısını gözden kaçırdığınızı bulmaya devam ederseniz, bu kullanıcının tasarım aşamasına daha fazla dahil olmasını sağlayabilir misiniz?
- Bir teknolojiyle uyumlu olacak şeyleri değiştirmek zorunda kalırsanız, kodunuzla o teknoloji arasında arayüz oluşturacak bir şey oluşturabilir misiniz?
- Kullanıcı, UI'daki kelimeler, renkler, resimler veya diğer şeyler hakkındaki fikrini değiştirmeye devam ederse, uygulamanın geri kalanına hepsini bir arada olacaklarını sağlayan bir bileşen oluşturabilir misiniz?
- Değişikliklerinizin çoğunun aynı bileşende olduğunu tespit ederseniz, o bileşenin yalnızca bir işe yapıştığından emin misiniz? Birkaç küçük parçaya bölebilir misiniz? Bu bileşeni, başkalarına dokunmadan değiştirebilir misiniz?
Çevik ol
Buraya doğru hareket ettiğiniz, Çevik olarak bilinen bir çalışma tarzı. Çevik bir metodoloji değil, bir sürü şeyi içeren bir metodoloji ailesidir (Scrum, XP, Kanban, birkaç isim) ama hepsinde ortak olan şey şeylerin değiştiği ve yazılım geliştiriciler olarak ortak olduğumuzdur. bunlardan kaçınmak veya görmezden gelmek yerine değişikliklere uyum sağlamayı planlamalıdır. Temel ilkelerinden bazıları - özellikle de durumunuzla ilgili olanlar - aşağıdaki gibidir:
- Güvenle tahmin edebileceğinizden daha ileride planlama yapmayın
- İşlerin ilerledikçe değişmesi için ödenek verin
- Bir seferde büyük bir şey inşa etmek yerine, küçük bir şey inşa etmek ve ardından adım adım iyileştirmek
- Son kullanıcının sürece dahil olmasını sağlayın ve düzenli ve düzenli geri bildirim alın
- Kendi çalışmanızı ve ilerlemenizi inceleyin ve hatalarınızdan ders alın