About
Over 20 years I have worked as a test engineer, developer, project manager and software architect, from tactical control systems and national statistics platforms to delivery, pricing and privacy products.
Java is my core language; I also work with Scala and Python. Most of my recent work is around Kafka, Kafka Streams, Akka Streams, Spark and Elasticsearch on Kubernetes.
These days I guide development teams, design software architectures and define development standards.
Writing
-
Laws of Software Engineering #16 Linus’s Law: Yeterince Göz Varsa Tüm Hatalar Önemsizdir
Kendi testlerinizden ve hızlı bir onaydan geçen kritik bir hata, neden geniş bir ekibin ya da binlerce senaryonun karşısında kolayca ortaya çıkar? Yazılım hatalarına karşı en güçlü doğal savunma: çoklu gözlerin denetimi.
-
Laws of Software Engineering #15 Broken Windows Theory: Küçük İhmaller Kod Tabanını Nasıl Harabeye Çevirir?
Her gün verdiğimiz küçük, önemsiz görünen kararlar zamanla tüm bir kod tabanının kaderini nasıl belirler? Pırıl pırıl başlayan projeler neden aylar içinde bozulmaya başlar?
-
Laws of Software Engineering #14 Hofstadter’s Law: Bir İş Neden Her Zaman Beklediğinizden Uzun Sürer?
1 ay sürecek işe pay bırakıp 6 hafta dediniz, peki neden yine 3 ayda bitti? Gecikmeleri hesaba katsanız bile işler neden her zaman beklediğinizden uzun sürer?
-
Laws of Software Engineering #13 Ninety-Ninety Rule: Projeler Neden “%90 Bitti” Aşamasında Takılıp Kalır?
“Neredeyse bitti, %90’ını tamamladım” denen proje neden haftalarca %90’da kalır? Kodun son %10’u neden geliştirme süresinin diğer %90’ını yer?
-
Laws of Software Engineering #12 Dunbar’s Number: Ekipler Neden 150 Kişiden Sonra Yabancılaşır?
Şirket büyüdükçe kültür neden bozulur ve bürokrasi artar? Mesele motivasyon değil, insan beyninin biyolojik sınırlarıdır.
-
Laws of Software Engineering #11 Brooks’s Law: Geciken Bir Projeye İnsan Eklemek Neden Onu Daha da Geciktirir?
Geciken projeye “3–4 yazılımcı daha ekleyelim” refleksi yazılım geliştirmede neden genellikle ateşe benzin dökmekle sonuçlanır?
-
Laws of Software Engineering #10 Conway’s Law: Sistem Mimarisi Organizasyon Yapısını Neden Aynalar?
Serinin yeni fazı Ekipler ve Organizasyonlar: Yazılım, onu geliştiren ekiplerin iletişim biçimlerinin ve kurumsal yapıların doğrudan bir sonucudur.
-
Laws of Software Engineering #9 Zawinski’s Law: Yazılımlar Neden Sürekli Şişer ve E-posta Okumaya Çalışır?
Odaklanmış, yalın bir araç zamanla neden sohbet, bildirim ve entegrasyonlarla dolu bir platforma dönüşür?
-
Laws of Software Engineering #8 Law of Unintended Consequences: İstenmeyen Sonuçlar Yasası
İyi niyetli bir retry mekanizması nasıl olur da kendi backend’imize yapılmış bir DDoS saldırısına dönüşür?
-
Laws of Software Engineering #7 Fallacies of Distributed Computing: Dağıtık Sistemlerin 8 Büyük Yanılgısı
Localhost’ta kusursuz çalışan kod, araya gerçek bir ağ girdiğinde neden beklenmedik şekillerde kırılır?
-
Laws of Software Engineering #6 Second-System Effect: İkinci Sistemi Tasarlarken Neden Aşırıya Kaçarız?
İkinci sistem, ilkinden daha iyi olması beklenirken neden gereğinden fazla karmaşık hale gelebilir?
-
Laws of Software Engineering #5 CAP Theorem: Dağıtık Sistemlerde Neden Her Şeye Sahip Olamayız?
Veriler tutarlı olsun, sistem her zaman yanıt versin ve ağ sorunlarında bile çalışsın: Dağıtık sistemlerde bunların hepsini aynı anda neden sağlayamayız?
-
Laws of Software Engineering #4 Tesler’s Law: Karmaşıklık Yok Olmaz, Yer Değiştirir
Bir sistemi kullanıcı için basitleştirdiğimizde, karmaşıklık gerçekten ortadan mı kalkar? Yoksa yalnızca başka bir yere mi taşınır?
-
Laws of Software Engineering #3 Law of Leaky Abstractions: Soyutlamalar Her Şeyi Gizleyemez
Yeterince karmaşık olan tüm soyutlamalar bir noktada alttaki sistemin ayrıntılarını açığa çıkarır.
-
Laws of Software Engineering #2 Hyrum’s Law: API’nizin Dokümante Edilmemiş Sözleşmeleri
API’nizdeki küçük bir değişiklik, dokümantasyona göre doğru olsa bile neden başka bir sistemi bozabilir?
-
Laws of Software Engineering #1 Gall’s Law: Karmaşık Sistemler Neden Basit Başlamalı?
Laws of Software Engineering kanunlarından bir seriye başlıyoruz. İlk bölüm Mimari kategorisindeki Gall’s Law.
-
Thinking Java Maps Again in the AI Era
Going beyond the instinctive HashMap: why the Java Collection API is still worth learning in depth, even alongside AI coding agents.
-
Why Should You Use the Bulk API to Import Big Data to Elasticsearch
This story is about importing big data to Elasticsearch.
-
Kafka Streams with Serverless Kafka
Splitting notifications according to their types.
-
Kafka Streams State Store at Scale
Managing Interactive Queries on multiple application instances: alternative solutions and their comparisons.
-
Making SonarQube Analysis of Multiple Git Branches in Community Edition in Docker Container
Running branch analysis with SonarQube Community Edition inside Docker.
-
Using Apache Kafka like Database with KafkaStreams Processor API and StateStore
A Kafka Streams application with the Processor API, querying processed data via state stores with Spring Boot.
-
Yeniden evden çalışma ve evden çalışma tavsiyeleri
2.5 yıl evden çalışmış biri olarak, evden çalışmayla ilk kez tanışanlar için deneyimler ve tavsiyeler.
-
Apache Spark in Practice
Practical usage of Apache Spark.
-
Streaming Data with Apache Kafka and Akka Streams
Streaming data with Akka Streams connected to Apache Kafka through the Alpakka Kafka connector.
-
Apache Spark at a Glance
A general presentation of Apache Spark for development teams, turned into a blog post.
-
Scrum at a Glance
A presentation about Scrum turned into a story, covering its general aspects.
Skills
- Languages
- JavaScalaPythonTypeScriptSQL
- Streaming & Data
- Apache KafkaKafka StreamsAkka StreamsApache SparkElasticsearchPostgreSQLCassandraRedis
- Frameworks
- Spring BootAkkaLagomDjangoReactVue
- Platform
- DockerKubernetesHelmArgoCDAWSGrafana
- Practices
- Software ArchitectureDDDCQRS & Event SourcingTDDScrumMentoring
