İlk Adımını At: Ekip Çalışmasıyla Proje Geliştirme Rehberi
Merhabalar merhabalar uzun zaman sonra sizinleyim. Özellikle bu yazıyı yazmak istedim. Gördüğüm sorunlar karşısında evinde odasında bir masada tek başına var olmak öne çıkmak isteyen emekçi arkadaşlara bir “OHHH” yada “İşte yapmamız gereken haydi takım olalım” dedirtmek için ve tabi teknik sıkkınlıktan kurtarmak için bu yazıyı hazırladım.
Teknik sıkkınlık: ne yapacağını bilememe, nereye gideceğini bilememe ama içinde çalışma aşkı hevesi bulundurma sonucu çıkan rahatsız edici durum
Öncelikle yaşadığımız bu dönem ne yazık ki yüzlerce sorun barındırıyor. Ekonomik şartlar, sektörün toz pembe gözükmesi ve eğitim simsarları. Benim bu yazıda size göstereceğim yöntem ve yollar bu sorunları dünya perspektifinde çözmenizde yardımcı olacak. Evde otururken hayallerinize gitmenize yardımcı olmayı, sıkkınlık yaşamak yerine çok çalışmayı nasıl doğru yapacağınızı gösterdiğim bir yazı olacak.
Korkmayın çok çalışın doğru çalışın ve başarıya ulaşın. İlk işler veya son işler hiçbir şey kurtuluş değil hiçbir şey son değil. Devamlı öğrenme devamlı aç gözlü ama hırsımızla başkasının ekmeğine göz dikmeyecek kadar erdemli olacağız.
Uzattım biraz özlemişim :). Bu yazı 5 parçadan oluşacak
- İhtiyaçlar
- Ekip
- Backend
- Mobile(front)
- Tester(QA)
- Project Yöneticisi (PM)
Şimdiden teknik dolu fikir dolu bir yol bulacağınız bu yazıya hoşgeldiniz. Hayyyydiiii başlayalım.
İhtiyaçlar
Bu tarz bir yolda tabi dünyamızın şuan bize verdiği güçleri kullanacağız. Bunları en efektif şekilde değerlendirip kendimizi geliştireceğiz. Gelin neler lazım bir bakalım:
- Mobbin pro üyeliği (üç dört kişi birleşip tek hesap alın, öğrencilere %50 indirimli)
- herhangi bir ai tool ( cloudue tavsiyem github student package ile ücretsiz kullanılıyor)
- en az 4 kişilik bir ekip.
Mobbin neden işimize yarayacak ve pro neden alıyoruz diyor gibisiniz. Elbette burada ana sebebimiz basit. Mobbin içerisinde yüzlerce uygulamanın ekran görüntülerini barındırıyor. Misal:
Uber uygulaması iyi bir örnek. Çok kullanılan bir uygulama ve dünyada bir çok emsali var. Bu uygulamaların görüntülerini sizde indirip tek tek gezerek bulabilirsiniz. Mobbin içinde olan flow özelliği ile aslında bize hangi sayfanın nasıl çalışıtğını resim ediyor. İşte bu özellik bizim ana noktamız olacak. Bu sayede hangi iş hangi sayfa ne yapıyor nereye gidiyor anlayacak ve kendi projemizi oluşturabileceğiz.
Burada gördüğünüz şekilde bir çok özelliğin nasıl çalışacağını ve bağları çok rahat görebileceksiniz.
Ai tool ise tabiki bize en temel noktlarada yarayacak:
- Kod yazarken mimari üretmemizi sağlayacak
- Ekranlarımız için işlerimizi planlarken buradan yararlanacağız
- Test yaparken veya örnekler lazım olduğunda yine oraya gideceğiz.
Son olarak en az 4 kişi neden derseniz:
Burada ekip olarak bir iş çıkarmamız gerekiyor. Günün sonunda o beni sevmiyor ben kafam dengi bulamıyor değil, bir fikire profesyonel ve sözünde duracak şekilde gidebilecek en az 4 arkadaş yeterli olacaktır.
Ekip
Bu başlık belki en vurucu nokta şuan bu yazıda. Bireysel her ne kadar iyi geliştirici olsanız dahi günümüz çağında ekipler projeler büyüklüğüne göre birçok ekip arkadaşı barındırıyor. Bu ekiplerde kod yazmaktan ziyade o kodu ekipçe nasıl yazacağını bilmek bazen kod okumak bazen doğru yöntemleri kullanmak çok önemli. Ondan dolayı bu yolda bireysellikten ziyade ekip olmayı ve bu ekip olurken şunlara dikkat etmenizi istiyorum:
- Mobbin üzerinden daha çok ticaret, yemek veya güvenlik sıkıntısı yaratmayacak bir uygulama seçilir (bu banking app’ler sıkıntı yaratıyor, isterseniz webde gidebilirsiniz)
- mobbin’de solda seçtikten sonra flow göreceksiniz bu flow pro ile açılıyor bu flowu tek tek kayıt edeceksiniz.
- bu ekranları ve flow’u iyi öğrenecek anlayacaksınız
- Stackshare üzerinden bulabilirseniz şirketin kullandığı teknolojileri not düşeceksiniz (Linkedln den çalışanlardan bile bir çıktı yapılır)
- tüm girdiler hazır olduktan sonra ekibi 4 e böleceksiniz.
- bir kişi projeyi yönetecek
- bir kişi test yapacak test otomasyonu yazacak
- bir kişi backend yazacak
- bir kişi mobil yazacak(isteğe göre web)
- yapılacak işler için tüm her şey ekipçe planlanacak ve bunlar github (Atlassian da olur aynı) board kısmında açılarak hazırlanacak (bu noktada en iyi dostunuz ai, soracaksın bana bir task oluşturur musun o halleder.)
- Tüm işler pr’lar üzerinden dönecek şekilde hazırlanacak
- İşler bittikten sonra testere testerden sonra pm atılacak ve task kapatılacak. haftalık plan sonrası tester regrasyon testlerine başlarken automation tarafına çalışacak
- Automation testler için mobilde Meastro kullanabilir veya diğerleri
- Burada flowları iyi kullanarak mobbil’den backend mobil taskları yine ai kullanarak açılacak
- Ek olarak tasarım ve Devops kısmına ekleme olur ama öğrenci kafasında çok gerek yok zamanla onuda ekip kendi yönetir.
- Branch yönetimi için trunk based feature develop release şeklinde gidilir ya da kendi tarz veya Gitflow seçilir.
- İşler “definition of done” dediğimiz bitmesi için ne lazım eklenir (tester onaylar, code doc yazılır, pm onaylar, etc)
Backend
Geldik en sevdiğim ve her zaman herkese önerdiğim yere. Backend o kadar büyük bir yer ki burada bulacağınız gelişme tüm diğer dillere fw etki edecektir. Bu proje olarak amacımız alt yapıyı hazırlamak ve client yani front end uygulamıza bir servis hazırlamak. Özellikle bu çalışmalarda ihtiyaca göre ve yarınlara göre seris yapısı kurmayı, geliştirmeyi öğreneceğiz. Neler yapacağız bir bakalım:
- Hangi dil ya da framework kullanılacağı fark etmez; önerim Node.js yönünde olacaktır. Çünkü hızlıca yazılabildiği için ben genellikle Node.js kullanıyorum. Ancak istersen .NET Core, Go gibi alternatifleri de seçebilirsin.
- Taskları aldıktan sonra, örneğin “Login işlemi için e-posta ve şifreyle giriş yapılacak” gibi bir taskı alıp Node.js için gerekli kodları yazdırabilirsin. Bu işlemi yaparken GitHub’da bir board oluşturup yapılacak işleri düzenlersin. Ne yapılacağına dair planlamayı proje yöneticisiyle (PM) konuşup onay aldıktan sonra geliştirme sürecine başlayabilirsin.
- İlk etapta amacın ürünü ortaya çıkarmak. Bu süreçte backend geliştirme yaparken en önemli nokta güvenlik olacak. Endpoint’leri yazarken güvenlik standartlarına dikkat etmelisin.
- Diyelim ki branch’lerinizi dev ortamına merge ettiniz; burada küçük bir script ile API’yi sürekli güncel tutabilir ve bu işlemleri otomatize edebilirsiniz. Böylece yapılan değişiklikleri anlık olarak görebilirsiniz.
- API’yi AWS gibi bir platforma deploy ederek canlıya alacaksın.
- Projenin teknik altyapısını oluştururken, daha önce gördüğün ve benzer bir yapıya sahip bir eğitim ya da dokümandan birebir esinlenebilirsin. Amaç, kullanılabilir bir fikirden yola çıkarak ilerlemek. Proje tamamlandıktan sonra test süreçleri eklenir. Bu noktada AI, dostun gibi davranarak işleri kolaylaştırır ve sakin bir yapı ortaya çıkarır.
- Unutma, teknik seviyeni geliştirirken aynı zamanda bir iş ortaya koyuyorsun. Amacın daima task’ları iyi bir yapıda üretmek ve düzenli bir şekilde tamamlamak olmalı.
Mobile(front)
Tabi benim en sevdiğim diğer alana geldik. Kendi alanlarım görünce ayrı mutlu oluyorum. Benim alanım ne derseniz kodun olduğu her yer. Ben kütüphane dil değil koda iyi koda inanıyorum daima isimlere takılmadan. Bu kısmı geçecek olursak mobile app ile amacımız android/ios olarak iki uygulama vererek backend den gelen servislerimizi en doğru şekilde bağlamak olacaktır. Bu yolda çıkacak crashleri yakalama, analatik kullanma ve tabiki kullanış en önemli noktamız olacak. Haydi bakalım neler var:
- Bir design sistemi oluşturup mimari bir yapı kurmalısın. Android ve iOS platformlarında geliştirme yapacağımız için Flutter kullanmanı öneririm. Ancak bu tamamen senin tercihin; iOS native, Android KMP veya başka bir framework kullanabilirsin. Hangi teknolojiye aşina veya hangisine daha çok ilgi duyuyorsan, onunla çalış.
- Mobil veya backend geliştirme yaparken “Acaba bunu yazmasam daha iyi mi olur?” düşüncesine kapılmana gerek yok. Buradaki amaç yazmak ve öğrenmek. Bu yüzden her iki alanda da çekinmeden ilerle.
- İşleri uygulamaya entegre et ve düzenli bir şekilde paketler çıkar. Tester’ını daima güncel tut ve her yayınladığın pakette hangi işler tamamladığını açıkça belirt.
- Ekranlarını dark theme için tasarlamana gerek yok, ancak bu özelliğe hazır bir yapı oluştur. Tema ve benzeri özellikler projenin bir parçası olsun.
- Responsive geliştirmeyi unutmadan çalış. Web için olmasa bile, tablet gibi cihazlar için uyumluluğu mutlaka düşün.
- Geliştirdiğin paketi Google Play ve App Store süreçlerine hazırlayıp yayınla. Bu süreçleri yönetmek için küçük bir Fastlane yapılandırması kullanarak işleri kolaylaştırabilirsin.
Tester(Q.A)
Hakkı en çok yenen üzerinde türlü sorumluluk olan en değerli parçamıza geldi sıra. Eğer tester arkadaşlar “automation” kodlarını yazmazsa ve her defa her şeyi baştan manuel test ederse çok ciddi sorunlar psikolojik yıpranmalar bekliyor olacak. Bu parçada hem test yapmayı öğrenirken hem kodlamayı öne çıkarmayı istiyorum. Bakalım neler var:
- Özellikle test ettiğin versiyonları GitHub board üzerinden takip et ve ilerlemeyen ticket’lerle gereksiz yere vakit kaybetme; bu noktada takım çalışmasının önemini unutma.
- Ticket kapsamını ilk planlama aşamasında öğrensen dahi, yine de yapay zekâdan veya emsal uygulamalardan destek alarak “Bu nasıl çalışıyor?” sorusuna yanıt bulmaya çalış.
- Anlamadığın işleri mutlaka geliştiriciye sor ve ne yapıldığını tam olarak öğrenmeye çalış.
- Regresyon dokümanı hazırlayıp uygulama yayınlandıktan sonra bu dokümanı belirli aralıklarla çalıştır.
- Sağlıklı senaryolar için smoke test süreçlerini geliştir ve bu testleri haftalık veya belirli periyotlarla çalıştırmayı alışkanlık haline getir.
- Boş zamanlarında test otomasyonuna başla ve temel seviyede kod yazma pratiği yap.
- “Ben bulamadım” değil, “Biz bulamadık, hata bizimdir” yaklaşımını benimse. Test yaparken önce yapılan işlemi, ardından bunun etkileyebileceği diğer alanları düşün. İşte yazanların ötesinde bir planlama yapmayı ihmal etme.
- Her zaman öncelikli amaç, canlı ortamda müşteriden önce olası hataları bulmak olmalıdır.
Proje Yöneticisi (PM)
Teknik bir ekibin en en önemli parçası aslında. Kodlar işler yapılır elbette. Elbette yazılır. Fakat nasıl? Ne zaman? Ne şekilde? Ekibinin en efektif kullanımı nasıl? Teslim gelişim ve ekip huzuru. Tabi bunlar benim elbette kendi düşüncem bunun hepsini bulmanız da yapması da biraz zor oluyor. Ama gelin bu projede yapalım. Projeyi yönetecek arkadaş iş planlarını yapsın ekibi takip etsin ve ekibin gücünü sayısal olarak planlasın. Haydi bakalım neler var:
- Açılan task’lar konusunda tüm ekibin farkında olmasını mutlaka sağla.
- Günlük daily meeting’ler düzenleyerek “Neler yaptık? Neredeyiz? Herhangi bir ihtiyacımız var mı?” sorularını sormak önemlidir. Ancak bu toplantılar bir baskı yaratmak için değil, işin durumunu anlamak için yapılmalıdır.
- Dokümantasyonu düzenli olarak takip ederek ekip içindeki dengeyi korumaya özen göster.
- Ekibe verilen task’lar ve yapılan işler ne kadar doğru ve eksiksiz tamamlanıyor, bunu analiz ederek çalışmalarını şekillendir.
- Düzenli olarak rapor hazırlamaya başla. Örneğin, “Bu ekip iki haftada neler yaptı, bu işleri ne kadar sürede tamamladı?” gibi sorulara yanıt arayarak raporlarını oluştur.
- Ekibin çalışma kapasitesini ve verimliliğini anlamaya çalış.
- Belirli ritüeller düzenle. Örneğin, haftada bir oyun oynayarak veya farklı aktivitelerle ekibin bağını güçlendirebilirsin.
- Ürünün geleceği için planlar yap ve rakiplerin durumunu analiz ederek hazırlıklar yapmalıdır.
Veee hazırız gelin şimdi elimizde neler var son olarak nelere dikkat etmeliyiz bakalım:
- Projenizi tüm süreçleriyle dokümante edip LinkedIn ve benzeri platformlarda paylaşın.
- Ekip çalışması sırasında yaşananlar, karşılaşılan zorluklar ve elde edilen başarılar detaylı şekilde anlatılmalı.
- Yapılan clone uygulama, hangi şirkete aitse onlara bu çalışmaları göndererek fırsatlar yaratmaya çalışın.
*Task: İş olarak düşünebilirsiniz, örneğin login sayfasının yapılması.
Son olarak bu yazıyı hazırlarken evde emekçi bir ailenin evladını, kendi emeğine güvenen dimdik yüreyen arkadaşları, hayalleri olan ve bunları yaparken para tuzaklarına düşmek istemeyenleri düşündüm. Elimden geldiğince size gerçek hayatı resim edip buralara nasıl hazırlanmanız gerektğini anlattım. Umarım sana erişir senin arkadaşının, bu yolda çalışan birisinin o sıkıntılı zamanını unuturur yarınlara bir hedef koyabilirim.
Sizlere inanıyor sizler için çalışıyor Atatürk’ün bize bıraktığı vatana vatanın evlatlarına elimden geldiğince sahip çıkmaya çalışıyorum. Asla pes etmek yok çok çalışacak ve başaracaksınız.
Bir sonraki yazıda görüşmek üzere
Emeklerinizin karşılığını aldığınız güzel bir zaman olur umarım.
Linkler
https://stackshare.io/stacks https://mobbin.com/browse/ios/apps https://toptal.com/software/trunk-based-development-git-flow… https://github.com/features/issues
Tek bir tweet’de özeltediğim yazıya da buradan erişebilirsiniz: