Yazılıma Başlamadan Önce Sindirmeniz Gereken 8 Madde

Yazılıma Başlamadan Önce Sindirmeniz Gereken 8 Madde

Bu dersimizde kendi tecrübelerimden yola çıkarak yazılım sektörüne girmek isteyen arkadaşlara tavsiyler bulunmaktadır.

Selamlar arkadaşlar,

Bu makalede kendi tecrübelerimden yola çıkarak sizlere nacizane tavsiyeler vermek istedim. Umraım faydası dokunur.

Araştır, araştır ve araştırmayı sev:  Araştırma yapmadığın sürece kendini geliştirmen imkansız. Yazdığın kod çalışıyor diye sorun yok şeklinde düşünmek çok yanlış. Bol bol araştırma yap, araştırmayı sev.... Kendini geliştir, kodlarını geliştir, yazım tekniğini geliştir. Yeniliklerden haberdar ol. Yeni şeyler denemekten korkma. Değişmeyen tek şey değişimin kendisidir.

Yaz sil, yaz sil, yaz sil:  Genelde bir yazılımcı işe çok kod yazarak başlar. Onlara diyecek bir sözümüz yok tabiki bizde en başta aynı kodu tekrar tekrar ve uzun uzun yazıyorduk ama örneğin ben hiçbir zaman formun içerisinde sql connection string yazmadım. Üniversitede proje ödevi olarak bir asp.net site yaparken izlediğim eğitim setinde eğitmen direk sql connection class ve diğer class hazırlama işlemlerini de göstermişti. Bu yüzden direk classlar ile çalışmaya başladım. Ve inanın proje bitiş süresini inanılmaz etkiliyor. O ilk sql class yorum satırları ile birlikte 205 satırdı. Şuan da ise yorum satırları dahil 63 satır. Peki bu nasıl oluyor?. İşte yaz sil, yaz sil, yaz sil burada başlıyor. Yazıyorsun sonra bakıyorsun  işe yaramayan yerler var siliyorsun. Yazıyorsun sonra bakıyorsun buraları şöyle birleştirsem yine aynı şey olur diyip siliyorsun. Yeni birşey öğreniyorsun onu eklemek için silip yazıyorsun. Kodları artık ihtiyaçlarını karşılamıyor araştırıp öğreniyorsun silip yazıyorsun. Hatta bazen tamamen silip yeniden yazıyorsun. Ve kodların daha kısa ve anlaşılır oluyor. Hatta  3 4 yıl sonra ilk projelerine bakıp kendine küfür edebiliyorsun. "Ben burada ne yapmışım yaw" diyorsun kendi kendine. Ara sıra ilk yazdığım projelere geri dönüp bakıyorum "bu ne la" diyip siliyorum, "ne yazmışım la burada" diyip siliyorum. Ve inanın sile sile projedeki kodların yarısından fazlasını silmişim ve hala siliyorum.

Önce düşün sonra yaz:  Yazılımcı olmak istiyorsanız düşünce şeklinizi bir düzene sokmalısınız. Analitik düşünmek gibi şeylerden bahsetmeyeceğim. Öyle üstün matemetik bilmenize de gerek yok. Size lazım olan formülleri ihtiyacınız olduğunda zaten mecburen öğreneceksiniz. Bu yüzden kasenizi şimdiden bunlarla doldurmanıza gerek yok. Elbette zaten biliyorsanız ne ala! Matematik bilmenin hiçbir zaman kötüsü olmaz. Ne kadar çok biliyorsanız bilmem kaç sıfır önce başlarsınız ama matemetik bilmeyen programcı olamaz diyenleri zerre takmayın. Yazılım işi gönül işidir. Matematik profesörü olsanızda sevemediğiniz takdirde yapamazsınız.  (Yalan söylemiyorum ben daha geçen seneye kadar çarpım tablosunu bile ezbere bilmiyordum.) Bilmeniz gereken ilk şey işlem önceliği. Bunu öğrendiyseniz şimdilik yeter. Kaldı ki bu sadece matematik sorularında değil bu sektörün kendisinde vardır. 

Sırası ile;

  1. Düşün.
  2. Soru sor.
  3. Tekrar düşün.
  4.  Kafanda soru işareti kalmayana kadar soru sor.
  5.  Kafanda projeyi (mümkünse son haline kadar) tasarla - Gerekirse kağıt kalem al yaz, çiz.
  6.  Kullanacağın formları kafanda hazırladığın tasarıya göre ayarla.
  7.  Kodlarını yazmaya başla. (Database tablolarını hazırlamakta bu aşamada).

Ben from tasarımlarını yaptıktan sonra tabloları açma taraftarıyım. Çünkü yaptığım tasarımı kafamda ilgili yerlere bağlıyorum. İlişkilendirmelerini ayarlıyorum. Sonra tablolarını açmaya başlıyorum. Elbette gözden kaçan şeyler oluyor ama en azından geri dönüş süreci minimum seviyede oluyor.

Şimdi böyle bir sıralama ile başlamazsan ve devam etmezsen o projenin büyük ihtimalle sonu gelmeyecektir. "Yaw hele bir başla sen, aklımıza geldikçe söyleriz eklersin" diyerek işe başlamanı isteyen bir müşteri üç beş kuruşa kendi kafasındaki mükemmel programı sana yazdırmaya çalışacaktır. Tecrübe ile sabittir. Üç yılda zar zor bitirebildiğim bir proje var. Tahmini altı yedi ay gibi bir sürede bitebilirdim.

4 - Basit düşün: İnsanlar basit şeyleri severler. Bir formdan gir ona tıkla, oradan çık şuraya gir şunu tıkla, şurdan da şuna tıklarsan istediğin olur dersen bir adama, adam mala bağlar "yaw bu seferlik sen yapta bende bakıp öğreneyim" der. Sonra bir bakmışsın herkes o raporu senden ister olmuş. Sana göre çok basittir. "Yahu bunde ne var ki?" dersin ama müşteri anlamayabilir. O yüzden yapabildiğin en basit halinde yapman gerekir. 

Unutma o projeyi sen yazdığın için ve neyin nerede olduğunu çok iyi bildiğin için sana çok basit gelmesi gayet normaldir.

"Dünya üzerindeki en düşük IQ ya sahip bir insanın bile anlayacağı şekilde yap." bu benim bu konudaki felsefemdir. Yardım dosyalarını hazırlarken, kullanım klavuzu hazırlarken ve programı yazarken hep bu felsefe ile yazarım. En temel anlamı da "Basit Düşün" dür.

Az kod çok iş: Yazılımcıların bazıları yazdıkları kod satırı sayısı ile hava atarlar. "Çok iyi yaa bugün 10.000 satır kod yazdım. Varmı benden hızlısı" diyen bir tanıdığım vardı. Benim gözümde onlar yazılımcı değildir. O hava atan insanlar bu işi hava atmak için yapıyorlardır. Fazla kod yazmak sadece kod hammallığıdır. "Bende kopyala yapıştır ile günde bir proje bitirebilirim". Benim mantığıma göre bir kodu / kod bloğunu iki kere yazmak hammallıktır ve o işte bir sıkıntı vardır. Hatta bırakın kodu benzer işleri yapacak bir formu bile iki kere kullanmam. Örneğin bir seçim listesi yapacaksam gelinen sayfaya göre sadece gösterilecek verileri değiştiririm. Mesela sql bağlantısı yaparken her yere connection string yazmak, bağlantı açmak/lkapatmak ve daha bir sürü kod yazmak yanlıştır.  Bunları bir class içerisine çekip genel bir hale getirdiğinizde bir kere yazar tüm projede kullanabilirsiniz. bir değişiklik yapmanız gerektiğinde classı değiştirirsiniz ve tüm proje güncel olur. Diğer türlü her formu tek tek gezmek zorundasınız.

Tabiki bu biraz tecrübeye bağlıdır. Ancak 1. maddeden buraya geldiyseniz direk aşağıdaki 4. sorudan başlamanız hiçte zor olmaz.

  1. Kod çalışıyor mu? Evet. Tamam elleme (50 satır)
  2. Kod çalışıyor mu? Evet de bu kodlar ne la. Gereksiz satırları sil. (35 satır)
  3. Kod çalışıyor mu? Evet de bu kodu yazan çocuk kör oldu. Gereksiz satırları sil. (17 satır)
    bkz. Bu Halıyı Dokuyan Çocuk Kör Oldu
  4. Kod çalışıyor mu? Evet de aga her yerde bu kod var. Kodları bir class' a çek. (25 kullanım 25 * 17 satır)
    Son hali class içi 25 satır ve 1 satırda çağırma ( 25 * 1 ) + 25 satır = proje genelinde toplam 50 satır. Proje genelinde  25 * 50(ilk hali) = 1250 satırdan 25 + 25 = 50 satıra düşürdük.

Hiç araştırma yapmayan kişi kendinden çok iyi yazılımcıların yazılarını hiç göremeyecek ve kendi yazdığı kodların on numara olduğunu düşünecek. Kodlar çalıştığı için kendini geliştirmeyecek ve böylece devam edecek. Düşünün bu kodda bir değişiklik yapmanız gerekirse? 50 yerde kullandınız tek tek oralara gidip tek tek düzelttiniz. Kaç saatinizi alacak?. Proje ilerledikçe değişiklik yapmaktan korkacaksınız ve giderek meslekten uzaklaşacaksınız.

Kopyala yapıştır hiçbir şeyi çözmez: En iyi yazılımcılar bile yeri geldiğinde kopyala yapıştır yapar. Ancak kopyalayıp yapıştırdıktan sonra geri dönüp o kodları paylaşan adama küfür veya hakaret etmez. Çünkü bilir ki o kodları kendi kodlarına uyarlaması gerekir. Hatta bazen kodların son hali kopyala/yapıştır yaptığı kodlardan alakasız bir hale gelecek ama o yazılımcı o işi öğrenmiş olacak. Çünkü kodlar üzerinde çalışacak mantığını anlayacak belki o mantığı kendi yöntemleri ile bambaşka bir şekilde sıfırdan yapacak. Dediğim gibi kopyala yapıştır hiçbir şeyi çözmez. O kodları önce sindirmelisiniz. Kendi kodlarınıza adapte etmelisiniz. Ve yine dediğimiz gibi belki de son hali alakasız olacak ama istediğiniz işi de başarmış olacaksınız.

Yapmayı SEVECEĞİN alanı belirle: Bir yazılımcı olmak istediğinizde artık hangi alanda yazılımcı olmak istediğinize karar vermek zorundasınız. Bir başlayalımda gerisi gelir dediğinizde o "gerisi" gelmeyecektir. Sayıp sövüp başka işlere yönelirsiniz. Genel anlamda sektöre bir bakarsak;

  1. Masaüstü 
  2. Web 
  3. Mobil 
  4. Oyun 

olarak dörde bölünmüş olduğunu görürüz ancak bu genel alanlarda kendi dallarına ayrılmaktadır. Şu sıralarda Masaüstü Programcılığı geri plana düştü. Çünkü insanlar artık mobil ve web alanına yönelmeye başladı. Ancak sakın üzülmeiyn. Bunu artık herkes biliyorki benzer şeylerden çok farklı şeyler üretilmeli ki tutulsun. Burada sizin hayalgücünüz devreye giriyor. Masaüstü uzun bir süre daha kaybolmayacak. Hala birşeyler başarabilirsiniz. 

Masaüstü Programcılığında uzmansanız zaten Web Programcılığı hakkında da bilginiz mutlaka vardır. Olmalıdır!! Yok ise yine üzülmeyin bir an önce Web Programcılığı alanına da giriş yapın. Hiç vakit kaybetmeyin!!. Yeni başlıyorsanız ise önce mobil alanına yönelin. İlerleyen zamanlarda oyun alanına da yöneleceksiniz zaten ve dolayısı ile Web alanında da bilgi sahibi olmaya başlayacaksınız. İhtiyaç dahilinde masaüstü alanına geçersiniz. Ama şu da bir gerçek ki masaüstü alanında uzmansanız artık mobile de başlamalısınız. Geç kaldım demeyin deneyin.

Üniversitede iken sınıfımda 47 yaşında bir abimiz vardı ve okul birincisi olarak mezun oldu. Evli ve iki çocuk babası idi.

"Aynısı yapmışlar yaaaa offf":  Hangi alanda ilerliyor olursanız olun farklı olduğunuz sürece başaracaksınız. 1. ve 4. maddelere tekrar göz atarsanız ne demek istediğimi anlayacağınızı düşünüyorum. Diyelim ki size göre süper bir fikriniz var. Etrafınıza sorduğunuzda da olumlu cevaplar alıyorsunuz ki offf!! O fikire büyük umutlar bağladınız. "Kesin tutar la bu" diye düşünüyorsunuz. Tam kolları sıvadınız bir baktınız ki "aynısı yapmışlar yaaaa offf" dediniz. Onu gördüğünüz anda başınızdan aşağı kaynar sular dökülür. Umutların kırılma sesleri beyninizde yankılanır. Bunlar her insanın başına gelecek (bence mutlak, yani %100) düşüncelerdir. Eee ne olacak şimdi? O işi yapmaktan vaz mı geçeceksin?.

TABİKİ DE HAYIR!!!

  • Şuan kaç farklı işletim sistemi var?.
  • Şuan kaç farklı akıllı telefon var?.
  • Şuan kaç farklı araba var?.

Herkes aynısının var olduğunu öğrendiğinde aynı hissi yaşamıştır ancak çok azı "Olm ben daha iyisini yaparım bunun!!" deyip yola devam etmiş ve başarmıştır. Yola devam et. Rakiplerini araştır ve her zaman daha iyisi için çabala. Hiçbir başarısızlık kayıp değildir aksine kazançtır.

Geçmiş

  1. Yazı Eklendi -10.04.2017-
  2. 7. ve 8. madde eklendi -26.06.2017-
  3. Yazım düzenlemesi yapıldı - 03.07.2017-

Şimdilik bu kadar arkadaşlar. Takipte kalın çünkü zamanla bu paylaşımı güncelleyeceğim.

Bol kodlu günler.

Mustafa BÜKÜLMEZ
Web sitesi ve ERP, MRP, CRM ve kişiye özel uygulamalar uygun fiyatlarla hazırlanır. Fİyat için mesaj atabilirsiniz. -- Deneyip çalıştığını onaylamadan çok nadir ders eklerim. Denemediklerim ise eski makalelerimdendir. Hem bildiklerimi paylaşmak hemde her seferinde aramamak için yayınlıyorum. -- *Bilgi paylaştıkça çoğalır. *Bir mum diğer mumu yakmakla ışığından bir şey kaybetmez. Aksine Daha çok ışık yayar. -- 1992 İstanbul doğumluyum. Kahramanmaraş'ta yaşıyorum. Lise: Ağ sistemleri ve Yönetimi, Üniversite: Bilgisayar Programcılığı.. -- 07.2014 tarihinden beri bir firmada Bilgi İşlem Müdürü olarak çalışmaktayım. -- Kişisel Bloğum : https://csharpiledundenbugune.blogspot.com.tr/
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yazı için gerçekten teşekkürler sizin sayenizde yeni bir bakış açısına sahip oldum.
Yorumun için teşekkür ederim. Faydam olduysa ne mutlu bana ^_^

Yukarı Git