Rss Feed

Kamu Driven Development

Tarih: December 6th, 2014 | Yazan: | Kategori: Genel | Yorum yapılmamış »

Geçen gün katıldığım bir toplantıda Japon abilerimizin ürettiği sanal/zenginleştirilmiş gerçeklik hedefli bir gözlüğü denedik. Üretici firma donanım firması olduğu için yazılım konusuna girmeye niyetleri yok muhtemelen ve bunun için yazılım firmalarından destek almaya ve ortaya entegre bir ürün çıkarmaya çalışıyorlar. Gayet güzel ve iki tarafında kâr edebileceği bir anlaşma gibi görünse de satış ve pazarlama ekibinin bu yazılım – donanım ilişkisinden tek çıkarımının ‘kamuya satarız bunu’ olması ülkemizde iş geliştirme hedefinin ortaya katma değeri olan bir şeyler çıkarmak değil de devletin cebinden nasıl para alacağımıza odaklandığını gösteriyor. Toplantıda dile getirilen bu cümlenin destekleyici düşüncesi ise kamu kurumlarında çalışan insanların gösteriş meraklısı olmasıydı. Kamu kurumları gösterişi seviyor ve maalesef kamu kurumları işin içeriğinden ve sağladığı yarardan çok onu görenlerin ve/veya kullananların üzerinde bıraktığı etkiye odaklanıyor.

Benzeri olayı daha önce şahsen yazılım geliştirdiğim diğer kurumlarda da gördüm. Kamu kurumlarında para çıkışını sağlayabilen insanlar maalesef bu parayı havadan gelmiş gibi harcayabilecek lükse sahipler. Bu insanları denetleyecek insanlar ise anladığım kadarıyla tamamen pasif hale getirilmiş.

Kamuya yapılan yazılımlarda kaliteden (kalite nedir?) ziyade şov kısmına önem verilmesinin tüm yazılım sektörünü etkileyen kötü sonuçları mevcut.

  • Kaliteli yazılımın değeri düşüyor buna bağlı olarak işin ehli olan yazılımcılarının değeri de düşüyor.
  • Kaliteli yazılımcının değeri olmadığı için yazılım firmalarında ‘sen gidersen başkası gelir’ düşüncesi beliriyor. Beş senelik tecrübesi ve bilgi birikimi olan birini işten çıkarıp onun yerine, aynı sorumluluğu yükleyerek yeni mezun ve daha ucuz bir yazılımcıyı almaktan korkmuyorlar.
  • Bu yönetim anlayışı karşısında sektörde bir tedirginlik mevcut. Her gün 2-3 saat fazla mesai yapan biri ses çıkarmaya korkuyor. Fazla mesai ücretini istemekten korkuyor. Ses çıkarmadığı için daha fazla iş veriliyor, kısır döngü. Fazla mesai konusunda Osman’ın güzel bir yazısı var, vaktiniz varsa göz atabilirsiniz.

Şov yapamayıp katma değer sağlayabilecek yazılımların yapılması ise maalesef maddi kaygılar yüzünden önemsenmiyor, en azından benim şu kısa iş hayatımda gördüğüm kadarıyla durum böyle. Sektöre kamu tarafından bu kadar çok ve bilinçsizce para saçıldıkça iş tanımları çalıştıkları firmalara para kazandırmak olan satış ve pazarlama ekipleri de doğal olarak bu paranın peşine düşüyorlar.

Durum böyleyken yazılım camiasındaki en gözde yazılım geliştirme methodu maalesef kamu driven development gibi görünüyor.


C# ve Reflection – 1

Tarih: February 1st, 2013 | Yazan: | Kategori: Programlama | Etiketler: , , | 5 Yorum »

C# ile yazılım geliştirmeye başladığımdan bu yana ne zaman başım sıkışsa ve daha esnek bir yapı tasarlamaya çalışsam imdadıma yetişen bir yöntem vardı: Reflection.

Reflection sayesinde çalıştığınız objelere ait verileri çalışma anında (run-time) okuyup düzenleyebilir hatta Reflection ile yine çalışma anında dinamik olarak mevcut sınıflarınızdan yeni objeler türetebilirsiniz.

Uzun uzun tanımını yapacak ve teorik bilgiye doymanızı sağlayacak bir blog yazısı yazmak yerine elimden geldiğince bol bol örnek vererek Reflection’ı iş başında görmenizi yardımcı olmaya çalışacağım.

Yazının devamı »


İyi Programlama, Kötü Programlama

Tarih: December 14th, 2012 | Yazan: | Kategori: Genel, Programlama | 3 Yorum »

Başka sitelerdeki içeriği çevirip yayınlamayı çok sevmesem de daha önceden de yazdığım gibi bu tip kısa ve öz notları paylaşmam gerektiğini düşünüyorum. Aynı şekilde Rahul Singh‘in blogunda yazdığı bu yazıyı da paylaşma gereği hissettim.

Özellikle son zamanlarda iş yerinde bazı şeyleri neden çok zaman harcayarak yaptığımızı gayet güzel vurguladığından dolayı yöneticilere karşı bir açıklama yapmış gibi hissediyorum kendimi.

Lafı uzatmadan iyi programlama ve kötü programlamayı karşılaştıralım,

  • İyi programlama karmaşık şeylerin basit görünmesini sağlar.
  • Kötü programlama basit şeylerin karmaşık görünmesini sağlar.
  • İyi programlama kendini açıklar.
  • Kötü programlama açıklamaya ihtiyaç duyar.
  • İyi programlama için şu an fazla zaman harcayabilirsiniz ancak ileride daha az zaman harcarsınız.
  • Kötü programlama şu an fazla zamanınızı almaz ancak ileride çok daha fazla zaman harcarsınız.
  • İyi programlama mevcut ve gelecekte olabilecek ihtiyaçları karşılar.
  • Kötü programlama mevcut sorunlara odaklanır ve gelecekte işe yaramayabilir.
  • İyi programların sürdürülmesi ve geliştirilmesi kolaydır.
  • Kötü programların sürdürülmesi ve geliştirilmesi zordur.
  • İyi programlar uzun ömürlüdür, hedefledikleri amaç bitene kadar iş görebilir.
  • Kötü programlar kısa ömürlüdür, hedefledikleri kapsam dışında nadiren kullanılabilirler.
  • İyi programlar iyi alışkanlıklar gibidir. Etkileri uzun sürer ve problemleri tamamen çözebilirler.
  • Kötü programlar ağrı kesiciler gibidir. Etkileri kısa bir süre geçerlidir ve problemleri geçici olarak çözebilirler.
  • İyi programlama temiz ve disiplinlidir.
  • Kötü programlama karmaşık ve kaotiktir.
  • İyi programlama öğrenilir, pratikle geliştirilir ve yıllarca süren tecrübe ile uzmanlaşılır.
  • Kötü programlama kendiliğinden olur, uzun süre düzeltilmediği sürece iyi programlamanın öğrenilmesini zorlaştırır.
  • İyi programlama ne zaman yeniden yazacağını ne zaman var olanı kullanacağını bilmektir.
  • Kötü programlama var olanı yeniden yazma, daha iyi yazılabilecek olanı kullanmaktır.
  • İyi programlama kendi iç güdülere, bilgi birikimine ve yıllarca kazanılan tecrübeye dayanır.
  • Kötü programlama başkalarının bilgi birikimine ve tecrübelerine onları anlamaya çalışmadan körü körüne bağlanmaktır.
  • İyi programlar bir programcıdan diğerine aktarılabilir.
  • Kötü programlar aynı kişi tarafından yazılır ve anlaşılır.
  • İyi programcı yazdığı kodu hatırlamaz. Yazdığı kodun mantığını öğrendiğinden gerektiğinde tekrardan yazabilir.
  • Kötü programcı yazdığı kodu anlamaya çalışmak yerine ezberlemeye çalışır bundan dolayı değişiklik yapmakta zorlanır.
  • İyi programlar aynı sebeplerden dolayı iyidirler; basitlik, okunabilirlik ve verimlilik.
  • Kötü programlar kendi barındırdıkları özelliklerden dolayı kötüdür.
  • İyi programlama kavramları programcının hayatı boyunca var olur.
  • Kötü programlama kavramları programcıyla beraber ölür.

Birkaç Bilgisayar Mühendisi

Tarih: May 5th, 2012 | Yazan: | Kategori: Kişisel | Etiketler: , , , | 10 Yorum »

Uzun zamandır yazmaya üşendiğim bloguma bu gece bu yazıyı büyük bir hırs ve heves ile yazarken yazının biraz uzun ve sıkıcı olabileceği konusunda sizleri en baştan uyarayım.

Bu sene birincisi düzenlenen Karadeniz Teknik Üniversitesi Bilgisayar Mühendsiliği’nin mezunlar buluşması ardından içimde kalanları mutlaka ve mutlaka yazmam gerektiğini düşündüm ve şu an gece 02:00 olmasına rağmen bu yazıyı yazmak zorunda hissediyorum kendimi.

Buluşmaya katılan mezunlarımızın 3-5 istisna kişi haricinde tamamı benden yaşça ve tecrübe olarak büyüktü. Yapılan sunumların sonunda karşılıklı soru cevap tarzında geçen ve zaman zaman tartışmalara sebep olan konuşmalar uzadıkça söylemek istediklerimi orada dile getirip fazlasıyla uzayan tartışmayı zaman kaybına da çevirmek istemediğimden dolayı çok fazla söz de almadım.

Öncelikle şunu bilmenizi isterim ki bu satırları yazan Ahmet Kakıcı çok mükemmel bir yazılımcı veya mükemmel bir mühendis değil. Burada yazdıklarım tamamen bireysel görüşlerimdir ve doğruluğu konusunda maalesef garanti veremiyorum.

Beni tanımayanlar için, ki birçoğunuzun da öyle olduğunu düşünüyorum, daha önceden yazdığım Hakkımda yazısını okuyabilirsiniz. Girişi yaptıktan sonra artık kafama takılan konular hakkında ‘acemi’ görüşlerimi paylaşayım.

Yazının devamı »


ASP.NET Development Server – IPv6 sorunu

Tarih: December 5th, 2010 | Yazan: | Kategori: Yazılım | 2 Yorum »

Son bir yıldır ASP.NET ile uygulama geliştiren ve günlük hayatta Firefox kullanan biri olarak üzerinde çalıştığım uygulamaların debug aşamasında bu kadar yavaş çalışmasına bir anlam veremiyordum. Nasıl oluyorsa Internet Explorer gibi bir tarayıcıda sorunsuz bir şekilde debug ettiğim sayfalar Firefox ve Chrome ile anlamsız bir şekilde yavaş açılıyordu.

Geçen hafta stackoverflow‘da gezerken gözüme takılan bir soruya gelen cevap ise günü kurtardı ve sorumu da çözmüş oldu.

Sorunun sebebi Firefox’un ASP.NET development server’ın verdiği rastgele portları çözerken yaşadığı karmaşaymış. Firefox’un IPv6 desteğini pasif hale getirince sorun kalmadı.

Eğer sizler de benim gibi ASP.NET ile uygulama geliştiriyorsanız ve Firefox’un debug performansından şikayetçiyseniz Firefox’ta adres çubuğuna about:config yazıp dikkatli olacağınıza da söz verdikten sonra  network.dns.disableIPv6 özelliğini true yaparsanız sizin de sorununuz çözülmüş olacaktır.

Bu sayede debug işleminde de Internet Explorer’dan uzak durabilirsiniz.


Komut Satırından Dns Adresi Değiştirme

Tarih: June 2nd, 2010 | Yazan: | Kategori: Genel | Etiketler: , , | 5 Yorum »

Son günlerde yine bir site engelleme furyası başladı. Dns değiştirerek bu sorunlardan kısmen de olsa kurtulabiliyoruz. Ancak iş yerinde dns değiştirdiğimde interente giremediğimden dolayı mecburen elle girdiğim dns sunucusunu silerek internete erişiyorum.

Akşam dns yaz sabah sil diye uğraşmaktansa bu işi komut satırından yapabiliyor muyuz diye biraz araştırdım ve netsh komutunu (windows için geçerli) buldum.

netsh komutuyla dns değiştirmek istiyorsa öncelikle hani ağ bağdaştırıcısıyla çalışacağımızı belirlemeliyiz. Bunun için aşağıdaki parametrelerle beraber varolan bağdaştırıcı isimlerini alacağız.

netsh interface ip show config

Gelen sonuçlarda “Kablosuz ağ bağlantısı 1″, “Yerel ağ bağlantısı 2″ gibi isimler göreceksiniz. Hangi bağlantıyı değiştireceğinizi seçtikten sonra aşağıdaki komutta “bağlantı adı” yazan yere ilgili bağlantının adını yazdıktan sonra dns adresini değiştirebilirsiniz.

netsh interface ip set dns name="bağlantı adı" static xxx.xxx.xxx.xxx

Eğer ikincil dns sunucusu eklemek istiyorsanız aşağıdaki komutu kullanbilirsiniz.

netsh interface ip add dns name="bağlantı adı" static xxx.xxx.xxx.xxx

Daha sonra bu adresleri silmek için aşağıdaki komutu kullanabilirsiniz.

netsh interface ip set dns name="bağlantı adı" source=dhcp

Yazılım Atölyesi Hakkında

Tarih: April 13th, 2010 | Yazan: | Kategori: Yazılım | Yorum yapılmamış »

Son blog yazılarım hep Yazılım Atölyesi üzerine oldu biliyorum ve bu yazıyla beraber Yazılım Atölyesi’nin kendi blogunu tanıtıp oradan takip etmenizi tavsiye ediyorum.

Bu ay 17 Nisan’da düzenleyeceğimiz etkinliğimizden hemen önce Yazılım Atöylesi’nin Ankara’ya ait blogunu açmış bulunmaktayız. Daha önceden açtığımız twitter, friendfeed ve facebook hesaplarından sonra en son adım olarak Yazılım Atölyesi Ankara blogunu da açarak bütün duyuruları tek bir merkezde topladık.

Blog sayfamızın açılmasıyla beraber konu istek formumuz ile beraber konuşmacı başvuru formumuz da açılmış bulunmaktadır.

17 Nisan’da Çankaya Üniversitesi’nde yapacağımız ve ORM konusunu ele alacağımız etkinlik hakkındaki detaylı bilgi için Yazılım Atöylesi’nin kendi sitesindeki blog yazısını okuyabilirsiniz. 17 Nisan’da Çankaya Üniversitesi’nde görüşmek üzere.


Yazılım Atölyesi – 2

Tarih: February 21st, 2010 | Yazan: | Kategori: Yazılım | Etiketler: | Yorum yapılmamış »

Şubat ayında da Yazılım Atöyle’mizi tekrarladık. TOBB ETÜ’de gerçekleştirdiğimiz bu ayki atölyenin konusu yapay sinir ağlarıydı. Katılım sayısı çok fazla olmasa da ileride daha çok kişiye ulaşabileceğimizi umuyorum.

Atölyenin ilk bölümünde teorik olarak yapay sinir ağları nedir ne değildir konusunda bir sunum yaptıktan sonra sahneyi Bluekid‘e bıraktım. Bluekid ise bizlere yapay ağları ile çalışan, el yazısıyla yazılmış rakamları tanıyan programına ait bir sunum yaptı. Bluekid’in sunumunu ve programını blogunda yazdığı yazıdan indirebilirsiniz.

Atölyemizi daha yakından takip etmek için Google ve Facebook gruplarımıza katılabilir, anlatılmasını istediğiniz veya anlatmak istediğiniz konuları belirterek bizlere destek olabilirsiniz.

Bir sonraki atölyede görüşmek üzere.


Yazılım Atölyesi

Tarih: January 18th, 2010 | Yazan: | Kategori: Genel, Yazılım | Etiketler: , | 2 Yorum »

Daha önce blogda da yazdığım gibi yazılımcılar olarak Ankara’da buluşup sohbet muhabbet ettiğimiz bir etkinliğimiz vardı. Bu etkinlikler işleyiş ve içerik açısından pek tatmin edici olmadığı için 2-3 buluşmadan sonrasını getirmedik.

Geçen ay yine bu ekipten arkadaşlarla konuşurken bu buluşmalarımız sohbet içeriğinden ayırıp bir çeşit atölye yapma kararı aldık. 16 Ocak Cumartesi günü ise ilk atölyemizi gerçekleştirdik. Yazının devamı »


Programlama İpuçları

Tarih: November 17th, 2009 | Yazan: | Kategori: Programlama | 4 Yorum »

Bugün Jeff Atwood’un blogunda genelde yazılım geliştirme üzerine yazılan “En iyi 10 ipucu” listelerinin listesini gördüm ve yazının hoşuma giden bölümlerini paylaşmak istedim. Maddeler genelde teorik olsa da ders çıkarılabilindiği takdirde pratik ipuçlarından çok daha faydalı olacağına eminim.

Orjinali ingilizce olduğundan dolayı mecburen Türkçeye çevirerek yazıyorum. Çeviri yapmak anlam kaybına yol açacağından dolayı orjinalini de okumanızı tavsiye ederim.

Jerry Weinberg: The 10 Commandments of Egoless Programming

Egolarınıza yenilmeden çalışabilmek için

  1. Hata yapabileceğinizi kabullenin.
  2. Siz ve yazdığınız kod bir değilsiniz.
  3. Ne kadar çok karete bildiğiniz önemli değildir, her zaman sizden iyisi vardır.
  4. Kimseye danışmadan/haber vermeden kodunuzu değiştirip yeniden yazmayın.
  5. Sizden daha az bilgili olan insanlara saygı ve sabır gösterin.
  6. Değişmeyen tek şey değişimin kendisidir.
  7. Gerçek yetki bilgiden gelir, mevkiden değil.
  8. İnandığınız şeyler için savaşın ancak yenilgiyi de kabullenebilin.
  9. Odadaki çocuk * olmayın.
  10. İnsanları değil kodu eleştrin. Koda karşı değil insanlara karşı nazik olun.

Yazının devamı »