Bugün 40 yıldır tanımasam da öyleymiş gibi hissettiren dostum Safa Orhan‘ın kahvaltı ve ev-stüdyo konuğu oldum. Kayıt öncesinde, kayıtta ve sonrasında geçen keyifli diyaloglarımız oldu. Hatta 19 Ocak 2020’den bu yana sürdürdüğü podcast yayını olan, 15 dakikalık çevik sohbetler barındıran eğlenceli yayını Çeyrek Saat‘in de ilk fiziksel konuğu oldum :)
Podcast’in konusu da kendisi gibi hızlı bir kararla ortaya çıktı. Kahvaltı sonrası ufaklıklarla güzel vakit geçirdikten sonra çaylarımızı alıp sohbete koyulduk. Tabii konsept gereği 15 dakika ile sınırlı olunca, kayıt dışı kısımda tüm içeriği planladık diyeceğimi sanabilirsiniz ama öyle olmadı. Record tuşuna bastıktan sonra simultane gelişen bir sohbet ortaya çıktı. Gözlerimiz saymakta olan zamanlayıcıda olsa bile :)
Başlarken
Dışarıdan çok fazla pozitif geri bildirim aldığımız meşhur konumuz, yaşantımız. Bu konu üzerinde bir şeyler karalamak istiyordum ama bunun için yeterli motivasyona sahip değildim. Safa’nın yayın teklifi ve yayında her şeyi bir belgesel tadında anlatamamış olmanın burukluğu ile klavyemi kaptım, ve içimden geldiği gibi yazmaya karar verdim.
Birey Olmak
Her şeyden önce insanın tüm beşeri ilişkileri sağlıklı bir şekilde yürütebilmesi için yetişkin bir birey olması gerekir. Bu, hem bu makalenin devamında olacakların temeli, hem de sizlerin yaşantınızda önemli bir yeri olacak bir konu. İnsanlar baskı ve şartlı yönlendirmelerle, başkalarının tercihleri ve neler söyleyeceklerini hesaba katarak yaşamlarını sürdürebiliyor, daha doğrusu nefes alıp verebiliyor.
Unutmamak lazım ki, her birey bir insan. Tercihlerimizi, düşüncelerimizi ve yaşantımızı şekillendirmek bizim elimizde. Bunun için birilerinin size bir şeyler dayatmasını beklemek veya yönlendirmesini beklemek yerine kendinizi harekete geçirip, olduğunuz konumu, olmak istediğiniz konumu ve bu ikisi arasındaki rotanızını doğru belirlemeniz gerekir. En kısa veya en rahat yol olmayabilir. Yolun başlangıcında temiz gözükürken, belki de en kötü yoldan geçiyor da olabilirsiniz. Sizi gideceğiniz yöne götürecek olan şey hedefinizdir.
Hedefinizden vazgeçmeden, ona kilitlenip tam gücünüzle mücadele etmeniz gerekir. Bu sayede birey olmanın farkındalığı ile mücadele edebilirsiniz. Ailenizle bir şeyler yapabilmek, hatta aile olabilmek, önce birey olmayı gerektirir.
Aile Olmak
Yarım doktor candan, yarım hoca dinden eder diye bir söz vardır. Bir şey olabilmek için tüm yükümlülükleri ve gereklilikleri yerine getirmek gerekir. Nitekim aile olabilmek böyle bir şeydir. Çift olmak için önce bir (birey) olmak gerekir. Kendinizi doğru tanımladıktan sonra, sizinle aynı tanımlara sahip insanlar bulmanız gerekir. Aynı candan/kandan olsun/olmasın sizinle aynı hisleri paylaşan insanlarla karşılacaksınız. Kimi bunu anne/baba/abi/abla/kardeş ile bulabilecek kadar şanslıyken, kimileri bunu birlikte uzun vakit geçirdiği ve yediği içtiği ayrı gitmeyen dostlarında bulacaktır. Kimileri de çift olmaya karar verdiği eşinde. Bu konuda kendimi konumlandırdığım yer, beni, belki de Türkiye’nin tek örneği olabilecek bir noktada tutuyor.
Safa’nın deyimi ile:
“Abdullah’ın ✅ Babası ✅ Kendisi ✅ Eşi ✅ Abisi ✅ ve Abisinin eşi yazılımcı ve birlikte aile şirketlerinde çalışıyorlar.”
Eğer bu makale kişisel gelişim konulu olsaydı Dominic Toretto’nun veya Don Vito Corleone’nin aile üzerindeki felsefesi üzerine detaylı bir inceleme bulabilirdiniz ama “aile olmak” bölümü, sadece ana konunun konu bütünleyiciliğini sağlamak için yazılan bir bölüm.
Yazılımcı Olmak
Konfüçyus’un çok sevdiğim bir sözü var. “Eğer sevdiğin işi yaparsan, hayatın boyunca bir kez bile çalışmış olmazsın.” Yazılım geliştirmek kolay bir iş değil. Ekstra zor bir iş hiç değil. Yeteri kadar sabır, analitik düşünce ve problem çözme becerisi ile çoğu şeyi başarabilirsiniz. Doğuştan yeteneğe de ihtiyacınız yok, yeteri kadar sıkı çalışırsanız, yeryüzünde üstesinden gelinemeyecek hiçbir şey yok.
Nitekim benim yazılım maceram da böyle başladı. 1990’larda Cobol, Clipper, DBase, Basic ve Pascal ile sektöre giriş yapan bir babanın evladı olarak, baba mesleğini sürdürmeye karar vermem çok zor olmadı. 2004 yılında ilk html sayfamı www dünyasına gönderdiğimde kendimi çok iyi hissetmiştim. Daha doğmadan evim olan dijital dünyaya sık ziyaretlerim kimseyi şaşırtmadı. Object Pascal, Php, Ruby, Python, Visual Basic, Java, C#, .NET ve daha birçok farklı teknolojiye dokunmak, bu dünyayı daha çekici hale dönüştürdü. Php-nuke, Joomla, vBulletin altyapılarıyla başlayan ve kurumsal seviyede uygulamalar yazarak ilerleyecek bu yolculuk hikayenin dönüm noktasıydı.
Baba mesleğini icra etmenin en kolay ve en zor yanı şüphesiz ki babanızın aynı meslekten olması. El zanaatleri gibi doğrudan usta-çırak ilişkisi ile pekiştirilebilecek bir meslek olmadığı için bizim iş, çoğu meseleyi kişinin kendi algı ve dünyasında pekiştirmesi ile mümkün olabilir. İzlenerek öğrenebilirliğin düşük, ve sürekli neden-sonuç ilişkisini kurmanız gerektiği için başlangıç seviyesinde bile oldukça fazla teorik bilgiye ihtiyacınız var.
Ailecek Yazılımcı Olmak
Kural 1: hatalı commit sahibi tatlı cezasına çarptırılır :)
Baba mesleğini sürdürme geleneği, dijital çağ için henüz ülkemizde yaygın bir şey değil. Etrafımda sektör içerisinden meslektaş akrabaların yer aldığı şirketleri göz önüne aldığımda baba-oğul, kardeş veya eş modellerine şahit oldum.
Bizim gibi baba-oğul (1), baba-kız (2), kardeş (3), karı-koca(4) modelinde başka bir şirket görmedim.
Babamın profesyonel yazılım geliştirme sürecine dahil olup, mevcut çalışma hayatını bırakarak yazılım şirketi kurması ile temelleri 1990’a dayanan ve 2003 yılında ilk adımları atılan ve 2006’da kurumsallaşan bir şirketin bünyesinde 10+ yıllık deneyimle 2. nesil geliştirici olarak devam etmenin gururu ve konforu ile yaşıyorum.
Sanıldığı gibi öğrendiğim her şeyi babamdan öğrenmedim. Ama sanılmadığı gibi öğrenmenin nasıl olacağını okullarda veya teorilerle değil, doğrudan production-ready uygulama üreterek, babamın mentörlüğünde ve ustalığında pekiştirdim.
Karikatürlere konu olan “balık verme, balık tutmayı öğret” sözünü en derinlerde yaşayan ve doğru öğrenme metodolojisini, kriz yönetimini, strateji geliştirmeyi, güncel ticari hayatın gereksinimlerini, hedef kitle analizini, müşteri geri bildirimlerini, satış kanalı yönetimini, satış sonrası hizmetleri, ar-ge süreçlerini, geliştirme süreçlerini ve en önemlisi sorumluluk alabilmeyi öğrenmiş olmak, bunu da uygulamada kademeli olarak deneyimlemek muazzam bir tecrübe kazandırıyor.
Podcast içerisinde süreye bağlı olarak kısa özetten bile daha kısa kurduğum bazı cümlelerin aslında beni ve bizi tanımayanlarca net anlaşılamayacağını düşünmeye başladım. Tarafsız dinlediğimde eksik kalan parçaları tamamlamanın en iyi yolunun yazmak olduğuna karar verdim.
Baba-Oğul arasında kuşak çatışması veya anlaşmazlıklar oluyor mu?
Her ne kadar Cobol, Clipper, Basic, Pascal gibi dillerle sektöre giriş yapmış olsa da, Visual Basic, C#, PHP gibi günümüzde yaygın kullanılan programlama dilleriyle de geliştirmeler yaptı. Hatta geçtiğimiz günlerde WebAssembly konusu gündeme geldi ve geliştirme ortamını hemen ayağa kaldıracak hamlelerde bulundu. Kurumsal uygulamalar için PostgreSQL tercihimiz sonrası yine geliştirme ortamını düzenlemişti.
Ben sektöre girmeden önce sektörde yer alanların hiçbirisi “Android Developer” ünvanında değildi. Bugün ise, Android uygulamalar geliştirerek gelir elde eden, hatta Safa gibi doğrudan “Android Specialist” olarak bu işi icra eden geliştiriciler var. Babamın Android geliştirmiyor olması, varlığını bilmediği yada kullanmadığı anlamına gelmez. Çoğu mobil geliştiriciden daha fazla Google, Android, One Platform, Google Play, Developer Console vb. konularda bilgi sahibidir.
Sektör evrim geçiriyor olsa da, değişmeyen bazı köklü sabitler, değişkenler ve aktörler var. Oyunun kuralları güncellense de temel kurallar hiçbir zaman bozulmaz. CRUD işlemleri gibi.
Bu bağlamda babamla olan ilişkimizin anlaşılmazlığa gidebileceği tek yer, detayın detayının detayı konularda yüksek teknik seviyede bir tartışma ortamı oluşması durumunda olabilir. Böyle bir şeyin olması da çok düşük ihtimal.
Nedir bu gerilla programlama modeli?
Dev teknoloji şirketlerinin, geniş imkanlarda ve koşullarda, kuralına göre ve sistematik olarak icra ettikleri geliştirme süreçlerine sadık kalabilecek kadar hantal bir yapıda yer alamayacağımız için, ürünlerimizi RAD (Rapid Application Development) modelinde, Agile prensiplerine bağlı kalarak geliştirmek durumundayız.
Yazılım geliştirme metodolojisinden, kalite ve test yönetimine, geliştirme aşamasından deployment sürecine kadar çevik olmamız gerekiyor. Hızlı prototipleme, MVP sürüm çıkartma, alfa test ve pivot kapalı beta uygulamaları ile daha az hatalı sürümler çıkartmak için uğraşıyoruz.
Görev dağılımı nasıl oluyor?
Sadece geliştirme değil, satış, analiz, planlama, tasarım, kodlama, test, dağıtım, geri bildirim ve destek alanlarında bir çalışma ölçeğimiz var. Her alan için güçlü ve zayıf olduğumuz özelliklere göre öncelik sıralamasını çalıştırıyoruz.
Neticede küçük takımların büyük işler başarabilmesi için kendilerine ait bir sistematiye ihtiyaçları var. Çoğu işimizi otomatize edecek, bizi doğru yönlendirecek kendi asistan yazılımlarımız mevcut. Bunun yanı sıra, herkes ekip içerisinde kendisini konumlandırması gerektiği ve takviye etmesi gerektiği alanı net bir şekilde gözlemleyebiliyor.
Basketbol üzerinden örneklendirmek gerekirse; savunmaya geçen bir takımda uzunların göreve gelmesi, hızlı sayı alıp süreyi değerlendirmek için takımı kısaltmak veya stratejik olarak faul almaya çalışmak gibi iş, proje ve ekip durumuna göre sahaya sürebileceğimiz alternatif oyun planlarımız yer alıyor.
Herkesin son sözü söyleyebileceği bir ortam oluşturduğumuz kadar, bazı konularda kişi özelinde tam yetki ile anahtar teslim çözüme gittiğimiz zamanlar oluyor. Temelde herkes eşit miktarda tüm işler için sorumlu ancak bunu dengelemek adına, herkesin ilgi ve alakasına göre yoğunlaşmak istediği alanlarda öncelik tanıyoruz. Bu sayede herkes yaptığı işten daha fazla verim sağlıyor.
Radikal kararlar için hummalı bir süreç geçiriyoruz. Mesela bir teknoloji değişikliği yapacağımızda mevcut mühendislik bilgimiz, ekibin öğrenme eşiği, teknolojiye adaptasyon sürecimizi, mevcut işlerin taşınabilirliği veya genişletilmesi gereken işlerin yeni teknoloji ile eski teknoloji arasındaki uyumluluğu gibi konular üzerinde duruyoruz.
Retrospektif toplantılarımızı sadece ürün özelinde değil, geliştirme süreçlerimizi iyileştirmek için de kullanıyoruz. Ürün geliştirme takımımızın aynı tecrübeleri uzun soluklu yaşamasının inanılmaz pozitif etkileri her yeni projede daha net ortaya çıkıyor.
Ailesi ile çalışmak isteyenler için
Ailenizi iyi tanıyor ve onlarla birlikte bir şeyler inşa edebileceğinizi görüyorsanız, başarıya diğer insanlardan çok daha yakınsınız. Saha içinde ve saha dışında sizi destekleyen insanların sürekli yanınızda olduğunu bilmek çok güzel bir duygu. Sizdeki duygu değişimleri, yaşantınızı negatif etkileyen unsurların çabucak çözüme kavuşması, uzun vade planlamaların daha kolay gerçekleştirilmesi, alınacak ciddi kararların daha kısa sürede alınması gibi say say bitiremeyeceğiniz pozitif yönleri var.
Tek negatif yönü iş ve sosyal hayatınızdaki insanların aynı olması. Paylaşabileceğiniz çok fazla anı bıraktırmıyor çünkü neredeyse hepsini birlikte deneyimliyorsunuz. Bu kimileri için pozitif, kimileri için negatif olabilir. Tüm bunların dışında farklı kaynaklara yönelmediğinizde gündem değerlendirmeleriniz, genel kültürünüz, olayları yorumlarken tercih ettiğiniz örneklem değerleri, mizah kodlarınız ve daha çok fazla şey birbirinin kopyasına dönüşüyor.
Herkesin benzersiz karakteristik özelliklerde olması da bu açığı tolere ediyor. Böylece herkes, kendi bağımsız ilgi alanlarında deneyimlediklerini meclise taşıyor, iş geliştirme sürecinde de yine bu farklılıklardan faydalanıyoruz.
Her insan, kendi düşüncesi ve hedefleri ile var olur. Ekip çalışmasında doku uyumu/uyuşmazlığını önceden saptayabilmek oldukça güç. Zaman içerisinde uyum sağlanabilecek şekilde küçük revizelerle çalışma ortamı, metodlar, platformlar, yaklaşımlar değiştirilebileceği gibi, ne yapılırsa yapılsın çözülemez problemlerle de karşılaşmanız olası. Eğer kendi işiniz ekseninde bir çalışma düşünceniz varsa, en azından denemenizde fayda var.