Photo by Sammy Wong on Unsplash

Agile, Scrum, Kanban ve Extreme Programming konusunu daha önceki yazımızda anlattık. Fakat yazılım geliştirme modellerinin temelindeki agile(çevik) ilkelerden detaylı bahsetmedik. Temel ilkelerin orjinaline bu linkten erişebilirsiniz.

Bu blogu okumadan önce yazılım geliştirme süreçleri ve fazları hakkında önceden yayınlamış olduğum aşağıdaki 4 yazıyı okumanızı öneririm.

Bu yazı öncesinde üzerine vurgulayarak söylemek istediğim konu, her ürün ve proje için Agile(Çevik) modellerin uygun olmayacağıdır. Bu yazıyı okurken agile(çevik) uygun bir yazılım geliştirdiğinizi düşünün.

Bu yazıda Çevik(Agile) geliştirme modelleri birbirinden farklılıklar içersede temelde aşağıdaki ilkelerde oy birliği sağlamış olmalarıdır. Bu değerli grup😃 aşağıdaki manifestoyu yayınladı.


Photo by Katrin Hauf on Unsplash

GELIŞTIRICI ARAÇLARI

Redux ile Frontend Geliştirmelerinde kullanılan Redux DevTools eklentisinden bahsetmek istiyorum. Bu eklenti neden önemli ?Geliştirmelerde işlerimize nasıl yardımcı oluyor ?

Bugün üzerinde duracağımız araç Redux DevTools Aracı, Bu aracı kurma kısmını daha sonra anlatacağım. Öncelikle Redux konunu bilmiyorsunuz daha önceden yazmış olduğum aşağıdaki yazıları okumanızı öneririm.


Photo by KOBU Agency on Unsplash

GELIŞTIRICI ARAÇLARI

Yazılım ile ilgili geliştirme yaparken bir sorun ile karşılaştınız veya teknolojik bir konuyu merak ettiğiniz. İlk adım Google bazı temel kelimeleri aratmak olur. Arattığınız da karşınıza büyük bir oranda Stackoverflow, Medium, Quara veya kişisel blog içerikleri çıkar. Peki bunu nasıl daha kalıcı bir öğrenmeye dönüştürebiliriz.

Bir önceki yazımda Geliştirici Ortamını İyileştirme ile ilgili bir yazı paylaşmıştım. Bu yazı serisinin bir devamı olarak teknolojik araştırmaları nasıl daha kalıcı hale getireceğimiz üzerine konuşacağız.

Örneğin React Server Component araması yapacaksınız.


Photo by serjan midili on Unsplash

ANTI-PATTERNS

Proje ihtiyaçlarını görünce bizim müşterimiz çok özel isteklerde bulunuyor, o yüzden kendi kütüphanelerini veya altyapılarını hemen oluşturalım diyorsanız. Tekerleği yeniden icat etmeye çalışıyor olabilirsiniz. Eğer sorun genel bir sorun ise belkide sizin sorununuz çözen hazır bir takım kütüphane, framework, middleware olabilir. Aceleci olmayın.

Tekerleği yeniden icat etmeye gerek yok. Bir problem veya bir sorun olunca onu kendi yöntemlerimiz ile çözmeyi severiz. Ama bu konuyu iyi tartmak lazım. Çünkü kendi çözümlerinizi geliştirdiğinizde, ekiptekilere bir takım aktarımlar yapmanız lazım;

Bu yüzden Tekerleği yeniden icat etmek yerine, çevrenizde birileri bu problemi çözen bir şeyler geliştirmiş mi, bu işin best-practice neymiş diye bakmak en mantıklı çözümdür.

Yazılımlar, hatta bulut sistemi ile donanım altyapıları günümüzde çok kolay şekilde soyutlanabilen ve tekrar kullanılabilen birimlere dönüştürülmüştür. …


Photo by Andrew George on Unsplash

ANTI-PATTERNS

Altın Çekiç (Golden Hammer) .

Bu anti-pattern benzer bir konuya Yazılım Mimarının 5 Yanlışı yazısı içerisindeki Mimarın kullandığı yöntemlerde kendisine en çok güvendiği alanda sorunları çözmeye çalışır demiştim. Ama bu yöntem her zaman bizi doğru yola götürmez.

Ama genelde ekibinize verilen süre kısa, bütçe kaynağı az olur. Kısa zamanda çok iş başarmanız istenir. Bu durumda Maslow law of the instrument söylediği gibi, ufak bir çocuğa çekici verirseniz, tüm gördüğü şeylere çekiçle vuracaktır. Her şeyi(problemi) bir çivi olarak görmeye başlayacaktır.

“I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail. …


Photo by Tanya Grypachevskaya on Unsplash

ANTI-PATTERNS

Lav Akışı ile programlama, canlı için hazır olmayan kodun canlıya gerekli düzeltmeleri yapmadan çıkması, yeterli dokümantasyonu olmaması. Kodun ilgili kısımlarının nasıl çalıştığı know-how (bilgi birikimi) zaman içerisinde ekip tecrübesinden silinmesi, ekibin koda dokunmaktan korkar hale gelmesidir.

Hangi ürün olursa olsun, geliştirilen ürünün analiz, tasarım, geliştirme veya test süreçleri hiçbir zaman tam olmaz. Hatta ekip yapacakları ürün hakkında yeterli deneyime sahip değilse ürünün içerisine gereğinden fazla özellik, gereğinden fazla kod eklemiş olabilir. Bazı kodları sırf denemek için eklemiş ama yeterli temizliği yapmadan canlıya çıkmış olabilir.

Bu süreç zaman içerisinde kod geri dönülemez sorun yumağına sanki bir kartopu gibi dönüşerek işin içinden çıkılamaz hale gelebilir. Çünkü canlıda ki her kodun ekstra bakım yükü olacaktır.

Kodunuzun düzgün ve neden bu şekilde çalıştığını belirten


Photo by Hector Farahani on Unsplash

ANTI-PATTERNS

Spagetti Code denilince GOTO ile programlama aklımıza geliyor. Günümüzde GOTO ile program geliştirme bitti. Structural, Object-Oriented ve Functional Programming yöntemleri kullanılıyor. Yinede Spaggetti Kod Anti Pattern oluşuyor mu ?

Spaghetti kod ne demek ?

Kodun akışının takip edilemez şekilde bir yerlerden bir yerlere zıplaması, atlaması demek.

Eskiden Low Level Programlama dillleri ile kod geliştiriliyordu. Komutlar içerisinde bir yerden bir yere zıplayarak kod geliştiriliyordu.

GOTO

İlk Assembly yani makine dilinde Register(yazmaç) veriyi taşı, toplama işlemi yap sonra bunu diske yaz emirlerinin olduğu kod blokları arka arka yazıldığını görebilirsiniz.


Photo by Ross Sneddon on Unsplash

YAZILIM MIMARISI

Khalil Stemmler web sitesindeki bir yazıda Yazılım Mimarisi ve Tasarım için bir öğrenme yol haritası için bir yığıt oluşturmuş. Bu yazıda daha önceden yazılım mimarisi konusunda yazdığım yazılar ile bir eşleştirme yapmaya çalışacağım.

Khalil bu yazısında aşağıdakine benzer OSI Model stack yapısını Yazılım Tasarım ve Mimarisine uygulamıştır ?

Not: OSI Model nedir diyenler Internet Ağ Kavramları yazımı okuyabilirler.


Photo by Andrey Metelev on Unsplash

YAZILIM MIMARISI

Yazılım Sektöründe 20 yıla yakın farklı sektörlerde, farklı büyüklükteki projelerde, yazılım geliştirme ekiplerinde bulundum. İlk projemden itibaren mimari yapıyı oluşturma kısımlarında hep yer aldım. Bu yazıda mimari ortaya çıkarırken yaptığımız 5 yanlıştan bahsetmek istiyorum.

Bu yazının temeli denge üzerine olacak. Yazılım Mimarının kurması gereken denge. Aşağıda bahsedeceğim konularda bu denge kavramının çok önemli olduğunu sizlerde göreceksiniz;

1. Fonksiyonel ve Fonksiyonel Olmayan Gereksinimleri Doğru Şekilde İlerletmemek

Fonksiyonel gereksinimler bir sistemin nasıl davranacağı, iş kurallarını, akışı için gereksinimleri tanımlarken,

Örneğin: Kullanıcı sisteme kullanıcı adı ve şifresini girerek giriş yapabilecektir.

Fonksiyonel olmayan gereksinimler ise sistemin bu davranışları nasıl gerçekleştirdiği ile ilgilenir.

Örneğin: Kullanıcı şifresi her ortamda encrpyt


Photo by Pawel Czerwinski on Unsplash

FRONTEND KAPSAM

Ürün ve Kütüphane evreninden haberlerde bu sefer farklı bir yazı oluşturmayı düşündüm. Pandeminin başında karşılaştığım bir blog yazısından Modern Enterprise yazısı içerisindeki araç ve servis gruplamalarına bakalım.

Pandemi yaşamı çok derinden etkiledi. Şirketler yaşamlarına teknoloji sayesinde sürdürebildi. Bazıları çok büyüdü, bazıları ise yok oldu.

Teknolojinin, şirketler için önemini her şirket sahibi bu dönemde daha çok anladı. Zamanın uzun sürede yaptığı bu ayrışımı, pandemi bir katalizör görevi hızlandırdı. Bu nedenle günüzümüzde ayakta kalmak için Modern Teknolojileri kullanan İşletmeler kurmanız gerekiyor.

Peki soru şu Geleceğin Modern Enterprise (Kurumsal) nasıl olacak ?

Modern Enterprise yazısında geçen resimlerdeki araçları incelemenizi öneririm.

A. Veri Üzerine Şirketinizi İnşaa Edin.

Kurumsal şirketin departman yapısı genelde aşağıdaki şekilde ayrılır;

Bu…

Onur Dayıbaşı

Senior Frontend Developer at Thundra

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store