Bu yazıda şahsi deneyimime göre bir yazılım mühendisinde algoritma kurgulama ve kodlama yeteneği kadar önemli olan 10 maddeyi yine kendi deneyimime göre önceliklendirerek sıralamak istedim.
- Problem çözme, bir problemi ayrıca çözülebilir küçük parçalara ayırma yeteneği.
Yazılım geliştirme işi problem/sorun çözme işidir. Önümüze çözmemiz gereken bir problem sunulduğunda, daha bilgisayar başına oturmadan çözüme giden yolu parça parça inceleyerek sıraya koyup, netleştirebiliyor olmamız bu mesleğin en temel gereksinimidir.
- İngilizce bilgisi.
Fazla açıklamaya gerek yok. İngilizce bilginiz yoksa bu meslekte sadece belirli yere kadar ilerleyebilir ve kalabalık içinden sıyrılıp üst basamaklara sıçramazsınız. İngilizce bilgisi sadece teknik kaynakları anlamak için değil, globalleşen ve hızla uzaktan çalışma odaklı hale gelen bu sektörde kendinizi geliştirmek ve temel iletişim kurabilmek için de çok önemlidir.
- İletişim ve geri bildirim becerisi.
En iyi kod, yazılmamış koddur. Empati, konuşma, ikna etme, geri bildirim gibi iletişim yollarıyla sorunu çözebiliyorsanız, bu size muazzam bir güç katacaktır. Birkaç yazılım mühendisinin bir araya gelip ortak bir soruna çözüm bulamadıklarına defalarca şahit oldum. Kulağa çok basit gibi gelir, ama gerçekte uygulaması zordur.
- Müşteri odaklılık.
Bir problemi başarıyla çözebilmemiz için önce o sorunu iyice anlıyor olmamız gerekiyor. Bunu da büyük ölçüde müşteriyi iyi dinleyerek, empati kurarak, kendimizi onun yerine koyarak gerçekleştirebiliriz. Bu maddenin önemini vurgulayan ve internette yıllardır dolaşan ünlü bir ‘meme’ var, müşterinin anlattığı, geliştiricinin ürettiği ve gerçekte istenen salıncakların birbirinden ne denli farklı olduğunu anlatır. (İlk Google aramanızda bu görseli bulabilir misiniz?)
- Arama, araştırma, not tutma yeteneği.
Üstteki görseli verdiğim ipuçlarını kullanarak kaç denemede bulabildiniz? İlk denemenizde çıkardıysanız tebrikler. Özellikle arama motorlarında arama, doğru arama cümlesi kurma yeteneği günlük yazılım geliştirme hayatınızda en çok ihtiyacınız olacak becerilerden birisi olacaktır. Deneyimli ve profesyonel yazılımcıyı ayırt eden en önemli özelliklerdendir (diğer ikisi de altta açıklanacak). Bu arada, hala görseli bulamadıysanız bu konuda çalışmanız gerekir, bir ipucu vereyim: customer developer slide meme. Ek olarak, not tutma becerilerine de değinmek istiyorum. Çok iyi not tutan bir junior geliştiricinin bu konuda geri kalan geliştiricilere oranla meslekte çok daha hızlı geliştiğine defalarca şahit oldum diyebilirim. Tur tur not tutma yöntemleri var, size en uygun olanı seçmeye ve uygulamaya çalışın.
- Planlama yeteneği.
En kötü plan plansızlıktan iyidir derler ya hani. Evden çıkarken hedefinizde ekmek ve karpuz almak varsa, önce ağır bir karpuz alarak fırına ve eve onunla geri yürüme planını yapmazsınız. Önce fırına gidip ekmeği alır, sonra en az zahmet gerektirecek şekilde karpuzu alıp eve dönersiniz. Tabii ki istisnai durumları olabilir, ama ana mesajı verebildiğimi umuyorum. Sabah işe başlamadan 15 dakika günün planını çıkarmanız o günkü verimliliğiniz üzerinde inanılmaz derecede artı rol oynayacaktır. Sadece günlük değil, bu konuda pratik yaptıkça haftalık, aylık, yıllık planlar yapabiliyor olmak hedefinize varmanız konusunda çok yardımcı olacaktır.
- Editor/IDE kullanımı ve hata ayıklama kabiliyeti.
Listemin sonlarında olmasına rağmen, üstte sıraladığım ‘soft skills’ler dışında deneyimli ve kaliteli mühendisi diğerlerinden ayıran en öncelikli teknik özelliklerdendir. Hangi editor/IDE kullanırsanız kullanın, mutlaka uzmanı olun ve hata ayıklama özelliklerini derinlemesine öğrenin. İnanılmaz derecede özgüven sunan ve ömürlük üretkenlik kazandıran bir yeteneğiniz olacaktır.
- 10 parmak klavye kullanımı.
Her zaman sahip olmak istediğim, fakat bir türlü uygulama için zaman bulamadığım, uygulandığını gördüğümde saatlerce hayretler içinde izleyebildiğim, mesleki duruşunuza profesyonellik katan bir yetenektir. Yazılımcının, klavye ustasının apoletidir. Bir üstteki madde ile birleşince kombo görevi görür, üretkenlik puanınız tavan yapar.
- Genel düzen ve tertip sahibi olma.
Kişiden kişiye değişkenlik göstermekle beraber, masa düzeninden hayat düzenine kadar her seviyede, temiz, düzenli, estetik ve minimalist yaklaşımla çok daha odaklı, üretken ve mutlu olduğunuzu düşünüyorum. Psikolojik faktörler ve plasebo etkisi de yok değil tabii ki. Ama yine de kullandığım çalışma masası ve monitor, işletim sistemi, sandalye, odanın ışıklandırması, masa üstündeki minimalist düzen ve ona az da olsa renk katan ufak bir bitki, çalışma, üretme ve üretken olma isteğimizi üst seviyede tutmaya yardımcı olur.
- Maymun istahlı ve aceleci olmamak.
Yazılım dünyası (özellikle web geliştirme) her 5-10 yıllık dönemlerde yeni yeni ‘hype’ diye adlandırdığımız, yeni teknoloji, termin ve yaklaşımlara ev sahipliği yapar. Çoğu kısa zamanda sona erer gider, bazılarının kararlı hale gelip uygulamaya geçmesi yıllar alır. Maymun istahlı olup, her yeni çıkan teknolojiyi öğrenmeye ve kullanmaya çalışmak, sonuçlarına katlanamayacağınız negatif sonuçlara sebep olabilir. Bunlar içinde burnout, bugüne odaklanamama, devamlı geri kalma/kacırma duygusu (FOMO) ve başlanıp bitirilmeyen yüzlerce yan proje çöplüğüne sahip olmak gelir. Yeni trend ve teknolojileri takip etmek, ne yaptıklarını yüzeysel olsa da bilmek genellikle kafi olur. Şahsi önerim, stabil, kendini kanıtlamış, en az 3 yıl popüler kullanımda olmuş ‘sıkıcı’ diye tabir ettiğimiz teknoloji seçimini yapıp, onun üzerinde derinlemesine uzmanlaşma yönünde olacaktır.