Yazılımcı adaylarına tavsiyeler : Agilistanbul
Son 3-4 senedir mezun olduğum okul olan Marmara Üniversitesi'nde bilgisayar mühendisliği öğrencileri ile buluşuyorum. Bazen üniversite hayatına yeni başlamış olan 1. sınıflarla, bazen de müstakbel iş arkadaşlarım olan son sınıflarla sohbet ediyoruz. Konuşmalarımda sıkça deneyimlerimden bahsederken, "iyi bir yazılımcı nasıl olunur" sorusuna cevap vermeye çalışıyorum. 2012'nin sonlarını yaşadığımız şu günlerde, henüz üniversitede olan yada yeni mezun olmuş, yazılım geliştirmek isteyen arkadaşlarıma hem öğüt vermek hem de böylece ufak bir hediye vermek istiyorum.
Üniversite hayatınızda geliştirdiğiniz projelere çok önem verin. Çünkü bu projeler sizin deneyiminizdir. Yeni iş hayatına atılacak yazılımcı adaylarının en büyük derdi, tecrübe hanesi boş olduğu için iş bulamama korkusudur. Haklılarda. İş ilanları hep şu kadar yıl deneyimli yazılımcı arar, neredeyse tecrübe aramayan firma yok gibidir. Ancak unutulan bir nokta var. Tecrübe yıl ile ifade edilemez. Yaptıklarınızla ifade edilir. Bunu ispat edecek olan sizsiniz. Görüşmelerinizde heyecanınızı ve öğrenmeye olan açlığınızı gösterin, projeleriniz sizi iyi iş fırsatları ile buluşturacaktır.
Takım olarak çalışmayı öğrenin. İş hayatınızda, başarılı yazılımların ancak ve ancak takımca iyi bir takım çalışmasıyla geliştirilebileceğini göreceksiniz. Bunun farkında olan işverenler de görüşmelerde sizin takım çalışmasına yakın olup olmadığınızı gözlemleyecek. Bunun bilincinde olun. Yazılım geliştirirken tasarımı, kodlamayı ve raporlamayı arkadaşlarınızla yapın. Çalışması kolay ve zor insanları gözlemleyin. Gelecekte bu deneyiminiz çok işinize yarayacak.
Yazılım geliştirme süreçlerini öğrenin. Yazılım, bir takımla belli bir disiplin takip edilerek geliştirilen kollektif bir iştir. Sizi zorlu bir iş hayatı bekliyor. İşi yapan, değer katan siz olsanız bile size değer veren insanlarla çalışma şansına sahip olamayabilirsiniz. Süreçlerin bozukluğundan çokça şikayet edeceğiniz zamanlar gelebilir. Siz siz olun, insana değer veren, yazılımda kaliteye odaklanan Agile, Lean, Extreme Programming, Software Craftsmanship (Yazılım Ustalığı), Kanban gibi kavramları öğrenin. Detayları ile öğrenin demiyorum, ama mutlaka bu kavramların neyi ifade ettiğini okuyun, öğrenin.
Düzenli olarak teknik blogları ve sosyal medyayı takip edin. Her gün en az bir saatinizi teknik blogları okumaya ve teknik insanların sosyal medyada yazdıklarını takip etmeye ayırın. Dünyayı takip edebilmenizin bir yolu da budur.
Teknik kitapları okumaya gayret edin. Tamam herşey internette var. Ancak Amazon'dan tek tık ile alabileceğiniz büyük ustaların yazdığı teknik kitaplar sizin bilgi seviyenizi logaritmik arttırır. Mutlaka her 2 ayda bir bir kitap bitirmeye çalışın. Yılda 6 kitabı hedefleyin.
Sıradanlaşmayın, her gün yeni şeyler öğrenin. Piyasada sıradan çok yazılımcı var. Yıllardır kendine hiç birşey katmamış, emekliliğini bekleyen insanlarla tanışacaksınız. Siz farklı olmak zorundasınız. Fark yaratmak için de enerjinizi yeni şeyler öğrenmek için harcayın. Çok iyi bildiğiniz bilgilere güvenmeyin. Sizi bugün değerli yaparlar, ama yarın çöp olurlar. Beyninizde çöp biriktirmeyin.
Geçmiş teknolojilere değil, günümüz değerlerine odaklanın. Bulut bilişim (Cloud), siber güvenlik, dağıtık kaynak kod versiyonlama sistemleri (DVCS), uygulama yaşam döngüsü yönetimi (ALM), NoSQL, NewSQL, test güdümlü geliştirme (TDD), kabul testleri (Acceptance tests, BDD), GitHub, Android ve iOS uygulamarı, mobil çözümler ve daha bir çoğu. Okuyun, nedir öğrenin. Mümkünse makinanıza kurun yada online bağlanın. Deneyin. kullanın, kullandırın...
Test edilebilir kod yazın, test düdümlü yazılım geliştirin, kodunuzu versiyonlayın ve bolca kod okuyun. Test güdümlü yazılım geliştirmeyi (TDD) öğrenin. Test edilebilir kod yazmayı bilmek tecrübe ister. Tecrübe edilebilmek için bol bol kod kataları ile pratik yapın. Temiz ve başarılı kod yazabilmek için "Clean Code" ile alakalı kitapları okuyun. Kodunuzu GitHub yada BitBucket'ta versiyonlayın. GitHub topluluğuna katılın ve başkalarının kodları okuyun. Başkalarının kodlarını makinanıza indirin, üzerinde deneyler yapın.
İşe başladığınızda bir ustaya çırak olun. İyi yazılım ancak ve ancak iyi yazılımcılar tarafından yapılır. Bir işe girdiğinizde sizden çok daha deneyimli kişilere çırak olun. Onlardan disiplinli bir şekilde yazılım geliştirmeyi, teknolojileri kullanmayı ve takım olarak çalışmayı öğrenin. Uyarılarına kulak verin. Önerilerini dinleyin. Dediklerini yapın. Umarım benim kadar şanslı olur ve karşınıza çok iyi bir usta ile çalışma fırsatı doğar.
Sorgulayın, daima yapıcı olmaya çalışın. İş hayatınızda canınızı sıkacak birçok olayla karşılaşacaksınız. Çokça şikayet edecek, hayıflanacaksınız. Sakın her olayda sadece şikayet eden, objektiflikten uzak ve hiçbir çözüm önerisi olmayan, hatta zaman zaman yıkıcı insanlardan olmayın. Böyle insanlar hiç bir iş yerinde mutlu olmadıkları gibi sizi de mutsuz ve umutsuz bırakırlar. Sorunları gözlemleyin. Bulup ortaya çıkarın ve sonrasında çözüm önerisi yada önerileri getirin. Sorgulamayı sakın bırakmayın. Problemleri kanıksamayın, zamana yenik düşmeyin. Ama daima yapıcı olmaya ve sorunları çözmeye odaklanın.
Yazılım, teknolojiler ve girişimcilik ile alakalı konferans, zirve ve buluşmalara katılın. Böyle mekanlar sizinle aynı yollarda ilerlemiş ve aynı kafada insanlarla tanışmak için bulunmaz yerlerdir. Ayrıca işin ustalarında işin inceliklerini öğrenebileceğiniz yegane yerlerdir. İnternetten ve sosyal medyadan takip edin. Fırsatını bulduğunuzda kaçırmayın.
Yazdığınız projeleri çöpe atmaktan korkmayın. Ürettiklerinizin esiri olmayın. Eğer projeniz ilerlemiyor ve istediğiniz verimi alamıyorsanız, atın çöpe gitsin. Yeni projelere yelken açın. Bırakın üreten beyniniz yepyeni fikirlere yelken açsın.
Bu konu üzerine daha çok yazabilirim. Şimdilik bu kadar diyelim:) Tüm yazılımcı adaylarına ve bu satırları okuyan tüm okurlarıma başarı dolu bir sene diliyorum.
Tarih: Cumartesi, Aralık 29, 2012
agile tavsiye yazılım
Yazıldığı yer: Istanbul, Turkey