Mert Sarac

Developer, Entrepreneur, Geek

Bir yazılımcıyı neler mutsuz eder?

İnternet girişimlerinin tavan yaptığı, akıllı telefonların herkesin cebine girdiği, geniş bant İnternet’in neredeyse her eve geldiği 2013 yılında şirketlerin can damarı da IT departmanları oldu. Bu sektörün içinde olanlar da farkındadır ki son yıllarda çok ciddi bir iş değiştirme trafiği mevcut. Peki ama neden bu yazılımcılar çalıştıkları yerde mutlu olamıyor? Bir yazılımcıyı ne tatmin eder?

Aslında çoğu çalışan için aynı durum geçerli: çalışmak için yaşamıyoruz, yaşamak için çalışıyoruz. Bu durumda da ortaya daha iyi yaşamak için ne yapmalı sorusu çıkıyor.

 

İnsani çalışma saatleri

Sektör gereği süreklilik halinde devam eden “esnek çalışma saatleri” konusu başlıca sıkıntı. Bu konunun bu sektör için bir çözümü yok, bunu kabullenemeyen bir kişinin meslek seçimini gözden geçirmesi gerek. Fakat konunun farklı bir boyutu da var. Gecesini gündüzüne katıp çalışan bir yazılımcıya “sabahları daha erken gelmelisin“, “bu sabah da geç kaldın” baskıları uygulandığında bu durum zamanla yazılımcının motivasyonunu kaybetmesine sebep oluyor. Tabii bu da iş kalitesine yansıyor ve yapılan yanlışlardan sonra gündüze katılan gecelerin sayısı daha da artmak zorunda kalıyor. Bu kaosun sonu ise iş değiştirmeye varıyor.

Tatmin olmak

İster ego ister şımarıklık deyin, her insan kendisini iyi hissetmek ister. Sektör olarak ele alırsak bir yazılımcının tatmin olabileceği birkaç şey mevcut. Bunlardan birisi neredeyse her sektör için geçerli olanla aynı: para. Yazılımcının ne iş yaptığını tam olarak anlamayan ya da yaptığı işe saygı duymayan bir patron karşısındaki yazılımcının o konuma gelebilmek için ne kadar çabaladığını fark edemeyebiliyor. Yeri geldiğinde 20 dakikada yapılan bir iş, aslında yıllarca edinilen bilgiler sayesinde 20 dakika sürüyor. Maddi anlamda tatmin olmayan ve kafasında sürekli para hesaplarıyla uğraşan bir yazılımcının da iş performansında azalma yaşanacağını tahmin etmek için çok da düşünmeye gerek yok. Üstelik başka bir yere geçtiğinde daha fazlasını kazanabileceğini biliyorsa; bu o yazılımcının kaybedilmesine kadar varabilir. Fakat çoğu yazılımcının kendini tatmin edebileceği bir yol daha var: yaptığı işten keyif almak.

Bunu biraz daha açacak olursak kısa deadline süreleri ile baltalanmamış, kullanmak istediği yeni teknolojiler konusunda kısıtlanmamış, ne istediğini bilmeyen bir proje yöneticisi ile revizyonlar arasında boğulmamış ve takdir gören işler yapmasına olanak tanınmış bir yazılımcı gitmek yerine kalmayı seçmek için kendisine bir sebep yaratır.

Takdir görmeden eleştirilmek

Kendisine verilen bir projenin daha iyi olabilmesi adına aslında kendisinden istenenden de fazlasını verebilmek adına yeri gelip sevgilisiyle sinemaya gitmeyen, yeri gelip sabaha kadar uğraşan bir yazılımcı kusursuz bir iş teslim ettiğinde takdir görmüyorsa fakat yaptığı en ufak hata ya da eksiklikte ağır negatif eleştirilerle karşılaşıyorsa, bu eleştiriler yapılırken önceki üstün performansları görmezden geliniyorsa bu durumda motivasyon kaybı kaçınılmaz olacaktır.

Kariyer planı ve eğitim imkanları sunmuyor olmak

Aslında eğitim imkanları dendiğinde çoğu kişinin kafasında şirketlerin verdiği ücretsiz eğitimler ya da masrafını şirketlerin karşıladığı eğitimler canlanıyor. Bunun da gerekli olduğuna inansam da aslında eğitim imkanları derken burada farklı bir konuyu da ele almamız gerekiyor: kendini geliştirmeye fırsat bulamamak.

Gerek yoğun çalışmaktan ötürü, gerekse öğrendiklerini uygulaması için kendisine fırsat verilmiyor olmasından ötürü bir yazılımcı sürekli aynı teknolojiler üzerinden aynı işleri yaparak monotonlaştırılırsa, bu yazılımcı kendisini köreltmek istemeyecektir. Aslında bu başlık altında bahsettiğimiz ilk konu yazılım şirketlerinin ücretsiz etkinliklerine katılabilmesi için yazılımcıya izin verildiği taktirde şirketin cebinden para çıkmadan dahi çözülebilir.

Buradaki bir diğer sorun da çoğu şirketin yazılımcılar için bir kariyer planı sunmuyor oluşu. Junior Software Developer pozisyonunda işe aldığı bir çalışanın Senior aşamasına eriştiğini fark edemeyen, fark etse dahi daha yüksek ücretler vermemek adına onu bu pozisyona yükseltmeyen şirketler, başka bir şirketin üst pozisyonu teklif etmesi durumunda yazılımcısını kaybedebilir.

Çalışma ortamında mutsuz olmak

Bu bahsedeceğim konu çok kalmadı ama halen uygulayan birkaç büyük teknoloji şirketi biliyorum. Neden mi bahsediyorum? Kıyafet zorunlulukları. Çoğu zaman müşteriyle muhatap olmadığı, sabahtan akşama kadar oturduğu yerde kahvesini içerek kod yazan bir çalışanı kendisini rahat hissedeceği kıyafetler yerine takım elbisenin içine sokarsanız, hatta ve hatta donanım tarafıyla da uğraşan bir kişiye bunu yapıp takım elbiseyle kasanın içindeki HDD’yi sökmesini beklerseniz bu da motivasyon kaybına sebep olacaktır.

Fakat bu konu da sadece bununla bitmiyor. Agresif yöneticiler de çalışanın kendisini mutsuz ve huzursuz hissetmesine sebep olan bir etken. Çoğu zaman konu kendisi ile ilgili olmasa dahi çalışma ortamında oluşan bir gerginlik kısa sürede ortamdaki herkesin üzerine çöker. Bu konu hakkında Alemşah Öztürk‘ün Patron şirketlerinde işler hep zor ilerler! yazısını da okumanızı kesinlikle tavsiye ederim.

Fikirlerini dile getirememek

Bu durum genelde proje yöneticileri ile yaşanmakta fakat bir önceki maddede bahsettiğim “Patron şirketlerinde işler hep zor ilerler!” yazısını okuduysanız bu kişi patron da olabilir. Eğer ortada bir yazılım analisti yoksa, yapılacak işin nasıl yapılacağına, hangi teknolojilerin var olacağına yazılım bilgisi güçlü olmayan birisi karar veriyorsa ve yazılımcı buna itiraz edip fikirlerini dile getirdiğinde önemsenmediğini ya da kendisiyle alay edildiğini düşünüyorsa ikinci maddede bahsettiğimiz tatmin olmak başlığının yaptığı işten keyif almak kısmını bu yazılımcının tadamayacağını söyleyebiliriz.

Bu konuya örnek vermek gerekirse Android konusunda sıkı bir takipçi olan bir yazılımcının bir Android projesinde “bakın son versiyonda işletim sistemine bu özellik de geldi, bunu da x aşamasında kullanıcıya sunarsak kullanıcı deneyiminin artmasını sağlayabiliriz” demesi üzerine “vakit almadan hızlıca bitirelim” cevabını almasını gösterebiliriz. Bu durumun sonu ise daha kötü, uygulama yayınlandığında yorum yapan kullanıcılar yazılımcının yapmayı teklif ettiği özelliğin olmamasından yakınıp bunun olmamasını da yazılımcıya mal eder.

Şirket Vizyonu

Gerek büyüme planları, gerekse yukarıda bahsettiğim konularda yazılımcının sahip olduğu vizyon ile şirket vizyonu uyuşmuyorsa bu yazılımcının kaybedilmesine sebep olacaktır. Fakat buradaki sorun ne yazılımcı ne de patron tarafından çözülebilecek bir şey. Bu aşamada IK uzmanları çalışan seçerken şirket konusunda dürüst bilgiler verip, çalışandan da aynı dürüstlükle yanıtlar alarak doğru kişiyi seçmek zorundalar.

İyi bir mobil uygulamayı öne çıkaran detaylar nelerdir?

Elimizdeki ufak cihazların ve tabletlerin bilgisayarlara kafa tuttuğu şu günlerde Internet sayfaları da yavaş yavaş mobil uygulamalara dönüşmeye başladı. İyi bir web sayfasının ayırt edici özelliklerini biliyoruz. Peki ya mobil uygulamalar?

Aslında şu anki mobil teknolojilere bakacak olursak halen taşların tam olarak yerine oturmadığı, her gün bir öncekinden daha iyisinin yapılabildiği bir manzaraya bakıyor olsak da sıkça yapılan yanlışlar ve olması gereken temel şeyler belirli durumda.

İyi bir mobil uygulama nasıl olmalı, nasıl olmamalı?

İyi bir mobil uygulama için temel olarak cihazın sunabildiği tüm özellikleri en iyi şekilde kullanabilen, cihazın genel arayüzüne uygun hazırlanmış kullanıcı dostu bir tasarıma sahip, tamamen native hazırlanarak performansı olumsuz yönde etkilemeyerek kullanıcıya elindeki cihazı özel hissettirebilecek uygulamalar diyebiliriz. Aslında çok ufak detaylar ile rakip uygulamalarınızdan bir adım önde olmak hiç de zor değil. Örnek verecek olursak kullanıcının şehir seçmesi gereken bir ekranda GPS konumunu kullanmak veya ekrandaki verileri yenilemek için cihazı sallamasını istemek gibi detayları bu sınıfa katabiliriz.

Ancak önemli detaylardan birisi de uygulamanın tasarımı. Aslında tam olarak tasarım demek de doğru değil çünkü burada bahsedeceklerim UI (User Interface) hakkında değil UX (User Experience) hakkında olacak. Cihazdaki tüm uygulamalarda ekranın üst köşesinde yer alan bir butonu kendi uygulamanızda ekranın alt köşesine almanız durumunda bu davranış kullanıcı alışkanlıklarına ters düşecek ve olumsuz yorumlar almanıza sebep olacaktır. Standartların dışına çıkmak size farklılık katacak olsa da bu farklılıkların kullanıcıların hoşuna gitmeyecek ya da işini zorlaştıracak şeyler olmasından kaçınmalısınız. Yine örnek vermek gerekirse ekrandaki görüntünün hoş olması için küçülttüğünüz bir butona dokunmatik cihazında basmak isteyen bir kullanıcı bu butona basabilmek için birkaç kez çaba sarf ediyorsa iyi tasarımlı ama kullanışsız bir uygulamaya sahip olmuş olacaksınız. Bir diğer dikkat etmeniz gereken yer de cihazda herkesin radio button kullandığı bir yerde gereksiniminiz olmadığı halde checkbox kullanmak gibi kafa karıştırıcı şeyler yapmamak.

Son zamanlarda sıklıkla karşıma çıkan ve bana kalırsa arasında shortcut ile bir farklılık bulundurmayan browser tabanlı uygulamalar ise rakiplerine göre her zaman birkaç adım geride olacaktır. Yaşanan performans sorunları, arayüzün kalitesinin düşük olması, kullanım hissiyatının azaltılmış olması gibi detaylar sadece kötü bir uygulamaya sahip olmanızla sonuçlanmayacak, aynı zamanda markanız için de değer kaybı yaratacaktır. Bunun en temel sebebi kullanıcıların binlerce lira verip aldıkları cihazlarından en iyiyi beklemeleri, ancak sizin uygulamanızın bunları sunamamasından kaynaklanmaktadır. Bu bağlamda bir mobil uygulama çıkartmak yerine mobil cihazlarda sorunsuz çalışabilen bir mobil web sayfası veya micro site hazırlamak çok daha olumlu sonuçlanacaktır.

Son olarak da yaptığınız uygulamalarda performans konusuna özellikle dikkat etmenizi tavsiye ediyorum. Aslında burada performans dediğimde çoğu kişideki ilk algı uygulamanın açılış süresi, ekranların geçiş süresi, bir işi yapma süresi gibi şeyler. Ancak bir uygulamanın pil kullanımı, gereksiz data transferleri yapması gibi detayları da performans altında incelenmesi gereken kriterler. Örneğin bir kullanıcının hangi şehirde olduğunu anlamak için lokasyon bilgisini operatörden almak yerine 8 farklı GPS uydusuna bağlanarak almayı tercih ederseniz bu size hem hız ve zaman kaybı hem de gereksiz pil tüketimi olarak geri dönecektir. Bunun yerine kullanıcının IP adresinden de kullanıcının bulunduğu şehri neredeyse kesin şekilde algılayabilirsiniz. Aynı şekilde ekran ilk açıldığında kapalı gelen bir sekmenin veya bir bölümün içerisindeki veriyi ekran oluşturulurken internetten almak ve parse etmek yerine kullanıcı burayı görüntülemek istediğinde bu işlemleri yapmak size performans açısından değer kazandıracaktır.

Web üzerinden alınan verilerle ilgili belirtmek istediğim son detay da uygulamada cache kullanılması ile ilgili. Örneğin restoranlar hakkında bilgi veren bir web siteniz var ve bu web sitesi için mobil uygulama yapmaya karar verdiniz. Web sitenizde kayıtlı 1000 restoran bulunuyor ve siz bunları bir liste olarak kullanıcıya sunuyorsunuz. Böyle bir sitede saat başı restoran eklenme ihtimali oldukça düşük olduğundan restoran listesini bir kez alıp, bunu cihazda saklayarak diğer ekranlarda bu veri için request yapılmasını engellemek size performans kazandıracak önemli bir detay olabilmektedir. Bu bağlamda Windows Phone ve Silverlight’ta her türlü veri objesinin Isolated Storage altında saklanabildiğini hatırlatmayı faydalı görüyorum.

Mobil uygulamalarda başlangıç seviyesindeki başarı kriterlerini anlattığım ve kişisel görüşlerime de yer verdiğim bu yazının faydalı olması dileğiyle.