Yazılım Mutfağı etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Yazılım Mutfağı etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

4 Mayıs 2014 Pazar

Yazılım Mutfağı -05 (İş Görüşmeleri ve Yapılması Gerekenler)

















       Bu yazımızda bir yazılımcının eğer bir yazılım firmasına dahil olarak çalışmıyorsa yapması gereken işlerden biri olan iş görüşmelerinden bahsedeceğiz. Bu işin püf noktalarını yine kitaplarda yazmayan hayat tecrübelerinden sizler için derleyemeye çalışacağım.

       Bir yazılımın hayat döngüsünü oluşturan unsurları tam olarak anlatan bir kitaba daha henüz rastlamadım. Son on yıl içerisinde “Yazılım Mühendisliği” başlığıyla sayısı bir elin on parmağını geçmeyen eser belki vardır. Bunların en popüler olanını incelediğimizde ise anlaşılması için “uzaylı Türkçesi” ni iyi bilen kişilerin anlaması için yazılımış eserler olduğunu görürüz. Yani hiçbir halt anlaşılmaz. Metodolojilerden bir başlarsınız ve diğer anlamsız ve faydasız gereksiz bilgi çöplüğünde bu işin kitabını nasıl anlasamda bu işi nasıl iyi yapsam endişesiyle kıvranır durursunuz. Batı bu işi çözmüş. Fakat bizde 1930~1940 lı yıllarda yapılan dil devrimi (arapça kelime ayıklama, öz hakiki türkçeye dönüş saçmalığı) gibi faysdasız işlerden dolayı maalesef bir işin kitabını yazmak ve onu okumak işkence halini almakta. İngilizce,Almanca, Fransızca vs. diller bilenler bu konuda biraz daha şanslı olmakta. Çünkü bu dilin sahipleri bizimkiler gibi saçmalıklar yapmamışlar. Neyse bu konuyu uzatmadan diğer hususlara geçiyorum. 

       Öncelikle öğretim görevlisi Gürhan Ustali arkadaşımın anlattığı şu anıyı sizlerle paylaşmak istiyorum. Bilirsiniz Türkiyedeki yazılım konusunda en profesyonel kurumlardan biriside Havelsandır. Bir üniversite öğrencisine hocası ödev vermiş, git bir yazılım firması yazılımı nasıl geliştirir? Hangi metodolojileri kullanır? Hangi iş-süreç vs. çalışmasını yapar diye öğrencisini doldurup salmış piyasaya. Tabi üniversite öğrencisi bakar bu işi Türkiyede en profesyonel yapan yer Havelsan, hemen bir randevu alır ve Yazılım Geliştirmenin başındaki sorumlu kişiyle görüşmeye gider. Öğrencimiz elinde kağıt kalemiyle yetkili kişiye sorularını sormaya başlar. İlk sorusu ise “Efendim siz yazılım geliştirirken en çok hangi metodolojiyi kullanıyorsunuz?” Adamın cevabı ise ilginçtir; “Kardeşim biz program yazıyoruz ne metodolijisinden bahsediyorsun sen?”. Zavallı öğrencimiz aldığı cevapla kuyruğunu kıstığı gibi alır oltasını ve bir an önce dayak yemeden sıvışır :). Tabi bu anlattığımdan herşeyin saçmalığı sonucuna varmayınız. Elbette bir UML tasarım konusu önemli bir konudur. Bunların tabiki öğrenilmesi lâzım. Ancak en önemli olan şey gerçek hayattaki geçerli olan şeyleri öğrenmek. 

        İlk bilinmesi gereken şey Algoritma. Bir akış planını (Flow-chart) çizebilmek size çok şeyler katacaktır. Ancak bundan daha önemli olanı ise bu akış planını kafanızın içinde çizebilmektir. Yani programı hayal edeceksiniz. UML ile ilgili konularda biraz kitap okuyun ve pratik yapın. Şekiller çizin. Bir kullanıcı temsil etmek için bir cin Ali çizin. Kullanıcının yazacağınız yazılımın hangi modüllerine müdahale ettiğini cin aliden çıkan oklarla çizerek gösterin. Basbayağı bildiğiniz ve anlayacağınız karalamaları bol bol yapın. Bunlar size pratik kazandırır. Şimdi gelelim şu iş görüşmeleri meselesine.

        İş görüşmeleri tüm işi tek başına göğüslemesi gereken yazılımcının yapması gereken en önemli aktivitelerden biridir. Öncelikle eğer okuldan yeni mezun oldunuz ve bu işi öğrenme aşamasındaysanız bilmeniz gereken kural fiyat seçimliliği yapmadan önünüze gelen basit işler olmak kaydıyla her işi almak. Zaten yeni biriyseniz size bir tanıdığınız vasıtasıyla iş ayarlanır ve sizde birşeyler yapmaya çalışırsınız. Bir aceminin kendi acemiliğini gizlemenin en iyi yolu görsel tasarıma/makyaja ağırlık vermesidir :) Çünkü program ne kadar süslü görünürse kullanıcının dikkati pek performansla ilgili olmayacaktır. Tabi bu da kişiden kişiye değişir. İlk ticari işiniz size çok şeyler öğretir. Ama bundan sonra bir kuruma iş görüşmesi için çağrıldığınızda artık profesyonel olmanın zamanı gelmiştir. Öncelikle bir ajanda ve yazan bir kalem almayı unutmayın. Kılık kıyafetinizi düzgün seçin. Maalesef müşterinin ilk bakacağı şey sizin kürkünüzdür. Paçoz vaziyette çıkmayın. İyi bir karşılma selamlaşma faslından sonra müşterinizi iyi bir şekilde dinleyin. Onun size derdini anlatmasına fırsat tanıyın. Adeta bir psikiyatrist olun. Uzunca bir koltuğa sırt üstü yatırsanızda olur :) (bu kısım şakaydı). O anlatırken siz elinizde kalem ve kağıtla onun isteklerini bir taraftan listeleyin. Diğer taraftan da cin ali şekilleri yani UML çizimlerini kendi anlayacağınız şekilde çizmeye başlayın. Bu esnada siz müşterinin talebi olan programı kağıt üzerinde planlıyorsunuz aslında. Müşterinin anlattıklarından anlamadığınız yerleri detaylandırmasını isteyin. Size yaptırmak istediği yazılımın tüm detayları belli olduktan sonra işin son ve can alıcı kısmına gelmiş bulunmaktasınız. Tabi firma sahibi insanların bütün gününü size hikaye anlatarak heba edeceğini düşünürseniz yanılırsınız. Bu da duruma göre değişkendir. Baz müşteri sizden hemen bir cevap ve fiyat ister. Bunları çok çabuk bir şekilde %90 doğruluğu olan bir tahminle karar vermelisiniz. Yani yapacağınız yazılıma kaç saat çalışacaksınız?, Bu iş kaç günde bitecek? Ve ne kadar paraya malolacak? En pis görüşme şeklide budur. Her şey görüşme sonundaki 5 dk içinde cevaplanması gerekebilir. Bazen sonraya bıraktığınızda işi alma şansınız kalmayabilir. Aynı zamanda işbitirici bir olduğunuzu karşınızdaki insana güven vererek hissettirmeniz gerekir. Burada yapılacak şey tahmini kaç saatlik bir çalışma yapacağınızı biraz fazla zaman koyarak hesaplarsınız. Saatlik geliştirme ücretini atıyorum 10 dolar koyarsınız. (Çalışma Saati X 10 dolar) + Lisans ücretleri = Yazılım Fiyatı. En basit formul bu olabilir. Tabi bu örnek olması açısından söylenen bir formul. Geliştireceğiniz yazılımı Ücretsiz geliştirme araçları (örneğin lazarus, code block, zeoslib, firebird) ile yaparsanız müşteriyi lisans ücretlerinden kurtarırsınız. Şansınız varsa işi kaparsınız.

       Bazende özel istek üzerine çağrılarak gidersiniz. Bu aşamaya geldiyseniz artık şöhret olmuşsunuz ve methinizi tüm alem öğrenmiş demektir. Bu şartlarda nazlanma hakkı sizde demektir :) Böyle bir görüşmeye daha rahat bir ruh haliyle gideceğiniz malumdur. İstediğiniz kadar ön görüşme yapabilir, dilediğiniz zaman sonra fiyatınızı verebilirsiniz. Ancak şunu unutmayın, yapamayacağınız şeylerin sözünü asla vermeyin. Örneğin adam sizden şirketinde kullanacağı masaüstü bir yazılım geliştirmenizi isterken daha sonrasında cep telefonuyla da bu yazılıma bağlanıp raporlar almak isteyebilir. Siz tabi yaparız abi deyip, sonrasında kullandığınız veritabanı sisteminin cep telefonu ile erişiminin kaf dağına ulaşmaktan zor bir hâl aldığını öğrenip, abi bu iş olmuyor derseniz tek kelimeyle “sıçarsınız”. Tutacağınız sözleri vermeye dikkat etmelisiniz.

         Bazı iş görüşmeleri de vardır ki çok sevdiğiniz bir arkadaşınızın hatrına kalkar görüşmeye gidersiniz. Fakat karşı tarafta sizinle görüşmek için bekleyen kötü niyetli bilgi işlem ekibiyle karşılaşma ihtimalinizde yok değil. Neden böyle peki? Bazen bilgi işlem servislerinde çalışan elemanlar aslında hiçbir halttan anlamayan, o makama torpil ve kayırma ile gelmiş kısacası bulunduğu yeri hak etmeyen bilgisiz çapsız tipler olabilir. Şayet bu tiplerin aklında işi vermek istediği başka bir “mefaatleneceği” yazılım firması varsa ve bunu da şirketin patronu bilmiyorsa o zaman yandınız demektir. Bu bilgi işlemcilerle yapacağınız iş görüşmesi fbi ya iş görüşmesinden daha sıkıntılı geçecek demektir. Size olmadık sorular sorarlar, bilginiz ölçme küstahlığında bulunurlar ve artık çileden çıkacak hale gelirsiniz. Yapılacak işle ilgili hiçbir şey konuşulmadığını, tamamem sizin ne bildiğiniz ile ilgili şeylerin konuşulduğunu görürsünüz. Bu durumu anladığınızda yapılacak şey ise amerikalıların deyimiyle “f*ck you” deyip o ortamdan uzaklaşmak olmalıdır. Çünkü böyle bir görüşmeden size asla iş çıkmayacaktır. Hatta ben yıllar böyle bir görüşmede o bilgi işlemcilerden “aferin sen bu işi bayağı biliyorsun” övgüsüne bile mazhar olmuştum :) Ama yine de o işi bana vermediler :)

        Bu konuda söylenecek çok şey var. Bu hususlarla igili yazdığım diğer yazılarda yer yer bahsediyorum. O yazılarıda okumanızı da tavsiye ederim. Sonrasında daha ne ilginç iş görüşmeleri olduki hepsini bir yazıda anlatmak zor olur. Başka bir yazıda görüşmek üzere hoşça kalın.

Durali Kiraz
Yazılım Geliştirici
duralikiraz.blogspot.com
   

19 Nisan 2014 Cumartesi

Yazılım Mutfağı – 04 Hayırlı Müşteri Nasıl Olur?


        

        Daha önceki serimizin yazısında kötü ve sahtekâr müşteri profilini gerçekte yaşanmış bir tecrübeyle anlatmıştım. Yine aynı şekilde başımdan geçen yaşanmış bir iş tecrübesini sizlerle paylaşacağım (bende hikaye çok :) ). 

         Şunu düşünebilirsiniz; parasını ödeyen müşteri en iyi müşteri diyebilirsiniz. Bu tespit kısmen doğrudur. Bir yazılım işi yapacaksanız elbette işin maddi boyutuyla ilgili sözleşme, önden peşinat vs. olaylarını yapmış olacaksınız. Bunun dışında daha iyi olan müşteri yazacağınız yazılımda size yol gösteren, beta testlerini ince eleyip sık dokuyan, sizinle beraber yazılımı geliştirmenin heyecanını yaşabilen bir müşteri profilinden bahsediyorum. Ben hayatım boyunca böyle müşteri bir kere rastladım. Diyebilirim ki, hayatımda yaptığım en güzel yazılımı geliştirdim. Aslına bakarsanız parasal olarak da çok cüz'i bir ücret almıştım. Benim için para birinci planda olmadığı için işin bana zevk veren kısmıyla ilgilenirim. Hayatım boyunca yazılım geliştirmeyi hep hobi bakış açısıyla yaptım. Ve hala da yeni bir iş aldığımda 18 yıl önce aldığım o çocuksu heyecanı hep yaşarım. Çok duygusal olmamdan dolayı geliştirdiğim yazılımlarla aramda bir bağ oluşturmasına da izin veririm (Hepsi çocuğum gibi :) ).

       Yıl 2005 in son ayları. Yeğenim Emre Yerli birgün beni telefonla aradı. Teknik destek hizmeti verdikleri Muradiye vakfına bağlı Aksoy Koleji Çubuk hizmet binasında bir yazılıma ihtiyaç duyulduğunu, bir iş görüşmesi yapmam için ricada bulundu. Tahminimce bir iki gün sonra bizat okul binasında Nevzat Hocayla tanıştık. Kendilerinin başta öğretmenler olmak üzere çalışan personellerinin özlük işleri, sözleşmeleri, sigorta vs personel işlemlerini yapacak bir yazılım gereksinimlerinin olduğunu söyledi. İşin açıkçası bunu duyunca insan kaynakları sisteminin farklı bir şeklini geliştireceğim fikri benim gözümü korkuttu. Çünkü kuruma özel bir yapıdan bahsediliyor ve işin analiz ve diğer ön çalışma aşamaları da keza ayrı bir dert. Tabi ben o güne kadar Nevzat Hocayla tanışmadığım için bütün yükün sırtıma bineceği endişesi ile çekimser ve kararsız bir durum sergiledim. İşi almak istemedim ilk önce, fakat bu işin kısmende olsa hayır işi olduğu, Muradiye vakfınında yıllarca ücretsiz öğrenci okutma gibi vasıflarından dem vurunca artık “Nalet olsun içimdeki bu insan sevgisine :)” diyerek işi kabul ettim. İşin çerçevesini UML dizayn mantığıyla karaladıktan sonra ben yazılımı geliştirme sürecine başladım. Yaklaşık 3-4 ay sonra kullanılabilir bir yazılımı Nevzat Hocanın makinesine kurdum. Neredeyse 2 güne bir Nevzat hoca bana programla iglili düzeltmeler konusunda rapor gönderiyordu. Benim göremediğim ne kadar eksik varsa noktasına ve virgülüne kadar hepsini bildirdi. Bu olay iki ay kadar daha sürdü. Sonuçta program betadan Tam sürüme (release) haline geçmişti. Normalde başka yazılımcı olsa iki telefondan sonra birdaha o müşterinin telefonuna bakmazdı. Üstelik bir de parayı aldıysa tamam. Olmaz demeyin ben öyle insanları da çok tanıdım. Yaptığı işi parayı aldıktan sonra kendine yük olarak gören çok insan tanıdım. Nihayetinde Nevzat Hocanın beni çok iyi ve verimli bir şekilde yönlendirmesiyle ortaya muzzam bir yazılım çıktı. 2006 Mayısında tam sürüm kullanmaya başladıkları yazılımla ilgili yıl 2014 olmuş daha en ufak bir revizyon, hata yada düzeltme talebi olmadı. Delphi ve Firebird ile geliştirildi. Ve diyebilirimki bugüne kadar yazmış olduğum en başarılı yazılımdır okul personel yazılımı.

      Şunu da belirtmekte fayda var; Nevzat Hoca (Nevzat Kuzucu) Aksoy kolejinin Muhasebe işleriyle igilenen bildiğim kadarıyla lise mezunu bir kişi. Fakat çok dikkatli ve meraklı, yaptığı işi aşk ve şevk ile yapan bir kişi. Ama maalesef üstlerindeki amirleri ( o zamanki 2006 da) onun kadar ileri görüşlü olmadıkları için yapılmış bu muhteşem yazılımı diğer okulların kullanımına kabul ettiremedi.

       Demem o ki, yazılımcıya böyle ilgili ve heyecanlı müşteri lâzımdır her zaman. Bazı yazılımcıların bu tersine de gidebilir. Çünkü insanoğlu yaptığı işin eksiklerinin kendisine iletilmesinden aşağılandığı fikrine kapılabileceği için, bu müşteri profilini benim gibi idealist yazılımcılardan başkası sevmez. Ama benim için böyle müşterinin her zaman başımın üstünde yeri vardır. Başka bir yazıda görüşmek üzere Hoşçakalın..


Durali Kiraz
Yazılım Geliştirici
duralikiraz.blogspot.com

16 Nisan 2014 Çarşamba

Yazılım Mutfağı – 03 Kötü-Sahtekâr Müşteri Nasıl olur? Ve İyi bir işin 12 altın kuralı




Bugün yazılım piyasasında ve diğer ticari alanlarda da başa bela olan bir konuyu kaleme almayı istedim. Kötü Müşteri!. Özellikle yazılım emekçiliğinin gerçekten Türkiyede tam karşılığını bulamadığını maalesef söylemek zorundayız. Üstüne üstün birde sahtekar bir müşteriyle karşılaşırsanız vah ki ne vah!. Tabi burada bir iş koşullarının tam nasıl olacağı derinlemesine incelemek bu yazının hedefi değildir. Sahtekar ve dolandırıcı bir insanın profili hakkında yaşanılan gerçek bir olay baz alınarak bilgi verilmeye çalışılacaktır.

Yıl 2000. Beraber çalıştığım iş arkadaşlarımdan birisi bana bir yazılım işi var yaparmısın dedi. Bende işle ilgili biraz detay istedim. İş xxxx fabrikalarında kullanılmak üzere sendika tarafından uygulanacak bir yardım sandığı programı. Arkadaşım seni benim dükkanın yan komşusu bir esnaf, seni onunla tanıştırıyım. Artık aranızda konuşur anlaşırsınız dedi. Atladık arabaya gittik bir işhanın içine girdik. Bir bilgisayar firmasının ofisine giriş yaptık. Ofis çok lüks. Girişte duvardaki sertifika ve diplomalar gözüme çarptı. Bütün duvarı kaplayan MSCE, Sun Microsystem, Cisco vs. her türlü sertifika diploma var. Zannedersen MIT den de bir diploma olacaktı :) Başım bu ihtişamla dönmüş bir vaziyette iken nihayet bu bilgisayar firması “CEO” larıyla tanışma fırsatına nail olmuştuk. Baktım, elemanlar 20 yaşın altında gösteriyor. Minyon tipli olmak bu olsa gerek. Yoksa 20 yaşın altında kişilerin bu kadar sertifikaları almaya ve Üniversite bitirmeye vakti yetmez. Elemanların üzerindeki takım elbise, gömlek durumuna bakıyorum pahalı giysiler. Sizin anlayacağınız semerleri altından. Kapının önündeki arabalarına bakıyorum 50 milyarlık araba. Nihayet tanışma faslı vs. konuşmaya başladık. Ne söylersem olumlu cevaplar alıyorm. Üstelik diksiyonları düzgün karşısındaki insanı hiç kırmıyorlar (belini incitmeden..). En önemli nokta ağzı müthiş lâf yapıyor elemanın. Sağolsun fiyat konusunda da beni hiç ikiletmediler. Ne söylediysem “para bizim için sorun değil Durali bey, siz rahat olun” dediler. Birden içim ısınıverdi kendilerine :) Öyle sözleşme gibi formatilerle de uğraşmaya vakti yok adamların. Ben prensip olarak önden 150 dolar almam gerektiğini belirttim. Buna olumlu yaklaştılar. Şu an bankaya gidemeyecekleri için “sonra bir ara” parayı göndereceklerini, böyle ufak tefek miktarların onlar için çerez parası kabilinden laflar ettiler. Bunların ofisinden çıktıktan sonra arkadaşıma sordum, sen bu adamları tanırmısın diye? O da bana “şu ana kadar herhangi bir yamuk durumlarını görmedim” dedi. O da benim etkilendiğim unsurlardan bahsetti. Adamlar pahalı arabalara biniyorlar, kalite giyiniyor, lüks lokantalarda takılıyor vs.

Ben hemen yazılımla ilgili çalışmalara başladım. Yazılım çok büyük bir iş değildi zaten. Be on gün içinde akış şeması, veritabanı dizaynı, formül hesaplamaları, ekran tasarımları derken işin %90 nını bitirme durumuna geldim. Ancak hala “ön ödeme” olan 150 dolardan haber yok. Elemanları aradım “tamam hemen gönderiyoruz, sen hele bir yazılımı gönder, o işler kolay bizim için” dedi. Ben ne olur ne olmaz vaziyetinde düşünerek programı kısıtlı ve 30 günlük demo şeklinde derleyip bunlara gönderdim. Programı çok beğenmişler. Ancak bizim 150 dolar halâ gelmedi!. Bir daha telefon ettim, bu sefer uslubum biraz daha sertleşti. Yine aynı cevap “Tamam abi hemen gönderiyoruz, bir aksilik çıktı da ondan gönderemedik”. Bendeki kıllanma yüzdeki yükselmeye başladı iyice. Bir gün sonra yine aradım. Bana “Abi sen bunları dert etme. Programın tam halini gönder paranı da hemen gönderiyoruz” Uyanığa bak sen !. Artık sonraki gün açtım ağzımı yumdum gözümü. Bunların şerefi kaldı ne haysiyeti. İşin ilginci adamların yüzüne tükürüyorum, nisan yağmuru yağıyor modunda takılıyorlar. O kadar lafı biri bana söylese herhalde o adamı gider olduğu yerde kör bıçakla keser gelirim :)

Bu olaydan sonra da hayatımın sonraki kısımlarında da dolandırıcı tiplerle karşılaşmam oldu. Yani bunların o kadar çok sürümleri varki, hepsini anlatmak için roman yazmak lâzım. Neyse onlarıda başka bir yazıda ele alırım. Nihayetinde bu tip bir sahtekâr müşteri ile karşılaşmıştım. Allahtan programı tam sürüm vermedim de oradan kendime teselli buluyorum:) Siz siz olun,
  1. Sözleşme yapmadan asla işe başlamayın.
  2. Babanızın oğlu bile olsa sözleşme yapın.
  3. Karşınızdaki insanın ağzı çok iyi lâf yapıyorsa ve herşeye tamam diyorsa kıllanmaya başlasanız iyi olur.
  4. Paranızın tamamını almadan asla işin tamamını teslim etmeyin. Gerekirse bilinçli olarak eksik bırakın, bu sizin hakkınızı güvenceye almanın yoludur.
  5. İşe başlamadan Yazılım tutarının en az %30 unu alıp öyle işe başlayın. İşler ters giderse bile bu size en azında teselli olur.
  6. Karşılıklı sözleşme yapmanın Allah'ın bir emri olduğunu da unutmayın.
  7. İş yapmanız karşılığında rüşvet istenmesi yada teklif edilmesi durumunda o işten uzak durmaya bakın. Parayı kazansanız bile ileri o paranın hayrını göremeyeceğiniz kesindir. Hatta kat kat fazlası sizden yada çoluk çocuğunuzdan yada eşinizden, sağlığınızdan ve en iyi ihtimalle mal varlığınızdan fazlasıyla çıkacaktır. Benim tanıdığım Allah'ın çalışma şekli bu!
  8. İş yapacağınız kişiyle ilgili çevresinde yada çevrenizde kısa bir soruşturma yapın. Sözleşmeniz olsa bile adam sahtekârsa yıllar boyu mahkemelerde uğraşmanız gerekir.
  9. Bedeli ödenmezse (Derlenmiş bir yazılımdan ayrı bir bedel) kesinlikle kaynak kodunu vermeyin. Bunu istemek müşterinin hakkıdır ve doğrudur, fakat bedeli ödenmeli.
  10. İş anlaşmanıza beklenmeyen aksiliklerin olabileceğini, bunlarda müşterinin panik yapmamasını, yazılım arızalarının normal bir durum olduğu konusunda gerekli ve yeterli uyarı yapınız. Uyarınki sonra “ya sen kötü programmı yazıyorsun” olayına muhatap olmayın.
  11. Genelde müşter sizi gaza getirmek için “sen bu programı bana ucuza yaz, daha sonra çok satarsın bunu” şeklindeki boş lâfa asla kanmayın. Bu güne kadar müşterilerimin %98' i bana bu lâfı söylemiştir. Yazdığım 40 a yakın proje içinden bir ikisi bu söylenene uymuştur. O yüzden bunlara inanmayın. Her yazılımı sadece bir tane satacakmış gibi çalışın ve parasını ona göre belirleyin.
  12. İyi niyetli olun ve Allah'a güvenin. Nasibiniz ne ise onu mutlaka yersiniz. Nasibiniz olanı yemedikçe bu dünyadan göçüp gitmezsiniz.


        Sonra iyi müşteri nasıl olur onunda yazısını yazarım. Bir sonraki yazıda görüşmek üzere Hoşça kalın.

Durali Kiraz
Yazılım Geliştirici
duralikiraz.blogspot.com

15 Nisan 2014 Salı

Yazılım Mutfağı – 02 Yanlış bileşen seçimi : Fibplus !

Yanlış bileşen seçimi : Fibplus !



Bu yazımda sizlere yanlış yazılım aracı seçiminin sonuçlarından bahsetmeye çalışacağım. Yazının ilk serisinde yazılım araçlarından, ücretsiz geliştirme araçlarından biraz bahsetmiştik. Tabi bu işin birçok parametresi var. Ticari bir iş yapıyorsanız taşıdığınız yük bir kat daha artacaktır. Hele hele para hesabı yapan bir yazılım geliştiriyorsanız aşırı paranoyak olmanız gerekmekte. Çünkü böyle bir yazılımda yapacağınız hata sizin ticari hayatınıza malolabilir. Bu yazılarımı geliştirici ekibinin tek kişi olması varsayımıyla yazıyorum. Zaten profesyonel bir yazılım geliştirme kadrosunda en başta Yazılım mühendisinden tutunda veritabanı geliştiricisi, kodlayıcılar, analistler , beta test ediciler gibi bir çok ekip üyesi sayılabilir. Her neyse biz tek başına bir ordu olabilecek cahil cesareti gösterebilen kahramlardan bahsedelim (övdümmü yerdimmi bende anlamadım :) ).

Yıl 2004. Bir ön muhasebe tipi bir yazılım çalışmasına başlamıştım. O zamanlar Firebird popularitesini iyice artırmış ucuz bir çözümdü. Başlangıcında hayır amaçlı başlamış yazılım projemde veritabanı olarak firebird bulunmaz bir seçimdi. Geliştirme ortamı Delphi IDE si. Standart interbase erişim bileşenlerinin yeterli olmadığı kanaatiyle veritabanı erişimi için bileşen arayışına girdim. O zamanlar şimdiki kadar çok seçeneğimizde pek yoktu. Araştırmalarımın sonucunda fibplus ismine rastladım. Tabi aldığımız duyumlar malum. Şöyle uçuyor, böyle kaçıyor vs. İşin garibi olumsuz tek kelime yoruma da rastlamadım. Ve projemde kullanmaya karar verdim. Derken bizim küçük amaçlı proje büyüdü ve talebi de arttı. Ama hala kararsız sürüm olarak işaretleyip geliştirdiğim bir proje halindeydi. Bir arkadaşımın şirketine de bu yazılımı kurduk. Ağ destekli bir yazılım olması, firebird'ün hız ve kararlılık gibi güzellikleriyle güzel çalışan bir yapısı vardı. Bir gün yazılımın çalışmadığı, verileri göstermediği şikayeti geldi. Koskoca şirket iş beklemez durumda. Hemen veritabanı dosyasının yedeğini alıp evde hata ayıklama çalışmalarına başladım. Tam 7 saat sonra hatayı düzeltebildim. Problem pozitif veri girişi olan bir yere alakasız bir şekilde negatif değerli bir veri girişi olmuş. Normal şartlarda bu mümkün değil. Fakat hata mı hata sana! Neyse bu problemi aştık. Fakat bir iki ay sonra stok girişlerinin yapıldığı bir ekranda örneğin miktar bilgisi 3 adet giriliyor. Transaction commit yapıldığında Tablo da 3 olması gereken kayıt 1 olarak kaydediliyor. Transaction ları kaldır, herşey manuele al ama nafile. Yapmadığım test, değişiklik kalmadı. O sene bu problemi bir türlü düzeltemedim. Hatanın veritabanındanmı? Bileşenlerdenmi olduğunuda anlayamadığım için projeyi askıya aldım. Yazılımı kurduğum firma sahibi hatasına rağmen kullanmak istediysede ben buna razı olmadım ve oradan da kaldırdım. Kendilerine de başka bir yazılım kullanmalarını önerdim.

Yıllar sonra hatalarına rağmen kullanan bir firma halâ vardı. Bu firma beraber çalıştığım bilgisayar firması olduğu için onlar kontrollü bir şekilde programı kullanmaya devam ettiler. Bir ara üzerimdeki programa ilgili yılgınlığı attıktan sonra fibplus bileşenini değiştirmeye karar verdim. Sadece stok girişi modulündeki veritabanı erişimini fibplus tan devart interbase bileşenine çevirdim. Neredeyse tek satır kod değiştirmeden programı derlediğimde gözlerime inanamadım. Hata kaybolmuştu. Ve fibplus'ın en yeni güncel sürümünü indirip kurup denememe rağmen aynı problem yine vardı. Yaklaşık 5 yıl aradan sonra karanlıklara gömülen yazılımım nihayet gün yüzüne çıkabilmişti. Sonradan yaptığım bir araştırmada fibplus'ı geliştiren firmada sıkıntıların olduğu, hataların düzeltilemediği yönünde tevatürler(dedikodular) ortatalıkta çalkalanmaktaydı. Bu saatten sonra altın olsa sizin anlayacağınız fibplus kullanmam!. Umarım bu hikaye sizlere bileşen seçiminin ne denli bir önem arz ettiğini göstermeye yetmiştir. Bir proje başladıktan sonra bileşen değiştirmekte öyle kolay bir iş olmuyor arkadaşlar. Resmen bazı kısımları programın yeniden yazmanız gerekebilir.

Durali Kiraz

duralikiraz.blogspot.com

Yazılım Mutfağı – 01 Başlangıç ve Kararlar


Nasıl bir yol izlenmeli? Nereden başlanmalı? :

Okulu bitirmiş ve artık bir iki program yazayım para kazanayım diyorsunuz. Ama bu işe nerereden başlamalı?, nasıl bir metodoloji izlenmeli?, Hangi dili öğrenmeli? vs. bir sürü soru aklınıza takılmakta. İşte bu soruların bazılarını bu yazı dizisinde (sonra arkasını getirebilirsem) cevaplar bulmaya çalışacağım.
Bizim buralarda bir atasözü vardır; “At köpeği denize yüzme öğrensin”. İşin anahtar noktasında burada yatmakta. Bu yazılım işinde seviye atlamanın yolu öğrendiklerin ile hemen yazılım geliştirmeye başlamaktır. Tabi şunu da diyenler olabilir; önce bir iki kursa git MSCE sertifikalarını al, okulunu bitir, diplomanı al, yazılımla ilgili bir yerde staj yap vs. vs. Kısacası ölme eşeğim ölme. Eğer imkanları buna müsait olan cebi dolu olan arkaşlara bir şey diyeceğim yok. Varsa imkanın MIT' de bilgisayar eğitimi al derim :) Sonuçta bu işin orta yolu alabiliyorsan eğitimini al ama mutlaka pratiğe geçmen lazım. Öyle veya böyle belki sana ilk etapta yahu bana hesap kitap programı yaz diyen olmayabilir fakat sen bilgisayar başına geç ve kendine yazacak programlar icat et. Kalbini de biraz düzgün tutar, Allah'a tevekkül edersen merak etme iş senin ayağına bile gelir :)

Hangi dili seçmeliyim ? :

İşte herkesin merak ettiği ve kıvrım kıvrım kıvrandığı bir konu :) Delphi mi?, C#?, Phyton mu?, C/C++ mı?, Lazarus mu?, PHP mi?, Java mı?, Fortran mı(o kadar da değil) ? Gibi soruların yeni yazılımcıların kafasını kurcaladığı doğrudur. Bu soruyu cevaplamak için başka bir soru sormak gerekiyor. Sen masaüstü yazılımmı geliştireceksin yoksa internet uygulaması mı? Cevap internet ise PHP, Asp.Net/C#, Java gibi seçenekler ön plana çıkacaktır. Yok masaüstü ise Delphi/pascal, C/C++, Lazarus, C# + .Net Framework-Mono, Phyton gibi seçenekler ön plana çıkar. Tabi ben burada bu dilleri örnek olsun diye sıraladım. Yoksa yüzün üzerinde yazılım dili mevcut. Kısaca sen ne yapmak-yazmak istiyorsun arkadaş? Sorusunun doğru cevabını yine sen vereceksin.

Kısa yolsan para kazanmak istiyorum, beni yönlendir! :

Olur yönlendirelim. Günümüz piyasasında para kazanmanın en cazip yolu veritabanı yazılımı eksenli bir geliştirme yapmaktır. Yani stok-fatura yazılımları gibi yazılımlar geliştirmektir. Şunu diyebilirsin; “abi piyasa yıllardır yazılmış yüzlerde fatura stok cari programı var, biz zor ekmek yeriz”. Bu düşünce kısmen doğru olmasına rağmen aynı zamanda da yanlış bir düşüncedir. Temel kural : yazılan her yazılım yüzde yüz mükemmel bir yazılım değildir. Bu yüzden müşterilerin tam ihtiyacını karşılamadığı için yeni yazılım geliştirtme arayışına girmektedir müşteri. Kısacası iyi bir yazılımcıya her zaman ekmek vardır. Bu iş beni kasar daha kolayı yok mu bu işin derseniz, web sayfası geliştirme işi tam size göre. Kolaydır ve kısa zamanda para kazanırsınız. Zaten çoğu geliştiricinin tercih ettiği yolda bu yoldur. Açıkçası hiç web işiyle uğraşmadım. Sebebi ise bir türlü sevemedim web geliştiriciliğini. Tabi bu sizinde sevmeyeceğiniz anlamına gelmez. Bu sadece bir tercih meselesi.

Masaüstü yazılımcılığı, Veritabanı temelli geliştiricilik :

Bu konuda benim en iyi önerebileceğim seçenek Delphi olacaktır. Eğer linux platformu düşünürseniz alternatifi Kylix dir. Neden Delphi/Kylix sorusunun cevabı kısaca; kolay geliştirilebilirlik, kaynak bolluğu, desteğinin çok olması, bileşen alternatiflerinde neredeyse rakipsiz olması, IDE (geliştirme ortamı) kararlılığı sayabileceğim sebeplerden bazılarıdır. Ama lisans parası yeni(fakir) bir yazılımcı için biraz tuzludur. Gerçi yaptığın işe göre eğer batı standartlarında bir ücretle geliştiriyorsan lisans parası devede kulak kalır. Delphi de yazılım geliştirecekseniz component(bileşen) kullanımı hayati bir önem arz edecektir. Delphinin standart bileşenleriyle de yazılım geliştirebilirsiniz, bu konuda sıkıntı yok. Ancak biraz daha kompleks işlemler yapmanız gerektiğinde bileşenler işinizi kolaylaştıracaktır. Devexpres gibi bileşen markaları bunlardan sadece bir tanesidir. Ayrıca veritabani erişimlerinde bileşenlerin varlığı daha bir önem kazanmaktadır. Bu konuda önerebileceğim en iyi bileşenlerden biride Devart markasıdır.

Ücretsiz araçlarla yazılım geliştirme :

Yine aynı şekilde Delphi yerine Lazarus IDE sini öneririm. Bana bundan 10 yıl önce sorsanız bu soruyu delphi dışında hiçbir yapıyı önermezdim. Ama artık görüyorum ki Free Pascal derleyicisini kullanan Lazarus IDE si bayağı bir yol katetmiş. Bu konuda Boreasın Günlüğü sitesinde Emre Öz kardeşimin yayınladığı Otel yazılımı tamamen lazarus ile geliştirilmiş. Yazılım gayet iyi çalışmakta. Bu da bize Lazarus IDE sine güvenebileceğimizi göstermekte. Bununla birlikte delphi için geliştirilen bileşenlerin yanında artık lazarus içinde bileşen paketleri hazır gelmekte.

IDE seçimi konusunda fikir verdikten sonra gelelim ücretsiz bileşenlere. Şayet lisans derdi olmayan ve güvenilir, hızlı bir veritabanı diyorsanız Firebird kesinlikle bir numara bir tercih olacaktır. Çünkü interbase 6.0 Open source kod üzerine geliştirilmiş ve interbase'ın tüm güzelliklerini de bünyesine katmış, hız olarak rakiplerini asfalta yapıştırmış bir veritabanı sistemidir. Lazarus ile birlikte gelen bileşenlerin SqlDb sekmesinde firebird/interbase için veri erişim bileşenlerini bulabilirsiniz. Biraz daha profesyonel olsun derseniz zeoslib bileşenlerini de önerebilirim. Ancak zeoslible bir deneme yapmadım. Bu saydıklarım kesinlikle ücret ödemeden kullanabileceğiniz yapılar.

Başka bir yazıda görüşmek üzere hoşça kalın.


Durali Kiraz
Yazılım Geliştirici
duralikiraz.blogspot.com