Tam Zamanlı Çalışırken Serbest İş: Birden Çok Kod Tabanını Yönetmek
Son birkaç yıldır, Digiturk'te kıdemli mühendis olarak tam zamanlı çalışırken Yazılımcı Bul üzerinden serbest iş yapıyorum. Gündüzleri Digiturk'te beş kişilik bir ekibe liderlik ediyor, akşamları ve hafta sonları serbest projeler üstleniyorum. Bu işliyor, ama sistemler, disiplin ve dürüst bir öz değerlendirme gerektiriyor. Bu yazı, bunu nasıl yönettiğimle, neler öğrendiğimle ve artık yapmadığım hatalarla ilgili.
Neden Serbest İş
Bariz cevap para, ama asıl neden bu değil. Serbest iş beni farklı teknoloji yığınlarına, farklı problem alanlarına ve farklı ekip kültürlerine maruz tutuyor. Digiturk'te belirli bir teknoloji ekosistemi ve problem uzayı içinde çalışıyorum. Serbest iş, becerilerimi geniş ve bakış açımı taze tutan çeşitliliği bana sağlıyor.
Yazılımcı pazaryeri Yazılımcı Bul'u inşa etmek, kendisi de çok daha büyük bir şeye dönüşen bir serbest projeydi. Platform artık 40.000'in üzerinde üyeye hizmet veriyor ve onu tam zamanlı rolümün yanı sıra sürdürmek, sürekli bir önceliklendirme egzersizi.
Bir şeyi uçtan uca inşa etmenin yaratıcı bir tatmini de var. Büyük bir şirkette, daha büyük bir sistemin bir parçasını sahipleniyorum. Serbest çalışan biri olarak ise çoğu zaman tüm yığını sahipleniyorum; veritabanı tasarımından dağıtıma kadar. Bu uçtan uca sahiplenme farklı kasları çalıştırıyor ve beni keskin tutuyor.
Zaman Yönetimi Sistemi
En sık aldığım soru: zamanı nasıl buluyorsun? Dürüst cevap, zamanı bulmadığım; onu yapı ve acımasız bir önceliklendirmeyle yarattığım.
Haftalık programım kabaca şöyle. Pazartesiden cumaya, 9'dan 18'e kadar Digiturk zamanı. Tamamen oradayım; ekibime liderlik ediyor, kod yazıyor, toplantılara katılıyor ve kod incelemeleri yapıyorum. Bu saatlerde serbest işe hiç dokunmuyorum. Bu hem işverenime hem ekibime haksızlık olurdu ve eninde sonunda her ikisinin de kalitesini düşürürdü.
Akşam 20'den 23'e kadar olan saatler serbest iş için, ama her akşam değil. Proje teslim tarihlerine ve kişisel taahhütlere bağlı olarak tipik olarak haftada üç ila dört akşam çalışıyorum. Cumartesileri serbest işin yarım günü, genellikle sabah dört ila beş saat. Pazarları kapalı; kod yok, e-posta yok, Slack mesajı yok. Bu sınır tartışmaya kapalı, çünkü tükenmişlik gerçek bir risk ve yavaşça sokulup geliyor.
Bu programın anahtarı hazırlıktır. Her serbest seanstan önce, tam olarak ne üzerinde çalışacağımı bilirim. Önceliğe ve tahmini süreye göre sıralanmış, sürekli güncellediğim bir görev listesi tutarım. Akşam 20'de oturduğumda, ne yapacağımı çözmek için 30 dakika harcamam; doğru dosyaları açar ve hemen çalışmaya başlarım.
Bağlam Değişimlerini Yönetmek
Tam zamanlı çalışırken serbest işin en zor yanı saatler değil; bağlam değişimleridir. Kod tabanları, teknoloji yığınları ve problem alanları arasında geçiş yapmak zihinsel enerji gerektirir. Gündüz Digiturk'te karmaşık bir akan medya (streaming) sorununu ayıklıyorsam ve ardından akşam bir serbest müşteri için bir React panosu kurmaya geçmem gerekiyorsa, beynimin bir bağlamı boşaltıp bir başkasını yüklemesi için zamana ihtiyacı vardır.
Bunu yönetmek için birkaç strateji geliştirdim. Birincisi, ayrıntılı notlar tutarım. Bir görev üzerinde çalışmayı her bıraktığımda, nerede kaldığım, bir sonraki adımın ne olduğu ve açık kalan sorular hakkında kısa bir not yazarım. Bu notları yazmak 30 saniye sürer ve geri döndüğümde 15 dakikalık yeniden odaklanma süresinden tasarruf ettirir.
İkincisi, benzer işleri bir arada toplarım. React içeren birden çok serbest görevim varsa, onları aynı akşamlara planlarım. Arka uç görevlerim varsa, onlar farklı akşamlara gider. Bu, zihinsel model bir seans içinde tutarlı kaldığı için bağlam değiştirmenin maliyetini azaltır.
Üçüncüsü, ayrı geliştirme ortamları kullanırım. Her projenin, kendine özgü eklentileri, ayarları ve terminal yapılandırmalarıyla kendi VS Code çalışma alanı vardır. Çalışma alanlarını değiştirmek, beynime bağlam değiştirmesini söyleyen fiziksel bir tetikleyici görevi görür. Önemsiz gibi görünür, ama işe yarar.
İletişim ve Beklentiler
Tam zamanlı çalışırken serbest iş yapmak, ancak serbest müşterilerinizle dürüst beklentiler oluşturursanız işler. İlk konuşmadan itibaren müsaitliğim konusunda açığım. Akşamları ve hafta sonları çalıştığımı, mesai saatlerinde mesajlara yanıt vermeyeceğimi ve geri dönüş süremin saatlerle değil günlerle ölçüldüğünü açıklarım.
Çoğu müşteri, özellikle işin kalitesi yüksek olduğunda, bununla tamamen barışık. Gerçek zamanlı müsaitliğe ya da aynı gün geri dönüşe ihtiyaç duyanlar benim düzenime uygun değil ve bunu fazla söz verip eksik teslim etmektense baştan kabul etmek daha iyi.
Öncelikle eşzamansız kanallar üzerinden iletişim kurarım; e-posta, proje yönetim araçları ve kayıtlı video güncellemeleri. Video güncellemeleri özellikle etkili oldu. Bir görüşme planlamak yerine, neyi inşa ettiğimi anlatan, özelliği gösteren ve verdiğim kararları açıklayan beş dakikalık bir Loom videosu kaydederim. Müşteriler bunu seviyor, çünkü kendi programlarına göre izleyebiliyor ve paydaşlarıyla paylaşabiliyorlar.
Birden Çok Kod Tabanı İçin Teknik Sistemler
Birden çok kod tabanını yönetmek, organizasyon ve araçlarda disiplin gerektirir. İşte kullandıklarım.
Her proje, tutarlı bir yapıya sahip kendi dizininde yaşar. Müşteri adını ve proje adını içeren bir adlandırma kuralı kullanırım; bu, bir şeyleri bulmayı kolaylaştırır. Her projenin; kurulum talimatları, mimari notlar ve kimlik bilgisi referansları (asla düz metin olarak saklanmaz, bir parola yöneticisini işaret eder) içeren yerel bir README'si vardır.
Git hijyeni kritiktir. Açıklayıcı dal adları kullanır, anlamlı commit mesajları yazar ve işi asla commit edilmemiş bir durumda bırakmam. Gece dizüstünü kapattığımda her değişiklik commit edilmiş ve push edilmiştir. Bu, veri kaybına karşı koruma sağlar ve kaldığım yerden devam etmeyi kolaylaştırır.
Docker, farklı geliştirme ortamlarını yönetmek için paha biçilmez oldu. Her projenin bağımlılıkları konteynerleştirilmiştir; bu da çakışan veritabanı sürümleri, çakışan Node.js sürümleri ya da başka ortam sorunları yaşamam anlamına gelir. Projenin Docker Compose dosyasını çalıştırırım ve her şey çalışır.
Finansal Taraf
Serbest iş geliri, bir maaşın ötesinde finansal güvenlik sağlar. Herhangi bir tek işverene bağlı olmayan, ikinci bir gelir akışıdır. Döviz dalgalanmaları ve enflasyonun sürekli birer kaygı olduğu Türkiye'nin ekonomik ortamında, gelir çeşitlendirmesine sahip olmak bir lüks değil, sağduyulu bir planlamadır.
Serbest işimi, tam zamanlı eşdeğer ücretlere kıyasla bir prim ekleyerek fiyatlandırırım. Bu kasıtlıdır. Sınırlı müsaitliğim, projeler konusunda seçici olmam gerektiği anlamına gelir ve prim fiyatlandırması, doğal olarak hızdan çok kaliteye değer veren müşterileri filtreler. Aynı zamanda kişisel zamanımın fırsat maliyetini de karşılar.
Yaptığım Hatalar
Hayal edebileceğiniz her hatayı yaptım. Aynı anda fazla proje üstlenerek kaçırılan teslim tarihlerine ve strese yol açtım. Proje kapsamını hafife alarak gece yarısını geçen akşamlara neden oldum. Teslim tarihlerinin peşinden koşarken sağlığımı ve ilişkilerimi ihmal ettim.
En büyük hata, sınırları yeterince erken koymamaktı. Serbest çalışmamın ilk yılında pazarlarımı korumadım. Haftada yedi gün çalıştım ve etkilerini aylar içinde hissettim; azalan odak, düşen kod kalitesi ve eskiden keyif aldığım işe karşı büyüyen bir küskünlük. Zorunlu bir izin günü uygulamak, yaptığım tek en önemli değişiklikti.
Bir diğer hata, yeni teknolojiler öğrenmek amacıyla uzmanlık alanım dışındaki projeleri kabul etmekti. Müşterinin parasıyla öğrenmek profesyonelce değil. Artık yalnızca ilk günden kıdemli seviyede teslimat yapabileceğim projeleri kabul ediyorum. Yeni bir şey öğrenmek istersem, bunu kişisel projelerle kendi zamanımda yaparım.
Buna Değer mi
Evet, ama herkes için değil. Tam zamanlı çalışırken serbest iş yapmak; disiplin, zaman yönetimi becerileri ve işten gerçekten keyif almanın belirli bir bileşimini gerektirir. Akşam kod yazmak bir angarya gibi geliyorsa, bu düzen gelişime değil tükenmişliğe götürür.
Benim için işliyor, çünkü bir şeyler inşa etmekten gerçekten keyif alıyorum. Projelerin çeşitliliği, serbest işin özerkliği ve finansal faydalar, ödünleşmeleri buna değer kılıyor. Ama ne zaman geri çekileceğim konusunda kendimle her zaman dürüstüm. Bazı aylarda, tam zamanlı işim yoğun olduğu ya da dinlenmeye ihtiyacım olduğu için sıfır serbest proje alıyorum. Bu esneklik, sürdürülebilirlik için temel önemde.
Temel içgörü şu: tam zamanlı çalışırken serbest iş yapmak bir sprint değil, bir maratondur. Bunu uzun vadede sürdüren yazılımcılar, enerjilerini koruyan, dürüst sınırlar koyan ve amacın daha meşgul değil daha iyi bir kariyer olduğunu unutmayanlardır.