"C ögrenmeli miyim?", "C'ye baslasam mi acaba?" gibi sorulara genel bir yanit verebilmek için bu yaziyi ayri bir thread olarak atiyorum....
Programcilari bir dogru üzerinde bir noktaya yerlestirecek olalim. Bana göre bir uçta "ürüne odaklanmis programcilar" dedigim kesim, diger uçta ise "olaya odaklanmis programcilar" dedigim kesim bulunuyor.
Ürüne odaklanmis programcilar için programlama dili ya da gelistirme ortami tamamen bir araçtir. Ortada bir proje vardir. Ya da kafada bir fikir vardir.
Amaç bu projeyi ya da fikri gelistirerek ürün haline getirmektir. Bunu saglayacak en kolay araç en iyi araçtir. Bu tür programcilar olaylarin nasil gelistigini pek merak etmezler. Merak etseler de bu meraklarini kolaylikla bastirabilirler. Örnegin, onlar için klavyenin nasil çalistiginin, görüntünün ekranda nasil olustugunun, isletim sisteminin programi nasil yüklediginin, dosyalarin diskte nasil tutuldugunun hiç önemli yoktur. Önemli olan ürünün kendisidir. Bu tür programcilar kolay kullanilabilen, hizli ögrenilebilen, gelistirme sürecinde kendilerini sonuna kadar destekleyebilecek, yüz üstü birakmayacak programama dillerini ve araçlarinitercih ederler. Ürün gelistirecek düzeye çabuk gelirler. Iyileri çok güzel projeler çikartir. Kötüleri kullanici ile gelistirici olma arasinda gidip gelirler...
Halbuki olaya odaklanmis programcilar üründen çok olaylarin nasil gelistigi üzerinde kafa yorarlar. Olaylarin hep nasil gerçeklestigini merak ederler.
Bu meraklarini bastiramazlar. Onlar için ürünün gelistirilmesi ikinci plandadir. Olaylarin nasil gerçeklestigini bilmeden bir sey yapmak istemezler. Bu tür programcilar örnegin gelismis araçlari kullanmak istemezler. Yüksek seviyeli kütüphanelerden nefret ederler. Her seyi kendileri yapmak isterler. Her zaman daha ayrintiya inerler. Bazen durum amacindan sapar, obsesif bir hal alir. Standart ezberlemeye kadar gider...
Olaya odaklanmis programcilarlarin sirket patronlariyla ve ürüne odaklanmis programcilarla arasi pek iyi degildir. Patronlarla iyi degildir, çünkü patronlar için amaç ürünün kendisidir. Programcinin olayin ayrintilarini anlama güdüsü yüzünden ürünü gelistirmekte geri kaldigini farkederler. Ürüne odaklanmis programcilarla arasi iyi degildir, çünkü kendilerinin bu kadar ayrintisiyla bildigi konularin hiç bir ayrintiyi bilmeden ve neredeyse daha ise yarar bir biçimde çarçabuk olusturulmasi onlari içten içten sinirlendirmektedir. Neyse ki derinlemesine bilgi gerektiren konular söz konusu oldugunda bu tür programcilar devreye girerek küçük ama önemli kodlarla kendilerini kurtarirlar. Yaptiklarini çok az kisi yapabildiginden saygi da görürler. Olaya odaklanmis programcilar asagi seviyeli dillerle islerini görürler. Bu tür programcilarin is görür noktaya gelmeleri uzun zaman alir. Ürüne odaklanmis programcilarla olaya odaklanmis programcilarin ögrenme ve konuyu ele alma sistematigi ve süreci tamamen farklidir.
Ürüne odaklanmis programci ve olaya odaklanmis programci olmak çogu kez kisinin bilinçli bir seçimiyle olmaz. Bu olusumun kisilikle, geçmis deneyimlerle, tutumlarla ilgisi vardir. Ürüne odaklanmis bir programci zorla olaya odaklandirilamayacagi gibi tersi de söz konusu degildir. Zorlamalar iyi sonuç da vermemektedir.
Ürüne odaklanmis ve olaya odaklamis programcilar iki uç noktayi temsil ediyorlar. Kisiler bu dogru üzerinde çesitli yerlerde olabilirler. Ben iki gruptan da çok kisi tanidim. Örnegin, ürüne odaklanmis bir arkadasima ne zaman "Ya bunu gerçekten merak etmiyor musun?" diye sorsam bana hep söyle yanit verirdi. "Yoo neden merak edeyim ki?" Ya da örnegin, tipik bir olaya odaklanmis programci olan ögrencimiz is yerinde yüksek seviyeli bir araçla çalismak zorunda birakildiginda patronuna "kusura bakmayin bünyem kaldirmiyor" demisti.
Eger siz bu yazidan sonra kendinizi ürüne odaklanmis tarafa daha yakin görüyorsaniz o zaman C/C++ size göre degil! Yok eger kendinizi olaya odaklanmis tarafa yakin buluyorsaniz o zaman C/C++ iste tam size göre. Ama unutmayin ürün ortaya koymak için uzun bir yoldan geçeceksiniz...
Programcilarin çok büyük çogunlugu programcilik yasamlari boyunca en az bir kez C/ C++'i ögrenmeye çalismislardir. Fakat hala iyi C/C++ programcilarinin sayisi çok azdir.
Az önce Öğrenme Psikolojisi baslikli yaziyi okuyunca; C ve Sistem Programcıları Derneğinin kurucusu ve şu an başkanlık görevini yürüten Kaan Aslan'ın 2002 yılında anet haber grubuna verdiği yanıtlardan birini burada paylasmak gerektiğini düşündüm.