0- İleri Seviye Yazılım Geliştirme

Hamit SEYREK
Devops Türkiye☁️ 🐧 🐳 ☸️
3 min readJan 31, 2022

“Senior” değilde “İleri Seviye” dememin sebebi Senior Developer olmanın sadece bilgiye dayalı olmadığına, zamana ihtiyacı olduğuna inanmamdandır. Bazı zamanla bilgimiz artığı doğrudur ama zaman ile gelen tecrübe gereklidir Senior olmak için. Bu makalede ileri seviye yazılım geliştirmek için gerekli araçlardan bahsedeceğim.

Yazılım ile ilgilenen hemen hemen herkesin başına gelme ihtimali yüksek olan bir konuya değinerek başlıyorum.

Genelde bir programlama diline çalışmakla başlayan yazılıma adım atmalar bir yerden sonra tıkanıklığa uğramaktadır.

Fonksiyonlar, değişkenler, soyut sınıflar ve daha bir sürü temek konu öğrenilip ufak uygulamalar oluşturulmaya başlandığında bir yerden sonra Şimdi ne yapmalıyım? gibi sorular kafa karıştırmaya başlıyor.

Bundan sonraki adım ne olmalı?
Sürekli aynı kodları kullanıp benzer uygulamalar mı geliştireceğim?

Bu tarz sorular ile kafanız karışmışken bir de iş ilanlarında ilk defa duyduğunuz bir sürü terim ile karşılaşırsınız. Eğitimlerde genelde programlama diline odaklandığı için değinilmeyen ama iş hayatında sıkça kullanılan bir sürü yöntem ve terim gözünüze çarpar bu süreçte.

Böyle bir durumda insan kendini yetersiz hissetmeye başlıyor. Veya iş ilanlarının abartıldığını sanıyor. “Kimse bu kadar şeyi bilemez!” gibi bahaneler üretmeye başlarız kendimize. (Bazı ilanların gerçekten abarttığına bende inanıyorum bu arada. Ama sadece bazılarının :)))

İşte bu noktada bir şeyler yazma ihtiyacı duydum. Umarım herkes için faydalı olur:)

Şimdi asıl meseleye dönelim.
İleri seviye bir yazılımcının bilmesi gerekenler. En azından fikir sahibi olması gereken veya kod yazarken kullanabileceği araçlar:

1- Yazılım mimarileri
Kullandığınız programlama dili veya framework ile yazılım geliştirilirken kullanılması gereken mimariler nelerdir? Nasıl kullanılır?
Örnek: MVVM, MVP, MVC, VIPER vb…

2- Neden/Nasıl “Yorum” yazılır? CleanCode nedir?

3- Yazılım Geliştirirken Neden Test Yazmalıyım?
Yazılım geliştirirken test kodları yazmanın faydaları nelerdir? Neden test kodları yazmalıyım? Test yöntemleri nelerdir?
TDD, BDD, DDD vb…

4- DevOps nedir? Faydaları nelerdir? Ne tür araçlar kullanır?
Phantom, Slack, Vargant, Ansible vb…

5- Continuous Integration ve Continuous Delivery nedir? Neden kullanılmalı?
Jenkins, Codemagic vb…

6- Agile scrum metodolojisi nedir? Yazılım geliştirme ekiplerine olan faydaları nelerdir?

7- SOLID prensiplerini özel kılan nedir? Başka yazılım geliştirme prensipleri var mı? Nelerdir?

8- Git nedir? Neden kullanmalıyım? Github, Gitlab, Bitbucket ne için kullanılır?

9- Docker nedir? Containerisation nedir ve neden önemlidir? Yöntemler nelerdir?

Bunları bir seri olarak her birini ayrı bir makale olacak şekilde yayınlamayı düşünüyorum. 10. makale de “Yazılımda daha yolun başında olanlara ve öğrencilere tavsiyeler” başlığı ile gelecektir.

Sürekli daha iyiye…

--

--