... senee 2019! Tabi o zamanlar daha pandemi yok, şirketler uzaktan çalışmaya "öcü" gibi bakıyor, her gün ofise gidiyoruz.
Ekip bir problemi bi' türlü çözemiyor. Topladım herkesi odaya, dedim; "şu kodu ekrana bi' yansıtın bakayım"
Allah seni inandırsın, çözmem 10 saniyemi aldı!
Kodlarıma “pislik” diyen;
- Süslü CSS’ciler
- Derin Öğrenmeciler
- Çakma Left Join’ciler
- Temiz (Clean) Kodcular
burada mısınız?
Reverse proxy ile kurduğunuz network’ü nerelere yönlendirdiğinizi de anlatacağım.
Sizi de unuttum sanmayın spagetti’ciler! Hepsini konuşacağız...
Junior; iş bitirme hızı ve kalitesine göre değil, öğrenme motivasyonu ve çabasına göre değerlendirilir.
Deneyimli kişilerin junior’ları eleştirmeye değil, geliştirmeye odaklanması gerekir.
Çabalamayan junior ve “kendine senior” olmaktan kaçının.
Clean Architecture vaadine aldandı, teklifi kabul etti!
Olay, İstanbul merkezli bir şirkette gerçekleşti. Genç yazılımcı, mülakatta anlatılanlara inandı, ilk iş gününde gördüklerine inanamadı.
"Clean olmasını geçtim, ben bir architecture bile göremedim" sözleri yürek dağladı...
UPDATE/DELETE sorgusu oluşturmaya WHERE koşulunu yazarak başlayan kişi tecrübelidir. (Hatta önce SELECT çalıştırır)
Muhtemelen daha önce koşul belirtmeyi unuttuğu için tüm tabloyu silmiş veya hatalı kayıtları güncellemiştir.
Bu acı tecrübe defansif yaklaşımı kazandırır. 🤓
ÖNCEKİ YAZILIMCI PRENSİPLERİ 01:
Tanımladığın method/function çok fazla parametre almalı! (Kesinlikle obje kabul etmesin)
Böylece başka bir yazılımcı (hatta kendin bile) parametrelerin sırasını karıştırarak, monoton hayatına heyecan katabilirsin(!)
Projeye yeni başladığımda her şey güzel gidiyordu. İlerledikçe kontrolü kaybettim, b*ka sardı.
Şimdi kendi yazdığım kod için;
"spagetti olmuş, baştan kodlayalım" da diyemem.
En iyisi iş ilanlarına bakmaya başlayayım, en kısa zamanda uzayayım. Artık sonraki yazılımcı düşünsün...
Müşteri her şeyi ister. Hemen ister. En uyguna ister.
Bu istekleri yönetmesi, değerlendirmesi, planlaması, yönlendirmesi için bazı pozisyonlar var.
Ve bu pozisyonların sorumluluğu;
Müşteri mesajını forward etmek ya da Jira task'ına yapıştırmak değil.
Teşekkürler
İyi çalışmalar
Bir şirkette sürekli fazla mesai varsa, plansızlık ya da verimsizlik alışkanlık haline gelmiştir.
Gece gündüz çalışmayı övünerek anlatan, bunu başarıya giden yol gibi sunan yöneticiler! Bu aslında süreci yönetemediğinizi, yani işinizi iyi yapamadığınızı gösteren somut bir çıktı!
YAZILIM BİLMEYENE GÖRE;
“Bir buton koyacaksınız abi ne kadar zor olabilir?”
YAZILIMCIYA GÖRE;
“Hmm... ilk kez butona tıklayan kullanıcıysa şunu bunu yapmalı. Mevcut kullanıcıysa x’i update etmeli, cache’i silmeli, queue’ya atıp consume etmeli ...”
Sosyal medya görselinde bile HTML tag’i hatalı yazılmış. Projenin adını
#1Milyon
ÖncekiYazılımcı olarak değiştirirsek daha uyumlu olacak.
<“/div>
Ben size en azından “çalışan” kod bırakıyordum, kıymetimi bilemediniz(!) 😏
Championship Manager, Max Payne, Commandos, Age of empires, Quake, GTA, Half Life, Red Alert, Wolfenstein, Warcraft... oynayarak geçirdiğiniz bayram tatilleri kadar güzel bir bayram olsun!
Yazdığım kodları daha kolay refactor edebilmeniz için, saniyede 1.000 satır kod kaydırabileceğiniz mouse üretmişler! 😈
Bende bu tweet'i retweetleyenler arasından 1 takipçime, bu mouse'u hediye ediyorum.
DÜNYA PROGRAMCILAR GÜNÜMÜZ KUTLU OLSUN!
PROBLEM:
Product/Business ekibi anlık olarak içerik güncellemeleri yapabilmek ister.
ÇÖZÜM:
Yazılım ekibi, “teknik olmayan kişilerin güncelleme yapması için” CMS geliştirir.
SONUÇ:
Yazılım ekibi, CMS’i kullanarak içerik güncellemeye başlar.
BEN KODLAMAYACAKSAM:
“Çok basit bir iş. Altı üstü bir tane if koyacaksın ya!”
BEN KODLAYACAKSAM:
“Bu iş basit gibi duruyor ama aslında çok kompleks. Şurada burada değişiklikler yapmak gerekiyor. Orayı değiştirince diğer taraflar etkileniyor. {...} Sıkıntılı iş yani, uzun sürer!”
Her şey; “Acil bitirmemiz gereken, çok basit bir iş var.” cümlesi ile başladı.
Sonrası; fazla mesai, kötü mimari, kalitesiz kod, tutarsız çalışan sistem(ler)...
Sonuç; “Önceki Yazılımcı o işi beceremedi! Uygulamanın şurası burası patlıyor, çatlıyor...”
PROJENİN BAŞINDA:
“Olm çok temiz kodluyoruz yaa! Sokaktan birini çevir, 2 saate adapte olur! 😆”
PROJENİN ORTASINDA:
“Muhittin! baksana biz bunu buraya niye eklemiştik lan!? 🙄”
PROJE BİTTİĞİNDE:
“Hmm... Acaba ben burayı niye böyle yapmışım!? 🤔”
“Abi süper/efsane bir fikrimiz var. Ama paramız yok, yazılımcı bir ortak arıyoruz. Hisse karşılığı sen kodlar mısın?” sezonu açılmıştır. Hayırlı olsun.
“Acil bir iş var” başlıklı gündemle toplantı yapılır.
Ekip; “Ne zamana yetişmesi gerekiyor?” diye sorar.
“Dün bitmiş olması gerekiyordu” yanıtı alınır.
Ekip fazla mesai yapar, işi yetiştirir. Ama aylarca yayına alınmaz.
Sonra; “Önceki Yazılımcı kötü kodlamış...” olur.
Onlarca yazılımcı yetiştirmiş, 20 yıllık usta yazılımcı Doğan iş başvurusu yapan yeni mezun bilgisayar mühendisleriyle yaptığı mülakatı anlatıyor. Yorumsuz paylaşıyorum.
#yaz
ılımcı
#developer
Mükemmelliyetçiler production’a hiç bir ürün çıkaramıyor, yerinde sayıyor.
Çıktıya odaklanıp ürünü hayata geçirenler milyon dolarlık şirketler yönetiyor.
Özellikle teknoloji şirketi değilseniz, over engineering’i erken fark etmek daha değerli sanırım. Siz ne düşünüyorsunuz?
Zaman kazan(dır)mak için %100 çalışan bir yöntem var.
“X çalışmıyor!” demek yerine;
“… sayfasında … adımlarını uyguladım, … aksiyonunu denedim. Ama … problemi yaşıyorum. Ben … davranışı bekliyordum. (Ekran görüntüleri, Cihaz/Kullanıcı Bilgileri)”
Kesin bilgi, yayalım(!) 💯
Önceden “webmaster” vardı. Adını “Full-Stack” yaptınız, geri getirdiniz.
Önceden html/css/js tek dosyada inline çözüyorduk, ayrıştırdınız. Şimdi adını “Single File Component” yaptınız, geri getirdiniz.
Micro service’lerden de monolithic’e geri dönersek valla bozuşuruz!
YAZDIĞIM KOD ELEŞTİRİLDİĞİNDE:
- Spagetti kod mu yazmışım?
- Design pattern yok muymuş?
- Yanlış mı çalışıyormuş?
- Test mi yazmamışım?
- Biten iş 4 kere değişti, aha PO'ya sor!
2.636 kişinin katıldığı 2021 yılı maaş anketi sonuçlarını paylaştım. Pozisyon&Uzmanlık kırılımıyla maaş bilgilerine ulaşabilirsiniz.
* Her pozisyon özelinde şehir, sektör, cinsiyet gibi kırılımlara ulaşmak isteyenler için kişi bazlı dökümü de paylaştım.
TÜRK ŞİRKETLERİNİN VİZYONU:
İş değil de işgüzarlık yapanları mükafatlandırıp, işini iyi yapanları küstürelim. Sonra da “verimsizlik” probleminin neden kaynaklandığını(!) bulmaya çalışırız...
EMEKLİ YAZILIMCI
Bi’ gün yine fazla mesaideyiz. O zamanlar tabi kodu insanlar yazıyor.
Gittim müdürün odasına;
“CTO Bey, CTO Bey! Çalışana verdiğiniz değer bu mudur?” dedim. “Budur!” dedi.
Teşekkür ettim, masama döndüm. Bir spagetti kod yazmışım, 2 ay refactor edemediler.
FELSEFEM:
1) Kod ne kadar anlaşılmazsa o kadar profesyoneldir!
2) Koduna güvenmeyen test yazar, bunu asla unutma!
3) Yalnızca aptallar çalışan koda dokunur!
4) Senin kodunun bug'ı olmaz! Anlık bir problem ya da cache'tir o!
...
Bazı şirketler;
"İşe almak için nitelikli aday bulamıyoruz" serzenişinde bulunuyorlar.
Ama;
"Yetenekleri ekibimizde tutmak için ne yapıyoruz?" sorusunun cevabıyla yüzleşme cesaretini göstermiyorlar.
Hatta;
Ekibinde bulunan potansiyeli yüksek yeteneklerin farkında bile değiller.
Bir bayramı daha atlattık! 🤦♂️
- Bana internet sitesi lazım
- Yeğen bilgisayar bölümü bitirdi iş/staj ayarlasana
- Oğlana bilgisayar alacaz, ne alalım?
- Şu bilgisayarı formatlasana
- Telefonum yavaşladı bi’ baksana
- TV kanallarını düzenlesene
- O işte “mayışlar” nasıl?
Akbank 24 saatten fazla süredir hizmet veremiyor.
Kesintinin teknik detaylarını bilmiyorum. Ama teknoloji ekibinin yaşadığı stresi tahmin edebiliyorum. Meslektaşlara kolaylıklar. 👋
Umarım problem çözüldüğünde biri(leri) detayları paylaşır ve sektöre katkı sağlar.
Sadece bilgisayarlarla iyi iletişim kurabilmeniz yeterli değil. İnsanlarla da iyi iletişim kurabilmelisiniz.
Çünkü;
İnsanlarla iş yapıyorsunuz.
Yaşadığı problemi anlatamayan, bulduğu çözümü aktaramayan, takım arkadaşıyla empati kuramayan biriyle “ekip çalışması” mümkün değil.
Tek kriteri "daha ucuz" olan, vasata mahkumdur.
- Yazılımcı "iyi" olsun ama "az maaş" alsın.
- Çok "iyi" çalıştın ama "zam" oranımız kısıtlı.
- Proje "kaliteli" olsun ama "düşük bütçeli"
.
.
.
Bunları yapıp, sonra da "kalitesiz" sonuca şaşıranlara çok şaşırıyorum...
Yazılım ekiplerine;
- Mimariyi tartışma / karar alma
- Yeni teknolojileri deneme özgürlüğü
- Legacy projeler için dönüşüm
- Business’a katkı sağlama / yön verme
...
fırsatları sunmazsanız verimlilik ve motivasyonu yüksek tutamazsınız!
Çünkü;
#Yaz
ılımcılarOperatörDeğildir
Bence yazılım problemlerine kadar çözmemiz gereken daha önemli şeyler var.
Sözünü tutmayan, iş ahlakını&etiğini önemsemeyen, sürekli yalan söyleyen insanlarla bi’şey başarmak, kültür oluşturmak, değer üretmek çok zor.
Teknik yetkinlik bi’şekilde kazan(dır)ılıyor.
Yeni tanıştığın biri; sürekli ünvanını ön plana çıkarıyorsa, abartılı şekilde bir şeyler anlatıyorsa, sürekli “ben” dilini kullanıyorsa genelde kocaman bir balon çıkıyor. Kesin bilgi yayabiliriz.
Şirketlerin iyi yazılımcıları, kötü yöneticilere dönüştürmek gibi kötü bir huyu var.
Motivasyon, koordinasyon, vizyon sahibi olmayan biri(leri)ne yetki veriyorlar. Ekibin dağılmasıyla süreç sonlanıyor.
Bu biraz şey gibi;
Her iyi futbolcunun iyi teknik direktör ol(a)maması
Defalarca “bu kez oldu” dediği kodun çalışmadığını gören Junior’ın dramına şahit oldum. Şu an “Allah’ım ne olur bu kez çalışsın!” diye dua ediyor. “Allah’a Yönelten Programlama” gibi bişey keşfetmiş olabilir.
Classic asp ile yazılıma başlayan, kariyerinin ortalarında C# öğrendi, şimdi .net core yazıyor. Table ile front-end’e başlayan akabinde jQuery öğrendi, şimdi React yazıyor...
Yarın yeni bir şey çıkacak, onu öğreneceğiz. Teknoloji fanatikliği lüzumsuz, faydaya odaklanmak gerek 🙂