Menü
Kapat
/
Yazılım geliştirmek, yalnızca kod satırları yazmak mıdır? Yoksa aslında görünmeyen ama hissedilen bir yapılar bütününü mü inşa ediyoruz? Bu soru, günümüz teknoloji dünyasında daha önce hiç olmadığı kadar kritik hale geldi.
"Kod Yazmak mı, Sistem Kurmak mı?" başlığında sorunun cevabı oldukça açık: Modern yazılım, sistem kurmaktır. Ve bu sistemler, yalnızca işlevsel değil; ölçeklenebilir, sürdürülebilir ve kullanıcı odaklı olmalıdır.
Yazılım dünyasında ilk dönemler, bireysel kod üretimiyle geçiyordu. Yani geliştirici, bir problemi çözecek kodu "el işçiliğiyle" üretir, o kodla çözüm sunardı. Bu yaklaşım bugün de var; ama artık bireysel kod parçalarının ötesinde, organizasyonel ve mimari bir yaklaşıma ihtiyaç var.
Bugün bir yazılım, sadece bir problemi çözmez. Aynı zamanda başka yazılımlarla konuşur, veri üretir, geliştiriciye yol gösterir, ölçeklenir ve bakım ister.
Bu yüzden "iyi yazılım" tanımı, artık şu şekilde yapılmalı:
İyi yazılım, yalnızca çalışan değil; gelişebilen, bağlanabilen ve yönetilebilen sistemdir.
Kod yazmak, yazılımın düşünsel çıktısıdır. Ancak çoğu zaman yapılan hata, kodun kendisini "ürün" zannetmektir.
Kod yalnızca bir taşıyıcıdır:
Fikri taşır
Mantığı taşır
Sistemi yürütür
Ama kendisi sistem değildir
Bu nedenle bir yazılımcının görevi sadece kodlamak değil, ne kodladığını neden kodladığını ve nereye entegre edeceğini bilmek olmalıdır.
Bir sistemi kurmak demek:
Veri akışını anlamak
Kullanıcı davranışını öngörmek
Büyümeye hazırlıklı olmak
Takım içi iş bölümünü kod yapısına yansıtmak
Değişime açık ama çökmez bir yapı tasarlamak demektir
Bu da yalnızca kodla değil, şu becerilerle mümkün olur:
Domain analizi
Yazılım mimarisi bilgisi (monolit vs mikroservis)
API tasarımı
Katmanlı yapı ve bağımlılık yönetimi
DevOps ve dağıtım planı
Sistem kuran yazılımcı, sadece "çalışan bir şey" değil, geliştirilebilir bir yapı bırakır.
Yazılım, kullanıcıya hizmet eder. Kimin için yazıldığını bilmeyen bir kod, hedefi olmayan bir silahtır.
Önce veri modeli, yapı, akış, hata toleransı düşünülmeli. Kod son adım.
Yorum satırları, modül isimleri, fonksiyon yapıları… hepsi gelecekte başka geliştiriciler tarafından "okunacak" şeylerdir.
Yazılımda en zarif sistem, en az parçayla en çok işi yapan yapıdır.
Yazılım geliştirirken yaptığınız şey, yalnızca çalışmasını sağlamak değildir. Aynı zamanda gelecekte çalışmaya devam etmesini, başkalarıyla konuşmasını ve büyümesini mümkün kılacak bir yapı kurmaktır.
Bu yüzden iyi bir yazılımcı sadece kod yazmaz. Kurgular, planlar, sistemleştirir.
Ve her satır kod, o yapının taşıyıcı kolonlarından biridir.
“İyi yazılımın işlevi, karmaşığı basit gibi göstermektir.”
— Grady Booch
İyi bir web projesi yalnızca düzgün çalışan, hızlı yüklenen ya da güzel görünen...
Web tasarımı, teknolojinin ritmine ayak uyduran bir sanat gibidir. Ama gerçekten etkileyici dijital...
Profiling Summary Report (Time: 0.03456s, Memory: 707KB) | |||||
---|---|---|---|---|---|
Procedure | Count | Total (s) | Avg. (s) | Min. (s) | Max. (s) |
system.db.CDbCommand.query(SHOW FULL COLUMNS FROM `tbl_module`) | 1 | 0.00158 | 0.00158 | 0.00158 | 0.00158 |
system.db.CDbCommand.query(SHOW CREATE TABLE `tbl_module`) | 1 | 0.00023 | 0.00023 | 0.00023 | 0.00023 |
system.db.CDbCommand.execute(INSERT INTO `tbl_logs` (`user_id`, `body`) VALUES (:yp0, :yp1). Bound with :yp0=0, :yp1='Kod Yazmak mı, Sistem Kurmak mı? Modern Yazılımın Temelleri Yazı Güncellendi') | 1 | 0.00152 | 0.00152 | 0.00152 | 0.00152 |
system.db.CDbCommand.query(SHOW FULL COLUMNS FROM `tbl_settings`) | 1 | 0.00140 | 0.00140 | 0.00140 | 0.00140 |
system.db.CDbCommand.query(SHOW FULL COLUMNS FROM `tbl_language`) | 1 | 0.00138 | 0.00138 | 0.00138 | 0.00138 |
system.db.CDbCommand.query(SHOW FULL COLUMNS FROM `tbl_page`) | 1 | 0.00103 | 0.00103 | 0.00103 | 0.00103 |
system.db.CDbCommand.query(SELECT * FROM `tbl_settings` `t` WHERE (language=1) AND (`t`.`id`=1) LIMIT 1) | 1 | 0.00053 | 0.00053 | 0.00053 | 0.00053 |
system.db.CDbCommand.query(SELECT * FROM `tbl_language` `t` WHERE `t`.`is_default`=:yp0 LIMIT 1. Bound with :yp0=1) | 1 | 0.00028 | 0.00028 | 0.00028 | 0.00028 |
system.db.CDbCommand.query(SHOW CREATE TABLE `tbl_settings`) | 1 | 0.00024 | 0.00024 | 0.00024 | 0.00024 |
system.db.CDbCommand.query(SELECT * FROM `tbl_module` `t` WHERE `t`.`active`=:yp0. Bound with :yp0=1) | 1 | 0.00022 | 0.00022 | 0.00022 | 0.00022 |
system.db.CDbCommand.query(SHOW CREATE TABLE `tbl_page`) | 1 | 0.00019 | 0.00019 | 0.00019 | 0.00019 |
system.db.CDbCommand.query(SHOW CREATE TABLE `tbl_language`) | 1 | 0.00014 | 0.00014 | 0.00014 | 0.00014 |
system.db.CDbCommand.query(SHOW FULL COLUMNS FROM `tbl_posts`) | 1 | 0.00141 | 0.00141 | 0.00141 | 0.00141 |
system.db.CDbCommand.query(SELECT * FROM `tbl_page` `t` WHERE (deleted = 0) AND (`t`.`is_homepage`=:yp0) LIMIT 1. Bound with :yp0=1) | 1 | 0.00045 | 0.00045 | 0.00045 | 0.00045 |
system.db.CDbCommand.query(SHOW FULL COLUMNS FROM `tbl_post_categories`) | 1 | 0.00109 | 0.00109 | 0.00109 | 0.00109 |
system.db.CDbCommand.query(SHOW FULL COLUMNS FROM `tbl_logs`) | 1 | 0.00092 | 0.00092 | 0.00092 | 0.00092 |
system.db.CDbCommand.query(SELECT * FROM `tbl_posts` `t` WHERE (is_deleted = 0) AND (id != :id) ORDER BY id DESC LIMIT 3. Bound with :id=399) | 1 | 0.00069 | 0.00069 | 0.00069 | 0.00069 |
system.db.CDbCommand.query(SELECT * FROM `tbl_posts` `t` WHERE (is_deleted = 0) AND (`t`.`slug`=:yp0) LIMIT 1. Bound with :yp0='kod-yazmak-mi-sistem-kurmak-mi-modern-yazilimin-temelleri') | 1 | 0.00046 | 0.00046 | 0.00046 | 0.00046 |
system.db.CDbCommand.query(SELECT * FROM `tbl_post_categories` `t` WHERE (is_deleted = 0) AND (`t`.`id`=4) LIMIT 1) | 1 | 0.00033 | 0.00033 | 0.00033 | 0.00033 |
system.db.CDbCommand.query(SELECT slug , title , id FROM `tbl_posts` `t` WHERE (is_deleted = 0) AND (slug LIKE '%kod-yazmak-mi-sistem-kurmak-mi-modern-yazilimin-temelleri%')) | 1 | 0.00030 | 0.00030 | 0.00030 | 0.00030 |
system.db.CDbCommand.query(SHOW CREATE TABLE `tbl_posts`) | 1 | 0.00024 | 0.00024 | 0.00024 | 0.00024 |
system.db.CDbCommand.query(SHOW CREATE TABLE `tbl_post_categories`) | 1 | 0.00017 | 0.00017 | 0.00017 | 0.00017 |
system.db.CDbCommand.query(SHOW CREATE TABLE `tbl_logs`) | 1 | 0.00015 | 0.00015 | 0.00015 | 0.00015 |
system.db.CDbCommand.execute(UPDATE `tbl_posts` SET `id`=:yp0, `title`=:yp1, `slug`=:yp2, `subtitle`=:yp3, `excerpt`=:yp4, `body`=:yp5, `meta_title`=:yp6, `meta_description`=:yp7, `custom_scheme`=:yp8, `image`=:yp9, `gallery`=:yp10, `categories`=:yp11, `language`=:yp12, `order`=:yp13, `created_at`=:yp14, `updated_at`=:yp15, `publish_date`=:yp16, `status`=:yp17, `counter`=:yp18, `gender`=:yp19, `is_home`=:yp20, `is_deleted`=:yp21, `author_id`=:yp22, `is_form`=:yp23 WHERE `tbl_posts`.`id`=399. Bound with :yp0=399, :yp1='Kod Yazmak mı, Sistem Kurmak mı? Modern Yazılımın Temelleri', :yp2='kod-yazmak-mi-sistem-kurmak-mi-modern-yazilimin-temelleri', :yp3='', :yp4=NULL, :yp5='<p><span>Yazılım geliştirmek, yalnızca kod satırları yazmak mıdır? Yoksa aslında görünmeyen ama hissedilen bir yapılar bütününü mü inşa ediyoruz? Bu soru, günümüz teknoloji dünyasında daha önce hiç olmadığı kadar kritik hale geldi.</span></p> <p><span>"Kod Yazmak mı, Sistem Kurmak mı?" başlığında sorunun cevabı oldukça açık: </span><span><strong>Modern yazılım, sistem kurmaktır.</strong></span><span> Ve bu sistemler, yalnızca işlevsel değil; </span><span><strong>ölçeklenebilir, sürdürülebilir ve kullanıcı odaklı</strong></span><span> olmalıdır.</span></p> <div><hr /></div> <h2><span>Yazılımın Evrimi: Koddan Yapıya</span></h2> <p></p> <p><span>Yazılım dünyasında ilk dönemler, bireysel kod üretimiyle geçiyordu. Yani geliştirici, bir problemi çözecek kodu "el işçiliğiyle" üretir, o kodla çözüm sunardı. Bu yaklaşım bugün de var; ama artık </span><span><strong>bireysel kod parçalarının ötesinde, organizasyonel ve mimari bir yaklaşıma</strong></span><span> ihtiyaç var.</span></p> <ul> <li> <p><span>Bugün bir yazılım, sadece bir problemi çözmez. Aynı zamanda </span><span><strong>başka yazılımlarla konuşur</strong></span><span>, </span><span><strong>veri üretir</strong></span><span>, </span><span><strong>geliştiriciye yol gösterir</strong></span><span>, </span><span><strong>ölçeklenir</strong></span><span> ve </span><span><strong>bakım ister</strong></span><span>.</span></p> </li> </ul> <p><span>Bu yüzden "iyi yazılım" tanımı, artık şu şekilde yapılmalı:</span></p> <blockquote> <p><span><em>İyi yazılım, yalnızca çalışan değil; gelişebilen, bağlanabilen ve yönetilebilen sistemdir.</em></span></p> </blockquote> <div><hr /></div> <h2><span>Kod Yazmak Nedir? Ne Değildir?</span></h2> <p></p> <p><span>Kod yazmak, yazılımın </span><span><strong>düşünsel çıktısıdır.</strong></span><span> Ancak çoğu zaman yapılan hata, kodun kendisini "ürün" zannetmektir.</span></p> <p><span>Kod yalnızca bir </span><span><strong>taşıyıcı</strong></span><span>dır:</span></p> <ul> <li> <p><span>Fikri taşır</span></p> </li> <li> <p><span>Mantığı taşır</span></p> </li> <li> <p><span>Sistemi yürütür</span></p> </li> <li> <p><span>Ama kendisi sistem değildir</span></p> </li> </ul> <p><span>Bu nedenle bir yazılımcının görevi sadece kodlamak değil, </span><span><strong>ne kodladığını neden kodladığını ve nereye entegre edeceğini bilmek</strong></span><span> olmalıdır.</span></p> <div><hr /></div> <h2><span>Sistem Kurmak: Mimari Düşünceyle Yazılım</span></h2> <p></p> <p><span>Bir sistemi kurmak demek:</span></p> <ul> <li> <p><span>Veri akışını anlamak</span></p> </li> <li> <p><span>Kullanıcı davranışını öngörmek</span></p> </li> <li> <p><span>Büyümeye hazırlıklı olmak</span></p> </li> <li> <p><span>Takım içi iş bölümünü kod yapısına yansıtmak</span></p> </li> <li> <p><span>Değişime açık ama çökmez bir yapı tasarlamak demektir</span></p> </li> </ul> <p><span>Bu da yalnızca kodla değil, </span><span><strong>şu becerilerle mümkün olur:</strong></span></p> <ul> <li> <p><span>Domain analizi</span></p> </li> <li> <p><span>Yazılım mimarisi bilgisi (monolit vs mikroservis)</span></p> </li> <li> <p><span>API tasarımı</span></p> </li> <li> <p><span>Katmanlı yapı ve bağımlılık yönetimi</span></p> </li> <li> <p><span>DevOps ve dağıtım planı</span></p> </li> </ul> <p><span>Sistem kuran yazılımcı, sadece "çalışan bir şey" değil, </span><span><strong>geliştirilebilir bir yapı</strong></span><span> bırakır.</span></p> <div><hr /></div> <h2><span>Modern Yazılım Geliştirmenin Temel Prensipleri</span></h2> <p></p> <h3><span>1. </span><span><strong>Kullanıcıyı Tanımadan Kod Yazılmaz</strong></span></h3> <p><span>Yazılım, kullanıcıya hizmet eder. Kimin için yazıldığını bilmeyen bir kod, hedefi olmayan bir silahtır.</span></p> <h3><span>2. </span><span><strong>Tek Satır Kod Yazmadan Sistem Düşünülür</strong></span></h3> <p><span>Önce veri modeli, yapı, akış, hata toleransı düşünülmeli. Kod son adım.</span></p> <h3><span>3. </span><span><strong>Kod, Takımın Konuştuğu Ortak Dildir</strong></span></h3> <p><span>Yorum satırları, modül isimleri, fonksiyon yapıları… hepsi gelecekte başka geliştiriciler tarafından "okunacak" şeylerdir.</span></p> <h3><span>4. </span><span><strong>Sadelik = Kalıcılık</strong></span></h3> <p><span>Yazılımda en zarif sistem, en az parçayla en çok işi yapan yapıdır.</span></p> <div><hr /></div> <h2><span>Sonuç: Yazılım Bir Mimari Sanattır</span></h2> <p><span>Yazılım geliştirirken yaptığınız şey, yalnızca çalışmasını sağlamak değildir. Aynı zamanda gelecekte </span><span><strong>çalışmaya devam etmesini</strong></span><span>, </span><span><strong>başkalarıyla konuşmasını</strong></span><span> ve </span><span><strong>büyümesini</strong></span><span> mümkün kılacak bir yapı kurmaktır.</span></p> <p><span>Bu yüzden iyi bir yazılımcı sadece kod yazmaz. </span><span><strong>Kurgular, planlar, sistemleştirir.</strong></span></p> <p><span>Ve her satır kod, o yapının taşıyıcı kolonlarından biridir.</span></p> <blockquote> <p><span><strong>“İyi yazılımın işlevi, karmaşığı basit gibi göstermektir.”</strong></span><br /><span>— </span><span><em>Grady Booch</em></span></p> </blockquote>', :yp6='', :yp7='Yazılım sadece kod yazmak değildir. Modern yazılım geliştirme, sistem kurma, ölçeklenebilirlik, mimari düşünce ve kullanıcı odaklı yapılarla başlar. Bu yazıda, koddan yapıya geçişin temel ilkelerini keşfedin.', :yp8='', :yp9='./uploads/images/202505/original_kod-yazmak-mi-sistem-kurmak-mi-modern-yazilimin-temelleri.webp', :yp10=NULL, :yp11='4', :yp12=1, :yp13=1, :yp14='2025-04-17 14:40:56', :yp15=NULL, :yp16='', :yp17=1, :yp18=23, :yp19=NULL, :yp20=1, :yp21=0, :yp22=0, :yp23=0) | 1 | 0.00113 | 0.00113 | 0.00113 | 0.00113 |
system.db.CDbCommand.query(SELECT * FROM `tbl_language` `t`) | 1 | 0.00024 | 0.00024 | 0.00024 | 0.00024 |