Takvimler 2000'lerin başını gösterdiğinde, kod satırları arasında bir dünya kurma hayaliyle bu yolculuğa başladım. O zamanlar her şey daha siyah beyaz gibiydi; çalışan kod "iyi", çalışmayan kod "kötü"ydü. Aradan geçen yirmi yılı aşkın sürede, sayısız proje, birkaç şirket, bolca başarı ve daha da bolca hatanın ardından anladım ki, yazılım dünyasının gerçek renkleri grinin tonlarında saklıymış.

Eğer bu yola yeni çıkıyorsanız veya yolun ortasında bir yerlerdeyseniz, kahvenizi alın. Size kimsenin kolay kolay anlatmayacağı, ancak her geliştiricinin er ya da geç yüzleşmek zorunda kalacağı, benim için oldukça pahalıya mal olmuş 10 acı ama gerçek dersi paylaşmak istiyorum.

1: En Mükemmel Kod, Müşterinin İhtiyacını Çözmeyen Koddur

Kariyerimin ilk yıllarında kodun estetiğine, mimarinin kusursuzluğuna takıntılıydım. Her satırın "best practice"lere uygun olması, en yeni tasarım desenlerini kullanması için saatlerimi harcardım. Sonuç? Teknik olarak harika ama müşterinin asıl sorununa dokunmayan, bütçeyi ve takvimi aşan projeler. Acı bir şekilde öğrendim ki, teknik mükemmellik, ticari değerin önünde bir amaç değildir. Müşteri, kodunuzun ne kadar zarif olduğunu değil, işini ne kadar kolaylaştırdığını umursar. Basit, anlaşılır ve çalışan bir çözüm, çoğu zaman teorideki en mükemmel mimariden daha değerlidir.

2: Teknik Borç Kaçınılmazdır, Önemli Olan Faizini Yönetebilmektir

"Teknik borçtan kaçının" sözünü her yerde duyarsınız. Bu ideal bir dünyada doğrudur. Gerçek dünyada ise, zaman baskısı, değişen öncelikler ve bütçe kısıtları teknik borcu kaçınılmaz kılar. Burada ders şu: Teknik borç, bir kredi kartı gibidir. Bilinçli olarak, ne zaman ve ne kadar borçlandığınızı bilerek kullanırsanız, sizi zor bir durumdan kurtarabilir. Ama kontrolsüzce birikmesine izin verirseniz, bir gün faiziyle birlikte tüm projenizi iflas ettirir. Önemli olan, borcu reddetmek değil, onu bilinçli bir şekilde yönetmek ve geri ödeme planı yapmaktır.

3: En Büyük Rakibiniz Dünkü Kodunuzdur

Bir yıl önce yazdığınız koda baktığınızda "Bunu ben mi yazmışım?" diye utanıyorsanız, tebrikler, doğru yoldasınız. Bu, geliştiğinizin en net kanıtıdır. Ego, bir yazılımcının en büyük düşmanıdır. Kodunuza asla aşık olmayın. Onu eleştirmekten, daha iyisini yazmak için refaktör etmekten ve hatta gerekirse silip baştan yazmaktan çekinmeyin. Unutmayın, o kodu yazarkenki bilgi seviyeniz ile bugünkü bir değil.

4: İletişim, En Az Kodlama Kadar Kritik Bir Yetenektir

Yazılımcıların sadece makineyle konuştuğu bir yanılgıdır. Asıl zor olan, insanlarla konuşmaktır: Müşterinin tam olarak ne istediğini anlamak, takım arkadaşına teknik bir problemi doğru aktarmak, yöneticine bir gecikmenin nedenini mantıklı bir şekilde açıklamak... Kariyerimde gördüğüm en büyük teknik problemlerin kökeninde neredeyse her zaman bir iletişim eksikliği veya yanlış anlama yatıyordu. İyi kod yazmak sizi iyi bir geliştirici, iyi iletişim kurmak ise sizi vazgeçilmez bir takım oyuncusu yapar.

5: Teknolojiye Değil, Problem Çözme Yeteneğine Yatırım Yapın

20 yıl önce popüler olan teknolojilerin, dillerin, framework'lerin bugün esamesi okunmuyor. Bugün taptığımız teknolojiler de 10 yıl sonra muhtemelen "legacy" olarak anılacak. Kariyerinizi belirli bir teknolojiye bağlamak, tek bir hisse senedine yatırım yapmak gibidir; çok risklidir. Asıl kalıcı olan yetenek, teknoloji ne olursa olsun bir problemi analiz etme, onu parçalara ayırma ve mantıksal bir çözüm yolu üretme becerisidir. Dilleri ve araçları birer çekiç olarak görün. Asıl ustalık, hangi çiviyi ne zaman ve nasıl çakacağını bilmektir.

6: "Kahraman" Geliştirici Olmaya Çalışmayın

Geceleri tek başına çalışıp sabahına imkansız bir sorunu çözen o "kahraman" geliştirici olmayı hepimiz hayal ederiz. Bu kısa vadede alkış getirse de uzun vadede hem size hem de projeye zehirdir. "Kahramanlık", genellikle kötü planlamanın, paylaşılmayan bilginin ve sürdürülemez çalışma temposunun bir sonucudur. Projenin tüm yükünü omuzlarınıza alırsanız, siz tatile çıktığınızda veya hastalandığınızda tüm sistem durur. Bu, şirkete yapılmış bir iyilik değil, gizli bir sabotajdır. İyi bir geliştirici, kendini vazgeçilmez değil, gereksiz kılabilendir. Bilgiyi paylaşın, süreçler yaratın, dokümantasyon yazın.

7: Her Şeyi Bilmek Zorunda Değilsiniz, Ama Nerede Bulacağınızı Bilmek Zorundasınız

Bu meslekte "Her şeyi biliyorum" dediğiniz an, gerilemeye başladığınız andır. Teknolojinin hızı karşısında bu imkansızdır. Önemli olan, bir sorunla karşılaştığınızda paniğe kapılmak yerine doğru soruları sormayı, doğru kaynakları (Stack Overflow, resmi dokümantasyonlar, makaleler) etkin bir şekilde kullanmayı ve yardım istemeyi bilmektir. Mütevazı olun. Çözemediğiniz bir sorun, sizden önce birilerinin mutlaka çözdüğü bir sorundur.

8: Müşterinin Ne "İstediği" İle Neye "İhtiyacı Olduğu" Genellikle Farklıdır

Henry Ford'un meşhur sözündeki gibi: "İnsanlara ne istediklerini sorsaydım, daha hızlı giden atlar isterlerdi." Müşteri genellikle kendi yaşadığı semptomları anlatır, altta yatan hastalığı değil. Sizin göreviniz, sadece istenen özellikleri kodlamak değil, bir danışman gibi davranıp asıl ihtiyacı, kök nedeni ortaya çıkarmaktır. Bazen müşteriye "hayır" demek veya daha iyi bir alternatif sunmak, projenin selameti için yapacağınız en doğru harekettir.

9: Tükenmişlik (Burnout) Bir Efsane Değil, Kariyer Bitiren Bir Gerçektir

Sürekli baskı, uzun çalışma saatleri ve hiç bitmeyen öğrenme maratonu... Yazılım geliştirme, zihinsel olarak inanılmaz yorucu bir iştir. Tükenmişlik, yavaş yavaş gelir ve fark ettiğinizde iş işten geçmiş olabilir. Kendinize yatırım yapın. Kod yazmadığınız zamanlarda hobileriniz olsun. Ekrandan uzaklaşın. Spor yapın. Ailenizle vakit geçirin. Unutmayın, en iyi kodlar dinlenmiş bir zihinden çıkar. Kariyer bir maratondur, 100 metre koşusu değil.

10: Günün Sonunda Yaptığımız İş, İnsanların Hayatına Dokunmakla İlgilidir

Yazdığımız bir e-ticaret sitesi, küçük bir işletme sahibinin hayallerini gerçekleştirir. Geliştirdiğimiz bir muhasebe programı, bir çalışanın saatler süren angaryasını dakikalara indirir. Yaptığımız bir mobil uygulama, insanların iletişimde kalmasını sağlar. Kod satırlarının, derleyicilerin ve veri tabanlarının ardında her zaman bir insan vardır. Yaptığınız işin bu "insani" etkisini asla unutmayın. Bu, en zorlu anlarda bile motivasyonunuzu korumanızı sağlayacak en güçlü yakıttır.

Yirmi yıl uzun bir süre. Ama bu dersleri öğrenmek için yirmi yıl beklemenize gerek yok. Umarım benim tecrübelerim, sizin yolunuzu biraz daha aydınlatır.