Yazılım şirketleri, mühendislik mesleği seviyelerine dikkatlice oluşturmalı ve çalışanlardan ne beklendiğini, roller arasındaki farkı ve kariyer gelişimi için alanları açıklayan bir kariyer merdiveni sağlamalıdır. Promosyonlar geçmiş performans için ödüllendirilmelidir. Ancak, bireyin bir sonraki pozisyona uygun becerileri de geliştirmiş olmalıdır. Bu yazımda yazılım mühendisliği için uygun olduğunu düşündüğüm kariyer merdiveni ve rollerin nasıl olması gerektiği hakkında konuşacağım.
Yazılım Mühendisi I (Junior)
Beklentiler: Tanımlanmış görevleri yerine getirir, hataları araştırır ve düzeltir, testler yazar. Var olan problemleri söyler ve görevi engelleyen durumları bildirir. Takım içinde var olan operasyonlarda görev alır, hata yapmamaya dikkat eder.
Yazılım Mühendisi II (Mid-Senior)
Beklentiler: Küçük veya orta derece bir projeyi tek başına yürütür. Büyük görevleri alt görevlere böler, yöneticilere durum güncellemeleri verir. Test planları yazar. Operasyonlar da sorumluluk alır. Ölçülebilir hedefler belirler ve onları karşılar. Takım içerisinde yapılan kod değişiklerini aktif olarak inceler. Bir önceki seviye yazılım mühendislerine rehberlik eder.
Yazılım Mühendisi III (Senior)
Beklentiler: Büyük bir projeyi tek başına üstlenir. Proje için görev dağılımlarını yapar. Takım ya da bölümdeki diğer projelere rehberlik eder ve tasarımlarında yardımcı olur. Yazılım mühendisliğinde gerekli olan uygulamaları en iyi şekilde yerine getirir ve takım arkadaşlarının da yerine getirmesi için de çalışır. Takımlar arası iletişimi sağlar ve takım için hedeflerin belirlenmesinde rol oynar.
Yazılım Mühendisi IV (Principal)
Beklentiler: Ekipler ve bölümler arası paylaşılan altyapıyı oluşturur ve bu altyapıya yön verir. Yeni teknolojileri seçmek, bölüm ya da şirket içi kültür ve süreçleri tanımlamak için üst yönetim ve diğer yazılımcılar ile birlikte çalışır. Kritik bir alanda derin teknik uzmanlığa sahiptir.
Yazdığımım bu son seviyeden sonra çalışılan şirketin büyüklüğüne göre birden fazla rol olabilir. Yukarı doğru çıktıkça, bireylerin şirket içerisindeki bilinirliği ve etkinliği doğal olarak artar. Büyük şirketler genelde hem bireysel olarak hem de lider olarak ilerlemek için kulvarlar sunar. Benim şahsi kanaatim, liderlik pozisyonlarının Yazılım Mühendisi III seviyesinden başlaması. Daha önce başlaması takım yönetimi açısından zor olabiliyor.
Hazır liderliğe değinmişken, yazılım dünyasında uygulanan ama genelde çalışmayan bir yönteme değinmek istiyorum. İyi bir yazılımcıdan iyi bir yönetici olmasını beklemek abesle iştigal etmekten başka bir şey değil. Bireysel beceriler ile liderlik becerileri büyük farklılıklra gösterebilir. Ayrıca, ilk birkaç sene liderlik yapmak zor da olabilir. Eğer takım arkadaşınız yeni müdür olmuşsa ona zaman tanıyın, hatta geri bildirimde bulunun. Çünkü, o da nasıl yapması gerektiğini tam kestiremiyor.
Son olarak yukarıda belirttiğimiz seviyeler bireylerin ne kadar süre çalıştığından ziyade beklentileri ne kadar karşıladığıyla ilgili. Bazı bireyler 20 sene çalışır, ikinci seviyeye çıkabilir. Bazı bireyler ise 10 sene içerisinde dördüncü seviyeye gelir. Her ikisi de olağan bir durum. Fakat, tecrübeli bireyler için bu durumları kabullenmek bazen zor olabilir. Önemli olan var olunan seviyede beklentileri fazlasıyla yerine getirmek. Nitekim büyük şirketlerde, üçüncü seviyeye geldikten sonra, kimse size neden yukarıya çıkmıyorsun demez. Bu seviyeden sonrası genelde isteğe bağlı. Yukarıya çıkmak demek daha fazla sorumluluk ve daha fazla stres anlamına geliyor. Mali açıdan çok büyük farklar yoksa, belki de üçüncü seviyede kalmak daha mantıklı olabilir.
Bu yazımda genel olarak yazılım mühendisleri için kariyer merdivenini ele aldım. Dört farklı seviye mühendislik ve bunlardan beklentileri gözden geçirdim. Sonrasında, kısaca liderlik ve bireysellik arasındaki farka değindim.