Kurumsal Java Yazılımı

10 views
Skip to first unread message

Kurumsal Java Yazılımı - Özcan Acar

unread,
May 5, 2012, 10:53:52 AM5/5/12
to kurumsaljava+...@googlegroups.com

Kurumsal Java Yazılımı

Link to Kurumsal Java Yazılımı - Özcan Acar

Ekibin Dikkati ve Saygısı Nasıl Kazanılır?

Posted: 05 May 2012 01:11 AM PDT

Her programcı yeni bir ekibe dahil olduğunda kendisini ispatlamak zorundadır. Bu gerçekleşene kadar ekip içindeki diğer programcılar yeni programcıyı dikkate almazlar. Birilerinin ekibe dahil olduğunu beyinlerinin en arkasında çalışan bir thread ile belki farkederler, ama bunu dikkate almadan günlük işlerine devam ederler. Yeni programcıya kendisini ispatlayana kadar pek ekibin bir parçası olarak bakmazlar. O yokmuş gibi davranabilirler, çünkü kendi aralarında sosyal bir ağ kurmuşlardır ve tüm iletişim trafiği mevcut bu ağlar üzerinden gerçekleşir. Programcı bu sosyal ağa henüz dahil olmadığı için oyun dışı kalabilir. Ekibe ve ekibin sosyal ağına dahil olmak ve ciddiye alınmak için programcının derhal kendisini ispatlaması gerekmektedir.

Yeni bir ekibe katılan bir progrmacının kendini ispatlama stratejisi nasıl olmalıdır? Eğer programcının ünü yeni ekibe kendisinden önce ulaşmadı ise, o zaman programcının işi hiç te kolay değildir. Eğer ünü yoksa, durum daha da vahimdir. Kendisini o projede ispatlayana kadar canı çıkabilir, belki de bunu hiç başaramaz ve bu onu mutsuz olmaya itebilir.

Bu stratejinin nasıl olmaması gerektiği ile başlayalım isterseniz. Eğer programcı bir kenara çekilip, “bana verilen işleri yapmaya çalışayım” derse, o zaman baştan oyunu kaybetti demektir. Farklılık yaratmak ve profil oluşturmak istiyorsa, bir görevin (task) kendisine verilmesini beklemeyip, kendisi görev seçmelidir. Genelde kimsenin cesaret edip, üstlenemediği görevler ortada kalır. Bu tip görevler, diğer ekip arkadaşları arasından sıyrılıp, kendisini kısa zamanda ispatlamak için biçilmiş kaftan gibidir. Doğal olarak zor görevler yetkinlik gerektirir. Ama programcıyı pişiren bu tür görevlerdir. Örneğin her projede mutlaka ve mutlaka performans problemleri yaşanır. Uygulama sunucusu göçer, JVM takılır kalır, threadler bloke olur vs. Yaşanan bu tür problemler her programcının ilgi alanına girmediği için bu tür işlere bulaşmadan kendi işlerine devam ederler. Yeni programcı bunu fırsat bilip balıklama bu tür görevlerin üstüne atlamalıdır. Herkesin başını ağrıtan bu tür problemlerden birisini çözdüğü andan itibaren kendisini ispatlamış sayılır ve yeni ekibi kendisini sevgi, hürmet ve selamla kuçaklar. Buradan da anlaşıldığı gibi en büyük erdemlerden birisi cesarettir; cesaret edip görev üstlenmektir.

Hadi diyelim yeni programcı üstlenebileceği enteresan bir görev bulamadı ya da kendisine bir görev tayin edildi. Bu durumda işini en iyi şekilde tamamlayıp, elde ettiği neticeleri tüm ekibe duyurmanın yollarını bulmalıdır. Her ekibin kullandığı e-posta listeleri vardır. Bir e-posta iletisi ile tüm ekibe, hatta proje ve takım yöneticilerine erişmek mümkündür. Yeni programcı kod yazarken nasıl farklılık yaratarak, takım arkadaşlarının dikkatini çekebileceği hakkında düşünmelidir. Örneğin kendisine verilen görevi test güdümlü kodlayıp, elde ettiği yüksek seviyedeki testlerin kod kapsama alanı metriğini e-posta listesi üzerinden duyurabilir. Otomatik çalışan unit testleri, %90 üzerindeki code coverage (kod kapsama alanı), SOLID uyumlu ve kolay okunan sınıflar ekip arkadaşlarını etkileyecektir. Birçok projede programcılar unit testleri yazmadığı için, yeni programcının oluşturduğu ve otomatik çalışan testler dikkat çekmeyi kolaylaştıracaktır. Yerlerde sürünen kod kapsama alanı, yeni programcının oluşturduğu unit testleri ile birden bire tavana fırladığında, bakın bakalım kim anında yıldız programcı oluveriyor. Yeni programcının yazılımın nasıl olması gerektiği yönündeki dolaylı boy göstermeleri, onun kısa sürede ekibin sosyal ağına dahil olmasını kolaylaştıracaktır

Eger proje bünyesinde Jenkins, Sonar gibi araçlar kullanılmıyorsa, yeni programcının söz alıp, bu araçların kullanımının proje için ne kadar faydalı olduğunu dile getirmesinde fayda vardır. Örneğin yeni programcı Sonar kurulduktan sonra tüm kodun statik analizini yapıp, sonuçları daha önce bahsettiğim e-posta listesi üzerinden tüm ekip çalışanlarına duyurabilir. Kendisi bu gibi araçları kurmaya ve işletmeye talip olmalıdır. Bu onu bir vuruşta belli bir alanda söz sahibi yapar. Yeni araçları kullanmak isteyecek olan ekip çalışanları yeni programcıya danışmak isteyecekler ve bu şekilde yeni programcının ekibe entegre edilme sürecini kolaylaştıracaklardır. Yeni programcının, yazılım sürecini olumlu etkileyecek yeni fikirlerle gelmesi, kendisini ispatlama sürecini kısaltacaktır.

Yeni programcı ekip toplantılarında mutlaka kendi fikrini beyan etmelidir. Yanlışta olsa bir fikir beyan etmek, hiç fikir beyan etmemekten daha iyidir (tamamen saçmalamamak şartıyla). Eğer susup, konuşulanları dinlerse, ekip arkadaşları onu dikkate almamayı sürdüreceklerdir. Bir fikir sahibi olmayan ya da bunu beyan etmeyi bilmeyen bir insanın toplum içinde yer bulması zordur. Ekip içindeki programcılar karşılaştıkları problemleri e-posta aracılığı ile çalışma arkadaşlarına duyururlar. Bu gibi e-postalara herkesin okuyacağı şekilde cevap vermek, çözüm önerilerinde bulunmak, zaman içinde yeni programcının profilini biler.

Kendini ispatlamanın bir diğer yolu takım arkadaşları ile kod inceleme (code review) seansları düzenlemektir. Çoğu ekip bu tür bir alışkanlığa sahip değildir. Beraber kod inceleme seansları karşı tarafı eleştirme olarak algılanır ve bu yüzden bu aktiviteden kaçınılır. Yeni programcı bunu fırsat bilip, kendi kodunun ekip içinden başka bir programcı tarafından incelenmesini sağlamalıdır. Daha önce de bahsettiğim gibi kodun özenli yazılmış, her sınıfın sadece bir sorumluluğa sahip (SRP prensibi), diğer SOLID prensipleri ile uyumlu, otomatik çalışan unit testlerine sahip, değişken ve metot isimlerinin kodun ifade gücünü artıracak şekilde seçilmiş olması, kodu inceleyen programcıda hayranlık uyandıracaktır. Bunu kendisi için tutmaz ve mutlaka diğer ekip arkadaşları ile paylaşır. Bundan emin olabilirsiniz. Yeni programcı bu şekilde kendisi için bir taban oluşturduktan sonra, diğer programcılar tarafından kod inceleme seanslarına davet edilip, fikri alınan bir programcı olacaktır.

Her ekip içinde mutlaka en az bir tane, rahatsızlık veren, sivri, kendisinin yıldız programcı (star developer) olduğunu düşünen bir programcı vardır. Bu tip programcılarla çalışmak çok zordur. Yeni programcı da mutlaka bu yıldız programcının hışmına uğrayacaktır. Bu gibi durumlarda yeni programcı alttan almaya çalışmalı, ekip içinde soğuk bir atmosferin oluşmasını sağlayacak karşı karşıya gelmenin önüne geçmelidir. Eğer yeni programcı yıldız programcı ile karşı karşıya gelirse, diğer ekip çalışanları yıldızın yanında olmayı tercih edeceklerdir. Yeni programcı ne kadar haklı olursa olsun, ekip içinde bir nevi sürü içgüdüsü olduğundan, yıldız programcının tarafinda olacaklardir. Bu gibi durumlarda yıldız programcı ile aynı görev üzerinde beraber çalışma fırsatı kollanmalıdır. Yıldız ile iletişim içinde olmak onu yumuşatacaktır. Yeni programcı aynı zamanda yetkinliğini yıldıza gösterme firsatı bulursa, aradaki buzlar eriyip, diyalog normalleşecektir. Yeni programcı aynı zamanda firsatını yakaladığında yıldıza haddini bildirme cesareti göstermelidir. Örneğin sorduğu bir soruya alaylı bir cevap alıyorsa, takım liderinin de bulunduğu bir ortamda yıldıza neden böyle bir cevap verdiği sorulabilir. Yıldız kem, küm edip, afallayacaktır. Bu şekilde yeni programcı yıldızı hafiften ısırabilir ve yıldıza fazla üzerime gelme sinyali verebilir. Yeni programcı başını dik tutma cesareti gösterdiği andan itibaren, yıldızın davranış biçimi değişecektir. Kimse karşısında dik duramayan insana saygı göstermez. Yıldıza karşı dik durma yeni programcıya diger ekip arkadaşlarının saygısını getirir.

Ekibin dikkatini ve saygısını kazanmanın diğer bir yolu ekibe bilgi transferi (know-how tranfer) yapmaktır. Örneğin yeni programcı ekipden diğer bir programcıya “istersen üstlendiğin yeni görevi test güdümlü (Test Driven) ve eşli (pair programming) kodlayalım, bunun nasıl yapıldığını sana gösterebilirim” teklifini götürebilir. Böyle bir teklife, konuyla ilgili bilgisi olmayan programcı hayır diyemez. Teklifi alan programcı yeni birşeyler öğrenme hevesi ile yeni programcıya kendini ispatlama firsatını tanıyacaktır. Yeni edindiği bilgiler programcıda hayranlık uyandırır ve bunu mutlaka diğer ekip arkadaşları ile paylaşır.

Her programcının Xing ya da LinkedIn platformlarında mutlaka bir profili olmalıdır. Programcı bu profillerinde hakim olduğu konuları, daha önce çalıştığı projeleri, sahip olduğu ünvan ve sertifikaları ve kendi projelerini (örneğin açık kaynaklı bir yazılım) sergilemelidir. Bu tür profiller artık programcılar için kartvizit ya da vitrin görevini üstlenmektedir. Mülakata giden her programcı hakkında mutlaka internette araştırma yapılır. Bu tür profillerin keşfedilmesi, mülakatın gidişatını olumlu etkileyebilir. Bu tür profillerin önemli başka bir fonksiyonu daha mevcuttur. Yeni programcı ekip içinde yazılmamış, boş bir defter sayfasıdır. Ekip üyelerinin yeni programcı hakkında geniş çaplı fikirleri yoktur. Bunu değiştirmenin en kolay yolu, ekip üyelerinin internet profillerini araştırmak ve onlara bahsettiğim platformlar üzerinden arkadaşlık teklifi göndermektir. Arkadaşlık teklifi alan diğer programcılar, yeni programcının profilini inceleme ve onun hakkında fikir edinme fırsatı bulacaklardır. Hele hele yeni programcı ender sertifikalardan birine sahipse, bu yemek aralarındaki sohbetlere malzeme olacak ve bu şekilde yeni programcının ekibe entegrasyonunu kolaylaşacaktır.

Ekip elemanları ile smalltalk, onlara çalışma esnasında tatlı birşeyler ikram etmek ve ekip liderine düzenli olarak rapor vermek sayabileceğim diğer yöntemler arasındadır. Olumlu dikkat çekmek her zaman önemlidir. Yetkin ve tecrübeli bir programcı farkında olmadan yukarda saydığım konularda çalışma yapacaktır. Verimli olmanın en önemli şartı, en kısa sürede ekibe entegre olmaktır. Bunu başarmak programcının elindedir.

EOF (End Of Fun)
Özcan Acar

Share/Bookmark
You are subscribed to email updates from Kurumsal Java Yazılımı - Özcan Acar
To stop receiving these emails, you may unsubscribe now.
Email delivery powered by Google
Google Inc., 20 West Kinzie, Chicago IL USA 60610

Kurumsal Java Yazılımı - Özcan Acar

unread,
May 8, 2012, 10:40:39 AM5/8/12
to kurumsaljava+...@googlegroups.com

Programcılık Sanat mı, Zanaat mı?

Posted: 07 May 2012 11:12 PM PDT

Çoğu zaman aklımda olan bir soru var: „Programcılık bir sanat mıdır yoksa bir zanaat mıdır? Biz programcılar sanatkar mıyız yoksa zanaatkar mıyız?

Vikipedi’ye baktığımızda sanat ve zanaat için aşağıdaki tanımlamayı yapmakta:

Sanat en genel anlamıyla, yaratıcılığın ve hayalgücünün ifadesi olarak anlaşılır. Tarih boyunca neyin sanat olarak adlandırılacağına dair fikirler sürekli değişmiş, bu geniş anlama zaman içinde değişik kısıtlamalar getirilip yeni tanımlar yaratılmıştır. Bugün sanat terimi birçok kişi tarafından çok basit ve net gözüken bir kavram gibi kullanılabildiği gibi akademik çevrelerde sanatın ne şekilde tanımlanabileceği, hatta tanımlanabilir olup olmadığı bile hararetli bir tartışma konusudur. Açık olan nokta ise sanatın insanlığın evrensel bir değeri olduğu, kısıtlı veya değişik şekillerde bile olsa her kültürde görüldüğüdür. Sanat sözcüğü genelde görsel sanatlar anlamında kullanılır.

Zanaat , sermayeden çok nitelikli emeğe dayalı; öğrenimin yanısıra el becerisi ve ustalık gerektiren meslek. Zanaatkâr, zanaatle uğraşan kişi anlamına gelir. Marangozluk, ayakkabıcılık, kuyumculuk (takı üreten), kumaş boyama, çömlekçilik, berberlik, bakırcılık gibi mesleklerin hepsi birer zanaattir. Bir kimsenin zanaatkâr olması için el becerisi gerektiren bir malı veya hizmeti sadece satması değil, bilfiil üretmesi gerekir.

Yaptığımız işte he ikisinden de birşeyler var değil mi? Okunması kolay estetik kod yazarak bir sanatkar, müşteri gereksinimlerini tatmin eden uygulamalar geliştirerek bir zanaatkar olabiliyoruz. Ama gerçek hayatta durum ne yazık ki çok farklı. Sanatkar değiliz, çünkü müşterimiz güzel kod yazıyoruz diye bize iş vermiyor. Zanaatkar değiliz, çünkü yazılımcı olarak usta-çırak geleneğinden yetişerek işimizin başına gelmiyoruz. Neden böyle düşündüğümü bu yazımda sizinle paylaşmaya çalışacağım.

Birgün yolunuz Gaziantep’e düşerse Bakırcılar Çarşısı’na mutlaka uğrayın. Orada çalışan bakır ustaları kelimenin tam anlamıyla hem sanatkardırlar hem de zanaatkar. Sanatkardırlar, çünkü estetik değerler oluştururlar. Zanaatkardırlar, çünkü usta-çırak kültürüyle yetişip, el emekleri ile bu değerleri oluştururlar.

Bir bakır ustasının elinde vücut bulan ve yirmi ile yüz Türk Lirası arasında bir fiyata sahip bir bakır kupanın sadece su içmek için edinildiğini görmedim. Ufak bir sanat eseri olan bu bakır kupayı evimizdeki vitrinleri süslemek için ediniriz. Bizim için önemli olan kupanın fonksiyonel işlevi (kupadan su içmek) değildir. Daha ziyade kupanın estetik yönü ilgimizi çeker. Bu yüzden bakır kupa bir sanat eseridir, bakır ustası da bir sanatkar.

Peki camdan üretilen su bardakları sanat eserleri midir? Bu su bardaklarını üretenler sanatkar mıdır? Şüphesiz tanesi yüzlerce Türk Lirası’nı bulan su bardakları bulmak zor değildir. Ama pahalı olmaları sanat eserleri oldukları anlamına gelmez. Camdan yapılmış bir su bardağını su içmek için alırız. Bizim için su bardağının tatmin etmesi gereken fonksiyonel bir işlevi vardır. Su bardağının bu fonksiyonel işlevi yerine getirirken bir sanat eseri olup, olmadığı bizi ilgilendirmez. Herhangi bir marketten tanesi bir Türk Lirası olan onlarca su bardağı alıp, mutfaktaki dolaba koyarız. Su içmek istediğimizde bir bardak alıp, kullanırız. Bizim için camdan üretilmiş bir su bardağının fonksiyonel işlevi ön planda oldugu için, bu su bardağı bir sanat eseri değildir. Aynı şekilde bu bardakları üretenler de bizim gözümüde sanatkar değildirler.

Buradan çıkardığım sonuç şudur: Sanat eserlerinde fonksiyonel işlev önemli değildir. Dikkat bulan, icra edilen sanattır. İcra edilen bu sanat, sanat eserleri meydana getirir. Fonksiyonel işlevin önemli olduğu yerlerde ise sanat eserleri tercih edilmez. Sanat eseri ve sanatkar olmayı belirleyen faktör budur.

Programcılık Sanat, Programcı da sanatkar değildir.

Bazı programcılar program yazma aktivitesini sanat olarak, bu işi yaptıklarından dolayı kendilerini de sanatkar olarak görmektedirler. Bu ne yazık ki doğru değildir. Program yazmak fonksiyonel bir işlevi meydana getirmek için yapılan bir aktivitedir. Camdan su bardağı örneğinde olduğu gibi, müşterimiz bizim yazdığımız programın estetik kısmıyla ilgilenmez. Onun için oluşturulan uygulamanın tatmin etmesi gereken sadece fonksiyonel bir işlevi vardır. Uygulamanın ne kadar güzel kodlandığı ile ilgilenmez. Hiç, bir müşterinin kodu açıp, okumaya çalışıp, ne kadar güzel yazılmış, ya da yazılmamış diye yorum yaptığını görmedim. Durum böyle iken, müşteriye sattığımız uygulama bir sanat eseri değildir. Bir sanat eseri oluşturup, satmadığımıza göre, programcı olarak sanatkar olmamızda mümkün değildir.

Bir programcı olarak müşterinin gereksinimlerini tatmin eden, sadece fonksiyonel işlevi olan ürünler ortaya koyarız. Müşteri oluşturduğumuz uygulamaya baktığında bir sanat eseri, bize baktığında bir sanatkar görmez. Ama aynı şahıs bir bakır ustasına baktığında bir sanat eseri ve sanatkar görür. Demek oluyor ki sanat eserine ve sanatkara bu sıfatı değer görenler başkalarıdır. Kendi kendimize sanat eseri ortaya koyduğumuzu ve sanatkar olduğumuzu iddia etmemiz birşeyi değiştirmez. Bu yüzden programcının kendisini sanatkar olarak görmesi doğru değildir, çünkü müşterisinin gözünde sanatkar değildir.

Programcılar Zanaatkar Değildir

Zanaat demek ustalık demektir; gelenek demektir; ustadan öğrenmek demektir. Siz hiç bir berber çırağının ilk işe başladığı gün saç kestiğini gördünüz mü? Çırak önce ustasına hizmet edip, ondan birşeyler öğrenmeye ve yavaş yavaş olgunlaşmaya başlayacaktır. Usta ise çırağını kendi tecrübeleri doğrultusunda ve kendi ustasından öğrendigi şekilde yönlendirecektir. Belli bir zaman diliminden sonra çırak yavaş yavaş bir zanaatkara dönüşecektir. Bunun gerçekleşmesi için ustasının kendisine gösterdigi yolu takip etmesi gerekmektedir. Bu yolu gitmek yıllar sürebilir. Ama bu yolun sonunda çırak için kendi ustası gibi bir usta, bir zanaatkar olma ödülü vardır. Ustalaşmak ve bir zanaatkar olmak hiç te kolay olmayan bir süreçtir. Ustası olmayan bir çırağın, bu yolu tek başına giderek ustalaşması çok zor olacaktır ya da mümkün olmayacaktır.

Yukarda yer alan tanımlamaya gore programcılar zanaatkar değildir, çünkü programcılar usta-çırak geleneginden gelerek yetişmezler. Programcılar için işe başlama bariyeri yok denecek kadar azdır. Bir bilgisayar ya da başka bir mühendislik ögrencisi diplomasını eline aldığı andan itibaren programcı olarak çalışmaya başlayabilir. Hiç kimse senin ustan kim ya da kaç sene çırak programcı olarak çalıştın diye soru sormaz. Programcının daha önce hangi projelerde çalıştığı sorulur. Buradaki amaç daha çok programcının ne kadar tecrübeli olduğunu anlamaya çalışmaktır. Ama yıl bazında edinilen tecrübe, şahsın ustalık oranını göstermez. On sene tecrübesi olduğunu söyleyen bir programcı, son dokuz senesini, birinci sene öğrendiği şeyleri tekrarlamakla geçirdiyse, son dokuz sene tecrübe topladığı söylenemez.

Tecrübesiz ve bir usta tarafından yetiştirilmemiş bir programacının hemen program yazmaya başlamasını, diplomasını almış bir doktorun hemen kalp ameliyatı yapmaya başlamasıyla kıyasladığımızda, durumun programcılar açısından aslında ne kadar absürd olduğunu görebiliriz. Kalp ameliyatı yapmaya aday bir doktor yıllarını usta doktorlara asistanlık yapmakla geçirir. Bu ona kalp ameliyatlarının nasıl yapıldığını ustalarından öğrenme fırsatı verir. Asistanlık dönemi bittikten sonra, asistan doktor seçtiği dalda uzmanlaşma dönemine girer. Hem asistanlık hem de uzmanlaşma döneminde doktor adayı ustalarından gerekli herşeyi öğrenerek, onlarca seneyi bulacak bir zaman diliminden sonra kalp ameliyetlarını yapabilecek kıvama gelir. Yukarda da belirttiğim gibi programcılar için bunların hiçbirisi geçerli değildir. Programcı diplomasını alır, masasının başına oturur ve hemen müşteri için program yazmaya başlar. Neden birçok projenin yapılan hatalı kalp ameliyatlarından dolayı öldüğü ortadadır, çünkü ameliyatı yapan programcılar yetkin değildir.

Usta-çırak geleneğinin olmadığı yerde bir zanaatin icrası ya da yapılan işin zanaat olarak tanımlanması çok zordur. Programcılar ustasız yetiştikleri için, zamanlarının büyük bir kısmını deneme yanılmayla boşuna sarf ederler. Yıllarca aynı şeyleri yapıp, yerlerinde saysalar bile, bunu tecrübe yapmış olarak algılarlar. Kendilerine yön gösteren bir ustaları olmadığı için kendilerini geliştirmekte ve ustalaşmakta çok zorlanırlar. Bu sebepten dolayı birçok programcı ustalık mertebesine erişemez. Oysaki bir ustanın denetiminde olsalar ustalaşmaları çok daha kolay olacaktır.

Programcılık Zanaattir

Bir önceki bölümün başlığına baktığınızda bu bölümün başlığı tezat gibi algılanabilir. Bir önceki bölümde neden zanaatkar olamadığımızı anlatmaya çalıştım. Bu bölümde ise aslında neden zanaatkar olduğumuzu anlatmak istiyorum.

Zanaati, sermayeden çok nitelikli emeğe dayalı; öğrenimin yanısıra el becerisi ve ustalık gerektiren meslek şeklinde tanımlamıştık. Bunun yanısıra bir zanaat usta-çırak geleneğini kapsamaktadır. Bu tanımlama bir programcıya tamamen uygun yapıdadır. Eksik olan programcıların ustasız yetişmeleridir. Ama bu onların zanaatkar olmadıkları anlamına gelmez. Bu eksiği kapatmak için ustalığa giden yolun tarifini yapmamız gerekmektedir. Bilge Programcı programı (http://www.bilgeprogramci.com – şu an üzerinde çalıştığım, yapım aşamasında olan projemdir) böyle bir yolun tarifesini ihtiva eder. Daha once bu yoldan geçmiş, şimdilerde usta programcılardan kendimize örnek alarak, bizde yaptığımız işte ustalaşabiliriz. Ustalaştıkca bir zanaatkar olmaya başlarız ve yaptığımız iş bir zanaat haline dönüşür. Usta programcılar zanaatkardırlar. Genç programcılara da onlara çırak olmak düşer. Eti senin, kemiği benim misali :)

EOF (End Of Fun)
Özcan Acar

Share/Bookmark

Kurumsal Java Yazılımı - Özcan Acar

unread,
May 9, 2012, 10:57:00 AM5/9/12
to kurumsaljava+...@googlegroups.com

Programcıyım, Yönetici Değil!

Posted: 08 May 2012 09:15 AM PDT

Türkiye’de genç programcı adaylarının kariyer planlaması şu şekilde:
Üniversite »» Birkaç yıl programcılık »» Proje yöneticiliği »» Bölüm yöneticiliği »» Bölüm müdürlüğü

Benim kariyer planlamam şöyle:
Üniversite »» Ömür boyu programcılık

Ben programcıyım, yönetici değilim!
Üniversitede eğitimini almadığım birşey nasıl olabilirim? Neden programcıların çoğu bir yerlere yönetici ya da müdür olmak istiyor? Bunun açıklaması kolay: daha fazla maaş alacaklarını düşündükleri ya da pozisyon itibariyle daha fazla dikkate alınmak istedikleri için.

Herşeyin statü sembolleri ile ölçüldüğü bir toplumda programcıların daha fazla para kazanmak için yönetici olma sevdalarını ayıplamıyorum. Bu sadece programcılar için geçerli bir durum değil. Benim ayıpladığım programcının bu uğurda ruhunu satmasıdır. Eğer bir insan programcı oldu ise, bu işe gönül verdiği için olmuştur. Mecburiyetten olan programcı zaten programcı sayılmaz. Eğer yaptığı işi sevmiyorsa, bırakıp başka bir iş yapması mübahtır. Aldığı para kendisini tatmin etmiyorsa, benim kişisel olarak yapabileceğim birşey yok (ama daha fazla nasıl kazanabileceğine daha sonra değineceğim). Ama bu işin birde manevi tarafı yok mu? Haz alarak yaptığı bir iş insanı mutlu etmez mi? Neden daha fazla maaş, insanı mutlu eden bir işe tercih edilir ki? Bunu anlamam çok zor.

Yöneticilik ya da müdürlük öyle her babayiğidin harcı değildir. Yönetici olmak isteyen programcılar bunu bilmiyor galiba. Bu işin bir defa eğitimini almak gerekir. Yönetim kademesindeki insanların liderlik, çalışanlara örnek olma, onları motive etme, güçlü iletişim gibi vasıflara ihtiyacı vardır. Çok ağır şartlarda çalışıp, neticesi geniş kapsamlı kararlar vermek zorunda kalırlar. Üstlerinde büyük sorumluluk taşırlar. Daha fazla maaşı hak ederler, ama bedelini de öderler.

Saydığım bu sebeplerden dolayı yöneticiliğe talip değilim. Ben bu işten anlamam. Ben bildiğim işi yapmayı yeğlerim. Programcıyken, yöneticiliğe soyunanlara da kazaları mübarek olsun derim.

Programcılar Yönetici Olmaya Zorlanıyor

Ömür boyu programcı olarak çalışmak isteyenler de yok değil. Nedendir bilmiyorum ama Türkiye’de „insan kırk yaşından sonra programcı olarak çalışmaz“ kanısı oluşmuş. Yaşlı programcılara kötü gözle bakıldığı bir toplum içinde yaşıyoruz. Hala bir baltaya sap olamamış ve programcılık yapıyor denilebiliyor. Aman allahım, inanılacak gibi değil!

Bu şartlar altında programcıların üzerinde yönetici olma doğrultusunda baskı oluşmuyor değil. Lakin bu baskıya karşı koyup, programcının programcı olarak yoluna devam etmesi şarttır. Programcının gönlünde yatan aslan bellidir. Programcılar kendi kariyer planlamalarını kendileri yapmalı, başkalarının buna müdahele etmesine karşı koymalıdırlar. Müdahele olduğunda buna baş kaldırıp, dik durmalı ve statükolarını korumalıdırlar. Yoksa sonuç bellidir: yaptığı işten memnun olmayan bir sürü eski programcı yönetici.

Bunun yanısıra birde firmalardaki kariyer yapma imkanlarına göz attığımızda, çoğu programcıya yönetici olmaktan başka seçenek kalmadığını görmekteyiz. Avrupa ve Amerika’da durum çok farklıdır. Büyük yazılım firmalarına baktığımızda, ömür boyu mühendis kalınabildiği, bu konuda uzmanlaşma imkanı veren kariyer patikalarının olduğunu görmekteyiz. Bunun bir örneğini IBM’in çalışanlarına sunduğu Distinguished Engineer olma imkanı teşkil etmektedir.

Programcılar Mutlu Değil

Programcılar ne yazık ki yaptıkları işten memnun ve mutlu değiller. Devamlı günü kurtarmaya çalışmak, verilen emeğe ilgi ve saygının olmaması, fazla mesai yapmaya zorlamalar programcının içindeki şevki kırabilir. Ama bir programcı yöneticiliğe upgrade yaptığında durum farklı mı olacaktır? Pek zannetmiyorum. Öyleyse gönül verdiğimiz işi yapacak şekilde ortam hazırlamaya bakalım.

Programcılar İşsiz Kalmaz

Programcılar şarap gibidir. Kendilerini geliştirmeleri, ustalaşmaları şartıyla yaşlandıkça kıymetlenirler. Yetkin bir programcının piyasada işsiz kalması imkansızdır. Herhangi bir işi yapan bir yöneticinin işsiz kalma ya da işten çıkarılma rizikosu yetkin bir programcıdan çok daha yüksektir. Yetkin bir programcıyı kolay kolay kimse işten atamaz. Geliştirdiği uygulama hakkında o kadar çok bilgiye sahiptir ki yeri kolay kolay doldurulamaz. Yetkin programcılar piyasada freelancer olarak çalışıp, maaşlarının birkaç katı fazlasını kazanabilirler.

Bu kadar uzman progragramcının arandığı bir piyasada kim ne yapsın yöneticiliği. Programcılık güzel ve geleceği olan bir meslektir. Kıymetini bilelim.

EOF (End Of Fun)
Özcan Acar

Share/Bookmark

Kurumsal Java Yazılımı - Özcan Acar

unread,
May 10, 2012, 10:25:59 AM5/10/12
to kurumsaljava+...@googlegroups.com

Meğer Neymişiz!

Posted: 09 May 2012 11:34 PM PDT

Bu sabah yanımda kocaman, Coca Cola pet sişeleri taşıyan TIR vari bir araç durup, yol soruyor. Sürücünün neden navigasyon aleti yok diye düşünürken, bu yazıyı yazma fikri oluşuyor kafamda.

Şimdi birkaç saniyeliğine bir dünya hayal edelim; İçinde IPhone ve Android akıllı telefonların olduğu, ama app denen birşeyin bilinmediği, bilgisayarların olduğu, ama işletim sistemi diye birşeyin icat edilmediği, internetin olduğu, ama iletişim kurmak için e-posta ve web sunucularının olmadığı bir dünya… Bu dünyada eksik olan nedir? Evet, yazılım yapılmıyor bu dünyada. Yazılım sistemlerini kim yapıyor? Evet, biz programcılar. Yani? Bu dünyayı daha yaşanır hale getiren, oluşturdukları yazılım sistemleri ile devrim yaratan, insanlığa yön veren, insanlık tarihinde dünyanın ilk kez kocaman bir köy olmasını sağlayan ve insanlığa hizmet eden biz programcılarız. Ameliyat eden robotlardan tutun, uzaya gönderilen uydulardan, havada uçan uçakların kontrol sistemlerine hadar her yerde, içinde program çalışan birşeyler görmek mümkündür. Yazılım sistemleri modern insanın sürdürdüğü yaşam tarzının vazgeçilmez bir parçası haline gelmiştir.

Hacker’ları bunun dışında tutmak şartıyla oluşturduğumuz birçok yazılım sistemi doğrudan insanlığa hizmet etmektedir. Bunun en güzel örneğini açık kaynaklı yazılım sistemleri oluşturmaktadır. Onların başında da Linux işletim sistemi gelmektedir. Toplum yazılım sistemlerinin insanlık için önemini anlamış olmalı ki, yazılımcılara nişanlar verilmektedir. Bunun bir örneğini geçtigimiz ay Linux işletim sisteminin mucidi Linus Torwald’e verilen Millennium Technology Prize 2012 nişanı teskil etmektedir.

Ödülü veren akademi tarafından yapılan açıklamada Linus’un açık kaynaklı bir yazılım sistemi geliştirmesinin dağıtık yazılım sistemleri oluşturmaya ve internetin özgür olmasına katkıda bulunduğu belirtilmektedir. Linux işletim sistemi milyonlarca, belki de milyarlarca insan tarafından kullanılma potansiyeline sahiptir. Linus yaptığı açıklamada, yazılım sistemlerinin modern dünyada çok önemli olduklarını ve insanlığa hizmet edebillmeleri için mutlaka açık kaynaklı olmaları gerektiğinin altını çizmiştir.

Durum böyle iken biz programcıların üstlendiği toplumsal sorumluluk artmaktadır. Hatasız yazılım sistemleri oluşturmamız gerekmektedir. Birçok insan günlük hayatında kullandıkları yazılım sistemlerinin hatasız çalışmasına güvenmek zorundadır. Yazılım hatalarının meydana gelmesi onların hata yapmasına sebep verebilmektedir. Baştan savma yazılım sistemleri oluşturarak onların güvenini yitirmeyelim.

Bu arada TIR sürücüsüne “navigasyon aygıtınız yok mu” sorusunu sormadan edemedim. “Var, ama çalışmıyor” dedi. Bir yazılım hatasıymış sanırım ;-) Yazılımda daha iyi olmamız lazım. İnsanlar bize güveniyor.

EOF (End Of Fun)
Özcan Acar

Share/Bookmark
Reply all
Reply to author
Forward
0 new messages