Merhabalar arkadaşlar,
Ben Muhammed Ali YÜCE. Bir bankanın Android Yazılım Geliştirme ekibinde çalışmanın yanı sıra aynı zamanda lisans eğitimimde başlayıp yüksek lisans eğitimine kadar da devam eden süreçte de ROS (Robot Operating System) adlı çatı ile robotik yazılımları geliştirmekteyim. Yer yer bu iki platformu harmanlayarak ortaya çıkarttığımız yazılımlar da bulunmakta.
Android yazılımları dünyasında ise sosyal medya platformlarından SaaS projelere kadar onlarca projenin içerisinde yer aldım, bu kadar çok projenin içinde bulunmak benim için bir zevkti, severek yaptığım mesleğime özellikle bu karantina günlerinde iyice hayatımı adamış bulunmaktayım. Günlük çalışma sürem ortalama 12 saati bulmuş durumda ve işin ilginci bu durumdan memnunum 😬. Bu süreye ek olarak da böyle bir girişim ile edindiğimiz tecrübeleri paylaşarak insanlara yardımcı olmak ve onların da bildikleriyle birbirimizi geliştirelim istedik. Android ve Robotik yazıları ile sizlerle birlikte olacağım.
Hal böyleyken yeni API’leri denemek, kütüphanelerin içine dalmak, yeni bir şeyler ortaya çıkartmak için eş zamanlı onlarca projenin içine girmek zorunda kalmanın yanı sıra bir yandan da çok büyük bir mobil uygulama platformuna da onlarca kişinin de anlayabileceği ve üzerinde değişiklik yapabileceği şekilde kod yazmak gerekmekte.

Spagetti Kod
Bu yazı dizisi bu kadar projenin ve kodun arasında kaybolmamak ve sürükleyici bir şekilde kod yazmak, yazabilmek için diziyi okuyan arkadaşlarımla birlikte birbirimizi geliştireceğimiz bir yazı dizisi olacak diye planlıyorum. Yani eğer Android yazılım geliştirme ekosistemine eğer yeni katıldıysanız bu yazı dizisi sizin için biraz anlaşılmaz olabilir, bu gereklilikleri görmek için spagetti kodların arasında çalkalanıp bir süre sonra “Bu iş böyle olmaz!” cümlesini kurduğunuzda tekrar gelip ziyaret etmeniz gereken bir yazı dizisi olacaktır diye umut ediyorum 😊
Aynı zamanda kendi framework’ümüzü hazırlayıp her projemizde kullanabileceğimiz, güncellenebilmesi basit modüler framework yapısından da bahsederek, uygulama geliştirme sürelerimizi kısaltmaya çalışacağız.
Terminoloji
Burada isterdim ki terminolojide Türkçe kelimeler kullanalım fakat bildiğiniz üzere sektörde anahtar kelimeler daha çok İngilizce kullanılmakta ve bu şekilde daha kolay bulunabilmekte, bu yüzden şimdiden bu kusurumuz affola.
Girişimizi de yaptığımıza göre artık başlayabiliriz. Öncelikle dizinin bu yazısı daha çok neler yapacağımız hakkında olacak ve burada bir şeyler öğrenmekten ziyade neler öğreneceğimizi toplayacağız ve bir road-map çizeceğiz. Road-map biraz üstün körü olacak, bir yandan bu yazı dizisine devam ederken bir yandan ayrı olarak faydalı bilgiler ve popüler bazı sorunların çözümlerine de yaklaşım sunarken aynı zamanda uygulamanıza diğer uygulamalardan farklı görünmesi için yaklaşımlar önereceğiz.
Road-map
Hadi bakalım çizelim şu road-map’imizi. Anlatılacak konular:
- Design Patterns
- App Architecture
- İdeal uygulama mimarisi nasıl oluşturulur?
- Modularization
- Kotlin dilinin efektif kullanılması
- Reactive Programming
- RxJava
- Dependency Injection & Dependency Inversion
- Dagger
- Remote & Local Data Sources
- OKHTTP
- ROOM
- MVVM (Model – View – View Model) Pattern
- CLEAN Architecture
- DataBinding & ViewBinding
- Layout Hierarchy
- ConstraintLayout
- Glide
- RecyclerView & Hacks
- RecyclerView.ItemDecoration
- Test Driven Development & Behavior Driven Development
- Unit Test & UI Test
- Resource Management
- Framework Module
- App Component Module
- App Module
- Dark & Light Theme
- Activity, Fragment & BottomSheet
- Jetpack Compose (Birlikte öğreneceğiz 🙄)
Şimdilik anlatmayı düşündüğüm konular bunlar, bunların yanı sıra yan yazı dizilerinde de bir çok şeye değineceğiz.
Yazımı okuduğunuz için teşekkürler,
Devamında görüşmek üzere! 👋