Betül Sandıkçı yazdı.
¶İçerik
Figure 1: Photo by Ian Schneider on Unsplash
Merhabalar sevgili Mobilen okuyucuları, bu sayı için yazacağım yazıma tamamen tesadüf eseri Jorge Castillo’nun Jake Wharton’la yaptığı röportajı okuyunca karar verdim.
Röportaja ilk denk geldiğimde bir an durdum açıp okumadan önce. Çünkü bir Android Developer olarak malum topluluk içinde bir efsanedir kendisi. Bazıları abartıldığını düşünürken bazıları da hakkında kilise içindeki İsa’dır ve tartışmasızdır demektedir. Ama herkesin üzerinde mutabık olduğu bir konu varsa o da Jake’in üretkenliğidir.
Topluluğu’u bir kenara bırakırsak onunla ilgili bildiklerim, duyumlarım, izlenimlerim neler? Bir çırpıda aklıma gelenleri özetlemek gerekirse; Androidle ilgili eksik ya da ağır işleyen ne varsa Jake’in düzenlemek için elini atıp yazdığı bir kütüphane var. Androidde güzel, kullanışlı ne varsa da Jake temellerini atmış ve sonunda Google da bu geliştirmeleri içeri almış, SDK’nın parçası haline getirmiş. Tüm bunların üstüne tabiki üretkenliği ve biraz da lafını sözünü sakınmayışı geliyor aklıma. Sakınmaması için sağlam gerekçeleri var ne de olsa :).
¶Android’e Başlama Macerası
JW ve Android hikayesi Google’ın 2007’de 10 milyon dolar ödüllü Android Developer Challange’ı açıklamasıyla başlıyor. JW daha üniversitenin henüz başında ve challange
’ı kazanarak gerçek hayatta bir işte çalışmak zorunda olmamak için denemelere başlıyor. Challange
için tasarladığı uygulama bir çizim uygulaması. İşin içine girdikçe ve derinleştikçe kazın ayağının farklı olduğunu anlıyor. Bu 10 milyon basitçe kazanılabilecek bir miktar değil. Yeterince iyi olmadığını düşündüğü için projesini göndermekten vazgeçiyor. İyi ki bu tekrarlayan bir hastalık haline gelmemiş :D.
Android Geliştirici olmaya karar verene değin daldan dala atlamış, başka alanlar denemiş. Ama en sonunda Androidde devam etmeye karar vermiş. Karar verme sebebi benimle ve birçok güncel Android Geliştirici ile aynı. Mac alacak kadar parası yok, Microsoft ölüyor ve gelecek mobilde. Gayet rasyonel. Romantik bir gerekçesi yok. Çünkü hiç kimse bir sabah uykusundan Android Android Android diyerek ya da başka bir teknolojiyi sayıklayarak uyanmıyor. Seçimlerimiz güncel gerçeklerimize ve bu gerçeklerle örtüşen tutkularımıza bağlı olarak şekilleniyor.
JW’ın Android geliştici olma hikayesi tanıdık evet. Ama farklılaşan kısmı sonrası. JW’ın buraya kadarki hikayesinde beni düşündüren ve ibret aldığım şeyler var. Bir kez daha günceli takip etmenin önemi hemencik yakaladı beni. Sonunda bir ödül kazanılmayacak bile olsa bir müsabakaya girmek kendini, sınırlarını zorlamak çok önemli. Kaybetsen bile kazandıracak bir yöntem bu her şekilde. Tatmin edici bir deneyim. Burada Google’ın ve community’nin etkisinden de bahsetmek lazım. Sınırlarını zorlaman için birilerinin bir sınır koyması lazım doğal olarak önce. Community’ler ve teknoloji sahipleri de bu tür challangelar ile hem safları sıklaştırıyor hem teknolojilerini daha geniş çembere yayıyor hem de genç yeteneklerin ortaya çıkmasına vesile oluyor. Bence burada kökten uca kadar alınacak ibretler var. Çalışanların talepleri ve onları yönetenlerin vizyonu açısından. Takımlar arası müsabakalar keyifli, sıradışı ve eğlenceli olabilir mesela. Kim bilir eğer uslu çocuklar olurlarsa Şirinleri görmenin yanında nice JW’lar bile sıyrılabilir bu tür müsabakalarda.
Hikayede dikkatimi çeken noktalardan diğer birisi de başlangıç için bir çizim uygulaması yapmayı seçmiş olması. Yeni birisi başlarken sonucu görmek istiyor. Çok doğru bir yerden başlamış kanaatimce. Artık ne haddimeyse JW’a doğru başlamış yanlış başlamış demek :), Ama dedim gitti işte. Mobile özel o ekranı tanımak açısından, yaptıklarının direk sonucunu görmek açısından aşırı doğru bir yöntem bence. Ben de Compose’u öğrenirken iç içe kareler çizerek başlamıştım. İnsan neyi doğru yapıp yapmadığını somut olarak, uğraşmadan görmek istiyor. Deneme yanılma şeklinde öğrenmede denedikten sonra yanılıp yanılmadığını anlayana kadar geçen süre kısalıyor ve verimlilik artıyor böylece. Bir konuyu yeni öğrenenlere UI’da kısa yoldan tepki alabilecekleri şekilde başlatmak güzel bir yöntem olabilir ve genç yetenekler için özellikle uygulanabilir.
Jake ilk işine Android Developer olarak başlamıyor. Java miras kodlu bir server’da çalışarak başlıyor. Onun zamanında moda C# yazarak para kazanmak. Ama nedense talihin yardımıyla Java ile başlıyor mesleğe. Projeyi kurcalarken yeni şeyler keşfediyor. Projeyi Git’e geçiriyor. Projenin altyapısını farklı bir modele taşırken operasyonun her yönünü görüyor. Bu deneyimden sonra projenin altyapı görüntülemesini bir mobil uygulama üzerinden kontrol etme fikri aklına geliyor. Tam da bu anda ta taaa ilk açık kaynak kodlu kütüphanesini yayımlıyor ve bir Android Geliştiricisi oluveriyor. Sonrasında meşhur şirket Square’e Android Geliştirici olarak geçiyor. Hikayesine ve üretmeye orada devam ediyor.
¶Açık Kaynak Koda Bakışı
Açık kaynak koda geliştirme yapmaya tamamen bencilce bir yerden başlıyor. Kendi ihtiyaçlarını karşılamak için proje üretiyor ve bunu Github’a yüklüyor. O zamanlar private repolar ücretli olduğu için de private yapmaya gerek duymuyor. Böylelikle kod paylaşma serüveni doğal olarak duygusal sebeplerle başlamış oluyor :D. Bir kütüphaneyi ya da aracı yazarken community’nin ya da başkalarının ihtiyaçlarını gözeterek ve daha iyi olsunlar diyerek başlamıyor. Niyetinde kimseyi memnun etmek de yok. Kendi yazdığı ve paylaştığı projelere başkalarının dahil olması, birlikte üretmek zevkli, keyifli, güzel ama motivasyon kaynağı bu olamaz düşüncesinde.
Bunalmamak ve motivasyon kaybına uğramamak için başkalarıyla gerektiğinde empati yapıyor gerektiğinde de onları görmezden geliyor. Motivasyonunu korumak için yaptığı şey çok basit. Temelde benim neye ihtiyacım var diye düşünmek ve ona göre hareket etmek. Sıfır noktasında düşüncelerle o kadar boğuşuyoruz ki başlamadan bırakıyoruz işlerimizi. Maskeyi önce kendimize takmalıyız.
Açık kaynak kodlu yazılım üretmenin en faydalı yanı başka insanlarla yardımlaşmak. Profesyonel hayatta çalışamayacağın, imkanın olmayacak insanlarla aynı projede yer almak çok tatmin edici. Takip ettiğin, imrendiğin belki de onların yerinde olmak istediğin insanlarla bir anlamda iş arkadaşı olma şansı sunuyor açık kaynak koda destek vermek. Minimumda başkalarına yardım etme ve faydalı olma duygusu yaşatıyor insana. Maksimumda ise profesyonel olarak sonsuz ihtimallerin kapısını açıyor. Bu aralık zannımca fena bir aralık değil bir geliştirici için.
Açık kaynak kodu geliştirirken Jake’in tavsiyesi kodu olabildiğince küçük ve odaklı tutmak. Her %15 fazla kod için aynı oranda geliştiriciye ihtiyaç var. Bu da bir süre sonra kar topu etkisi ile baş edilmez bir hale getiriyor projeyi. Herkesin ihtiyaçlarına kulak vermek ve ihtimallere göre geliştirme yapmak, sonrasında kodun sürdürülmesini imkansız hale getiriyor. Sürdürülemeyen kod da ölmeye mahkum oluyor. Çünkü bir süre sonra yapılması gereken hayati geliştirmeler bile yapılamayacak hale geliyor. Bu aslında sadece açık kaynak kod için değil herhangi bir yerde yazdığımız bir fonksiyon için de geçerli.
İhtiyacı belirleyip bunun dışına çıkmamak anahtar nokta. Solid’ in S’i olan Single Responsibility prensibi burada devreye giriyor. Ancak bunu uygulayabilmek prensibin anlamını bilmekten elbette çok çok daha zor. İster açık kaynak ister küçük bir method ne olduğu farketmeksizin baştan amacını iyi belirlemek ve sonrasında buna sadık kalmak ve en önemlisi Hayır demenin gücünü kullanmak. Doğru yerde ve zamanda “Hayır diyebilmek” çok önemli ve işlerin karmaşıklaşmasını engelliyor. Memnun edicilik değil iş bitiricilik önemli oluyor günün sonunda.
¶JW’nin Google Macerası
Gelelim Jake’in kimilerine göre yarıda bıraktığı Google tecrübesine. Tabiki doğası gereği magazinsel bir mevzu olduğu için dikkat çekmesi normal. Benim anladığım Square’den Google’a geçerken bir yapılacaklar listesi varmış elinde. Kaldığı süre boyunca da bunların yapılması için domino etkisi yaratmayı başarmış. Ancak günün sonunda fazla bürokrasi ve teknik sınırlamalardan dolayı yılmış, usanmış. Geliştiriciye geliştirmek ile gerçek dünya problemlerine çözüm geliştirmek arasında kalınca da gerçek dünya problemlerini tercih etmiş. Bu benim yolum benim tercihim diyor. Square’deki macerasına kaldığı yerden devam etmeye karar vermiş ve geri dönmüş.
Verimli hissedemediği noktada bırakmaya karar vermesi oldukça ilham verici. Her ne kadar kolay gibi görünse de geldiğin yere geri dönmek cesaret gerektiren bir şey. Herşey bir kenara sadece egosal açıdan bile zor gelebilir. İçeride dışarıda olduğu kadar etkin olamadığını farkettiğinde gemiyi terketmeyi seçmiş. Ben mesela yapabilir miydim diye düşünüyorum? Bir yönüm çok yapılabilir dese de işin için de olduğumda bu kararı alırken oldukça zorlanacağımı, tüm cesaret toplamam gerekeceğini biliyorum. Neticede “skin in the game” diye bir şey var.
Jake’in CashApp’teki günleri aşırı planlı, düzenli, moda mod geçmiyormuş. Genellikle zamanının büyük kısmını açık kaynak koda ayırıyormuş. Kalan zamanda da küçük işleri toparlamak, PR’ları kontrol etmek, işleri adımlamakla geçiyormuş. Square açık kaynak kodu mesai dışı bir iş gibi görmüyor aksine bizatihi işin kendisi olarak görüyor ve destekliyor. Çünkü yeteneği içeri almak kadar onu tutmak, beslemek ve parlatmak da çok önemli. Takımlara ve yöneticilere düşecek bir hisse de bu olabilir belki.
Toplantı konusu teknik insanların profesyonel dünyada en sıkıcı bulduğu konuların başında geliyor. JW bu konuda kalabalık olanların seyrek olması en iyisi, bunun dışında bireysel bağlantılar daha verimli oluyor görüşünde çoğumuz gibi. Toplantı konusunda da Solid’in S’ini kullanmakta fayda var gibi :D .
İşin başındakilere en önemli tavsiyelerinden birisi ürünün vizyonuna kendinizi aşırı kaptırmayın. Böyle olursa kişi kendi başarı duygusunu ürünün iniş çıkışlarına bağlayabiliyor. Ancak önemli olan zorlu teknik sorunları bulmak ve çözmeye odaklanmak. Ürünler geçicidir oysa bu yetkinlikler kalıcıdır. Özetle Jake ürünü önemseyin ama yeteri kadar, bir dengesi olsun görüşünde. Odaklılık konusunda denge bulunması gerektiği ve bıçağını bileylemenin en önemlisi olduğuna katılıyorum. Senin bıçağın keskinse gelen her şeyi kesersin. Ama bıçağı kütmemek için de neyi ne kadar keseceğini bilmelisin ;) .
Üretkenliği korumak için Jake’in taktiklerinden birisi çok fazla çalışmaya gerek kalmadan yapılabilecek bir sürü kolay görevleri halletmek. Bu taktik zihinsel olarak gevşemeyi sağlarken, diğerleri gözünde de üretkenliğinizi korumayı sağlıyor . Aynı taktik tükenmişlik hissi yaşandıktan sonra ilerleme hissini yeniden kazanmaya yardımcı olmak için de kullanılabilir.
¶Zaman Yönetimi ve Çocuklu Hayat
Çocuklu hayata geçtikten sonra zamanın daha da önemli bir kaynak haline geldiğinden ve onu korumak ve boşa sarfetmemek için de elinden geleni yaptığından bahsediyor. Kimsenin bölemeyeceği, bildirimlerin kapalı olduğu büyük bloklu zaman dilimleri yaratmak, müsaitliğinin başkaları ile eşzamanlı olamayacağı konusunda beklentileri yönetmek, arta kalan yetişemediği küçük işlerde de başkalarına güvenmek; Jake’in hayatında uyguladığı bazı yöntemler. Yan projelerde çalışabilmek için az az küçük zaman parçalarını değerlendiriyormuş. Aralardaki küçük zaman dilimlerinde az az çalışarak işlere odaklanmak tek bir anda o işi bitirmeye çalışmaktan çok daha motive edici diyor.
Ayrıca zaman kısıtının onu çok daha verimli hale getirdiğini çünkü hangi projelerin zamanını aldığını ve bunların onu gerçekten zaman ayırmaya değip değmeyeceğini düşünmeye zorladığından bahsediyor. Sınırsız beyin gücü ve zaman verildiğinde, aklımıza gelen her yeni şeyin peşine düşeriz. Gerçekten önemli olanın ne olduğunu unuturuz. Ancak sabahları ve akşamları tamamen ortadan kalktığında ve iyi bir uyku ihtiyacı arttığında, o gün sahip olabileceğimiz 2 saatin değeri 10 kat artacaktır. Zamanımız kıymetli, doğru şekilde doğru yerlere harcamalıyız. Zaman en önemli maaliyet kalemidir.
¶Teknik Yetiler, Yöneticilik ve Hobiler
Röportajın kalan kısımlarında Jake Dagger 1 ve 2 arasındaki farktan, hobisi olan araba yarışlarından ve arabalardan, şu anda üzerinde çalıştığı ve onu heyecanlandıran projelerden, ileride yönetici olmayı düşünüp düşünmediğinden ve daha başka küçük küçük bir çok detaydan bahsediyor.
Jake kendisi hakkında Google Experts sayfasında; “Temiz sınırlara, iyi soyutlamalara ve sezgisel API’lere sahip açık kaynak kodlu kütüphaneler ve araçlar üzerinde çalışan Android Geliştiricisi. Bazen. Ayrıca ara sıra bu kütüphanaleri kullanan bir uygulama üzerinde çalışır.” şeklinde tanımlamış. Kendisini tanımlama şekli ve röportaj birleşince çok güzel örtüşüyor zihnimde. Açık kaynak koda odaklanmış motive bir hayatı ve arta kalan zamanlarda çalıştığı CashApp diye bir gerçek hayat projesi var ve teknik blogu da faydali.
Nicedir bildiğim ama röportajdan sonra daha emin olduğum şey ise verimlilik ve motivasyon açısından Hayır demenin gücü. Bu yeti yoksa da öğrenilmeli. Neye hayır dediğimiz ve deme şeklimiz kariyer yolumuzu ve onun zorluklarını belirliyor neticede.
Son olarak da Jake’in bir tavsiyesi ile sonlandıralım yazımızı. Takıldığınız yerde mutlaka mola verin, yürüyüş yapın, çay-kahve için, film izleyin, sonra geri gelin bir daha uğraşın. Çünkü programlama yaratıcılık isteyen bir şeydir, zorlamayın.