Kimler Software Craftsman Değildir?

Önsel Akın
SabancıDx
Published in
4 min readSep 19, 2020

Bildiğiniz gibi, 2001 yılında “birkaç iyi adam” bir kayak merkezinde bir araya gelip, üç günlük bir çalışma sonunda Manifesto for Agile Development bildirisini yayınlayarak yazılım sektöründe bir devrim başlattılar (hala bilmeyen varsa History: The Agile Manifesto adresinden tarihsel bilgilere ulaşabilir).

Bu hikayeyi her okuduğumda zihnimde canlanan, soğuk havada üzerinden sıcak su buharı tüten bir jakuzi içinde, ellerinde içkileriyle dizilmiş 17 adam görüntüsünden kurtulmaya çalışıyor ve yazmaya devam ediyorum.

Manifesto for Agile Development bize ne anlatıyor?

Endişelenmeyin, hakkında zilyon tane yazı okuyabileceğiniz manifestoyu burada tekrar derinlemesine incelemek değil amacım. Ancak Software Craftsmanship ile Agile arasındaki ilişkiyi gösterebilmek için biraz geriden alarak başlamam gerekiyor.

Nedir Agile değerleri?

Individuals and interactions over processes and tools: Yani insanlar arasında etkili bir iletişim varsa, yeni süreçler ve araçlar icat edip, insanları bunları kullanmaya teşvik etmenizin işe ek bir faydası olmayacaktır.

Working software over comprehensive documentation: Belli bir düzen ile, sürekli olarak çalışan yazılım üretmeyi başardığınız durumda, daha fazla ve daha detaylı dokümanlar oluşturmanız işi daha iyi yapmanızı sağlamayacaktır.

Customer collaboration over contract negotiation: Müşteri ile iyi bir işbirliğiniz varsa, daha iyi hazırlanmış, üzerinde daha titiz çalışılmış sözleşmelerin ekstra bir getirisi olmayacaktır.

Responding to change over following a plan: Heraklitos, bundan 2500 yıl önce “Aynı nehre iki kere giremezsiniz.” diyerek, değişmeyen tek şeyin değişimin kendisi olduğunu vurgulamış (İnsan Heraklitos’un bundan önceki 3 madde için de bir şeyler söylemiş olmasını istiyor). Değişime ayak uydurmayı başardığınızda, önceden yapılmış planlar ve bu planlara uymak için kendinizi parçalamanız kimse için daha çok fayda ortaya çıkarmayacaktır.

Peki Software Craftsmanship nereden çıkıyor ve bu manifesto ile bağlantısı nedir?

Manifesto for Software Craftsmanship bize ne anlatıyor?

Agile, yazılım sektöründeki herkesi büyüledi (o zamanlar konuya hiç ilgi duymamakla birlikte — itiraf — , günümüzde yaşadığımız mikroservis hype’ına benzer bir ortam oluştuğunu hatırlıyorum) ancak zamanla asıl ruhundan ve aktarmak istediği felsefeden saptı ve “yazılımı daha hızlı üretmenin yolu” olarak algılanmaya ve lanse edilmeye başlandı. Bunun üzerine, “başka bir grup bir kaç iyi adam”, agile metodun kaybetmeye başlamış olduğu teknik mükemmelliğe de vurgu yaparak bir manifesto daha yayınladı:

Not only working software, but also well-crafted software: Üretilen yazılımın sadece çalışması yetmez, aynı zamanda bu yazılımın “iyi” üretilmiş olması gerekir.

Not only responding to change, but also steadily adding value: Amaç sadece değişime ayak uydurmak değil, bunun ötesine geçip sürekli değer üretmek olmalı.

Not only individuals and interactions, but also a community of professionals: Bireysel olarak değil, bir uzman topluluğu olarak sürekli ileri gitmek hedeflenmeli.

Not only customer collaboration, but also productive partnerships: Müşteri ya da yazılımın gelecekteki kullanıcıları ile yakın çalışmak değil, yaptığımız işle müşterinin itibarını kazanmak ve müşteri ile birlikte değer üretecek kadar yakın bir işbirliği içinde olmak asıl amaç olmalı.

Software Craftsmanship’in agile manifestoyu reddetmediğini, aksine, her madde başındaki “not only” ifadesi ile agile manifesto değerlerini referans alarak bir adım daha ileri gitmeyi hedeflediğini net olarak görebilirsiniz.

Birkaç satır sonra yazının başlığındaki soruya yanıt arayacağım ancak hemen şuraya not olarak bırakayım: Eğer “Agile da ne gereksiz bir şey, agile olmadan da ben işimi yaparım abi!” diyorsanız, siz bir Software Craftsman değilsiniz, üzgünüm.

Bu iki manifestodaki değerlere ulaşılabilmesi için agile takım içinde çalışan her bireyin sahip olması / sahip olmayı hedeflemesi gereken bazı davranış desenleri ve karakter özellikleri var ve bunların tamamı hem agile hem de software craftsmanship manifestolarındaki tüm değerler için eşit derecede önem taşıyor.

İletişim

Agile manifestodaki her madde iletişime temas ediyor. Kaliteli bir iletişim olmadan insanlar arasında verimli bir etkileşim olamaz, verimli etkileşim olmadan sürekli çalışan bir yazılım üretilemez, müşteri ile işbirliği yapılamaz ve değişime ayak uydurulamaz.

İletişim kurulması zor bir insansanız, söyleneni kendi dünyanızda farklı algılama ve bu algılara göre yargılara varma eğilimi içindeyseniz, ya da egonuz apaçık, dupduru bir sözü yanlış anlamanıza yol açıyorsa, siz bir Software Craftsman değilsiniz.

İşbirliği

İşbirliği yapmakla, birlikte iş yapmak sizce aynı şey mi? İşbirliği içindeyken mi daha kaliteli bir iletişim ve etkileşim gerekir, yoksa birlikte iş yaparken mi? Aynı ortamda oturup birlikte iş yapmak yerine, işi paylaşmak, gönüllü olmak, destek olmak, yol göstermek vb. bana göre işbirliği demek.

Yani, ekip arkadaşlarınız çalışırken “Nasıl olsa story point’lerimi tamamladım, 2 gün kebap yapabilirim” şeklinde düşünerek hareket ediyorsanız, siz bir Software Craftsman değilsiniz.

Güven

Ah güven, evet. Etkin bir grubun darmadağın olmasını sağlamanın en kolay yolu, güveni ortadan kaldırmak. Gruptakilerin düşüncelerini, hislerini, önerilerini dile getirebilmelerine imkan veren en önemli şey güvendir ve güven olmazsa ne iletişim kalır ortada, ne de değer üretebilecek bir ekip.

Güven sadece yapılan işin kalitesiyle değil, bir ekip arkadaşı olarak sergilenen tutumla ve diğerlerine olan yaklaşımla da sağlanmalı.

Harika iş çıkartan biri olabilirsiniz ama ekip arkadaşlarınız size tam olarak güven duyamıyorsa, siz bir Software Craftsman değilsiniz.

Mükemmellik

Bana göre asla sahip olunamayacak ancak sürekli kovalanması gereken bir hedef mükemmellik. Bunun yanında, herkesin mükemmel olma çabaları aynı derecede sonuç vermeyebilir. Software Craftsmanship’in ruhunda, başkalarına destek olmak, mentor olmak, iyi ya da kötü, isteği ve arzusu olan herkese kucak açmak var.

Mükemmel olma arzusunu çarpık algıların sonucu olarak “Ben mükemmelim” şeklinde yorumlayıp, kendiniz kadar mükemmel olmayanlara destek olmak yerine köstek oluyorsanız, siz bir Software Craftsman değilsiniz.

Software Craftsmanship konusunu, manifestonun teknik seviyeye yaptığı vurgudan ötürü “harika kod yazan” adam olarak algılamak, hem agile hem de software craftsmanship’in önem verdiği tüm diğer değerlere ve bu değerlere sahip olmak için gereken niteliklere ilgisiz kalmak, aslında software craftsmanship’in savunduğu ilkelerin tam da tersi bir unvana sahip olmayı gerektiriyor.

O unvanın ne olduğunu düşünmeyi de sizlere bırakıyorum.

Sevgiler.

--

--

Önsel Akın
SabancıDx

Cloud Native Engineer @ Container Solutions. Formerly @ SabancıDX, DoğuşTeknoloji, KoçSistem. Trained hundreds at BilgeAdam, KoçBryce, Netron, Microsoft etc.