Bir Kitabı Defalarca Okumak

24 Şub

Bu yazının konusunu oluşturan durum, yani bir kitabı birkaç kez okuma alışkanlığımın oluşması, yazılım kitaplarını ve makalelerini okumaya başladıktan sonra oluştu. Daha önceleri hikaye, roman ya da güncel kitaplar okurken okuduğum kitaptan bir anafikir oluşturduğumda artık amacıma ulaştığımı anlardım.

Son dönemlerde yazılım geliştirme kitaplarını okumaya başladığımda durum değişmeye başladı. Bir kitabı okurken, kitabın içeriğinin bende uyandırdığı merak duygusundan olsa gerek son derece aceleci davranıyorum. Her bölümü merak edip bir an önce vermek istediği bilgileri almaya çalışıyorum. Bu da konuları tam anlayamama sebep oluyor. Kitap bittiğinde kafamda hiç bir bölüm hakkında tam bir fikir oluşmadığını anlıyorum. Bu durumun oluşmasında belki de okuduğum kitapların yabancı dilde (ingilizce) yazılmış olması da rol oynuyor olabilir. Aynı kitabı bir süre sonra tekrar okuduğumda kitabın vermek istedği mesajı tam olarak alabildiğimi hissediyorum. Kitapta verilen örnek uygulamaları daha iyi anlayabildiğimi farkediyorum. Geliştirdiğim uygulamalarda öğrendiğim yöntemleri uygulamam daha kolaylaşıyor. Zaman ilerledikçe kitaptan öğrendiklerimi unutabiliyorum. Tekrar aynı kitaba baktığımda kitaba olan aşinalığımdan dolayı unuttuklarımı hatırlamam ve anlamam kolaylaşıyor.

Yazılımcı milleti, kendi kendini yetiştirmek zorunda olan bir kitle olduğundan kendi derdine kendi çare bulmak zorunda kalıyor. Bilmediklerini kendi kendine okuyarak ve araştırarak bulmak zorunda kalıyor. Sektördeki işe yarar kaynakların da çoğunlukla yabancı dilde yazıldığı göz önüne alındığında yabancı dil öğrenmek ve okumak şart oluyor. Ben okuduğum kaynakları tekrar okuma alışkanlığımın sebebini anlayarak kendi derdimin çaresini kendim bulmuş oldum.

2012 arkamızda 2013 önümüzde

1 Oca

2012’nin sona erdiği ve koca bir yeni yılın başladığı bir gündeyiz. 2012 yılını tamamen özetlemek yerine bazı önemli noktaları not ederek devam etmek istiyorum.

2012 yılı başlarında kurumumuzda, üzerinde çalıştığımız proje(IKABIS) hakkında hazırlıklara başladık. Genel olarak planlamalar ve hazırlıkların ardından veri hazırlama işlemlerinin tamamlanmasıyla birlikte versiyon 1.0 hayata merhaba dedi.

Bir yandan da kendi MVC projem olan nakliyenoktası start alıyor. Bu proje, tamamen MVC geliştirme yapısını incelemek ve detaylarını uygulamak adına başladığım bir projeydi. Kodlama ve test süreçleri başlıyor. Bir yandan da başımın belası olan tasarım ile uğraşıyorum derken proje 2012 ortalarında başarıyla hayata geçiyor.

2012 yıl sonuna doğru IKABIS versiyon 2.0 tamamlanmak üzere. Bir önceki vesiyona göre, tasarım, kodlama şekli ve geliştirme süreci tamamen değişmiş durumda.

2011 ve 2012 yılında, benim için yazılım tarafında önemli gelişmelerden biri şelale tarzı programlama tekniklerinden Test Driven Development (TDD) ile programlamaya geçiş yapmam oldu. Önümüzdeki aylardaki yazılarımı da TDD üzerine planlamak istiyorum.

2012 yılı evliliğimin ikinci yılıydı. Teknolojik bir insan sürekli yenilikleri takip etmek zorunda olduğundan eşler açısından pek hoş karşılanmaz ancak sağolsun eşim bu konuda bana hep destek olmuştur. Çalışmalarımda her zaman beni destekleyen eşime ve hep arkamızda olan anneme teşekkürlerimi sunuyorum ve onlara nice sağlıklı uzun ömürler diliyorum.

Artık 2013 yılının planlarını yapma zamanı. Hem mesleğim adına hem de sosyal hayatım adına planlar yapma vakti.

Herkese 2013 yılının başarılı ve sağlıklı geçmesini diliyorum. Herşey istediğiniz gibi olsun (istekleri abartmadan :)).

Blog yazma amacım

19 Eyl

Bu blog sayfasını yazma amacım bilgi paylaşımı yapmak olup yazılım dünyasına az da olsa fayda sunabilmektir. Amacım arama motorlarında ön sıralarda çıkıp kullanıcıya hiçbir katkı sağlamayan ve sadece zaman kaybettiren bir web içeriği sunmak değildir. Amacım arama motorlarında aradığı başlığı bulan kullanıcıya aradığı şeyi sunmuş olabilmek ve eğer lütfeder ise bir teşekkürünü alabilmektir. Kafamda birçok konuyla ilgili ufakta olsa yazıya dökülebilecek bilgiler var. Ancak bunları eksik şekilde yazmak, okuyucuya bir fayda sunmayacağı gibi okuyucunun vaktini boşa harcamasına sebep olacaktır. Bu nedenle yazıya dökmediğim birçok konu da mevcuttur. Aynı hassasiyeti boş yazılarla vaktimizi çalan blog yazarlarından da bekliyorum.  İnternette var olan konulara farklı yönlerden yaklaşabilir, farklı örnekler vererek konuları anlaşılır bir biçimde sunabiliriz. Ancak eksik ve yanlış bilgiler sunmak mesleğimize yapılmış bir saygısızlıktır.

Yapay yöntemlerle arama motorlarını kandıran ve bu uğurda gerçek bilgiyi sunan sitelerin haklarını sömüren internet siteleri sahiplerine ve kendini Hacker zannedenlere duyurulur.

Windows mu Linux mu?

17 Eyl

İşletim sistemlerine karşı fanatizm boyutunda bir taraf tutma savaşı vardır. Linux taraftarları ve Windows taraftarları topluluklarda ve sosyal medyada kısır tartışma içerisindedir genelde. Bu tür tartışmalara girmeden önce, işletim sistemlerinin neyi hedeflediğini bilmemiz gerekmektedir. Amacımıza uygun işletim sistemini seçebiliyor muyuz diye bir bakmamız gerekir ilk önce. Fakat amaca uygun işletim sistemi nasıl seçilir? Hangi tarafta durmamız gerektiğini nasıl belirlemeliyiz?

Microsoft firmasının Windows işletim sistemini çıkarma amacı ve inancı, gelecekte her evde bir kişisel bilgisayar olmasıydı. Her evde bir bilgisayarın olması demek bir de işletim sisteminin olması demektir. Windows işletim siteminin ev kullanıcılarına dönük yani profesyonellik istemeyen bir ilkesi vardır. Yani herkesin kullanabileceği bir işletim sistemidir Windows. Amacına uygun şekilde yapılmış mı? Bence evet. Öyle olmasaydı çoğunluk Windows işletim sistemini kullanmazdı. Çoğunluğun Windows kullanması belki başka seçeneğin olmamasından kaynaklanıyor diye akıllara gelebilir ama günümüzde başka işletim sistemlerinin de olması Windows işletim sistemini kenara attıramamıştır.

Gelelim Linux tarafına. Linux işletim sistemi, ev kullanıcısından ziyade daha profesyonel kullanıcılara hitap eden bir işletim sistemidir. Linux, kullanıcıya her şeyi hazır olarak sunmaz. Daha fazla bilgi ve emek ister. Programlar kapalı kutular şeklinde değil açık kaynak şeklindedir. Bilgili ve profesyonel olmadan her şey açık kaynak, her şey özgür sloganlarıyla Linux kullanmaya kalkan acemi kullanıcılar, bir ekran kartı sürücüsünü 1 günde yükleyemeyince hayal kırıklığı yaşayabiliyor.

Profesyonel olmak kişinin özgür seçimidir. Bilgisayar sistemleri konusunda belli bir noktaya gelenler ve işletim sistemi çekirdeği seviyesinde çalışma becerisine sahip olan kullanıcılar gayet tabi Linux işletim sistemini seçebilir. Bilgisayar mühendisleri, gömülü istemlere yazılım üretenler için açık kaynak ve Linux biçilmiş kaftandır diyebilirim. Ancak ev kullanıcıları, işletim sistemi seviyesinde çalışacak yazılımlar üretmek isteyenler ve kolayca yazılım üretip kullanmak isteyenler için de Windows kullanmak avantajlı olur diyebilirim.

Linux tarafında duranlar da genelde önce Windows işletim sistemini kullanıp sonra Linux tarafına geçenlerdir. Kabul etmeliyiz ki Windows işletim sistemi olmasaydı çoğumuz bilgisayar sistemlerini geç tanırdık ve birçok kullanıcı da hala bilgisayar kullanamıyor olurdu. Bilgisayarlar şirketlere ve geliri üst seviyede olan insanlara has ürünler olurdu. Ev kullanıcısına ulaşması çok daha uzun seneler alabilirdi. Bu nokta da insanlığı Windows işletim sistemiyle tanıştıran Microsoft firmasının hakkını yememek gerek.

Şeçim sizin…

Blog sayfam 1 yaşında

19 Ağu

Bugün 19 ağustos 2012. Bir yıl önce web dünyasına açtığım blog sayfam bugün ilk yaşına girdi. Yeni yaşında sayfamın temasını da değiştirmek istedim.

Blog maceram nasıl mı başladı?

Genelde bir işi yapmayı hedeflediğimde, genelde o işi bir takvime bağlarım. Ancak blog sayfamı şu zaman başlarım bu zaman başlarım derken epey zaman geçirmiştim. Bir gün, “ben bu işe başlıyorum artık” dedim. Hemen alan adı ve hosting işlemlerini halledip yazılarımı yazmaya başladım. Demek ki bazı şeyleri yapmak için plan yapmaya gerek yokmuş.

Aklıma takılan sorunları ve çözümlerini yazarak başladım işe. Ardından unutmaya meyilli olduğum,  yani sık kullanmadığım konular hakkındaki yazılarımı da eklemeye başladım siteme. Derken uzadı uzadı gitti. Bir senede epeyce birikim yapmışım.

Eğer blog yazmaya başlamasaydım, unuttuklarımı bana(kendi dilimle) hatırlatacak bir hatıra defterim olmayacaktı. Diğer taraftan, yazdıklarımı diğer geliştiricilerle de paylaşılmış oldum. Bazen olumlu geri dönüşler almak gerçekten hoşuma gidiyor.

Bence her programcı cesur olmalı ve bir blog sayfası tutmalı. Nasıl biz zor durumda kaldığımızda başkalarının paylaşımlarından faydalanıyorsak, başkaları da zor durumda kaldığında bizden faydalanabilmelidir.

Ajax Loader Spinner Gifleri

10 Tem

Ajax destekli sitelerde “işlem devam ediyor” ya da “yükleniyor” gibi efektlerin hareketli  (gif uzantılı) resimlerle ifade edilmesini çoğumuz görmüşüzdür. Özellikle de sosyal paylaşım sitelerinin vazgeçilmez ifadeleridir bu resimler. Buradaki siteden siz de istedğiniz şekilde bir spinner oluşturabilirsiniz.

Spinner resimlerin şeklini, arka plan ve hareketli kısmın renklerini de seçmek tamamen size kalmış.

Birkaç örnek indirdim bile.

Tekrar görüşmek dileğiyle.

Kendi Kendine Öğrenmeyi Öğrenmek

8 Haz

“İyi de bu bize öğretilmedi ki.” veya “Biz bu konuyu öğrenmedik ki.” cümlelerini çok fazla duymaya başladım. Hadi ilköğretim öğrencisi lise talebesi bunu söyler de üniversite öğrencisinden veya üniversite bitirmiş birinden bu lafları duymak çok sinir bozucu. Yani programlama  bilmiyorum diyene niye öğrenmiyorsun demek için kurmuyorum cümlelerimi. Öğrendiğin konularda neden kendini geliştirmek istemiyorsun. Ya da okulda verilen yazılım dersleriyle neye ulaşmaya uğraşıyorsun, ey genç yazılımcı. Peşin peşin söyleyeyim okul bilgilerinle çok fazla bir şey elde edemeyeceksin. Eğer bu söylediğimin tersi olsaydı mezun olan her yazılımcı her türlü yazılım projesinin altından kalkabilirdi. Web projesi, mobil projeler, işletim sistemleri, masaüstü yazılımlar, veritabanı yazılımları gibi her türlü projede söz söylemek mümkün olurdu bir yazılımcı için. Ama  durum çok farklı.

Kişi yürümek istediği yolu kendi seçmeli ve o yolda gerekli her türlü bilgiyi kendi öğrenmeli. Başarıya bu şeklide ulaşılır. Bana göre başarı hedeflediğine ulaşmaktır. Gözde meslekleri edinmek, ünlü üniversitelerde okumak değil. Bu yüzden, başarı için önce hedefin belirlenmesi gereklidir. Daha sonra hedefe giden yolda yılmadan yürümek gerek.

Eğer okulda öğretilenlerle büyük işler yapılabilseydi, Bill Gates’in okuduğu sınıftaki öğrenci sayısı kadar İşletim sistemi, Mark Zuckerberg’in sınıf arkadaşı kadar Facebook benzeri sosyal paylaşım sitesi, Larry Page’in sınıf arkadaşları kadar ünlü Google arama motoru olurdu. Ama durum farklı. Örneğin mühendislik okuduysanız, mezun olduğunuzda piyasaya sadece sınıf arkadaşlarınız kadar mühendis dahil oluyor. Mühendisliğinizi konuşturmak, fikirlerinizi hayata geçirmekte sizin elinizde, “biz bunları ögrmedik ki nasıl yapalım” diye söylenmekte. Karar sizin.

Kendimi nasıl geliştirmeliyim diye merak edenler için kendi alanımdan yol gösterebilirim. Diyelim ki yazılım alanındasınız ve uzman bir yazılımcı olmak istiyorsunuz. Seçtiğiniz alanla ilgili sektörün öncülerini takip ederek işe başlayabilirsiniz. Blog yazılarını, kitaplarını okuyarak veya videolarını izleyerek başlayabilirsiniz. Sektörün en iyi kaynak kitapları maalesef yurt dışında bulunmaktadır. Bu kitaplara internet aracılığıyla ulaşabilirsiniz. .NET veya Java alanında internette sayısız kitap bulunmakta. Bu kitaplarda gerçek hayat tecrübeleri de aktarılmaktadır. Okuduğum kitapları bir seri halinde blogda paylaşmak istiyorum. Vakit buldukça bunları da paylaşacağım.

İkinci adım ise öğrendiklerimizi uygulamak ve hayallerimizi gerçekleştirebileceğimiz bilgileri öğrenmek. Yani ben herşeyi öğreneyim, birgün lazım olur diyerek vakit kaybetmeyin. İş modelimizi geliştirmeli ve o modele uygun konuları öğrenmeliyiz. En önemlisi de bilgilerimizi hayallerimiz doğrultusunda kullanabilmek.

Son söz: Hayallerinizden korkmayın.

Bu benim aklıma gelmişti dememek için

5 Nis

Bugün izlediğim bir video, düşüncelerime tercüman oldu adeta. Bu yüzden bu videoyu paylaşmak istedim. Ana fikir olarak, düşüncelerin gerçekleştirilebilmesi için inanarak işe başlamanın şart olduğu ve hiçbirşey için çok geç olmadığı şekilinde değerlendirebiliriz.

Daha fazla konuşmadan videoyla sizi başbaşa bırakmak istiyorum.

Video içeriğini metin olarakta çıkarttım.

Think when you were still a KID
Think when you were a KID, everything is POSSIBLE
You put the BLANKET, over your back, then you became a SUPERMAN
You take your mom’s BROOM and ride on it, then you became a WITCH
You climb up the TREE, not knowing that you might fell, you simply MADE IT
You just had an IDEA and made it happened, because YOU BELIVE
You were then, CREATIVE with strong BELIEF
As you become ADULT, things seems to be a little different
When you failed in your exam, you think “I can NEVER make it”
When you have a BRILLIANT marriage proposal, then you think “maybe it’s NOT the right time”
When you want to start a BUSINESS, you think “maybe it’s NOT as easy”
When you are ALREADY in the BUSINESS, you hard someone says do NOT take risk.
Then, when you have a BRILLIANT IDEA that,
Can create mode JOBS for pooper nations
Can provide a better LIVING for more people
Can make our nation PROUD
Can help the GROWTH of our nation and can create a better WORLD
And you said “I am NOT SURE…”
You are still CREATIVE but with more DOUBT
Then YEARS LATER, you heard … someone had the same idea as yours,
What makes him DIFFERENT from you?
His ACTION.
He puts his IDEA into reality.
He is the most promising Creative Young Entrepreneur of year.
His ACTION won him this recognition.
Then you started to think, How I WISHED I had taken ACTION That years ago…
THINK you were a KID, If that idea came by when you were still a kid, could you have taken ACTION???
When back then, you strongly belive…
It is never too late…, you just need to have an IDEA and make it happen
You still can, … if you BELIVE.
Creativity starts from BELIEF.

Android Sony Ericsson Xperia Neo Wifi IP Problemi

28 Mar

Merhabalar,

Sony Ericsson Xperia Neo markalı android işletim sistemli telefonuma işletim sistemi güncellemesi yaptıktan sonra, ne hikmetse evdeki ağımadan faydalanamaz hale geldim. Ağa bağlanıyorum fakat saniyeler içinde bağlantı kopuyordu. Epeyce uğraştırdı beni. Yaptığım araştırmalar sonucunda çözümü IP sabitleyerek bulabildim.

Ağ ayarlarından, gelişmiş ayarlar bölümüne girerek , “Statik IP Kullan” seçeneğini işaretleyerekIP ayarlamalarını elle vererek bu sorunu şimdilik aşmış gibi görünüyorum. Böyle bir sorunla karşılaşıyorsanız bu yöntemi deneyebilirsiniz. Sizin için de çözüm olabilir.

IP: 192.168.1.102
Gateway: 192.168.1.1
Subnet Mask: 255.255.255.0
DNS1: 8.8.4.4

Bu çözümü sadece sony telefonlarda değil samsung telefonlarda da uygulayabilirsiniz. Muhtemelen sorun android işletim sisteminin yeni sürümlerinden kaynaklanıyor.

Tekrar görüşmek dileğiyle.

Neden Ciddi Yazılım Üretemiyoruz?

29 Şub

Aslında sorunun “Neden üretemiyoruz?” olması gerekirdi ama, kendimi fazla alan dışına çıkarmak istemediğimden iğneyi kendimize batıralım dedim. Evet “Neden ciddi yazılımlar üretemiyoruz?” sorusunu sormaya başladım. Yazılım sektörünün liderlerinin görüşlerini, kitaplarını okudukça ve yazılıma bakış açılarını gördükçe, yavaş yavaş sorumun cevabına yaklaşmaya başladım.

Öncelikle yazılıma ne olarak bakıyoruz, buradan sorgulamaya başlayabiliriz. Piyasada milyonlarca yazılım var. Bu yazılımlara ulaşmak için ne yapıyoruz? Hemen gidip pasajlardan “CD var oyun var, program var..” diye bağıran emek hırsızlarının ekmeğine yağ sürüyoruz. Aylar, yıllar süren çalışmaların karşılığını korsanlardan üç beş kuruşa satın alıyoruz. Bu ortamı gören kimse yazılım üretmek ister mi? Tabiki istemez. İsteyenler de kalitesizse, alın size kalitesiz yazılım üretimi için bir sebep.

Bir diğer soru, yeterince çalışkan yetiştirildik mi? Üşenmeden sıkılmadan bir işin sonucunu bekleyebiliyor muyuz? Olayın bu yönüne farklı bir alandan bakmak istiyorum aslında. Senelerimizi yiyen bitiren şu test sınav mantığı yokmu? Ham bilgi peşinde değilde, dersanelerde kısa yol kısa çözüm peşinde geçen gençliğimiz yok mu? İşte bu mantık; basma kalıp bilgilerle beynimizi doldurdu, bilgiye ulaşmamızı engelledi, bilmemiz gerekenleri hep pas geçerek seçiciliğimizi törpüledi, bizi kısa yol peşinde koşan tembeller haline getirdi. Maalesef yazılımı da aynı mantıkla öğreniyoruz. Forumlara bir göz atmanız bunu açık açık görmenize yardımcı olacak. “Şu ödevim için örnek kod var mı?”, “Bitirme çalışması için örnek konu var mı?” şeklinde açılmış konuları ve aklıma gelmeyen hazır kod isteklerini forumlarda bolca göreceksiniz. Böyle yetişen yazılımcıların ürettiği yazılımdaki ciddiyeti tahmin edebilirsiniz. O da olmadı dönüyoruz kursların peşinde. Hadi bana yazılım öğret diye. Yazılımcı kendi kendini yetiştiremiyorsa onu kimse yazılımcı yapamaz.

Takım çalışmasında başarılı mıyız? Yönetilmiş olmadan yönetmeye çalışan bireyler, takım çalışmasında başarısız olurlar. Sebebi ise bulunduğu konumu benimseyememiş olması ve gözünü yükseklere(maaşlara) dikmiş olmasıdır. Bu yüzden, kişi bulunduğu konumu kendi konumu olarak görmez ve hep yükseklere gözünü diker. Bu yüzdende yaptığı işe konsantre olamaz. Kafa hep başka yerlerdedir. Bu tarz insanlar takım arkadaşlarından bilgi saklar, aklınca arkadaşlarının kendi seviyesine çıkmasını engellemeye çalır, takım liderlerinden aldığı bilgileri takım arkadaşlarına tam iletmezler ve stres yüklü insanlar haline gelirler. Bir çıkış noktası yakalayıp yükselme peşindedirler. Bu şekildeki yazılımcıların iş kalitesini bir düşünün. Yazılım ekibi kesinlikle paylaşımcı olamlı ve o anda yaptığı işe odaklanmalıdır. Paylaşımcı olmayan takımlar başarısız olur.

Sistematik çalışma prensibine sahip miyiz? Yapılan yazılımlar da kişilere bağlı değil sistemlere bağlı olmalıdır. Kişiler herzaman değişkendir ancak sistemler sabittir. Modüler yapıda ve branşlaşmış çalışma ekipleriyle üretilen işler herzaman kaliteli olmuştur. Kariyer sitelerinde ilk defa iş ilanlarına baktığımda “vay be, insanlar ne kadar çok şek biliyormuş” diyordum hep. Sonraları komedinin farkına varmıştım. Bir yazılımcıdan istenen özellikler; Veritabanı yönetimi, programlama bilgisi, web bilgisi, tasarım bilgisi, sistem bilgisi v.s. Aklına geleni yazmış adamlar. En ilgi çekeni de esnek çalışma koşullarına ayak uydurmak. Artık gece onikide mi biret mesai bilinmez. Unutulmamalıdır ki her fazla mesainin altında bir plansızlık yatar. Her neyse, bunların hepsini yapacak bir kişi daldan dala atlamaktan ve google araması yapmaktan işini yapamaz. Çünkü kişi her konuda tecrübeli olamayacağına göre birsürü sorunla karşılaşacak. Böyle bir proje ne kadar başarılı olabilir ki?

Benimsenmiş yazılım prensiplerini uyguluyor musunuz? Bunların başında gelen çevik  süreçlerdir. Devamında ise temiz kodlama, teste dayalı programlama  gibi teknikler gelmektedir. Bu yöntemler sayesinde üretilen projeler tertemiz ve testleri yapılmış bir şekilde ortaya çıkar. Kodun yeniden düzenlenmesi için tüm yazılımın ayıklanıp incelenmesi gerekmez ve zaman kaybı önlenmiş olur.

Bence yazılım, kesinlikle kuralları olan bir süreçtir. Başarı için bu kurallara uyulması gerekmektedir. Kurallara uymadan yapılan kodlamalar sonucunda sadece çalışan kod yazılmış olunur. Bu yüzden, piyasa koşullarında rekabet edemeyen, sadece çalışan kodlarımız olur.