120 tonluk uzay mekiği fırlatılmayı bekliyor. Kontrol merkezinde butona basıp fırlatmayı başlatacak kimse yok. Onun yerine, kontrol merkezindeki yazılım, uzay mekiğinin içerisinde bulunan ve binlerce sensörden aldığı verilerle milisaniyenin yüzde birinde kararlar veren dört makineye fırlatma emri veriyor.

İşte bu yazılım kusursuz, çökmüyor ve arada sırada yeniden başlatılmaya gerek duymuyor. FastCompany, bu yazılım için insanoğlunun eriştiği mükemmellik diyor. 420 bin satır koddan oluşan bu yazılımın son üç versiyonunda yalnızca birer tane hata vardı.

Eğer bu yazılım hata yaparsa insanlar ölür. Yazılım, 260 mühendisin gece gündüz çalışmasıyla insan hayatını tehlikeye atmayacak hale getirildi.

Şimdi sıra büyük soruya geldi: İnsanlar gerçekten hatasız yazılımlar geliştirebilirler mi? Teknik yanıt evet fakat öte yandan pratik açıdan bu pek mümkün görünmüyor. Sebebi ise hatasız bir yazılım geliştirmenin maliyetlerinin inanılmaz yüksek ve ölüm-kalım durumları dışında bu maliyetin altında girmenin mantıksız olması. Tıpkı NASA’nın fırlatma yazılımı gibi; hata eşittir can kaybı.

Hatasız yazılım ve uygulamalar beklemenin neden gerçek dışı olduğunu anlamak için önce yazılımın çalışma mantığını anlamak gerekiyor. Yazılımlar ideal sistem veya cihazlarda izole olarak çalışmazlar. Üzerinde çalıştığı platforma müdahale edemezken, aralarında tek taraflı bir bağımlılık ilişkisi vardır. Ayrıca kitaplıkların varlığı durumu çok daha karmaşıklaştırır. Yazılımın sorunsuz olabilmesi için, yararlandığı tüm kitaplıkların da hatasız olması şarttır. Bu da kitaplıklar için üçüncü parti çözümlerden faydalanmak anlamına geliyor.

Guy Kawasaki, en son kitabı Art of the Start 2.0’da (Başlama Sanatı 2.0) şöyle açıklıyor: “Yeterince iyi yeterince iyidir. Sonrasında iyileştirme için zamanınız olacak. Konu ne kadar iyi başladığın değil, ne kadar iyi bitirdiğindir.” Ürün geliştirirken akılda tutulması gereken türden bir ipucu doğrusu. Etrafınızdaki girişimcilere sorarsanız, web veya mobil uygulamalarının ilk çıktıklarında birçok hataya sahip olduklarını söyleyeceklerdir.

Yazılımınızı ilk günden tüm kullanım senaryoları için kusursuz hale getirmeye çalışmak inanılmaz meşakkatli bir iş ve odağınızı diğer önemli konulardan kaydırabilir. En iyi seçenek, yazılımın tipik kullanım senaryosunda hata yapmamasını sağlamaya odaklanmak olabilir. Hataların fark edildikleri zaman hata unvanı aldıklarını unutmayın.

Sıradaki yazılım geliştirme projeniz için birkaç yaklaşım ipucumuz var:

1.     Geliştiricilerinizin hatasız kodlar yazmaları bir hedef olmamalı. Bunun yerine, ilk kullanıcılarınızın sorununu çözecek işlevsel bir ürün çıkarmaya odaklanın.

2.    Birçok hata, yazılımın kullanıcı beklentisini karşılamakta yetersiz kalmasıyla ortaya çıkar. Kodlamaya başlamadan önce hazırlayacağınız bir işlevsel tanımlamalar (FS) belgelesiyle bunu kolaylıkla önleyebilirsiniz. Buradaki FS belgesi örneğini kendinize referans alabilirsiniz.

3.    Geliştiricilerin büyük bir bölümü yazılımlarına birim testi yapmıyorlar ve birçoğu bunun nasıl yapıldığını bile bilmiyor. Siz bunu yapabilen geliştiricileri ekibinize katmaya bakın.

4.    Karar verin: Maliyeti yüksek olmayan ve yüzde 99 oranında sorunsuz çalışan bir yazılım mı yoksa yüzde 100 sorunsuz ve çok maliyetli bir yazılım mı geliştirmek istiyorsunuz? Kararınızı verirken, uygulamanızın 10 yıl sonra değil şu an kullanıma sunulması gerektiğini ve yayınladıktan sonra iyileştirmeler yapmak için vaktiniz olacağını unutmayın.

Yazar Hakkında

mm

Girişimcileri, şirketleri, yatırımcıları ve profesyonelleri bir araya getiren geniş bir ekosistem olan İTÜ Çekirdek, kimyadan elektroniğe, bilişimden biyogenetiğe tüm sektörlere açık bir girişimcilik merkezidir.

Paylaşım
Close