Category Archives: Boş İş

Adres Değişikliği

Selam arkadaşlar,
Blog adresimi ilk açtığım günden sonra gidip domain almama rağmen oturup da adam akıllı bir aktarı gerçekleştirememiştim. Zaten kim uğraşacaktı bu kadar işle, wordpress.com zaten herşeye yetiyordu falan da yetmiyormuş sonra fark ettim olayı. Google Analytics eklemek istediğinizde sistem paralı olmanızı istiyor, font değiştirmek istiyorsunuz sizden para istiyor. Az buz da para istemiyor yani haliyle ben de bununla uğraşmak yerine direk elimde olan adresi de taşıma kararıyla blogumu yeni adresi olan (http://bosisleryazilimcisi.com)‘a taşımış bulunmaktayım.

Bundan sonra daha geniş içerikli yazılar yazacak olup, hali hazırda başladığım güzel bir Mobile App projesi ile de sizinle daha fazla detay paylaşacağım.

Falanlar filanlar hayatınızdan eksik olmasın…

Doğru bil(me)diklerimiz neler?

Dediğim gibi bir sürü boş vaktim olmasa da bir sürü boş işe harcadığım vaktim olduğu için bir çok gereksiz konuda yazı yazabiliyorum. Aynen bir sürü gereksiz yazılım yazmak gibi ama biraz daha farklı. Bus efer ki konu, esasta doğru bildiğimiz yanlışlar ile alakalı. Bildiğiniz gibi, yazılım üzerine çalışınca, yazılım hakkında bir çok diyaloğun da içerisinde oluyorsunuz. Bu yazının ortaya çıkmasında sebep aynı böyle bir tartışmaydı; **“Object Oriented Programming kullanmıyorsunuz!” lafından çıktı hepsi, beni suçlamayın onu suçlayın.

Ne Bil(mi)iyoruz?

Pek tabii ki yazılımcılar olarak biz her şeyi biliyoruz! Aksi ispat edilemez, edilecekse gelsin çıksın karşıma. Biz bu meslekte dirsek çürüttük, her şeyini biliyoruz tabii ki. Ne biliyoruz peki? OOP biliyoruz, Pattern biliyoruz, Nesne biliyoruz, Polimorfizm biliyoruz, her bir şeyi biliyoruz. Açıkcası bir kaç güne kadar ben de böyle diyordum ki, piyasadan bir üstadımız beni yerin yedi kat dibine sokuncaya kadar. Sonrasında kendime geldim, nefes aldım bir oh çektim falan.

Peki gerçekten bu terimlere hakim miyiz?

Konuşmanın biraz daha heyecanlandığı noktada, benim otomatikman muhalefete geçme gibi bir özelliğim olduğundan, konu genelde farklı boyutlara taşınır. Konuşmada arkadaşın yukarıda belirttiği OOP kullanmıyorsunuz, bir nefi bilmiyorsunuz lafı sonrasında, sinirler arttı benim. “OOP Nedir?” dedim arkadaşa, basitçe bana OOP tasarım kalıplarıdır dedi o da. Bir kere öyle değil bu işler. OOP dediğimiz, nesne tabanlı programlamadır. Yani nedir? Nesne olması gerekir, yani senin nesneler yaratman, basitçe bu nesneleri yönetecek katmanları yazman ve buna bağlı programlama yapmanı anlatır. Peki ben hiç tasarım kalıbı ya da güzel adıyla Design Pattern kullanmamışsam? O zaman ben hiç OOP kullanmamış mı olurum? Ekmeğe, şeklini verirken franzile şekil vermediysem ortaya çıkan ürün ekmek değil midir? Aynı mantıkta yanıtlanabilecek bir cümle.

Eğer sen nesnelerini oluşturup, katmanlarını koyduysan, SOLID mantığını biraz da olsun yakaladıysan o zaman zaten OOP yapmışsın ne mutlu sana. Pattern kullanmadıysan OOP yapmadın diye bir algı yok, olmamalıdırda. Pattern kullanmadım diyorsunuz da peki o konuda da emin misiniz?

Pattern olayı

Ya şimdi bir gerçek var, Design Patterns popüler olduğundan beri, herkes bu terimi kullanır oldu hayatında. Adı üzerinde, tasarım kalıbı bu, yani kalıplaşmış kod yapısı. Hiç kullanamadan adam akıllı kod yazmanız için çömez olmanız lazım, kullanıp adını bilmezseniz normal developersınızdır. Fakat insanlar sizden ismini ve cismini bilmenizi bekler. Yeni dünya diye bir meyva var, ismini tam olarak bilmem. Alırım, yerim. Tutup da sen bana bunu yerken, “hiç yeni dünya yememişsin, çok süper meyva” dersen, yemiş olsam bile yemedim psikolojisi oluşur üzerimde.

Kod açısından örnek verirsek, yıllarca data fonksiyonlarını yazdıktan sonra, datayı ele alan DAL yani Data Access Layer’ı yazarken nesnelere uygun tekil sınıflar yazdım. Yani bir tablo varsa, o tabloya data girişini sağlayan. DataTablosuBase.Save() ya da DataTablosuBase.Insert(DataTablosu _dataTablosu) kodlarını içeren sınıfı yazdım ve datalarımı öyle kaydettim. Şimdi yıllar sonra öğreniyorum ki bu yöntem Repository Pattern olarak ele alınıyormuş. Şimdi aynı konuşmada, arkadaş bana onu da dedi “Hiç pattern kullanmadan OOP yazılmaz”. Bu arkadaşı ilk arayan 20 kişiye postayla göndermeye karar verdim. Bildiğin bas baya kullanmışım işte.

Bu pattern’in üç temel prensibi var; Data erişiminde tek noktanın olması, Tablolarınızla alakalı tek bir sorumlu yer olması, Olası altyapı değişimlerinde sistemin minimum değişimle işlemesi. E ben bunu gayet yerine getirmişim, sadece “DataTablosuBase” yerine “DataTablosuRepository” dememişim. Ha bir de EF kullanmamışım ama o kontaya girersem çok olaylar çıkar.

Sonuç

Demem odur ki, asla bir insanla beraber adam akıllı kod yazmadan ona şunu yapmamışsın, bunu yapmamışsın demeyin. Yapmıştır, illa yapmıştır da bilmiyordur. Yapmıştırsın da bilmiyorsundur diyin. Bu sayede siz de o insandan biraz kod öğrenebilir, o insanla aranızı bozmazsınız. Dünya daha güzel bir yere gelir. Fakat konunun başında da dediğim gibi biz yazılımcılar her şeyi bildiğimiz için bu konuda burnu havada insanlarız. Arada bir kendinizden daha iyi olan insanlar tarafından alaşağı edilin de, kendinize gelin vallaha.

Yazılım’ın Boş Bir İş Olması

Şimdi aynı meslek grubundaki arkadaşlar bana kızabilirler, hatta başlığı okuyup eksiyi de basabilirler, fakat yazının sonuna kadar dayananlar anlayacak ki biz de biliyoruz da konuşuyoruz. Sonuçta bu meslekte az denemeyecek kadar çalışan birisiyim ben de1. Önce madde madde bu mesleği ele alalım, korkmayın gayet mantıklı şeylerden bahsedeceğim – şu an için bana mantıklı geliyor da olabilir. Öncelikle belirtmem gerek ki burada bahsettiğim tüm bilgiler kendi kişisel görüşlerimin yansımasıdır, başka bir amaca hitap etmemektedir.

Yazılım’ın Diğer Tanımı

Yazılım dediğimiz şey, şu an bu yazıyı okumanızı sağlayan teknolojinin ihtiyaç uyduğu mantığı, bilinci, yöntemi belirleyen sistemlerdir. Basitçe ele alırsak yazılımcı dediğimiz de bu sistemin oluşmasını sağlayan insanlara verilen genel ad, aslında bu meslek grubundaki insanların hepsinin başka adları da var, örneğin veritabanı uzmanı ya da yazılım mimarı gibi isimleri. Fakat bu blog içerisinde kimseye ayrımcılık göstermeyeceğimiz için, hepsine yazılımcı diyeceğim.

Basit tanımları geçtiğimize göre esas tanımlara geçebiliriz – sizi burada Boş işler yazılımcısının harikalar diyarına alıyoruz. Yazılım dediğimiz şey, esasında soyut bir şeydir ve soyut kavramlar kendi içlerinde ikiye ayrılırlar;

  • Boş soyutluk durumu: Sevgi, Aşk, Nefret gibi tanımlayabileceğimiz şeyler boş soyut kavramına girer.
  • Dolu soyutluk durumu: Bilgi, Felsefe, Din gibi tanımlayabileceğimiz şeyler de dolu soyut kavramına girer.

Yazılım da “dolu soyutluk durumu” içerisinde ele alabileceğimiz bir yaratımdır. Bu soyutluk durumunda, madde açısından bir şey yoktur. Sadece bilgi ve onun yansıması vardır. Bilgi ile diğer insanlara bir şeyler anlatabilir, onlara bir şeyler katabilirsiniz. Yazılım ile de hem kişiye, hem de teknolojiye bir şeyler anlatabilir, istediğiniz şeyi yapmasını sağlayabilirsiniz. Fakat yazılım da bilgi gibi somut bir duruma geçmeden önce tamamen soyut olarak ele alınan temellere dayanmaktadır.

Yazılım’ı Babaya Anlatmak

Başlığı okuyunca yüzünüzde oluşan ifadeyi gözlerimde görür gibiyim, genelde bu ifade küçük çocukların ebeveynlerine çok sevdikleri bir çizgifilmi alnatırken ortaya çıkmakta. Konudan şaşmadan devam edeceğim, soyut olayların en büyük sorunu başka insanlara anlatılmasıdır. Zira somut bir şey her daim paylaşılması en kolay şeydir, bir odunu başkasına göstererek, dokundurarak, koklatarak, hatta ve hatta ısırtarak anlatabilirsiniz ama bir yazılımda bunu yapamazsınız. “Gösterebilirsiniz, dinletebilirsiniz, robot kollarla dokundurabilirsiniz” demeyeceğim zira bunlar maalesef yazılımın sonrasında çıkan şeyler sayesinde olur. Yazılım geliştirdiğiniz IDE’de bulunan kodları gösterin bakalım karşı taraf ne anlayacak ondan. Bu maalesef soyut kavram içerisinde çalışan insanların kaderinde var.

Yazılım vs …

Bu meslek ile uğraşıyorsanız, siz de çok iyi biliyorsunuz ki toplumun gözünde asla bir marangoz kadar değerli olmayacaksınız. Sadece toplum olsa, aileniz öncelikli gelecek, sonra kız arkadaşınız, belki de çocuklarınız. Hiç bir zaman bir marangoz olamayacaksınız, çünkü o bir odunu alıp, ondan kereste almaktadır – burada marangozlardan saygıyla bahsedilmiştir, hayalimdeki meslek oydu – fakat siz bir avuç kelimeyi, çok az kişinin bildiği bir dile sökerek bir sonuç, bir sayfa, bir uyarı ekranı çıkartmak zorundasınız. Ayrıca sadece elektronik eşyalara bağlısınız, bir marangoz meyva bıçağı ile bilişer yapabilirken siz elinizde bir akıllı telefon olmadan ne yapabilirsiniz ki?

Görsel somut algılar maalesef içinde bulunduğumuz toplumun temelinde yatmaktadır. Yazılım maalesef bu mantığa uygun bir meslek ya da iş değişdir. İlerleyen zamanlarda belki teknolojinin gelişmesi ile bu konuda daha somut adımlar elde edebiliriz, ne bileyim maatbaa makinası gibi bir alete kodları yerleştirip tuşuna basınca yazılım falan çıkar aletin diğer ucundan, olur bir şeyler.

Felaket Senaryoları

Bu geyiği yapmadan bu blog girdisini bitiremezdim, yapamazdım, anlayın beni. Olası “Dünyanın Sonu” senaryolarını kafanızdan geçirin, çok dalmayın hızlıca geçirin. Sunucuların çalışmadığı, elektriğin olmadığı, teknolojinin 16.yy’a gerilediği bir dünyada siz ne iş yapabilirsiniz? O dünyada bir Felilozofa ne kadar ihtiyaç varsa bir Yazılımcıya da aynı ölçüde ihtiyaç vardır. Fakat bir marangoz öyle mi, alır eline aletlerini, barikatını kurar, mobilyalarını inşa eder. Somut adımlar atar ve prensesi kurtarır, siz anca ona bağımlı yaşayan sidekick’den öteye geçemezsiniz.

Hayatta kalmak için bile yeterli olmayan bir mesleğe mendup kişiler olarak bana Yazılım‘ın boş bir iş olmadığını maalesef kanıtlayamazsınız. Diğer insanlara kanıtlayabilirsiniz, hem de çok basit bir şekilde; Onlara sadece ne kadar maaş aldığınızı söyleyin.


  1. Sen mi büyüksün, hayır ben büyüğüm ben Yaşar Usta!