Nasıl iOS Developer Oldum?
Geçtiğimiz hafta yalnızca mutluluğumu paylaşmak için attığım bir tweet, “beklediğimden” fazla ilgi gördü ve 70.000+ kişiye ulaştı. Benimle benzer yollardan geçen ya da bu yolculuğa başlamak isteyen pek çok kişi bana ulaştı ve aslında sorular birbirine oldukça benzerdi. Ben de tüm bu yolculuğu ve soruları tek bir blog yazısında toparlayarak topluluk için daha yararlı ve kalıcı bir hale dönüştürmeyi amaçladım. İşte karşınızda Sıfırdan Bire — iOS Developer Olmak!
iOS Öncesi
Üniversitenin ilk yıllarından itibaren günümüzün en popüler alanlarından biri olan yapay zeka, makine öğrenimi konularına ilgi duyuyordum fakat bir süre geçtikten sonra bu alanda çalışırken çok da keyif almadığımı “belki de benim için doğru alan bu değildir.” diye düşünmeye başladım. Ek olarak bunu da eklemeliyim ki cross-platform dillerden biri olan Flutter ile 2019 yılında tanışıp bir süre haşır neşir olmuştum. Belki de mobil ile olan maceram Flutter ile ilerleyecekken, yapay zekanın sektördeki popülerliği sayesinde Flutter’a ara vermiştim.
Yapay zekanın benim için uygun olmadığına karar verdiğim ve arayışta olduğum süreçte radikal bir karar ile Monster’dan Macbook Pro’ya geçiş yaptım. Neden böyle bir geçiş yaptığımı blogun en altında soru cevap bölümünde detaylı anlatacağım. :)
Yolculuğun başlangıcı!
Yeni aldığım MBP’nun en büyük nimetlerinden birinin iOS geliştirme olduğunun farkındaydım. Her ne kadar Flutter konusunda belirli bir temele sahip olsam da sektördeki deneyimli abilerimden/ablalarımdan aldığım ve sizin de mutlaka en az bir kere duymuş olduğunuz “native asla ölmez.” tavsiyelerini dikkate alarak iOS geliştirmeye karar verdim. Başlarken bir yol haritasına da ihtiyacım olduğundan Udemy ve benzer platformlarda sıfırdan başlayan bir kurs araştırmaya başladım. Çevrenin tavsiye ettiği ve genel olarak beğenilen üç farklı içerik vardı.
- The Complete iOS App Development Bootcamp — Angela Yu
- Hackingwithswift.com — Paul Hudson
- Raywenderlich.com
İlk olarak Angela Yu’nun kursunu aldım ve 10 gün sonra iade ettim, peki neden? Bu kurs üzerinde çalışırken projeyi sıfırdan oluşturma, uygulamaya icon ekleme ve benzeri adımları Angela Yu bizler için hazırlamış ve direkt olarak repoyu klonlayarak üzerine yazdığımız bir senaryo hazırlanmış. iOS geliştirme ile belirli bir vakit geçirmiş insanlar için proje oluşturma adımları kolay olsa da benim gibi yeni başlayan kişilerin her seferin bu adımları tekrarlamasının kalıcılık sağladığını düşünüyorum. Ayrıca Udemy kurslarının pek çoğunun ezbere dayalı olduğunu, videoda gördüğün şeyi IDE’ye yaz ve çıktıyı gör şeklinde olduğunu düşünüyorum. (umarım linç yemem. 😶) Bu bağlamda bu seçenek elendi.
Dürüst olmak gerekirse Raywenderlich hakkında pek bir deneyimim yok bu seçeneği elememin sebebi içeriklerinin bir çoğunun ücretli olmasıydı. Çevreden duyduğum kadarı ile kaliteli içeriklere sahip bir platform.
Son olarak benim de seçtiğim ve tavsiye ettiğim seçenek olan hackingwithswift.com’a gelelim. Bu site üzerinde yeni başlayanlar için iki farklı challenge var. Bir tanesi UIKit diğeri ise SwiftUI. Ben Apple’ın en güncel frameworkü olması nedeniyle 100DaysOfSwiftUI tarafını seçtim fakat biraz yanlış bir başlangıç olmuş sanırım, bunu da soru cevap kısmında detaylı açıklayacağım.
Bana göre 100DaysOfSwiftUI içeriğini diğerlerinden ayıran ve verimli hale getiren pek çok özellik var. Bunlardan bir kaçından bahsetmek gerekirse, içeriğin günlük planlar halinde ayrılması ve 100 günlük bir yol haritasını sizler için oluşturması. Aynı zamanda bir şeyler öğrenmek için video izlemek herkes için en uygun seçenek olmayabilir, bu noktada videoların metin haline de ulaşabiliyorsunuz. Ayrıca tüm anlatılanlar proje üzerinden ilerliyor ve projelerin son kısımları “challenge day” içeriyor. Challenge günlerinde projeye kendi çabanızla bir şeyler eklemeniz bekleniyor ve ihtiyaç duymanız halinde “herhangi bir kod paylaşımı” olmadan minik ipuçları paylaşılıyor.
Elbette her zaman bu challenge günleri başarı ile tamamlanamayabiliyor. Bu noktada da stackoverflow ve benzeri platformlarda yaptığınız araştırmalar, araştırma yeteneğinizi arttırıyor.
100 Days of SwiftUI programında ilerlerken motivasyonumu korumak için sosyal medya hesaplarımdan günlük öğrendiklerimi paylaşmaya ve aynı zamanda GitHub hesabımdan da commit atmaya başladım. Unutmayın bu süreç bir sprint değil uzun bir maraton, o yüzden ani bir hype ile başlayıp 1 ay sonra bırakmaktansa, motivasyonunuzu koruyarak sakin ve emin adımlarla ilerlemek çok daha önemli.
Altın Kural
Bu süreçte tek bir altın kural edinmenizi tavsiye ederim. En yoğun gününüzde dahi en az 1 saat Swift ya da iOS geliştirme ile alakalı herhangi bir video, makale, blog ya da kod yazmak. Hatta bir arkadaşınızla iOS geliştirme hakkında ettiğiniz sohbeti bile buna dahil edebilirsiniz.
Mülakatlara başlama
Challenge’ın 3/4’üne geldiğimde kendimi daha rahat hissettiğimi ve en azından bir şeyler yazabildiğimi gördüm. Henüz üniversite son sınıf öğrencisi olduğumdan staj ve part-time ilanlara başvurmaya başladım. CV’mde iOS ile alakalı herhangi deneyim olmadığı için GitHub profilimde olan 100DaysOfSwiftUI reposunu öne çıkarmaya çalıştım. Bu süreçte ilanların bir çoğundaki gereksinimleri karşılamasam da yine de başvurmaktan çekinmedim ve şansımı denedim.
Pek çok şirketin juniorlar için oluşturmuş olduğu study-case birbiriyle benzer. Genel olarak API’den veriyi çekmek ve bunu listeye yansıtmak ve sonrasında detay sayfasına navigate etmenizi isteyen mobil uygulamalar oluşturmanızı bekliyorlar. Ben de bu süreçte öğrendiklerim ile bir şekilde buna benzer projeler oluşturmaya başladım, tabii o sıralar “design pattern”, “üçüncü parti kütüphaneler” ve benzeri konulardan bihaberdim.
Şirketlerin sizden beklediği, çalışan bir uygulama oluşturmanın yanı sıra uygulamayı oluştururken örneğin MVVM gibi bir design pattern ile oluşturmak ve “Alamofire” ya da benzer bir kütüphaneyi kullanarak resimleri getirmek gibi detaylar. Ayrıca yazdığınız kodların bilincinde olmak da önemli detaylardan bir tanesi. Tahmin edersiniz ki ilk yazdığım uygulamalarda bu söylediklerimin hiçbiri bulunmuyordu. Bu noktada 100 günlük challenge’a ara verip spesifik olarak öğrenmek istediğim kavramları araştırmaya başladım.
Mülakatlarca defalarca red aldım fakat her seferinde yaptığım projenin bir diğerinden daha iyi olduğunun farkındaydım. Ayrıca mülakatların bir diğer faydası ise kendi kendinize çalışırken hiç rastlamadığınız ya da öğrenmediğiniz konuları çok kısa sürede araştırma ile öğrenebiliyorsunuz. Bu yüzden mülakatlarda başarısız dahi olunsa gelişim için çok yararlı olduğunu düşünüyorum.
Ayrıca bu süreçte Türkiye’nin önde gelen markalarından birinin mobil takım lideri ile görüşme şansı yakaladım ve onun ile yaptığım görüşmeler mobil geliştirmeye olan vizyonumu arttırdı, hazır yeri gelmişken teşekkürlerimi iletmek isterim.
Tüm bu süreçlerin sonunda Appcent ile olan mülakat aşamaları olumlu tamamlandı ve bu sayede 6 ay önce başlayan iOS serüvenime “insanlık için küçük, benim için büyük” bir adım atmış oldum.
Ayrıca Appcent ekibine katıldığım ilk andan itibaren karşılama harikaydı, böyle bir ekibe dahil olduğum için oldukça mutluyum!
Sıkça Sorulan Sorular
Bu sorular bana Twitter ve Superpeer üzerinden en çok sorulan sorular, cevaplar kesinlikle doğru olmamakla beraber yalnızca fikrimi belirttiğimi eklemek isterim.
Genel Sorular
- iOS geliştirmek istiyorum ama Mac’im yok mümkün mü?
Hackintosh ile mümkün olabilir fakat uzun vadede mutlaka bir MacOS işletim sistemine sahip bir donanıma ihtiyacın olacak.
- SwiftUI ile mi başlamalıyım UIKit ile mi başlamalıyım?
Bana göre UIKit ile başlamalısın. SwiftUI ile pek çok şey daha kolay hale gelmiş olsa da UIKit bilmeyen bir geliştiricinin sektörde yer bulması henüz çok zor.
- Bende iOS geliştirici olmak istiyorum, nasıl bir yol izlemeliyim?
İnternette pek çok roadmap var, bunlardan bir tanesini kaynak alıp ilerleyebilirsin. Ayrıca 100 days of Swift içeriği de ilk 100 gün için iyi bir yol haritası.
- Macbook almak istiyorum hangisini alayım?
Tamamen bütçeniz ile alakalı bir durum. Hali hazırda satılan tüm Macler (M1 ve üzeri) iOS geliştirme için oldukça uygun, eğer bütçeniz el veriyorsa RAM’i 16GB yapmak güzel bir yatırım olabilir. Ayrıca eski intel maclerde pek tabii kullanılabilir fakat satın almadan önce detaylı araştırmakta fayda var.
- İngilizce bilmiyorum, Türkçe kaynak var mı?
Udemy üzerinden Türkçe iOS kursları da var fakat ben deneyimlemediğim için yorum yapmam doğru olmaz. Seyfeddin abinin ve Veli abinin Youtube kanallarında SwiftUI içerikleri var, tavsiye ederim.
- İlanlara başvuruyorum bir türlü kabul almıyorum, ne yapabilirim?
Eğer ilk aşamada red alıyorsanız GitHub üzerinde yaptığınız projeleri çeşitlendirebilirsiniz ve CV’de bu projeleri öne çıkarabilirsiniz. Study case aşamasında red alıyorsanız, yazıda da bahsettiğim gibi design pattern, cocoa pods ve benzeri detayları öğrenip kodunuzu geliştirebilirsiniz.
Kişisel Sorular
- Herhangi bir altyapın var mıydı?
Bilgisayar mühendisliği okuduğum için elbette bir miktar altyapım vardı. Öncesinde java, dart ve python dilleri ile ilgilendiğim için OOP yapısına bir miktar aşinaydım fakat bu demek değil ki bu temel sayesinde bu hale geldim. Bölümünüz ne olursa olsun yeterli gayreti gösterirseniz başaracağınızı düşünüyorum.
- Neden Monster satıp Macbook aldın?
Monster bilgisayara sahip olduğum zamanlar zamanımın pek çoğunu oyun oynayarak geçiriyordum. O sıralar iOS geliştirme ile hiç alakam olmamasına rağmen Macbook alarak kendime oyun oynamayı yasakladım diyebilirim aslında. Bu sayede oyun oynayarak geçirdiğim zamanları daha verimli hale getirdim.
- Motivasyonunu kaybettiğin zamanlar oldu mu?
Elbette oldu, bu süreçte zaman zaman çalışma sürelerimi azalttım fakat genel olarak motivasyonumu korumamın en büyük sebebi atmış olduğum günlük commit ve instagram hikayeleri oldu. Ayrıca kendinize bir study-buddy bulmanızı tavsiye ederim, bu maraton tek başına çekilmiyor. :)
Hazır study-buddy konusu açılmışken, bu maratonda bana eşlik eden Mehmet Ali ve Giray’a da selamlarımı iletiyorum.
- Daha fazla sorum var.
Twitter ya da Superpeer hesabım üzerinden sorularını sorabilirsin, en yakın zamanda cevaplıyor olacağım!
Kapanış
6 ay önce başlayan tüm bu serüvenimi sizlere anlatmaya çalıştım. Umarım burada yazılanlar birilerine ilham olur. Bu yolculuğun bir maraton olduğunu unutmayın, uzun ama bir o kadar da keyifli bir maraton. Ayrıca burada yazanların tamamı 4. sınıf üniversite öğrencisi bir junior iOS geliştirici ağzından yazıldı, elbette yanlış bildiğim detaylar olabilir, amacım yalnızca bu yolculuktaki deneyimleri diğer insanlara aktarmak. Umarım keyifle okumuşsunuzdur. :)
Ayrıca bu yazıyı yazarken verdiği geri bildirimler için İrem’e teşekkürler. 🐨
Geri bildirim ve sorularınız için bana Twitter, Superpeer ya da hi@dogancan.dev mail adresinden ulaşabilirsiniz.