Bootcamp boyunca özelde, kendi repomu açarak ödevlerimi, ders tekrarlarımı notlar alarak paylaşıyordum. Benim için orası bootcamp rehberi gibi oldu. Bootcamp boyunca öğrendiğim yüzlerce yeni şey bulunmakta ve başlangıçta çok az şey biliyordum. Notlar alarak ilerledim ve bundan çok da mutluyum. Son 2 ayda göstermiş olduğum aktiflik Github profilimde yeşilliklere yansımaktadır hatta. Github profilime gitmek için tıklayabilirsiniz.
Kendi repomda bizden istenen iki kitabın özetlerini paylaştım.
The Pragmatic Programmer kitabının özeti için linke tıklayabilirsiniz. Aynı şekilde Clean Code kitabına ulaşmak için linke tıklayabilirsiniz. Ben çok keyif alarak okudum bu kitapları ve çok şey öğrendim. Bu kitapları bize tavsiye ettiği için Kaan hocama tekrardan teşekkür ediyorum.
Proje içerisinde API_KEY kullanımına izin vermedim. Bunun için App klasörünün altında bulunan Utils klasorüne gidip Constants dosyasında kendi API_KEY'inizi oluşturup ekleyiniz lütfen. Aksi takdirde uygulamaya giriş yapmak istediğinizde uygulama açılmayacaktır.
Oluşturacağınız RawG API_KEY aşağıdaki ekran görüntüsündeki internet sitesidir. Siteye gitmek için tıklayabilirsiniz.
- Bitirme Projesi NeworlD uygulama ikonu
- Bitirme Projesi Hazırlık Dökümanı
- Proje Gereksinimler Hakkında
- Ekran Görüntüleri
- Kullanılan Dizayn Patern Mimarisi
- Kullanılan Harici Kütüphaneler
- Sayfa Tasarım Haritası
- Kullanılan Bileşenler
- Kullanılan Yapılar
- Network Endpoints
- Unit Test Durumu (En Çok Acemilik Çektiğim Yer)
- Trello Agile-Scrum
- Ödev Sonu Scrum Değerlendirmesi
Sorular | Cevaplar |
---|---|
Projenin içeriği ne olacak? | Oyunların listeleneceği bir sayfa. Bu sayfa içerisinde filtrelemelerin de mümkün olduğu ve oyun aramasının da yapılacabileceği bir sayfa olacaktır. Oyunların detay ekranları olacak ve detay ekranından oyunlar favorilere eklenebilecektir. Favoriler içerisinde de küçük bir ayrıntı sayfası olmaktadır. Daha sonra, oyunların bir de not ekleme sayfası olacaktır. Oyunlara yönelik notlar eklenebilecek ve düzenlenip silinebilecektir. |
Hazırlayacağın proje hangi amaca hizmet edecek? | Ben de bir oyun sever olarak, oyun sever insanların aktif bir şekilde kullanabileceği bir proje yapmayı hedeflemekteyim. |
Projeni yaparken nereden başlayacaksın ve hangi aşamaları takip edeceksin? Bu konu senin için net mi? | Proje içerisinde kullanılacak harici kütüphanelerin kullanılmasını araştırdım. Trello üzerinde bir görev aşaması belirledim ve ona uymaya çalışacağım. |
Projende kullanacağın yaklaşımlar neler olacak? | Projeyi tek kişi yöneteceği için, her bir adımın kontrolü bende olacaktır. Projeye tam manasıyla dahil olabilmek için bir dökümantasyon oluşturarak ilerlemeyi hedeflemekteyim. Ayrıca proje içerisinde kullanılacak kütüphanelerin, bir demo uygulamada kullanılıp, test edilip öyle projeye entegre etmek istiyorum. |
Projeni yazarken hangi teknolojileri kullanacaksın? Bootcamp’te öğrendiğin teknolojiler dışında başka teknolojilere ihtiyacın olacak mı? | En başta Local Notification ve Localization kavramlarını daha önce kullanmadım Swift dünyasında. Ardından kendim Lottie kavramını kullanmak istiyorum. Bir de Test yaklaşımlarını daha önce hiç kullanmadım Swift dünyasında Unit Test yazmak da benim için ilk tecrübe olacak. |
Projeyi nasıl tasarlayacaksın? | Örnek projeleri inceleyeceğim. Başta Steam olmak üzere bir çok oyun içeriği sunan örnek projelere bakarak, onlardan daha iyi neler yapabilirim, araştıracağım. |
Gereksinimler | Sürümler |
---|---|
Xcode | Version 14.2 (14C18) |
Swift | 5.7.2 |
iOS | 16.1 |
Protocol Oriented MVVM
- Alamofire
- iCarousel
- MaterialActivityIndicator
- SwiftAlertView ~> 2.2.1
- lottie-ios
- UILabel
- UICollectionView
- UIPageControl
- UIView
- UIImageView
- UITableView
- UIButton
- UITextField
- UITextView
- UIScrollView
- UserDefaults
- CoreData
URL | Manası |
---|---|
/games?key=##API_KEY##&page={page}&page_size={pageSize} | Sayfa numarası ve sayfa saysında gösterilecek oyun sayısı |
/games/{gameID}?key=##API_KEY## | Oyun ID si ile birlikte oyun detay sayfası |
/games?key=##API_KEY##&page={page}&page_size={pageSize}&ordering=-released | Yayım tarihine göre en yeni oyunlar |
/games?key=##API_KEY##&page={page}&page_size={pageSize}&ordering=released | Yayım tarihine göre en eski oyunlar |
/games?key=##API_KEY##&page={page}&page_size={pageSize}&ordering=-rating | Değerlendirmeye göre en yüksek oyunlar |
/games?key=##API_KEY##&page={page}&page_size={pageSize}&ordering=rating | Değerlendirmeye göre en eski oyunlar |
/games?key=##API_KEY##&page={page}&page_size={pageSize}&ordering=added | Favoriye göre listelenen oyunlar |
/games?key=##API_KEY##&search={searchString} | Girilen oyun adına göre arama yapma |
Backlog - To Do - Doing - Done formatında projeyi yürütmeye çalıştım. İçimde kalan 2 eksik kısım bulunmakta. Biri sonsuz tableview içeriği yani Pagination diğeri de MVVM Mock test uygulanması. Ancak Unit testlerim hazır sadece canlıda çalışmaktadırlar.
Agile-Scrum metodolojisinde projeyi yönetmeye çalıştığım, Trello uygulamasında hazırladığım yol haritasını görüntülemek için tıklayabilirsiniz.
Projeyi Eduflow'a teslim ettim ve kendim için bir değerlendirme yaptım. Bu değerlendirmeyi paylaşmak istiyorum.
Sorular | Cevaplar |
---|---|
Neler öğrendin bu süreçte? | Bitirme projesi kapsamında aslında öğrenmediğim şey yok. Kelimenin tek manasıyla bu. Ben bootcamp öncesinde çok az bilgiye sahiptim. Hatta öyle ki, hayatım boyunca hiç iphone kullanmadım. Geçmişte yaşadığım bazı iş tecrübeleri sayesinde iOS developer olmaya karar verdim ve para biriktirerek, biraz borçla Macbook sahibi oldum daha geçtiğimiz Eylül ayında. Dolayısıyla sadece Swift UIKit tecrübesinden ziyade, ben MAC/iPhone ikilisine yeni adepte olmaya çalışan birisiyim. Bu bootcamp bu sürecimi çok hızlandırdı ve ortaya çok keyif alarak yaptığım bu projeyi ortaya çıkarttı. En başından en sonuna, bu 2 haftalık süreçte her gün 7-8 saat minimum sürede geçirdim. Tüm odağım bu ödev oldu ve elimden gelen tüm çabayı göstermek istedim. Bootcamp boyunca bilmediğim, öğrenmediğim ne varsa internetten araştırarak geçti bu süreç ve bundan çok keyif aldım. |
Aynı süre verilse neyi iyi yapardın? | Aynı süre şuanki aklımda yeniden verilse bana, tasarıma çok zaman kaybetmezdim. Tasarım konusunda çok az bilgim vardı ve bana çok zaman kaybettirdi. Hele ScrollView kullanımı tam felaketti benim için. Ancak günün sonunda mantıklarını oturttuğuma inanıyorum. MVVM mimarisini daha sade yazmayı çok isterdim ama maalesef buna gerçek manada çalışma tecrübesi lazım. Soru sorabileceğim, kod inceleyebileceğim en ufak bir şey yok. İnternette kaynakların hepsi ya çok profosyonel ya da çok basit düzeyde. Arasını yakalayamadım maalesef. Aynı şekilde Test kullanımını da söyleyebilirim. Unit Test de çok fazla içerik gördüm ama tam manasıyla istediğim sonuçları elde edemedim. Yine de elimden geldiğince test etmeye çalıştım. Bu süreçleri daha iyi yönetebilirdim belki ama yine de bir tecrübe şart bu konuda. |
Evet iki soru ve iki cevap. Ben bu süreçten dediğim gibi çok keyif aldım. Bu bootcampt'de olmaktan dolayı çok mutlu oldum. Çok şey öğrendiğime inanıyor ve hayatım boyunca unutmayacağım bir eğitim sürecinde olduğumu düşünüyorum. Bana bu imkanı sağlayan Patika.dev ekibine tekrardan çok teşekkür ederim. Bizlere en iyi şekilde öğretmenlik yapan, harika bir insan olan, Kaan Yıldırım hocama tekrardan çok teşekkür ederim. Bizleri Vakıfbank çatısı altında toplayan Vakıfbank'a çok teşekkür ederim ve son olarak, bootcampte yer alan bütün arkadaşlara çok teşekkür ederim. Bazen onlara sorular sordum bazen onlar sorular sordu birlikte cevaplar aradık. Bu süreçte tanıştığım arkadaşlıkların uzun ömürlü olmasını çok isterim.
Teşekkürler
Ömer Faruk Öztürk