Java Günlüğüm
Yazılım, Java, BT, azıcık felsefe, biraz mizah...
  • Udemy Eğitimleri
  • Temiz Kod
  • Tasarım Kalıpları
  • Hakkımda
  • Arşiv
RSS
13 Mart 2012

Agile Turkey’in Yazılım Üretkenliği Raporu 2012 Üzerine

Akin BT, Yazılım Mühendisliği agile, çevik, CMMI

Agile Turkey‘in “Yazılım Üretkenliği Raporu 2012” (Software Productivity Report 2012) yayınlandı. Ben de duyar duymaz hemen indirip göz attım. Keske böyle raporlar çok farklı amaçlarla daha çok yapılsa. Yazılım kalitesi, yazılı süreçleri, ya da ne bileyim BT sektöründe çalışanların kazançları, beklentileri ve memnuniyet durumları vs. açılarından yapılsa da durumumuzu anlasak. Bu anlamda çok kapalı bir toplumuz, kol kırılır ama kimseye çaktırılmaz moddayız genelde. Dolayısıyla bu raporu hazırlayıp paylaşanlara bir teşekkür borçluyuz. Öte yandan, raporu ilk açtığımda çok detaylı bakamadım ama içimde garip bir his kaldı. Garip hisin sebebi raporda verilen oranların aşırı iyimseliğiydi. Bugün bir vesile ile raporu bir daha açtım ve biraz daha dikkatli okuyunca ister istemez aklıma bazı sorular geldi.

Raporun ikinci sayfasında, Türkiye’de yazılım geliştiren şirketler ya da departmanların, yazılım geliştirirken kullandıkları metodolojiler ve oranları verilmiş. İlk gözüme çarpan şey, bu çalışmaya katılanların %18’inin CMMI’ı zaten kullandıklarının ifade etmiş olmaları. Bu ülkede CMMI sertifikası almış kaç tane şirket ya da departman var da bunlar, bu rapora katılanların %18’ini oluşturuyor diye düşünmeden edemedim tabi. Yani 1000 katılımcı olsa 180’i CMMI sertifikalı mı bu ülkede? Nerede yaşıyoru biz, yazılım cennetinde falan mı? Öte taraftan yine aynı diyagramda katılımcıların %8’inin ISO 9000 kullandıkları belirtiliyor. Lakin diyagramın adı “Software Development Methodologies”. ISO 9000, ne zamandır yazılım geliştirme metodolojisidir? Hatta CMMI ne zamandır yazılım geliştirme metodolojisidir? ISO belgelerinin, yeni evli çiftlere verilip duvarda senelerce hiç ellenmeden asılı duran Kuran gibi olduğunu biliyoruz zaten. CMMI, evet bir kalite standardı ve doğrudan yazılım geliştirme ile ilgili ama bir metodoloji değil ki. Farklı metodolojilerle CMMI’ın istediği kalite standartlarını sağlayabilirsiniz, çünkü CMMI hedefi belirliyor, nasıl gideceğinizi değil. Çalışmanın yedinci sayfasında, 50 şirketin katılımından bahsediliyor. Dolayısıyla yukarıdaki oranı kullanarak, yaklaşık 10 şirketin CMMI sertifikasına sahip olduğunu çıkarabiliriz. Katılımcılarının %18’inin CMMI sertifikalı olduğu bir çalışmanın Türkiye genelinin resmini göstermediğini düşünüyorum. Pek çoğu, askeri projeler gibi CMMI sertifikası şartı getiren projelerde bulunabilmek için CMMI sertifikası almış şirketler ile ülkemizdeki BT sektörünün seviyesini ölçmek çok sağlıklı değil.

Üçüncü sayfa “Software Development Practices” ismini taşıyor ve buradaki diyagrama göre ülkemizdeki güzide yazılım geliştiren kurumlarımızın %59’u hali hazırda “UML” kullanıyorlarmış ve %40’ı da yakın gelecekte kullanmayı planlıyormuş 🙂 Geriye %1 kalacak demekki ikna edemediğimiz 🙂 Bu ne ya? Sokakta yürürken elimizi sallasak bir UML canavarına çarpacak. Bilmem kaç senedir eğitim, danışmanlık vb. fırsatlarla ülkemiz yazılım dünyasında gezmiyor olsam, üstüne üstlük UML ile ilgili gerek eğitim gerek ise danışmanlık vermiyor olsam ve tabi bir de Türk olmasam, inanırdım belki. Eğer çalışanlarının birinin makinesinde bir UML aracı kurulu olan kurumu “UML okur-yazar” kategorisinde sayacaksak belki, ama yine de bu durumda bile sanmam ki oran %10’u geçsin. Ayrıca bu sayfadaki “Agile Development” ile bir önceki sayfadaki “Agile” arasında ne fark var, onu da anlamadım.

Dördüncü sayfa “Project Success Rate” isminde ve katılımcıların %45’i, kurumlarındaki yazılım projelerinin başarı oranı %70’in üzerinde demiş. Ülkemizdeki yazılım geliştiren kurumların %45’i, geliştirdikleri projelerin %70’inde doğru düzgün bir “project” planı yapsınlar, ben razıyım. Bu oranda yazılım projesinde “Project Charter” vb. bir doküman hazırlansın ben yine razıyım. Bu ülkede geliştirilen yazılım projelerinin ciddi bir kısmı bence “proje” tanımına bile girmiyor. Hedefleri, çerçevesi, riskleri vb. açılardan bir sürü eksik ve belirsiz tanımlamalarla yola çıkılıyor, kervan ya yolda ya da bakım sürecinde düzülüyor. Sonra da buna proje diyoruz.

Eskiden bu yana Standish Group‘un Chaos raporlarını takip ederim. Internet’te aradığınızda bu dokümanlara ulaşabilirsiniz. Yıllık olarak ABD’deki (sonraları Avrupa’da da yapılmaya başlandı yanlış hatirlamıyorsam) pek çok yazılım geliştirme projesi göz önüne alınarak yapılan bu çalışmalarda, yazılım projelerinde başarı ve başarısızlık oranları ve sebepleri araştırılır ve katılımcılardan gelen cevaplarla çok güzel sonuçlara ulaşılır. Bu sayfada, Chaos raporlarındaki yazılım projelerinin başarı oranının (başarı, projenin öngörülen zaman ve bütçeyle bitirilmesi olarak tanımlanıyor) yıllara göre dağılımı verilmiş örneğin. 90’lı yıllarda %16’ler seviyesinde başarı oranı aradan geçen 15 senede %30’lara çıkmış, bu sevindirici. Standish Group’un Chaos çalışması hakkında bir şey söylemenin yeri değil burası ama bu raporlar hakkında daha fazla bilgi sahibi olmak isteyenler IEEE Software’de yayınlanmış şu makaleye göz atabilirler. Chaos raporlarındaki yazılım proje başarı oranlarını, her ne kadar elma ile armutu kıyaslama riski olsa da (çünkü Agile Turkey raporunda “başarı”nın bir tanımı ve kriterleri yok) Yazılım Üretkenliği Raporu 2012 ile kıyasladığımızda ülke olarak dünyada en iyi yazılım geliştirme sektörüne, açık ara ile sahip olduğumuz anlaşılır. Halbuki durum böyle olmaktan çok uzakta, keşke böyle olsak ama malesef, bu konuda daha emekleme-taklit noktasındayız.

Raporun amacı güzel, bu haliyle bile emek sarfedildiği belli ama daha katılımcı, daha doğru sınıflandırılmış, kriterleri açıklanmış sorular ve diyagramlar olmalı ki daha tutarlı ve gerçekçi sonuçlardan bahsedebilelim.

Toplam görüntülenme sayısı: 2052

21 Bunu beğendim 🙂
Tweet
Follow me
Tweet to @kaldiroglu
12 Mart 2012

Başarı Üzerine: Dinleme ve Anlama

Akin Kültür, Bilgi ve Düşünce

Şu anda lise 3 öğrencisi olan kızım, sahip olduğu sosyal sorumluluk bilinci vesilesiyle, haftasonları TEGV‘de (Türk Eğitim Gönüllüleri Vakfı) ilkokul çocuklarına eğitimler veriyor. Geçenlerde yine böyle bir eğitim gününde gittiği TEGV şubesinde, eğitim saatini ve öğrencilerini beklerken, Ekonomi dersi sınavına hazırlanmak amacıyla yanında taşıdığı ders kitabını okuyormuş. Benzer şekilde yine eğitim gönüllüsü olarak orada bulunan, üniversitede Ekonomi bölümü öğrencisi gençler de, kızımın, kendilerinin üniversitede gördüğü konuları çalıştığını farkedince arada bir sohbet başlamış. Kızımın ifadesine göre konu çok hızlı bir şekilde “başasının sırrı nedir”e gelmiş 🙂 Etrafta çocuklarını şubeye getiren veliler de varmış ve kızımla gençler arasındaki sohbet genişleyince, çocuklarının geleceği hakkında endişeli her ebeveyn gibi onlar da “sen nasıl böyle başarılısın” anlamında sorularla sohbete dahil olmuşlar.

Bu günlüğü takip edenler, benim başarıyla neyi kastettiğimi kabaca bilirler. Başarı anlayışımın en temelinde, ciddi ve sağlam bir bilgilenme yatar. Bilginin üzerine bina edilen tecrübe ve tefekkür, kişiyi fikir sahibi yapar. O yüzden bilgi sahibi olmadan fikir sahibi olduğunu düşünenlerden daima uzak dururum. Kızım da öyledir, çok yetenekli ve yaratıcıdır ama her şeyden önce doğru ve sağlıklı bilgilenmeye önem verir. Bana anlattığına göre bu olayda da “nasıl oldu bilmiyorum ama birden etrafım, ‘hayatın sırrı nedir üstad’ diye bakan anne-babalarla doldu” dedi bana 🙂 Peki, “senin başarının sırrı” konusundaki soruya sen ne cevap verdin diye sordum tabi ki. Böyle bir soruya herkes kendi tecrübesi açısından mümkün olan zilyon tane cevaptan birisini verebilir. Kimisi “annem” der mesela, kendi sahsi tecrübesi açısından çok farklı bir yerdedir annesi. Kimisi “ilköğretim 4. sınıf öğretmenim” der. Kimisi de kişinin sahip olduğu ve doğuştan tevarüs ettiği özelliklerinde arar başarıyı. Dolayısıyla bu soruya “zekam” diye cevap verir bazıları. Bütün bunlar böyle bir soruya cevap olarak verilebilir. Fakat bu sorunun cevabını, doğuştan gelmeyip, kişinin ve yakın çevresinin gayretiyle, o kişide zamanla gelişmiş bulunan davranışlar açısından ele alırsak, cevaplarımızı bayağı bir sınırlandırmış oluruz. Örneğin “çalışmak”, “kendine güven” ya da daha da özelde “çok soru çözmek” gibi davranışsal cevapları kastediyorum yani. Bu cinsten yani davranışsal cevapların, başarıyı açıklamada çok daha geçerli olduğunu düşünüyorum. Neyse, kızımın verdiği cevap ne biliyor musunuz? “Dersi derste öğrenmek”. Bu cevap sizleri etkilememiş ve hatta size göre şaşırtıcı derecede basit kalmış olabilir. Ben şaşırmadım kızımın bu cevabına ama. Çünkü hem bu ülkede hem yurt dışında eğitim almış, ister okul öncesi ve ilk seviye eğitim isterse üniversite eğitimi olsun, hem bu ülkede hem yurt dışında eğitim alan çocuklara sahip ve ötesinde eğitimin teorisi ve pratiği üzerine kendince kafa patlatan birisi olarak kızımın bu cevabı üzerine eskiden bu yana düşünür ve gözlemlerde bulunurdum zaten. Dahası onlarla ilişkilerimde “dersi derste öğrenmeyi” devamlı teşvik ederdim. Dolayısıyla bu cevap beni hiç şaşırtmadığı gibi sevindirdi de. Dahası, kızımın bunu farketmiş olması mükemmeldi.

Uzatmadan şunu söyleyeyim: İster ilköğretimde bir çocuk, ister lise çağında bir genç, ister üniversitede bir öğrenci, isterse, işe aldığım ve çalışma fırsatı bulduğum, iş görüşmesi yaptığım, eğitim ya da danışmanlık vesileleriyle karşılaşıp çalışma imkanı bulduğum kişiler olsun, onlarla ilgili yaptığım gözlemlerde elde ettiğim sonuçlardan birisi de şu: Başarılı insanların ezici çoğunluğu, dinlemeye ve anlamaya önem veren kişiler. Önemden öte, dinlemeyi ve anlamayı, her hareketiyle hayatının merkezinde tutan kişiler. Ders açısından ifade edilirse, başarılılar, çoğunlukla dersi derste anlayan kişiler. Yani, derse önem veren, derste anlatılanları anında anlamaya özen gösteren, anlatılanlara iyi odaklanan dolayısıyla da iyi bir dinleyici olan, hatta sonrasında güzel sorularla olan biteni çözümleyici bir anlayışla zihnine yerleştiren insanlar. Dahası, iyi sorularla, öğretmene bile o ana kadar farketmediği şeyleri farkettiren öğrenciler, iyi öğrenciler. İstediği kadar çalışkan olsun, dersi derste anlamayan, hatta derse devam etmeyip sonradan çalışarak arayı kapatan insanlardan başarılı insan çıkması çok zor. Biliyorum, hemen Steve Jobs gibi kişilerden örnek vererek bu söylediklerime karşı çıkanlar olacaktır. Ama şunu unutmayalım ki başarının, ezici çoğunluğu bizim elimizde olmayan pek çok etkeni var. Ayrıca ben başarıyla, ünlü olmayı ya da tonla para kazanmayı kastetmiyorum. Dolayısıyla bu yazıyı okuyan ya da bu günlüğü takip eden birisi, benim Steve Job’s yerine örneğin Dennis Ritchie‘yi başarılı olana örnek göstereceğimi de tahmin edebilir.

Zeka, kendine güven, çalışma vs., hepsi başarıda bir yere sahip, eyvallah, ama normal zekalı bir çocuğun bence en temelde sahip olması gereken yetkinliklerden birisi “dersi derste anlamak”tır. Ve bu davranış bence örneğin “çok çalışmak”tan çok daha önemlidir. Ebeveynler, çocuklarına çalışma alışkanlığı kazandırmadan önce onlara, dinleyip anlamasını öğretmeliler. Okul çağına geldiğinde ise çocuğun, dersi derste anlaması teşvik edilmeli. Dersi derste anlamayan ama çok çalışan bir çocuk, dersi derste anlayan ve bunun üzerine az bir çalışma ekleyen bir çocuk kadar başarılı olamayacaktır.

Böyle bir günlükte böyle bir konuyu neden yazıyorum biliyor musunuz? Eğitim vesilesiyle ben de çok sık olarak ders veriyorum, derste öğreten öğretmen/hoca konumunda bulunuyorum ve sınıfta dikkatimi en çok çeken şey, katılımcıların yani öğrencilerin dersi derste öğrenme konusunda genel olarak sahip olduklarını gözlemlediğim zaafiyetleridir. Eğitim vermek, özellikle yetişkin eğitiminde ya da bir başka deyişle mesleki eğitimde hocalık yapmak kolay birşey değil, kendine göre zorlukları var. Yetişkin eğitiminin, bazen sizden bile yaşlı ama her zaman 20 yaşından büyük, ezici çoğunlukla bir üniversite bitirmiş olan katılımcılarının size saygı duymalarını sağlamak, gerektiğinde “bilmiyorum” diyebilmek vb., ilköğretim ya da lise öğretiminde pek de problem olmayan, tonla zorluğu var. Eğitmenin yarı Cem Yılmaz olması gerekir meslea eğitimde. İnsanların, yetişkin de olsalar dikkatlarinin devamını sağlamak, esprilerle dersi eğlenceli hale getirmek, en az derste anlatılan konuyu, teorisi ve pratiğiyle, ilgi çekici kılmak kadar önemli. Eğitimler sayesinde ben de yarı ya da hadi o kadar iddialı olmayayım, kendi çapımda ufak bir Cem Yılmaz oldum çıktım. Artık eskidi ama geçen yazki esprilerimden birisi, şike soruşturması sürecinden dolayı özellikle, benim Fenerli olup ve hayatımda ilk defa kombine almış olmamdı. Tonla espri çıktı buradan ve çok eğlenceli oldu. Malum, kişinin kendisini tiye alan sözler genelde en etkileyici ve hoş esprilerdendir.

Neyse, konuyu uzatmayalım, bütün bunlara rağmen, eğitimlerde, sınıftaki katılımcıların beni takip etmelerini sağlamakta çok zorlanıyorum. Basit bir ayarı ya da bir şeyi yapış şeklini, örneğin, Eclispe’deki bir projede, paketlerin hiyerarşik olarak görünmesini sağlama gibisinden sadece ve sadece 3 adımlık bir ufak detayı bile 5 günlük bir eğitimde 10 defa söylediğim oluyor. Zaten sınıfta 10 kişi ya var ya yok, düşünün gerisini.

Bazı eğitmen arkadaşların, katılımcıların saygısızlıklarından bahsettiği çok sık oluyor. Ben çok az böyle bir durum yaşadım. Sanırım yaşım, eğitimin ilk 15-20 dakikasında katılımcılara verdiğim izlenim, kendimle ilgili her türlü tiye almayı sınıfta bizzat kendimin başlatması ve çok rahat olarak “bilmiyorum” diyebilmem gibi faktörler, sınıfta bana karşı doğrudan saygısızlık yapılmasının yolunu en baştan kapatıyor, bunun farkındayım. Fakat, önüne geçmekte zorlandığım şey, katılımcıların dersi takip edip, derste olabildiğince başka şeylerle uğraşmadan, sadece benim anlattıklarıma odaklanmalarını sağlamak. Bu anlamda çok sık gördüğüm, dersi takip etmeme sebepleri ve yine çok sık karşılaştığım sonuçları şunlar:

  1. Zaten bildiğini düşünmek ve belki bundan dolayı ileriki konuları karıştırmak ve bunlarla ilgili soru sormak ya da kendi makinasında bunları denemek. Sonra da benim daha önce 9 defa gösterdiğim Eclipse ayarının nasıl olduğunu sormak. Dolayısıyla çok büyük bir ihtimalle, katılımcı bildiğini sanıyor ama en azından benim anladığım ve anlattığım şekliyle bilmiyor. Bu anlamda benim eğitimlerimin, pek çok aynı isimdeki eğitimden farklı olduğunu katılanlar bilirler.
  2. Teorik açıklamalardan sıkılıp hızlıca pratiğe dalmak istemek de çok sık karşılaştığım sebeplerden. Malum aksiyon sever bir milletiz ve teoriden hoşlanmayız. Her şeyi, tonla acı çekecek olsak bile, deneye yanıla öğrenmeyi tercih eden mazoşist bir yapımız var. İki dakika sonra pratik yaparken akla gelecek tonla “neden böyle”nin cevabını, sistematik olarak en baştan kavramsal bir yapıda açıklamak aslında çok daha sağlıklı bir durum ama SBS, ÖSS gibi sınavlar için soru çözerek büyümüş olan bizlerin, “nasıl”lıktan önce “neden”liğe önem vermemizi beklemek her zaman adil değil, bunun da farkındayım. O yüzden eğitimlerde çok sık, felsefi argümanlarla teori-pratik arasındaki ilişkiden bahsetmek zorunda hissediyorum kendimi.
  3. Soru sormamak en yaygın olanı belki de. Aklına takılanı bana sorarak, benim onu, bütün sınıf için halletmeme imkan sağlayacakken, arkadaşına fısır fısır sorup, onu kendi ekranına bakmaya davet edip, o sırada benim anlatıp yaptıklarımı kaçırmak, dahası sınıfta kendi başına iş yapar bir görüntü vermek ve gürültü yapmak. O kadar da, “ne kadar saçma olursa olsun sorun” gibi ciddi teşvikler ya da “yarın obür gün yöneticinizin karşısında rezil olacağınıza, buradan çıkıp gittikten sonra sizi hatırlamayacak ve sizi asla ve asla yargılamayacak olan benim karşımda rezil olun” gibi esprili uyarılarla soru sormayı teşvik etsem ya da çok sıklıkla sınıfa “neden”likle ilgili işin felsefi arka planına ait sorular sorsam da, çok kişinin soru sormama/soramama adetini yıkamıyorum. Kolay değil, taa ilkokuldan bu yana “soru sormamanın faziletiyle yetişmiş” ya da “saçma soru korkusuyla büyümüş” yetişkinleri üç beş günde soru sorar hale getirmek. Dolayısıyla ciddi bir soru sorma korkumuz var.

Sanırım, derse devam etmeden, sonrasında, geçmiş senelerde sorulmuş sorulardan yola çıkarak, hızlıca ders geçmek şeklinde açıklanabilecek olan kötü bir adetimiz de bizi ders ortamından soğutuyor. Ben de İTÜ’de okurken 2-3 sene böyle takılmıştım nedenini bilmeden. Şimdilerde de gençlerle karşılaştığımda, çok zeki ve kapasiteli olanların bile, malesef, hocayı ya da dersi beğenmeyerek, ya da alışkanlıktan dolayı, böyle bir tutumda bulunduklarını gözlemliyorum. Ezberci, hantal, aşırı bilgi yükleyen eğitim sistemimiz olduğunun çok fena halde farkındayım ama malesef, iki yanlış bir doğru etmiyor. Bu sanırım biraz da bizim sahip olduğumuz, SBS, ÖSS vb. “problem çözme” kültürümüzün bir devamı. Öyle ya lise sonun ikinci döneminde pratik olarak hiç ders yapılmıyor, herkes paso dershaneye gidip soru çözüyor, akıllı atış/tahmin stratejisi öğreniyor. Diyecek hiç bir şey yok.

Bütün bunlar nihayetinde, daha ilk öğretime bile başlamadan anne ve babanın çocuğuna öğretmesi gereken ve bu hayatın en temel uğraşılarından birisi olan “anlama” konusundaki problemlerimizden kaynaklanıyor. Ve böyle bir problemle yetişmiş bireyin davranışını, değil 25 -30 yaşında, 15 yaşı bile düzeltmek zor ya da imkansız.

Eğitime zorla gönderilmiş olmanın ya da ne bileyim, Pazar günü, dışarıdaki bahar ya da yaz havasına rağmen eğitimde olmak gibi, benim yapabileceğim bir şey olmayan konulardan kaynaklanan ilgisizlik ve dersi bırakmışlıklardan bahsetmiyorum bile. Onlar bu kategoride ele alınan problemler değil.

Dersi iyi takip eden, aklına takılan birşey olduğunda yanındaki arkadaşına değil de bana soran, doğru ya da yanlış olsun çıkarımlarını tüm sınıfla paylaşan kişilerle ders yapmak kadar eğlenceli ve hoca olarak beni de eğiten bir durum az olur. Böyle eğitimlerde inanın en az öğrenciler kadar ben de öğreniyorum ya, mükemmel.

Anlamak ve anlama uğraşısı, her şeyi çok değerli kılıyor.

Toplam görüntülenme sayısı: 1058

12 Bunu beğendim 🙂
Tweet
Follow me
Tweet to @kaldiroglu
07 Mart 2012

Programlama Nedir: Programlamanın Tabiatı ve Programcılık Üzerine – I

Akin Bilgisayar Bilimleri, Programlama, Yazılım Mühendisliği programlama, programlama nedir

Hayatta en sevdiğim şeylerden birisi programlama yapmak. Ne zaman bir vesile ile böyle bir imkan bulsam, kendimi makinanın başında sabahlamış buluyorum. Başka hiçbir şey, bu günlükte yazı yazmak dahil, beni makina başında sabahlatmıyor. Bu duruma, 90’lı yılların başından bu yana alışkınım aslında. Benim gibi programcı olan kişilerin en temel tutkusu, programlama. Dolayısıyla programlamanın ve programcılığın en temel özelliği “tutku”. Acaip tutkulu insanlar programcılar, manyaklık derecesinde bir durum bu.

Neden acaba programcılar böylesine tutkulular? (Öyle ya bir kurumda, en anlaşılmaz, diğer çalışanlar, özellikle de İnsan Kaynakları tarafından en uç noktada görülen insanlardır genelde programcılar.) Sanırım yaptığımız iş, zihni melekelerimizi sonuna kadar kullanmamızı sağladığı için. Zaten, zihni açıdan böyle ağır bir iş, tutku olmadan, başka türlü yapılamaz. Zihni melekelerimizi sonuna kadar kullanmamızı sağlayan şey ise bence, programcının, programlama esnasında kendisiyle uğraştığı faktörlerin sayısının yüksek oluşudur. Faktör sayısının yüksekliği, faktörlerin durumlarının sayısı ve aralarındaki ilişkilerin karmaşıklığı, faktörlerin aralarındaki ilişkilerin sayısı ve karmaşıklığı, yapılan işin ne kadar karmaşık olduğunun en temel belirleyicisidir. Bunu şöyle ifade edebiliriz: Genel olarak bir programcının, üzerinde çalıştığı konunun, yani süreç, iş kuralı, algoritma, arayüz, iletişim protokolü, vs. her ne ise, faktör sayısı, yani değişken olsun sabite olsun, konunun matematiksel modelinde var olan soyutlamaların sayısı ile bu soyutlamaların aralarındaki ilişkilerin sayısı ve karmaşıklığı, normal bir insanın günlük hayatının herhangi bir kesitinde baş edebileceğinden çok daha fazla sayıdadır.

Bir örnekle ne demek istediğimi anlatayım: Programcının yaptığı programlama işi, karmaşıklık açısından, açık kalp ameliyatı yapan bir doktorunkinden farklı değil. Açık kalp ameliyatı yapan doktor da, kan basıncı, kanama riski, beyin fonksiyonları vb. tonla faktörü aynı anda yöneterek, bir ameliyat gerçekleştirir. Muhtemelen, böyle bir operasyon sırasında göz önünde bulundurması gereken faktörlerin sayısı, bu faktörlerin durumlarının sayısı ve aralarındaki ilişkiler ile bizzat faktörlerin aralarındaki ilişkilerin sayısı, normal hayatın herhangi kesitinde karşılaşacağınızdan çok daha yukarıdadır ve açık kalp ameliyatında durumun bir de kritikliği söz konusudur. Ben kritiklik tarafını çıkarırsak, bir programcının yaptığı iş olan programlama ile bir kalp cerrahının yaptığı iş olan açık kalp ameliyatını, karmaşıklık açısından benzer buluyorum ve bu konuda değerli doktorlarımızın hoş görüsüne sığınıyorum :). Fakat kalp cerrahımızın bir kaç avantajı var: İlki, bir programcıdan çok daha fazla eğitim ve pratik tecrübe kazandıktan sonra böyle bir işe girişiyor. Bereket ki bu durum böyle, yoksa sanırım açık kalp ameliyatlarının başarı oranı, bizim yazılımlarımınız başarı oranına düşerdi 🙂 Bir programcı, kesinlikle ve kesinlikle, bir kalp cerrahının içinden geçtiği eğitim ve çıraklığa (kadavra üzerinde uygulamadan başlayarak tonla ameliyatı seyretme vb. iş başı eğitimi kastediyorum) sahip olmadan açık kalp ameliyatına girişen bir gariban bence. Dahası, kalp cerrahımız, operasyon sırasında pek çok yardımcıya sahip: Mesela hemşirelerden birinin görevleri arasında doktorumuzun alnından akan teri silmek bile var. Gördünüz mü hiç kıvranan, depresyona girmeğe ramak kalmış bir programcının, değil terini silmeyi, durumunu farkedip, anında onu o ortamdan uzaklaştırıp, ona yardımcı olan bir kişi, görevli, rol vs? 🙂 Ben yöneticilik yaptığım zamanlarda, bunu farkettiğimde kendisine terapi uyguladığım, ortamdan uzaklaştırıp, çay-yemek vesilesi ile gerilmiş psikolojisini rahatlatmaya çalıştığım çok programcı arkadaşım oldu. Üstüne üstlük, cerrahın, faktörlerini kontrol eden pek çok cihazı var ve özenle tasarlanıp geliştirilmiş bu cihazlar, faktörlerin durumlarını görsel olarak sunuyorlar ve herhangi bir ciddi durum değişmesinde ses vb. yollarla, doktoru ve etrafındaki “n” tane yardımcısını uyarıyorlar. Gördünüz mü hiç, programcı program yazarken, “yazdığınız program şu noktada performans problemi verir”, ya da yanıp sönen “deadlock riski”, “deadlock riski”, ya da ne bileyim “unscalable code”, “unscalable code” diye uyarıda bulunan cihazlar etraflarında? Çok komik değil mi? Ama kalp cerrahları işlerini yaparken böyle yardımları devamlı alıyorlar, onlarsız iş yapmıyorlar. Çok tipik durumdur, Java ile geliştirilip, bol ve umarsızca nesne oluşturulup sonrasında, canlı ortamda çok hızla, bellek (memory) problemleri yaşayan dolayısıyla ölçeklenemeyen (unscalable) yazılımlar. Tipik bir programcının, teknik olan 1000 kelimelik bir konuşmasının içinde geçen bir kavram değildir “ölçeklenirlik” ya da “scalability”, ama çok önemlidir. Neden durum böyledir? Ölçeklenirlik bir faktördür ama yeterli eğitim ve tecrübeye sahip olmayan bir programcı, bu faktörü fena halde ıskalar. Çünkü o, program yazarken, en görünen ve fonksiyonel doğruluk ve tamlık açısından en bariz faktörlere odaklanır da ondan. Zaten programcının zihni, bu faktörler ve karmaşıklıklarıyla iğdiş olurken, ölçeklenirlik gibi bir faktörü düşünmesi imkansızdır ve tam da bu yüzden aslında “yazılım geliştirme, bir programcıya bırakılmayacak kadar önemlidir”. Tam da bu yüzden bu faktörler, gerek mimari gerek ise fonksiyonel tasarım çalışmalarıyla öncesinde ele alınmalıdır ki programcıya, kaldıramayacağı kadar, iş düşmesin. Yani, bir açık kalp cerrahının, ameliyat öncesinde “n” tane farklı daldaki doktordan “konsültasyon” alması, “m” tane tahlil vs. yapmasına benzer bu durum. Bunları yapmadan girilen bir ameliyatta, cerrahın faktörleri kontrol etmesi ne kadar zor ya da imkansız ise gariban ve sefil 🙂 programcıdan beklenen şey de bu kadar zor hatta imkansızdır.

Yukarıda örnekle anlattığımı daha sistematik olarak ifade edersek, bu şekilde programlama yapmada iki problem var: İlki, konunun zaten matematiksel modelinin kurulmamış olmasının getirdiği bir zorluk. Normal şartlarda, iyi bir analiz ve tasarımdan geçmiş ve bundan sonra programcının önüne gelmiş programlama işlerinde programcı, konudaki açık ve seçik olarak belirlenmiş yani, soyutlanmış faktörler ve aralarındaki ilişkileri rahatça anlar ve bunları bir programlama diliyle en iyi şekilde ifade etmeye odaklanır. Bir programcının en temelde iş tanımı budur ve bundan ne az ne de fazla bir şey yapar. Fakat, düzgün bir analiz ve tasarımdan geçmemiş programlama işlerinde ki neredeyse her zaman durum budur, programcının, önceden başka zihinlerin üzerinde düşünüp, değişik soyutlamalarla, konu içindeki faktörleri ve aralarındaki ilişkileri ortaya çıkarmış olması gibi lüksü olmadığından, konunun faktörlerini ve aralarındaki ilişkileri de bizzat kendisinin soyutlaması gereklidir. Dolayısıyla karmaşıklık bir kat daha artar. Bütün bu soyutlamaları bir seferde kavramak için bence 200’lerin üzerinde bir IQ seviyesine sahip olmak gerektiğinden ve böyle bir IQ seviyesine sahip olan programcı bulmak zor olduğundan, bulsanız bile bir programcının kazancına razı olmayacağından vs. vs. :), ve programcıların faktörleri soyutlamak için, UML gibi formal olsun ya da bir beyaz kağıt ya da tahta üzerinde, formal olmayan herhangi bir notasyon kullanarak bile çalışmadıklarından, çünkü programcıların formal notasyonu, bizzat programlama dilinin kendisi olduğundan, yazıkları program-kod parçası, hem soyutlama aracı hem de bu soyutlamaların programlandığı, gerçekleştirildiği ortam haline gelir. Karışık oldu değil mi? Demek istediğim şu: Programlama dili ile program yazmak, hem konunun anlaşılması için gerekli bir eskiz ortamı hem de sanki eskizi yapılmış ve anlaşılmış konunun, bir yazılım olarak ifade edildiği ortam haline gelmesidir bu durum. Bu da çok berbat bir haldir: Neden berbat? Bir, böyle bir çalışma şekli, programcının zihnini acaip yorar. Programcının tutkusu olmazsa bunu şu dünyada “hiçbir Allah’ın kulu” yapmaz. İki, programlarımızı yaz boz tahtasına döndürür bu şekilde çalışma. Programlarda bırakın kaliteyi, bir iç bütülük, bir insicam kalmaz, ortaya çıkan programı “şiir gibi oldu be abi” şeklinde ifade etmek kesinlikle mümkün değildir. Böyle durumlarda programcı, sonradan geri bakıp bu kodla yüzyüze gelmek istemez, yaptığı bu işle kesinlikle övünmez, utanır ondan çünkü. Peki bu durum yazılım kullanıcılarına nasıl yansır? Elbette hata, kullanılamayan, çok sık problem çıkaran sistemler olarak yansır, eğer yukarıda anlattığım sürecin bir yerlerinde kaliteyi arttırıcı gözden geçirmeler, sıkı fonksiyonel ya da fonksiyonel olmayan testler yoksa.

Sıkı durun, yukarıdaki anlattıklarıma bir katman zorluk daha geliyor: Ya programcının zihninde kod yazarken yaptığı bu soyutlamalar çok sık bir şekilde, konunun yani işin sahibi olan kişi tarafından değiştiriliyorsa? Yani aslında yukarıda bahsettiğim, iş süreçi, kuralı vs.nin sahibi olan kişinin kafası henüz net değilse ve arada analiz ve tasarım katmanları da olmadığından, iş sahibi ile programcı devamlı karşı karşıya kalıp, konuşuyorlarsa? Bakın işte bu “hiçbir şekilde yapılacak iş” değildir. Böyle bir ortamda, normal şartlarda kimse çalışmak istemez. Benim sık sık, “insan yapmaz bunu” dediğim haldir bu. Bunu ülkemizdeki pek çok programcı yapar ama, neden biliyor musunuz? Bir, hoşuna gider, çünkü zorluk büyüdükçe ve kendisi başardıkça ya da en azından başardığını düşündükçe (problem de bu ya zaten, başardığını düşünmesi 🙂 ), egosu kabarır ve bu durumun çok fena farkındadır programcı. İki, programcının gücü artar, kendisine bağımlılık artar, her şeyi kontrol edebiliyor olmak müthiş bir şeydir çünkü. Üç, belki de en kötüsü, yazılım endüstrisi açısından, programcı, bu sıkıntılı durumun aslında nasıl olması gerektiğini bile bilmez, çünkü okulda ve sonrasında çalıştığı ortamlarda ona “yazılım=program” yanılsaması, gerçek olarak sunulmuştur çoğu zaman. (Komiktir, bir programlama diliyle doğru düzgün bir program bile yazamayacak durumda olan kişiler, kendilerini “Yazılım Mühendisi” olarak tanıtıyorlar mesela 🙂 Halbuki, bir derleyici (compiler) yazacak kadar yetkin bir programcı olmak bile o insanı “Yazılım Mühendisi” yapmaz, çünkü “yazılım” farklı bir şeydir. Farktan ne kastettiğimi anlamak için, “böyle bir derleyiciyi kullanmak ister misiniz” diye kendinize sorun ve neden “hayır” diye cevap verdiğiniz üzerine düşünün mesela.) Aslında durum, “programcısın, programcı kal”dır sadece 🙂 (Neyse, bu konu da bir yazı gerektirir, o yüzden dalmayalım oraya.)

Dolayısıyla, programcının karşılaştığı üç katmanlı zorluklar şunlardır: Soyutlamaların yapılması, soyutlamaların gerçeklenmesi ve bu gerçeklenmenin, soyutlamalardaki değişimi göz önüne alacak şekilde yapılması. Sabahtan akşama değil de değişen iş ihtiyaçlarına göre makul miktarda değişen iş süreçlerini ve muhtemel değişim noktalarını göz önüne alarak program yazmak, zaman verildiğinde bir programcıdan bekleyeceğiniz şeylerdendir. Ama gerek iş süreçlerindeki gerek ise ölçeklenirlik gibi yazılım mimarisindeki soyutlamaların gerek ise bu iki konudaki muhtemel değişim noktalarının belirlenmediği bir süreçte, programcıdan hem bunları hem de bunlar sonucunda ortaya çıkan yapının bir programlama diliyle gerçekleştirilmesini beklemek hayalciliktir, programcıya da eziyettir.

Bütün bunlardan sonra, bir programcının sahip olması gereken en temel karakter özelliklerini sıralayabiliriz:

  1. Yüksek soyutlama gücü. Yani çözümlemeci/analitik düşünebilme yetkinliği. Daha açık bir ifade ile, olguları sistematik bir şekilde bileşenlerine ayırabilme, bu bileşenlerin durumlarını ve aralarındaki ilişkileri ortaya çıkarabilme, bileşenler arasındaki bağımlılıkları ortaya çıkarabilme, bunları sistematik bir şekilde yapabilme ve aktarabilme  yetkinliğidir çözümlemeci olmak. Bu yetkinliklerin ciddi bir kısmı Allah vergisidir ama iyi bir Matematik, Fizik vb. eğitimle güçlendirilmiş olmalıdır.
  2. Odaklanma: Hiç bir zihin, ilk maddedeki noktada ne kadar yetkin olursa olsun, eğer odaklanma sorunu yaşıyorsa, içinde bulunduğu kişiyi iyi bir programcı yapamaz. Odaklanmadan bu kadar karmaşıklık yönetilemez.
  3. Sabır: Programcı, iğneyle kuyu kazar gibi iş yapar, aynı konuya bazen sil baştan yaklaşır bir kaç defa ve en son denemesinde başarır örneğin. Dolayısıyla azim ve sabır son derece önemlidir.
  4. Denemeci yaklaşım: Programcı, doğruyu bulana kadar çok dener, çok test yapar ve çoğu zaman ancak bir kaç denemeden sonra doğruyu bulur. Bir kere yapıp, oraya takılan kişiler, aynı olaya farklı açıdan bakamayanlar hiç bir zaman iyi bir programcı olamazlar. Bir noktaya takılıp ilerleyemeyenler zaten 1. maddeden de geçememişlerdir çoğu zaman.

Bunlar dışında, formal algortima, veri yapıları, programlama dili, gerekli araçlar vs.nin bilgisi de gereklidir ama ben bu yazıda daha çok karakter özelliklerine dikkat çekmek istedim.

“Abbas Güçlü” vari bir bitiriş yapalım, özetin özeti şudur: Ey programcılar ve programcı olmaya talip gençler: Bu yazıda anlatılanlar size çekici geliyorsa ancak, iyi bir programcı olabilirsiniz. Ey yazılım evleri, BT yöneticileri, programcılarınıza acıyın ve insan içine çıkacak yazılımlar geliştirmek istiyorsanız, yazılım geliştirme işinizi, “programcıların programlaması” olarak değil de bir süreç olarak ele alıp,  programcılarınızdan önce ve sonra konumlandırdığınız kişiler ve çalışmalarla, programcılarınızın işini kolaylaştırın, yazılımlarınızın kalitesini arttırın.

Ve siz de bugün bir programcı bulup ona sarılın 🙂

Toplam görüntülenme sayısı: 1606

29 Bunu beğendim 🙂
Tweet
Follow me
Tweet to @kaldiroglu
02 Mart 2012

Düşünce Azığı: İnsan Bilgisayar Etkileşimi ve Kullanılabilirlik Mühendisliği

Akin Kitaplar HCI, insan bilgisayar etkileşimi, kullanılabilirlik, usability

Çok sık kitapçılara gider, sırf onların arasında bulunmanın hazzını yaşamaya çalışırım. Zaman zaman, Türkçe BT kitaplarına da uğrar var mı yeni ve orijinal bir kitap diye de bakarım. Bu ülkede kitap yazmak, iyi ya da kötü olsun, kesinlikle taktir edilecek birşey. Öte taraftan kitap yazmak bence ülkemizde pek çokları tarafından hafife alınan birşey aynı zamanda, yani konuyu doğru dürüst bilmeyenlerin kitap yazdıklarına çok sık şahit olunan bir ülke, en azından ben ilgim ve bilgim alanına girenlerle ilgili böyle örneklere malesef sahibim. Neyse, yine geçen baharda bir kitapçıda gezinirken, Kürşat Çağıltay‘ın “İnsan Bilgisayar Etkileşimi ve Kullanılabilirlik Mühendisliği: Teoriden Pratiğe” isimli kitabını gördüm. Görünce de tabi ki hem sevindim hem de şaşırdım. Sevinmemin sebebi, yazılım sistemlerinden bahsederken çoğu zaman “program” kelimesini kullanan, dolayısıyla da, yazılım geliştirmek ile program yazmanın eşdeğer tutulduğu bir kültüre sahip olan sektörümüz için, böyle bir kitabın çok faydalı olacağını düşünmem. Şaşırtıcı olan ise, böyle bir düşüncenin malesef çok idealist olacağı aşikarken, bir insanın böyle bir çalışmanın zahmetine katlanıp, bilgi ve tecrübesini güzel bir kitap ile bizim hizmetimize sunması. Sevindirici bir şaşırma bu.

Kürşat Çağıltay, hakkında kendi sayfasından ve kitap ile ilgili bilgi alabildiğim diğer bazı yerlerden öğrendiğime göre, ODTU’de Bilgisayar Mühendsiliği’nde master, ABD’de  Indiana Üniversity’den de “Eğitim Teknolojileri” ile “Bilişsel Bilim” (Congitive Science) alanında doktora yapmış ve şu anda da ODTÜ’de öğretim üyesi. İngilizce literatürde “Human-Computer Interaction” ve “Usability” olarak adlandırılan bilim dalında çalışıyor ve aynı zamanda yine ODTÜ bünyesinde konu ile ilgili bir labaratuvarda araştırmalar yapıyor.

Kitap 2011 Şubat ayında ODTÜ Yayıncılık tarafından basılmış. Beyaz kağıda basılan kitabın başında bir önsöz ve bir teşekkür yazısı var.

Kitap yaklaşık 240 sayfa ve beş bölüm ve beş ekten oluşuyor. Bölümler:

  1. İnsan Bilgisayar Etkileşmi Alanına Genel Bakış
  2. İnsan Bilgisayar Etkileşimi: Fiziksel ve Felsefi Boyutu
  3. İnsan Bilgisayar Etkileşimi: Bilişsel Boyutu
  4. İnsan Bilgisayar Etkileşimi: Kullanılabilirlik
  5. Kullanılabilirlik Çalışması Örnekleri

Kitap hakkında buradan da bilgi alabilirsiniz.

Kitabın ilk bölümünün başında İtiraf.com‘dan alınan bir itiraf var:

“Okul yaşantımda başarılı sayılabilecek bir öğrenciydim, yüksek lisansımı da yaptım, mühendisim fakat X Bankası’ndaki İnternet hesabıma girince kaç param olduğunu anlamıyorum. Allahım, lanet olsun o kredili hesabı açtırdığım güne. Kaç param var benim yaa!”

Benim durumum daha kötü: Ben de mühendisim, yüksek lisansım var, üstüne üstlük yazılımcıyım, ABD’de ve ülkemizde tonla projede vs. bulundum, hayatımı, yazılım geliştirirek, nasıl geliştirileceği konusunda eğitim ve danışmanlık vererek geçiriyorum, IQ seviyem hiç de fena sayılmaz, üç rakamlı olduğuna inanıyorum :). Ama ben de o kurumsal 🙂 firmaların yazılımlarını kullanırken çoğu kez kendimi tek rakamlı IQ’ya sahipmiş gibi hissediyorum abi :). Uzun bir müddet Vodafone’un webden sunduğu MyVodafone isimli arayüzünden, hatlarımın faturalarını bir türlü görememiştim. Aman Allah’ım neler denemedim ki, oraya konmuş “mekik” ya da “shuttle” vari bir web kontrolunu kullanmayı bir türlü beceremedim. Kim nasıl akıl etti, çok mu uğraştılar onu bulmak için bilmiyorum ama ben iyi niyetle n tane farklı tarayıcıda m farklı şekilde denemiştim, taa problemin bende olmadığına inanıncaya kadar. Neyse, sonradan düzelttiler de daha sağlıklı bir hayata kavuştum 🙂

İşte bu kitap, böyle yazılımlar geliştirmek istemeyenler ve ben ve yukarıda itirafı bulunan sefil 🙂 kullanıcılar yaratmak istemeyenler için. Bu tür yazılımlar güya değil bana, benim anneme bile uygun olmalıyken, benim bile kullanamadığım durumda vatandaş n’apsın? Bu kitabın ilk sayfalarında benzer şekilde bir ATM’nin kullanılabilirliğiyle ya da kullanılabilemezliğiyle 🙂 ilgili, yazarın başından geçen güzel bir olay anlatılıyor. (Bu arada bu blogun temasının okunabilirliği dolayısıyla da kullanılabilirliğiyle ilgili problemin de farkındayım :))

Kitapta, en geniş olarak ele alınan konu, kullanılabilirlik. Bu konuda otoritelerden alıntılarla, anlamsal, arayüz özellikleri ve işlevsel (operational) açıdan kullanılabilirlik tanımı yapılıyor ve örnekler veriliyor. Ben, kullanılabilirlik uzmanı değilim ama esas odağı ile hiç ilgisi olmayan tonla bilgi kutucu ile donatılmış, dolayısıyla da kullanılamaz ya da arka arkaya geçilmesi gereken üç-beş web arayüzünden ibaret bir süreçte pek çok tutarsızlığa sahip, nerede ne yapmanız gerektiği konusunda aklınızı karıştıran kurumsal web arayüzüleri ile çok sık karşılaşıyorum. Bu örnekler, kitabın, arayüz özellikleri açısında kullanılabilirlik kategorisine giriyor. Kitapta işlevsel kullanılabilirlik olarak ele alınan nokta ile ilgili şöyle bir anımı da anlatabilirim örneğin: Garanti Bankası’nın internet bankacılığı arayüzü üzerinden bir kredi kartı başvurusu yapmak gibi son derece basit bir tecrübem oldu üç-beş ay önce. Tonla ahiret sorusuna cevap verdiğim ve sonrasında ilerle gibi bir düğmeye basarak geçtiğim sürecin en son sayfasında “başvuruyu gönder” gibi bir son düğmeyi görünce sevinmiştim tabi olarak. Bu düğmeye de basıp, bir kredi kartı başvurusu yapmanın dayanılmaz hafifliğini yaşayacakken, düğmeyi basınca “bir hata oluştu” gibi bir mesajla karşılaştım. Şimdi, hiç yazılım üzerine bir eğitim almamış olsam da eğer IQ seviyem 70-80 üzerindeyse ve hele de iflah olmaz bir “iyi niyet” taşıyıcı ve saçıcıysam, “… değiller ya bu yapanlar, herhalde başvuru bilgilerimi saklamışlardır, 15 dakika vakit harcadım başvururken ve TCKN, bir yakınımın telefonu vs. gibi, bir kısmı aklımda bir kısmı telefonumdan ya da makinamdan bakıp söylediğim, bir sürü bilgi girdim” diye düşündüm hızlıca. Ama sonrasında web uygulamasının menuleri arasında böyle bir şeyi ima eden bir linke bile rastlamadım tabi. Sonra dedim ya ben iflah olmaz bir iyi niyetiliyim, “herhalde sanırım ben hata yaptım, öyle ya ben bir yazılımcıyım ama Garanti Bankası’nın bu web arayüzü için beni cebinden çıkaracak tonla yazılımcı, analist, kullanılabilirlik uzmanı 🙂 çalışıyordur, boru değil ya …” diye düşünüp, güzel bir şekilde, hiçbir şey olmamış gibi, tekrar aynı süreci izledim. Sonuç değişmedi ama, iyi niyetten anlamıyor bu yazılımlar. Ayrıca web arayüzü de tamamen poker face 🙂 ser verir sır vermez cinsten: “Bir hata oluştu” İyi tamam da abi zaten muhtemelen benim bilgilerimi girdiğim üç baş sayfalık süreçte sunucu tarafında bu bilgiler muhtemelen Http oturumunda (session) tutuluyor, varsa bir problem, bu bilgileri yaz bir yere, muhtemelen veri tabanına, bir daha aynı eziyeti çektirme bana. Belli ki, kredi kartı başvuru modülü/sistemi her neyse, o tarafta oluşan bir hatadan dolayı web arayüzü bu mesajı veriyor bana. Ama sonuç şu: İstediği kadar janjanlı bir arayüze sahip olsun, kullanılmaktan uzak bir web uygulaması bu. Kitapta, işlevsel kullanılabilirlik denen şey bu işte. Bu hatanın teknik açıklaması ise şu: Muhtemelen, bu sürecin ya da kullanım şeklinin (use case) analizini yapanlar, sıra dışı bir durum olarak bu yaşadığım senaryoyu atladılar. Ya da analistler yakaladı ama geliştiren developer atladı, test eden tester da atladı. “Atladı” bence bu konuda söylenebilecek en iyi niyetli kelime 🙂 Sonuşta ortada bir Yazılım Mühendisliği yok, olsa olsa yazılımış bir program var. Kullanılabilirlik, “program” ile “yazılım” arasındaki en temel farklardan birisi.

Bence, insan önüne çıkan her yazılımın projesinde bulunan herkesin, ama herkesin okuması gereken bir kitap. Bunu okuyanların büyük bir kısmı, bu konuda sırf bir farkındalığa sahip olsalar bile yeter. Kurumlar ise analistlerine, arayüz tasarımcılarına ve testerlarına Kürşat beyden ya da benzer kişilerden eğitim aldırmalılar diye düşünüyorum.

Rahat kullanılabilir yazılımlar geliştirmek ve karşılaşmak dileğiyle.

Toplam görüntülenme sayısı: 1768

14 Bunu beğendim 🙂
Tweet
Follow me
Tweet to @kaldiroglu
«< 55 56 57 58 59 >»

Günlüğüme Hoşgeldiniz

Bu günlükte, Yazılım Mühendisliği, Bilgi Teknolojileri, Java, kişisel gelişim ve zaman zaman da diğer konulardaki düşüncelerimi sizlerle paylaşacağım. Umarım beğenir ve hoşça vakit geçirirsiniz.

Her türlü düşüncenizi, yorum olsun, beğeni ya da eleştiri olsun, bana iletmenizi rica ediyorum sizden. Ayrıca bana akin@javaturk.org adresinden ya da Twitter'dan ulaşabilirsiniz. Videolarıma da buradan ulaşabilirsiniz.

Teşekkür ederim.

Akın Kaldıroğlu

Rahat Okumak İçin

A Decrease font size. A Reset font size. A Increase font size.

Sosyal Medya

  • Twitter
  • Facebook
  • LinkedIn
  • Youtube

Son Twitlerim

→ Takip Etmek İçin

Abone Olun

Emalinizi girerek yazılardan haberdar olun.
Loading

Son Yazılarım

  • Udemy Eğitimlerim Üzerine
  • (başlıksız)
  • Clean Code / Temiz Kod Eğitimi Udemy’de
  • Java ile Nesne-Merkezli Programlamaya Giriş Eğitimi Udemy’de
  • Selsoft Video Eğitimleri
  • Spring ile Kurumsal Yazılım Geliştirme
  • Corona Günlerinde Design Patterns
  • Corona Günlerinde Java
  • JDK 10 ve “var” Özelliği
  • Onur Özcan
  • Analist ve İş Bilgisi
  • Farklı Dillerin Bakış Açısıyla Nesne-Merkezli Programlama
  • Java Nedir?
  • Bilgi Teknolojilerinde Yetenek Yönetimi – II: Tanımlar ve Eleştiriler – I
  • Alelade Hikayeler – II: Bir Başka Performans Problemi

Yazı Kategorileri

Yazı Takvimi

Mart 2026
P S Ç P C C P
 1
2345678
9101112131415
16171819202122
23242526272829
3031  
« May    

Yazı Arşivi

Blogroll

  • Binnur Kurt'un Günlüğü
  • Ender'in Java Blogu
  • Erdem Seherler
  • Kızımın Günlüğü
  • Kurumsal Java
  • Levent Karagöl
  • Levent'in Java Blogu
  • Mert Can Akkan’s java tips,options, news…
  • Yaşar Safkan
  • Yasin Saygılı
  • Yazı Dünyası

Yazı Etiketleri

analiz Bilmek C Desen design pattern EJB Eğitim Fortran Hibernate Java Java'ya nasil baslarim Java dersleri Java EE Java Persistence API Java SE Java Sertifika Java Öğren Java öğreniyorum Java öğrenmek JPA Kalıp Kurumsal Java nesne nesne-merkezli No Silver Bullet object object-oriented Oracle Java Certifications pattern performans programlama programlama dilleri programlama nedir sertifika singleton tasarım tasarım deseni tasarım desenleri tasarım şablonu yazılım yazılım geliştirme Yazılım Mühendisliği yazılımın doğası yazılımın zorlukları Şablon

↑

© Java Günlüğüm 2026
Powered by WordPress • Themify WordPress Themes
 

Yorumlar Yükleniyor...