Yazılım geliştirilmesi zaman alan ve sürekli bakım gerektiren bir süreçtir. Bu sürecin doğru yönetilebilmesi ve ürünün uzun süreli olabilmesi için ihtiyaçların doğru belirlenmiş ve güzel bir geliştirme sağlanmış olması gerekir. Bu yazıda teknik bilgisi olmasada talebi yapan tarafın asgari dikkat etmesi gereken konulara değinilecektir.
Yazılımcılar kullanıcıdan gelen taleplere göre sistemi şekillendirirler, bizler için önemsiz gibi gözüken detaylar yazılımcıların alt yapı kurgusu için çok önemli bir kilit taşı olabilir. Bu sebeple aklımızda bulunan tüm fikirleri detaylı bir şekilde aktarmamız gerekir. Bu durum karşılıklı olarak iki önemli fayda sağlayacaktır. Birincisi yazılımcı işin hangi noktaya gideceğini daha yi görebileceği için genişleyebilir bir sistem kurabilme imkanına sahip olacaktır. İkinci olarak ise yazılımcıdan olayı dahada basitleştirecek öneriler alabilme imkanımız olacaktır. Ürün hakkında detay vermeden, yazılımcıdan istediğimiz gibi bir sonuç ortaya çıkarmasını beklemek haksızlık olacaktır.
Yazılımlar sizlerin iş yükünü hafifletmek, süreçlerinizi sistematize hale getirmek, verilerinizi tertipli tutmak, rutin işlerinizi otomatize etmek, bir soruna çözüm getirmek gibi faydalar için yapılır. Yazılımlar sizlerin işlerinizi daha konforlu yapmanızı sağlayacak araçlar olarak görmelisiniz. İşte bu aracı daha güzel hale getirebilmek için taleplerimizde aşağıdaki konulara dikkat etmek gerekmektedir.
İhtiyaç Belirlenirken İzlenecek Bazı Temel Adımlar
Öncelikli olarak şu anda kullandığınız yazılımlar yada çözümler varsa onları değerlendirin, bu yazılımlarda hangi özellikler sizin işinizi tam, kısmen veya en iyi şekilde görüyor not ediniz. Daha sonra not ettiğiniz konulara tek tek odaklanın ve gerçekten sizin için önemli olup olmadığının kararını verin, gerekirse ilgili kişiler ile istişare edin. Gerek yok ve olmasada olur dediklerinizi eleyin. Kesinlikle olmalı dediğiniz konular/özellikler belirledikten sonra aşağıdaki konulara açıklık getirin.
- İstediğiniz özelliklerin neden olması gerektiğinin ve olursa ne gibi faydalar sağlayacağının cevabını net bir şekilde verin.
- Aldığınız notları konularına göre gruplandırın/modüllere bölün. Örneğin; Kişi İşlemleri, Not İşlemleri, Araç İşlemleri, Raporlar, Demirbaş İşlemleri vb.
- Gruplandırma işleminden sonra eklenmesini istediğiniz özelliğin detaylarını açıklamalı bir şekilde yazınız. En ufak detaya girmekten çekinmeyin. Yazmanın kolay olması açısından, bilmeyen birine hayal kurduruyormuş gibi düşünebilirsiniz. Örneğin: Kişi kartı listesi olmalıdır, Kişi kartında (Ad, soyad, yas, boy, kilo, öğretmeni, il, ilçe, açık adres, cep no) bilgileri olmalıdır. Kişi listesinde öğrenci adına, soyadına, sınıfına göre filtreleme yapabilmeliyim. Birden fazla öğrenci seçerek sınıf, stajyer ve öğretmen bilgilerini toplu olarak değiştirebilmeliyim. Seçtiğim kişilerin istediğim özelliklerini exel olarak alabilmeliyim, hangi özellikleri exele aktarmak istiyor isem seçebileğim bir ekran olmalıdır. Kişi listesinde öğrencinin resmini görebilmeliyim. Öğrencinin resmini büyük görmek istediğimde üstüne tıklamak yeterli olmalıdır. vb.
- Sizin için yazılımı kullanırken, kullanım kolaylığı açısından önemli olan bir konu var ise özellikle belirtin. Örneğin: Tüm öğrenci listesi tek sayfada olmalıdır. Aynı sayfa üzerinden öğrenci silme, düzenleme ekranlarına ulaşabilmeliyim. Öğrencilerin bilgilerine tek sayfadan ulaşabilmeli ve güncelleyebilmeliyim, bunun için ayrı sayfalara bakmam gerekmemelidir. Sistemden herhangi bir rapor alacak isem bunu tek yerden yapmalıyım. vb.
- Mobil uygulama olmasını istiyormusunuz? İstiyorsanız hangi özellikler mobilde olmalıdır. Örneğin: Öğretmen öğrencilerin notlarını ve değerlendirmelerini mobil uygulama üzerinden girebilmelidir. vb.
- İstediğiniz özellikleri kimlerin kullanacağını göz artı etmeyin ve muhakkak kullanacak kişilerin fikirlerini alın ve ortak fikri yazıya dökün. Özelliği kullanmayacak veya işi olmayacak kişilerle o konuyu konuşmanız sizi yanlış yöne sevk edecektir.
- İstediğiniz özellikleri önceliklendirin. Yazılım geliştirme, bir süreç olduğu için eğer bir önceliklendirme yapmaz iseniz sizin için önemli olan bir özellik en son geliştirilebilir. Örneğin; İlk aşamada öğrenci ve not modülü olmasını istiyorum. Bunlar yapıldıktan sonra sırasıyla raporlar, araç işlemleri modülleri geliştirilmelidir.
- Genel olarak sürecin nasıl gitmesini istediğinizi belirtin. Örneğin; Yazılımın istenen her bir modülün geliştirmesi tamamlandıkça bize kontrol için sunulsun, onay verirsek diğer modüllere başlansın vb.
- Yazılımın statik mi (Temel HTML, CSS bilgisi gerektirir) yoksa admin panelli (İçerikleri kendiniz girebilirsiniz ve güncelleyebilirisiniz) bir yapıda olup olmayacağını netleştirin.
- Bilmediğiniz yazılımsal teknik konularda yazılımcıyı yönlendirmeyin. Sonuç odaklı olup çıkan ürünün istediğiniz gibi olup olmadığına odaklanın.
- Yazılım geliştirme işini ehline verin. Yazılımdan tam anlamayan yada istediğiniz çapta projeler geliştirmemiş kişiler, siz derdinizi düzgün anlatsanız bile istediğiniz sonucu ortaya çıkaramayabilir.
Kısaltılmış Örnek (Not Modülü Talebi)
Ufakta olsa fikir vermesi açısından yazılımın belirli bir özelliğinin talebinin nasıl yapılabileceği ile ilgili özet örnek hazırladım. Bu mihvalde talebin detaylandırılması gerekmektedir.
Öğrencilerin notlarını merkezi olarak girebilmek, arşivini tutabilmek ve geçmişe dönüş öğrencinin başarını durumunu takip edebilmek için not modülü istiyoruz. Bu modül de öğretmen sadece kendi öğrencilerini görecektir. Öğretmen isterse sadece seçtiği öğrencilere, istersede tüm öğrencilere toplu not girişi ve güncellemesi yapabilmelidir. Öğrencileri seçerken sınıfına ve grubuna göre filitreleme yapılabilmelidir. Not girişlerinin kolay olması için isimler sayfanın sol kısımda sabit olmalı, sağ tarafa doğru not verilebilecek kutucuklar olmalıdır. Notlar yazıldıkca otomatik kaydedilmelidir, ek bir kaydet düğmesi olmamalıdır. Öğretmenin olası hatalarına karşı yapılan son 10 değişiklik bilgi amaçlı kaydedilmelidir.
Öğretmen aynı modül içerisinde sınıfa, şubeye ve sınav notlarına göre öğrencilerde sıralama yapabilmelidir ve bu bilgileri exel olarak alabilmelidir. Örneğin; 1. sınıfta, b şubesinde okuyan öğrencileri vize notu en yüksek/en düşük olana göre sıralama yap ve exele aktar. Öğretmenler not girişlerini özellikle mobil uygulamadan da yapabilmelidir. Geriye kalan işlemler bilgisayar üzerinden de olabilir. Öğretmenlerin not girişlerini aktif etme ve kapatma işlemleri okul müdürü tarafından yapılabilmelidir. Öncelikli olarak not giriş kısmının daha sonrada rapor kısmının yapılmasını istiyorum.
Özet
Yukarıda yazılan konular, bir kişinin yazılım geliştirme hakkında bilgisi olmasa bile temelde ihtiyacını anlatması için yapması gerekenlerdir. Burada belkide en önemli olan nokta yazmaktır. Yazmadığınız her konu kafanızda sorun ve kararsızlık demektir. Yazdığınız zaman o konu üzerinde dahada detaylı düşünme, başkalarının fikirlerini alma ve zamanı iyi kullanma imkanı bulursunuz. Yukarıdaki anlatılanlar yazılım geliştirme talebi içindi fakat bu mantığı başka ihtiyaçlarınız içinde kullanabilirsiniz.
Tavsiyem, ihtiyaçlarınızı belirledikten sonra piyasada olan önce open source, ücretsiz ürünleri sonrada ücretli ürünleri araştırın ve ihtiyaçlarınızı ne kadar karşıladığına bakın. Eğerki ihtiyacınızı yüksek oranda karşılıyor ise öncelikli olarak bu ürünleri değerlendirin. Ne zaman ki ihtiyacınızı gören ürünler bulamadınız, bulsanız da yeniden yazdırma + bakım maliyetiniz bulduğunuz ürünü almaktan kat ve kat uyguna denk geliyor, o zaman yazılım geliştirme işi düşünülebilir.
Bu zamana kadar çalıştığım ve destek verdiğim kurumlarda çok nadir yazılım geliştirme yaptırmışımdır. Genelde open source, ücretsiz veya lisanslı ürünler işimizi fazlasıyla görmüştür. Bu tarz ürünlerde, sorunlar en aza indirilmiş, dokümantasyon ve destek gibi konular iyi çalışılmış olduğu için kurumsal açıdan faydası ve sürdürülebilirliği yüksek oluyor.
Analiz ve derdini anlatma esasında bu kadar kısa bir yazıyla anlatılabilecek birşey değildir. Bu yazıda derdim, hiç bilmeyene birazda olsa fikir verebilmekti. Hayırla kalınız.