Bir yazılım projesinin geliştirme süreci.

Bir yazılım dilinde yetkinliği bulunan biriyseniz ve ilk defa kendi yazılımınızı yazmak niyetiniz varsa bu yazı tam size göre. Detaylara girmeden basitçe bir yazılım nasıl geliştirilir ve sürdürülür sorularına kendi tecrübelerimle yanıt vermeye çalışacağım. Bunu yaparken hali hazırda kafanızda bir proje olduğunu varsayıyorum.

İlk olarak yapmanız gereken şey odak noktasını seçmek olmalı. Detaylı düşündüğünüz vakit, fonksiyonların sonsuz olacağını göreceksiniz. Projede odağınızı net bir şekilde koyup fonksiyonları bu odak çerçevesinde şekillendirmelisiniz. Amacınız insanlara video izletmekse, projenizde resim paylaşılan bir fonksiyonun olması gereksiz bir yüktür.

Ekip olun. Unutmayın sadece kartallar yalnız uçar. Siz büyük kitleleri hedefleyen bir yazılım projesini geliştirmek istiyorsunuz. Her konuyu kendiniz çözemezsiniz. Uzman insanlarla çalışmaya gayret edin. Bir yazılım projesinin ideal ekibi 3 veya 4 kişiden oluşmalıdır. Bunu yaparken her üyenin aynı yeterliliğe sahip olmamasına, farklı disiplinlerde çalışabilecek insanlar olmasına dikkat edilmelidir. Her üyenin alanında iyi olması önemli değildir. Önemli olan ekip uyumu ve proje hızı aksatmayacak kadar hızlı bir öğrenme sürecini yönetmektir. Her üye farklı disiplinler üzerine kendini geliştirmeli, bunun yanı sıra yan yetenekleri de aksatmamalıdır.

Parçalara bölün. Projenin amacı doğrultusunda fonksiyonları çıkartın ve olmazsa olmaz dediğiniz fonksiyonları birinci sürüme, diğerlerini sonra ki sürüme saklayın. Bir proje yayına girdiğinde çalışır fonksiyonlara sahip olması önemlidir. Sayıca çok fonksiyon genel olarak avantajdan çok dezavantaja sahiptir. Bu yüzden mümkün olduğunca parçalara bölün ve ana fonksiyonları ilk olarak yayınlanacak sürüm için planlayın.

Basit olun. Amacınız uçup kaçmak olmamalı. Basit, yönetilebilir kod parçalarına sahip olmanız önemlidir. Bunu gerçekleştirmek içinse basitleştirilmiş fonksiyonlara ihtiyacınız var. Planladığınız her fonksiyonu mümkün olduğunca basit hale getirmelisiniz. Basitliği düşünürken olmazsa olmaz özellikleri es geçmemek gerekir. Bu çizgiyi iyi tuturmak başarılı olmanız için önemlidir.

Hızlı geliştirin, güncel olun. Projenize yıllarınızı verebilirsiniz, ama önemli olan hızlı ve güvenilir bir geliştirme sürecidir. Mümkün olduğunca üç ayı geçmeyecek planlar yapın ve mutlaka her üç ayda bir yeni bir sürüm yayınlaması yapın. Unutmayın hiç bir yazılım tam anlamıyla bitmez. Bu yüzden küçük parçaları birleştirerek yazılımlar geliştirmeye özen gösterin. Kısa sürede tamamlayabileceğiniz fonksiyonları tasarlamak önemlidir. Süreye sadık kalırken iş yükünüzü arttırarak kötü yazılmış ve hatalarla dolu bir yazılımı yayınlamak hiç kimseye fayda sağlamaz.

Hatasız olmaya çalışın. Mutlaka uygulamanızda hatalar çıkacaktır. Bunları sıfıra indirmek zaman alır. Ama her adımda hata çıkartan bir uygulama size zaman kaybından başka bir şey sağlamayacak. Bu yüzden yayına vermeden önce iyi test ve hata giderimi yapmanız önemlidir.

Kullanıcıları dinleyin. Kullanıcılarınızla sıkı bir iletişim kurun. Sürekli geri bildirim almaya çalışn. Kullanıcı fikirlerini önemseyin ve çok istenen veya beğendiğiniz istekleri iş planına ekleyin. Unutmayın, amacınız hayallerinizde ki bir yazılım geliştirmek olsa da, fazla kibir ve ego başarısız bir yazılım ortaya çıkartır. Teknik olarak mükemmele yakın bir iş yapmış olsanız bile, kullanıcısı olmayan bir uygulama başarısızdır. Bunu kabul etmelisiniz.

Hataları kapatın. Kullanıcılar sadece istek bildirmez aynı zamanda hata bildirimide yaparlar. Gelen hatalar her şeyden önemlidir. Kullanıcılar için çeşitlilikten çok hatasız çalışan fonksiyonlar önemlidir. O yüzden haftalık olarak hata kapatın. Küçük bir resmin boyutu bile bir hata olabilir. Rahatsızlık verici her şeyi hata olarak görmelisiniz. Hızlı kapatılan hatalar müşteri memnuniyetini arttıracaktır.

Paylaşın. Yazılımınız üzerinde yaptığınız her değişikliği ve geliştirmeyi kullanıcılara açık olarak ifade edin. Mümkünse bir blog tutun ve geliştirme süreçlerini aktarın. Bu kullanıcı ile aranızda samimiyeti arttıracaktır.

Finansal yönetim. Bir yazılım projesinin en önemli unsuru finanstır. Unutmayın siz ve ekibiniz bu yazılım için emek ve zaman harcayacaksınız ve bunun karşılığını almak en doğal hakkınız olacaktır. Yeni hayata geçen bir proje muhtemelen gelir etmek için zamana ihtiyaç duyar. Bu sürede hayatınızı devam ettirip projenizin ihtiyaçlarını karşılayacak bir kaynağa sahip olmalısınız. Elinizde ki para kaynağını iyi değerlendirip gereksiz harcamalardan kaçınmak önemlidir.

İş modelinizi oluşturun. Bir projeyi gerçekleştirdiğinizde sürekli olarak sermayeden para harcamak kötü bir durumdur. Aylarca gelir elde etmemek kabul edilebilir bir durum olabilir. Ama bu durum kesinlikle bir yılı geçmemli. Oturaklı ve geliştirilebilir iş modelleriyle projenizi kaynak oluşturan bir yapıya dönüştürmek önemlidir. Ve bu işi olayın başında planlamak ciddi önem arz eder. Bir proje 8 ile 12 ay arasında kendi giderlerini karşılayabilir durumda olmalıdır.

Yatırımcı ilişkileri. Birlikten güç doğar. Elinizde ciddi bir sermaye olsa bile yatırımcılarla iletşime geçmemek için bir sebebiniz yok. Projenize güveniyorsanız yapacağınız bir yatırım anlaşması size hız ve çeviklik katabilir. Aynı zamanda daha büyük sorumluluklar da getirecektir.

Açık kaynak yazılımları tanıyın. Bu önemli bir noktadır. Hem ücretsiz kullanabileceğiniz uygulamarı bulabilirsiniz hem de büyük bir topluluğun bir parçası olursunuz. Vakit buldukça bu topluluğa geri bildirim ve katkı yapmak projenize fayda sağlayacaktır. Ayrıca sizin kodlara ayıracağınız zamanı azaltıp daha hızlı geliştirme süreci sağlayacaktır.

Bu ve bunun gibi maddeler uzatılabilir. Ama temel olarak uyumlu bir ekip, iyi planlama, iyi kullanıcı ilişkileri ve iyi bir finansal planlama ile başarılı sonuca ulaşacaksınız. Eğer ulaşamazsanız iradeniz kırılmasın. Denemeye devam edin.