Selamlar,
Epey ara verdim yazı yazmaya :) ama bugün harika bir konu ile karşınızdayım.
Konumuz, ne zaman ihtiyaç duysak bir türlü düzgün çalışmayan hata veren bizi strese sokan yazılımlar :) Haydi başlıyoruz :)
Bir devlet dairesine gidersiniz. Basit bir işleminiz var yapıp çıkacaksınız. Ama saatlerce sıra beklersiniz. Tam size sıra gelir ve memurun yüzünde sahte bir üzgünlük ifadesi ile "sistem gitti" derler. Bunu ilk defa yaşadığınızda "ee ne yapalım" deyip moralinizi bozmayabilirsiniz. Ama sıranın ilerlemediğini gördüğünüzde anlarsınız ki aslında herşey o sistem. O memurlar hepsi birer aracı, gerçek iş başkadır.
Üstüne birde kendimizce olup bitenlere yorum yaparız. Devlet işi tabi ne olucak düzgün yapmamışlar diye düşünür, hatta belki çoğunun alışkın olduğu üzere tek suçlu hükümetmiş gibi ordan olayı kolayca siyasete de bağlayabilirsiniz :)
Devlet dairesinde bir nebze kabul edebileceğiniz bu durum, bir de bakarsınız ülkenin en iyi bankalarının bir şubesinde işlem yaparken de başınıza gelir. Neyse dersiniz, demek ki ucuza kaçmışlar. Bankanın tek derdi para ondan dolayı kötü yazılım almışlar ve çöküyor çalışmıyor diye düşünürsünüz belki :) Bu durumun tam aksine olmasına rağmen böyle sanarsınız :)
Sonra bir işe girersiniz, belki muhasebe belki IK uzmanı. Girdiğiniz şirkette muhakkak bir sistem vardır. Ve ne hikmetse IT konusunda uzman bir ekip olmasına gayet de saygın ve işinde uzman insanlar çalışmasına rağmen, o sistem bir türlü düzgün çalışmamaya ısrar eder. Sonra birçok şirket değiştirirsiniz, belki yükselirsiniz yönetici olursunuz. Hiçbirşey değişmez, hatalar bırakmaz yakanızı hata konusunda çok kararlıdır sistemler :)
Hata deyince de, basit hatalar da değildir hani. Raporlar hatalı olur, girilen veriler hatalı kayıt edilir. Bazı mailler hatalı kişilere yollanır. Yanlışlıkla sildiğiniz bir kaydı geri alamazsınız veri kaybolur. En çok olanı da, durduk yere hiçbirşey yapılmayan erkan çalışmıyordur. Hata vermiyorsa da, en azından basit bir işlemi yaparken, ömrünüzden ömür götüren yazılımlar ile çalışırsınız, kabullenir ve öyle çalışmak zorundasınızdır. Nice yazılım mühendisinin kulağını çınlatırsınız :) Tüm akrabaları konuya dahil olmak zorunda kalır bu kulak çınlatmaları nedeniyle :)
Dışardan sıradan işler yapan insanlar da bakıp sizi bilgisayar kullanıyor görenler de imrenirler, mükemmel bilimsel şeyler yapıyorsunuz sanarlar. Halbuki basit hesap makinesi düzeyinde formlara veri giriyorsunuzdur. Elbette istisnalar kaideyi bozmaz ama acı bir gerçek buna epey yakındır :)
Peki neden oluyor bu yahu ? Bunca yıl mühendislik okuyan insanlar, nasıl bir araya gelip bu kadar saçma hatalar ile dolu bir ürün çıkarabiliyorlar ? Sahi nedir bu işin sebebi diyorsanız, işte size mükemmel bir cevap veriyorum.
Önce kabul etmeliyiz ki, ben size bunu söylediğimde, bu soru sizin için çok mantıklı görünüyor. Gerçekten düşündürücü bir çelişki gibi duruyor.
En acı tarafı ise, işin iç yüzünü bilen biri olarak maalesef bu durumun hiç de anormal olmadığını söylemek zorundayım :(
Aksine de bilişim dünyasındaki uzmanlar gerçekten çok yetenekliler ki bu kadarlık sorun çıkıyor diye düşünmekteyim :)
Öyle olmasa idi bugün olandan çok daha öte sorunlar olurdu emin olabilirsiniz.
Bunu söylediğimde size mantıklı gelmeyecek elbette. Ama aşağıda vereceğim örneklerden sonra ne demek istediğimi anlayacaksınız.
Bu sorunun temelinde müşteri'nin her istediğinin yapılabileceği veya yapılması gerektiği inancı var diyebilirim.
Bu hata 2 yönlüdür.
Bazen müşteri çok ukala olup parasını veriyorum böyle istiyorum böyle olmalı diyebilir.
Bazen de proje analizini yapan kişi müşteriyi kaybetmemek adına kabul etmemesi gereken talepleri kabul edebilir.
Her durumda da sonuç başarısız bir proje nedeniyle birbirini suçlayan müşteri ve yazılım şirketi sarmalı arasında beynindeki tüm nöronları harcayan fedakar yazılım mühendisi arkadaşlara olan olur :) yani bize :)
Ne demek mi istiyorum, şu esrarengiz araba siparişini bir okuyun :)
Direksiyonu Arka Koltuktaki Araba Siparişi
Mercedes veya Audi gibi bir otomobil devi şirketi düşününün. Araba yapmayı bildiğinden şüphe eder misiniz ? Tabi ki hayır. Ve eğer siz gidip ürettiği bir arabayı satın alırsanız, memnun da kalırsınız sorun yaşamazsınız. Yaşarsanız da firma size bunu telafi eder, çünkü kendi insiyatifidir.
Aynı şekilde yüksek ihtimalle siz hazır bir yazılım alırsanız daha az sorun yaşarsınız. Bu sebeple de SaaS yazılımı kullanmanızı öneririm. Gönül böyle istese de, maalesef çoğu yerde herkesin başka türlü iş yapması nedeniyle özel yazılım geliştirme bir gereksinimdir.
Şimdi örneği uyarlayalım. Siz Audi'ye gidip bir araba siparişi vereceksiniz. Patronsunuz ve o işi yıllarca yaptınız. Mesleğinizde size kimse bişey diyemez özgüveniniz tam ve bir yazılım yapılacak. Bu örnekte bir patron gözüyle mantıklı bir yazılım siparişi hazırlayacağım.
Altını çiziyorum, sorunu çözmek için mantıklı duran müşteri beklentileri başlıyor :)
1- Direksiyon arkada olsun :)
Müşteri : Benim hep şöförüm vardı bugüne kadar. Bu araba ile personel giderlerini azaltmak amaçlı(yazılımlarda yegane hedeftir ) şöför yerine aracı ben kullanabilmeliyim. Ancak ben hep arka koltukta oturduğum için, direksiyonun arka koltukta olması gerekiyor.
Proje Yöneticisi : Tabi efendim, hatta arkadaki 2 koltuğa da direksiyon koyalım :)
İç ses : Para var huzur var, iste tabi. Dua et ki ay sonu maaşları ödemek için bu işi almamız lazım :)
2- 5000 km yol gidebilecek yakıt taşıma özelliği :)
Müşteri : Yakıt bittiğinde şoförüm yakıt alır ben hiç uğraşmazdım. Böyle bir vaktim olmadığı için aracın en az 1 hafta yakıtı gidebilmeli, Tahmini de 5.000 km yol yapıyorum haftada, bu kadar yolu gidebilecek yakıt alabilmesi lazım.
Proje Yöneticisi : Tabi efendim, yaparız, hatta yaptık biz bunu bu konuda çok iyiyiz. Ekibimizde bu işte uzman insanlar var.
İç ses : Yuh be, ne üşengeç adam, keyfe bak nasıl yaparız ki, hemen ekibe whatsapp dan yazayım baksınlar yahu çattık be :)
3- Ön kamera desteği
Müşteri : Koltuk ve direksiyon arkada olacağı için, önü iyi göremeyebilirim bu nedenle aracın önünde gelişmiş bir kamera olmalı.
Proje Yöneticisi: Tabi ki, Go Pro kameralar ile ilgili birçok uygulama yaptık, apileri üzerinden verileri alabiliriz.
İç ses : Youtuber olucak sanki, gelişmiş kamera istiyormuş, hayret bişey yahu, bu proje bitmez buraya yazıyorum :)
4- Araç içi 120 inç ekran
Müşteri : Şoförüm varken bilgisayarımdan çalışabiliyordum. Yine yapabilmem için yolu iyi görmem gerek bu nedenle kocaman 120 inç ekran istiyorum ki rahat kullanabileyim.
Proje yöneticisi : 140 inç daha iyi olabilir ( o işi almayı kafaya takmış adam :) ) efendim ama 120 de enerji tasarrufu için doğru tercih olur tamamdır notlarıma aldım :)
İç ses: Ben bu adamı boğarım, Elon Musk'ta bu hayal gücü yok saçmalamanın zirvesine ulaştı, bittik biz nasıl yapıcaz biz bu projeyi
Nasıl gidiyor :) harika bir istek listesi dimi. Muhtemelen bir otomobil şirketine bunu sipariş vermeyi deneseniz, nasıl bir tepki alacağınızı tahmin bile edemiyorum :)
Şimdi benim abarttığımı düşünebilirsiniz ve inanın abartmış olmayı en çok ben isterdim.
Maalesef bize gelen talepler bizim gözümüzden bu kadar absürt bu kadar anlamsız ve buna rağmen itina ile yapmak zorundayız :(
Şimdi örneğimin gerçekte yazılım sektöründe karşılığı nasıl onu ifade edeyim.
Amaç personel giderlerini kısmak, baktığınızda bir şoför'e vereceğiniz maaştan tasarruf edeceksiniz. Bu nedenle nasıl olur da şoför olmadan bu yolculuğu yaparım düşüncesi var. İşte bu genelde yazılım projelerinin ana amacıdır.
Daha az çalışan veya daha verimli bir üretim hedefller ve yukarıdaki istekler baktığınızda gerçekten bu araba siparişini mantıklı kılabilir. Kırılım noktası ise, patronun bir araç yapmanın temel kurallarını yazılım sektörünü bilmediği için bu örnekte uygun düşsün diye bilmediğini varsayıyor olmalıyız. Şimdi istekleri inceleyelim.
1- Direksiyon arkada olsun :)
Bu genelde, şirketlerin "kendi işini" iyi bildikleri için yazılım ile personel giderlerini azaltmak amacı ile yazılımdan beklenmemesi gereken şeyleri ifade ediyor. Karmaşık ve zor sorunların çözümünde yazılım kullanılmalı ama, bu örnekteki gibi bazen yazılım ile, daha karmaşıklaştırmaktadırlar. Genelde de müşteri parasını veriyorum istediğim olmalı diye düşünür, şirket de işi kaybetmemek için kabul eder.
2- 5000 km yol gidebilecek yakıt taşıma özelliği :)
5.000 km yol gidip hiç benzin istasyonunda durmak istememek :) bunu gerçekten bir arabada başarmanızın yolu elbette var ve bu seçenekler 2 adetle sınırlı. Ya depoyu bagaj ve koltuk kısımları da dahil yakıt deposu yaparsınız, ya da yakıtı kimyasal anlamda arge yaparak o kadar yol yapacak hale getirirsiniz. Daha da zoru, aracın motorunu geliştirmeniz gerekir. Bilin bakalım hangisi seçiliyor :) Tabi ki depo büyütülür. Müşteriye diğer seçeneklerdeki arge için bir fatura çıkaramayacağınız için, tek çözüm depoyu büyütmektir ve bunu yanlış olduğunu bile bile yapmaktayız :)
3- Ön kamera desteği
İlk istek zaten bir mühendisin kabul edeceği bişey değil. Direksiyon arka koltukta olması :) Hayal bile edemedim. Ne oldu, arkada diye de bu sefer önü görme sorunu çıktı ve yüksek kalite bir kamera gereksinimi oldu. Peki kamera öyle olursa ne olur, maliyet çok fazla artar. Peki bunu düşürmek gerektiği için, şirket neyi seçer, tabi ki kalitesiz kamera :) Kamera iyi olmazsa önü göremeyen şoför tabi ki kaza yapmaz mı, yapar. Sorumlusu kim, tabi ki arabayı yapan şirket :) Şirkete konu gelirse ne olur, o kamerayı hangi mühendis taktı, yani yazılım mühendisi :)
4- Araç içi 120 inç ekran
120 inç ekran isteği :) evet abarttım ama acı ama gerçek sektörde istekler böyle :) O ekranı orta göbeğe koyabilir misiniz. Tabi ki hayır, sığmaz, ne yapmak lazım, tavanı delelim fikri önerilir. Su girer der iyi bir mühendis :) Bir başkası harika bir çözüm bulur, o zaman der, 120 değil de, 60 + 60 yapalım, yanyana sıkıştırıp koyarız belki. Denerler olur, bunu öneren mühendis şanslı ise takdir alır veya bir üstü kendi fikri gibi sunar o terfi alır. Arabaya 2 ekran konur müşteriye teslim edilir. Herkes memnundur :)
Ama gün gelir patron arabayı kullanmaya başlar, bir bakar ki 2 ekran da aynı görüntüyü gösteriyor . Yani ikisi tek bir ekran gibi davranmaz yolu iyi göremez, kaza yapar. Araç pert olur, kasko da yapım hatası der, karşılamaz. Onca iş de boşa gider.
Proje yöneticisi ise şaşırmış gibi yapar, sorunu hemen çözmek için çalışmaya başlar, şirkete yeni bir fatura gönderilir :) Tabi o kadar iş yaptılar, sorunu çözdüler dimi :)
Sektörün bitmeyen çilesi...
Sonuç
Müşteri: 120 ekran istemişti oldu mu oldu :)
Şirket : 120 ekran istediğini yerine getirdi mi getirdi :) ekran çalışıyor mu çalışıyor :).
Müşteri de şirket de doğru yapmıştır güya :)
Ama sorunlardan sonra müşteri isyan eder, şirketten şikayetçi olur.
Yetenekli Mühendis : şirketin en dahi insanı, 60+60 gibi imkansız bir hayal gücü ile( bu örnekte öyle değil ama, mühendis arkadaşlar bizim işimizde bunu gerçekten yapıyor örnek anlaşılsın diye basit tuttum ) işi çözmesine rağmen, işten atılır :)
İşte bu yüzdendir o yazılımlar çalışmaz, sistem çöker, hatalar verir....
Doğru yazılım mühendisi, müşterisinin arka koltukta direksiyon talebinin neden yapılmaması gerektiğini açıklayandır, onu olduğu gibi kabul eden değildir...
Doğru müşteri, ne istediğini anlatan değil, neyi çözmek istediğini anlatıp, çözüm önerisini işin uzmanına bırakabilendir...
Doğru şirket ise, sırf para kazanacağım diye, böyle saçma bir istekler listesi için bir ürün üreten değil, bunun yerine müşterisine "Tesla" almasını önerendir...
Nokta :)