Ezber bozan 10x mühendis
Tüm yazılım camiası olarak geçen hafta büyük bir tehlike atlattık. Şanslıyız ki bu tehlikeyi berteraf edebildik. Büyük bir tehlike diyorum çünkü yazılım dünyasındaki yanlış mentaliteden dolayı çekmediğimiz çile kalmamışken birde bu çilenin üzerine çile koymaya çalışanlar; deyim yerindeyse yangına benzinle gidenler var.
Birçoğumuz geçen hafta büyük tartışma yaratan “10x mühendis” ile ilgili tweeti görmüştür. Görmeyenler için tweeti şuraya bırakıyorum:
10x engineers
— Shekhar Kirani (@skirani) July 11, 2019
Founders if you ever come across this rare breed of engineers, grab them. If you have a 10x engineer as part of your first few engineers, you increase the odds of your startup success significantly.
OK, here is a tough question.
How do you spot a 10x engineer?
Bu konu hakkında yazmamaya karar vermiştim fakat dayanamayıp klavyeyi elime alıverdim.
10x mühendisler…
Nedir bu 10x mühendis? Her işe koşan, elinden her iş gelen, her türlü problemi yılmadan azimle çalışarak çözen kişi midir? Herhalde 10x mühendisi en iyi açıklayan kelime “Kahraman” kelimesidir.
Peki nasıl 10x mühendis olunur? Yoksa 10x mühendis olunmaz doğulur mu? Bu doğuştan gelen Allah vergisi bir yetenek midir?
Yeter! Bu kadar uzatmaya gerek yok. 10x mühendis terimi ile aslında maksimum seviyede verimlilik gösteren bir mühendis anlatılmak isteniyor. Aslında bir kahraman. Havalı fakat bir o kadar içi boş bir terim.
Bu tweeti atan arkadaşımız da 10x seviyede verimli bir mühendisi tanımlamak isterken farkında olmadan doğru bildiği yanlışları yazınca çok farklı bir tablo ile karşılaştı. Twitter da “Ben bu görüşe katılmıyorum” butonu olsaydı çıkacak sonucu çok merak ediyorum.
Bu arkadaş attığı tweetle 10x mühendis tanımı yapmak isterken aslında yanlış bir yazılımcı zihniyetini tanımlayıp nasıl kötü bir yazılımcı olur sorusuna güzel cevaplar vermiş. Şimdi bu tweetten çıkaracağımız ibretlik derslere ve kötü yazılımcının özelliklerine kısa bir göz atıp kıssadan hisse öğrenebileceklerimizi görelim.
10x mühendisi kötü yapan özellikler nelerdir?
Burada anlatacağım özellikler tamamen atılan tweet bazında olup aslında bir yazılımcıda olmaması gereken özelliklerdir.
Takım oyuncusu değillerdir
Yazılım işinin bir takım işi olduğunu daha önce söylemiştik. Fakat 10x mühendisler takım kültürüne ters düşen davranışlar sergiler. Herşeyi tek başlarına yapmaya çalışırlar. Takım içerisinde gerekli olan toplantılara katılmayarak bilgilerini paylaşmak istemezler. Takıma katılan yeni bir yazılımcıya bildiklerini öğretmekten onları yetiştirmekten kaçınırlar. Çünkü bu durum onlara zaman kaybı gibi görünür. Onlara anlatarak harcayacakları zamanı verilen görevi kendileri üstlenerek bu zaman kaybından kaçınmak isterler. Dolayısı ile yeni gelen arkadaşların öğrenmelerini teşvik edecek gerekli insiyatifi onlara vermekten uzak dururlar. Güvenmekle ilgili problemleri vardır. Belki de takıma katılan yeni bir yazılımcı onların tahtını sallayacak bir tehdit anlamına geliyordur. Kim bilir.
Kısacası yardım sever değillerdir ve herşeyin en iyisini kendilerinin bildiğini söyleyen egolarına kulak verdiklerinden dolayı yardım dahi istemezler, isteyemezler. Tam bir toksik diye tarif edebilieceğimiz kişi rolünü üstlenirler. Yaptıklarıyla takım kültürüne zarar verip takımı zehirlerler. Takımda belli bir süreden sonra adaletsizlik baş gösterir ve kıpırdanmalar başlar.
10x mühendisler dar boğaz oluştururlar
Herşeyi kendileri yapmak isteklerinden bahsetmiştik. 10x mühendisler projenin en önemli bölümlerinde aktif rol almak isterler. Hatta bir takım oyuncusu olmadıklarından dolayı diğer takım oyuncularının önünü kesmeye çalışarak projelerin büyük bir kısmında kendilerinin imzasının olmasını isterler. Öyleki projenin onlarsız bir hiç olduğu, onlar olmadan hiçbir işin yapılamamasını isteyip tam bir kahraman rolünü üstlenmeye çalışırlar. Kahraman olmak egolarını tatmin eder. Proje onlara bağımlı bir hale geldiğinde onlar için bu harika bir durumken şirket ve takım için tam bir felaket anlamına gelir. Onlar tatile çıktıklarında veya bir sebepten dolayı ise gelemediklerinde herşey aksamaya başlar. Sonunda projede kendilerine olan ihtiyaç o kadar fazla olmuştur ki artık bu durumu kendilerini bile rahatsız etmeye başlamıştır.
Yazdıkları kodları sadece kendileri anladığından dolayı projede yer alan diğer yazılımcılar en ufak birşeyde bile onların kapısını çalar. Artık işler iyice sarpa sarmıştır. Gelen sorulardan ve projenin büyüklüğünden iyice yılmışlardır. Üstüne üstlük peşpeşe çıkan hatalar ve onların giderilmesi bu duruma tüy dikmiştir. Tükenmişlik sendromları peşpeşe gelir ve iş yapamamaya başlarlar. Sonunda hem kendilerine hemde takıma büyük bir kazık atmışlardır. Sizin tahmin edebileceğiniz gibi projede tam bir dar boğaz vardır ve takım bloklanmıştır. Kanayan bu parmağı kesip atmak tek çözümdür.
Kötü kod yazarlar
Hız onların en büyük tutkusudur. Hızlı kod yazarak ne kadar çok verimli olduklarını göstermek isterler. Hız demek kaliteli koddan ödün vermek demektir. Kötü yazılan kod diğer yazılımcılar tarafından okunması zor olan koddur. Kodu okumak zor olduğunda anlaşılması da bir o kadar güç hale gelir. Durum böyle olunca yazılımın yönetimi zorlaşır. Küçük değişikler yapmak veya yeni özellikler eklemek tam bir karın ağrısıdır. Yazılan kodlara belli bir süreden sonra dönüp baktıklarında kendileri bile okuyamazlar. Kötü yazılan kodların sonucunda takımın elinde yönetimi ve bakımı zor bir yazılım patlamaya hazır bir bomba gibi durur. Bu bombanın patlaması demek yazılımın ölmesi ve tekrar sıfırdan yazılması demektir.
Onların pisliğini diğer yazılımcılar temizlemeye çalışır
Kötü yazılan kodun sonucunda ölmeye yüz tutmuş yazılımı tekrar canlandırmak artık diğer yazılımcıların görevidir. Yazılımın ömrünü uzatmak ve yönetimini kolaylaştırmak için kod bakım ve iyileştirme işlemleri diğer yazılımcılar tarafından üstlenilir. 10x mühendisin biriktirdiği teknik borçları takım arkadaşları öder. Diğer yazılımcılar mevcut kodun bakımı ile uğraştıklarından pek verimli değilmiş gibi görünürler ki bu da 10x mühendisin istediği bir durumdur. Hızlı ve kod kalitesini önemsemeden yazılan kodlar sayesinde 10x mühendis 10x ölçüsünde iş yapmış demektir ve bir o kadar da verimlidir. Asıl primi kazanıp pastadan en büyük parçayı kapmaya çalışırlar.
Çıkan hataları hiç zaman kaybetmeden gidermek isterler
Tweette değinilen 10x mühendisin özelliklerinden bir diğeri de çıkan hataları aynı saat içerisinde hızlıca düzeltebilmeleridir. Yine hız onların tutkusu oldukları için önlerine bir hata geldiklerinde daha hatanın gerçekten bir problem oluşturup oluşturmadığını düşünmeden hemen düzeltme işine girişirler. Buda onların aslında daha çok hata yapmalarına ve yine kod kalitesinden ödün vermelerine hatta yazılımın mimarisini bile bozmalarına neden olabilir. Hızlıca hatayı düzeltmek için yazdıkları kodların yan etkilerini hesaba katmazlar. Bir hatayı düzelteyim derken yeni bir hatanın doğmasına neden olabilirler. Kaldı ki daha öncede bahsettiğim gibi önce hatanın gerçekten bir hata olduğundan ve kullanıcı için gerçek bir problem oluşturulduğundan emin olunmalıdır. Fakat bu gerçek 10x mühendis tarafından görmezden gelininin gerçeklerden bir tanesidir.
Eleştirilere açık değillerdir ve herşeyi kişisel algılarlar
Herşeyi en iyi kendileri bilirler. Tavan yapmış egolarından dolayı yanlarına kimse yaklaşamaz. 10x mühendis etiketini kendileri ile örtüştürdüklerinden dolayı yaptıkları yanlışları bile görememeye başlarlar. Artık yaptıkları herşey doğru niteliğindedir. Ola ki işlerinden biri diğer mühendisler tarafından eleştirilirse kükremeye başlayarak pençelerini gösterirler. Eleştirilere kapalıdırlar. Egoları diğer mühendislerle arasına büyük bir duvar örer. İletişimi reddederler. Kendilerini hedef alan bir eleştiri olmamasına rağmen buradan bile kendilerini hedef gösterilmiş gibi hissederek olayları kişisel algılarlar. Bu yüzdendir ki yazdıkları kodlar diğer mühendisler tarafından incelenince rahatsız olurlar ve yaptıkları yanlışları kabullenmekte güçlük çekerler.
Sağlıklarına dikkat etmezler
Tweette hatırlarsanız 10x mühendislerin ofis saatlerinin düzensiz olduğundan bahsediliyor. 10x mühendislerin genelde gece kodlayan programcılar olduğu ve bu nedenle sabah işe geç geldiklerinden bahsedilmiş. Kafein onların yakıtıdır. Gece geç saatlere kadar kod yazarak daha verimli olabilmek ve işleri yetiştirebilmek için kahve ve enerji içecekleri en büyük yoldaşları durumundadır. Eğer uzun saatler boyunca kod yazabilirlerse daha verimli olabileceklerini zannederler. Halbu ki bu durum 10x müjhendisin doğru bildiği yanlışlardan bir tanesidir. Uyku bir yazılımcının en önemli yakıtlarından biridir. Problem çözme kabiliyetlerini ve yaratıcılıklarını arttırır. Bu nedenledir ki bazen saatlerce bir problemi çözmek için zaman harcadığımız da “git bir hava al veya bu akşam sağlam bir uyku çek ve yarın temiz kafayla yeniden başla” tavsiyesini veririz. Günde en az 7-8 saat kaliteli ve sağlıklı uyku alabilmek önem arzeder. Fakat 10x mühendisler bu gerçeği görmezden gelmeyi tercih ederler.
Uykularını daha iyi ve çok iş yapabilmek uğruna feda ederler ve sonucunda umduklarını bulamazlar. Gece geç saatlerde yazılan kodlar yarardan çok zarar getirir. Gece yazılan kodlar gündüz yeni hataları ortaya çıkarmıştır. Şimdi 10x mühendisimiz bu yeni hataları bulup düzeltmek için yakıtı olan kafeine asılarak birkaç gece daha sabahlayacaktır ve sonucunda daha iyi bir iş ortaya koyacağını umacaktır. Farkında olmadan kısır bir döngünün içinde kendini bulur.
Herşey kafalarının içerisindedir
Yazdıkları kodun dokümantasyonunu yazmak 10x mühendisler için zaman kaybı gibi görünen işlerden bir diğeridir. Kendilerine olan aşırı güvenlerinden dolayı, herşeyi en ince ayrıntısına kadar hatırlayabileceklerini düşünürler. Bu durum diğer takım üyelerinin ve yazılımın 10x mühendise olan bağımlılığının artmasına neden olur. Hız onlar için en önemli ölçütlerden biri olduğu için, hız kazanmak adına kötü kodlar yazarak kaliteden ödün verdiklerini zaten söylemiştik. Bir de bu kötü kodu dökümente etmeyerek takım üyelerinin içlerinde gizli olan psikopatın yavaş yavaş uyanmasına neden olurlar.
Malesef ki dökümantasyonun sadece diğer takım üyeleri için değil gelecekte kendilerini de hızlandıracaklarından ve yardımcı olacaklarından haberleri yoktur. Belki de bu şekilde davranmalarının sebebi tweette bahsedildiği gibi dokümantasyona göz atmadan her problemi çözebileceklerine inandaklarından dolayıdır. Kim bilir.
Gerçek 10x çalışma ortamıdır
Tek bir kişinin bireysel katkısı 10x değildir. Gerçek 10x mühendislerin verimliliğini arttıracak, içlerinde ki yaratıcılığı açığa çıkaracak, dikkat dağınıklığından ve mühendislerin odaklarını bozacak herhangi bir engelden uzak çalışma ortamının sağlanmasıdır. Takım için gerekli olan sağlıklı kültürün oluşturulması, takım içerisindeki her bireyin katkısını en üst seviyeye çıkarmada büyük rol üstlenir. Yöneticilere düşen görev bu sağlıklı ve verimli ortamı çalışanlara sağlamaktır. En ufak bir olumsuzluk bile takım içerisinde transparan bir şekilde konuşularak çözülebilmelidir. Takımı zehirleyen, takım kültürüne aykırı davranışlarda bulunan her türlü toksik birey takımdan uzaklaştırılmalıdır.
Bu tweetten 10x mühendis ile ilgili yöneticiler için çıkarılabilecek ders nedir?
Bu tweeti atan arkadaş kaş yapayım derken göz çıkarsa da az çok girişimcilik kültürünü yakından tanıyan insanlar bardağın dolu tarafından bakarak kendilerine güzel dersler çıkarabilirler.
Genelde girişimlerin ilk aşamalarında şirket kurulduktan sonra ekonomik gücün yetersizliğinden dolayı girişim sahipleri her işi kendileri üstlenirler. Bir yandan kağıt işleri ile uğraşıp bir yandan kod yazıp yazılımı geliştirmeye çalışırken diğer yandan da müşterilerden gelen epostalara cevap verirler. Kısacası her işi kendileri yaparlar. Girişimin erken aşamalarında herhangi bir unvan yoktur. Girişimci herseydir.
Biraz para kazanan kurucu veya kurucular artan yüklerini hafifletmek ve yazılımlarını daha hızlı geliştirebilmek adına mühendis almaya karar verirler. İşte bu ilk alımlarda alınan mühendisler önemlidir. Eğer ise alınan mühendis şirketi kendi şirketiymiş gibi sahiplenirse elinden gelenin en iyisini vermeye çalışır ve yüksek özveriyle şirkete katkı yapmayı hedefler. Dediğim gibi yeterli iş gücü olmadığı için bu tip yazılımcılar da şirketin o anki teknik problemi neyse çözmeye çalışırlar. Tasarımsa tasarım, photoshopsa photoshop, backendse backend kısacası önlerine gelen her işi yaparak katkıda bulunurlar. Girişim kurucuları bu tip özveriyle çalışan, şirketi kendi şirketiymiş gibi benimseyen kişileri kaçırmak istemezler. Nadir bulunan ve kurucuların yükünü ciddi oranda hafifleten ve güvenilir kişiler bulunduğu zaman kaçırılmamaları önem arzeder. Bu yüzden şirket bu kişilerle paylaşımda bulunur ve uzun yıllar bu yolculukta beraber yürümek isterler.
Peki bu ilgili çalışanı 10x mühendis mi yapar? Hayır bu arkadaşımız sadece çalışıtığı şirket ile aynı vizyonu paylaşan ve özveriyle çalışarak bu vizyon doğrultusunda ortak hayalleri gerçekleştirmeyi hedefleyen bir arkadaşımızdır. Zamanla bu çalışanın her alanda aldığı görevleri takım büyüdükçe yeni takım arkadaşlarına bırakması ve uzman olduğu alanda takım arkadaşlarıyla birlikte şirkete hizmet etmesi gerekir.
İşte bu tweete bardağın dolu tarafından baktığım zaman benim çıkarabildiğim ders bu oldu. Fakat bu aynı senaryo orta veya büyük ölçekli, belli takım kültürünün ve standartların oturduğu şirketlerde ters teper. Çünkü bu şirketlerde bireylerden çok takım ve takımlar vardır. Tek bir kişinin ön plana çıkmasından çok takımın tüm takım üyelerinin parlaması istenir. Bir iş başarıldıysa bu iş birlikte çalışarak takım ruhu ile başarılmıştır. Bu kültürün olduğu bir yerde 10x mühendis dengeleri bozar ve yarardan çok zarar getirmeye başlar. Çok muhtemel yerli ve uluslararası yazılımcılar tarafından bu tweetin eleştirilme nedeninin arkasında bu vardır.
10x mühendis yoktur iyi mühendis vardır
Son olarak eklemek istediğim 10x mühendisler yoktur sadece iyi ve tecrübesiz mühendisler vardır. 10x mühendis olup 10x performans sergileme peşinden koşmamamız gerekir. Amacımız doğru yazılımcı zihniyetini özümsemek ve doğru ile yanlışı ayırt edebilmek olmalıdır. Yazılım geliştirme işinin bir takım işi olduğu bilinciyle hareket edip gerekli olan takım ruhu kazanılmalıdır.