board.jpgUzun zamandır blogumu güncelleyemediğim için bu yazıma tüm blog okuyucularımdan özür dileyerek başlamak istiyorum. (Bu kaçıncı özür ?) Bu defaki bahanemi zaten başlıktan iyi kötü tahmin etmişsinizdir. Geçtiğimiz cuma günü (14.03.2008) Cybersoft İstanbul ekibine yeni katılan arkadaşlarımızla oryantasyon tadında bir eğitim gerçekleştirdik. Daha evvelki toplantılarımızda gerçekleştirme kararını verdiğimiz ve bence çok önemli bir ihtiyaç olan eğim süreci de bu şekilde başlamış oldu.

Açılışta yöneticilerimizden Mehmet Surav tarafından şirket ve üzerinde çalıştığımız proje hakkında yarım saat bilgi verildikten sonra yaklaşık iki buçuk saat boyunca uygulama geliştirme ortamımız ,süreçler,kullandığımız araçlar ve yaklaşımlarımız hakkında yeni gelen arkadaşlara bildiklerimi aktarmaya çalıştım. Biraz daha teknik ağırlıklı olan benim bölümümde ekip liderim Meltem Yeşiltaş ‘ın da katkılarıyla yazılım üretim bandımız olan AURORA ‘nın iç yapısı ve katmanlarına da değinme imkanımız oldu. ( Eğer nedir bu Aurora diye merak ediyorsanız http://www.cs.com.tr/urunler_aura.htm adresine bakabilirsiniz. )

Eğitimde kullandığım yaklaşık 40 slaytlık sunumumu malesef burada paylaşamıyorum çünkü içerisinde şirkete özel bilgiler var ama yine de o güne ait mesajlarımu blogumda da özetlemek isterim. Özellikle de iş hayatına yeni atılacak arkadaşlar için hem beşeri hem de teknik bazı önerilerim olacak:

  • Öncelikle çalıştığınız ortamdaki kişilerin görev tanımlarını ve yetkilerini iyice öğrenin çünkü bir sorunla karşılaştığınızda doğru kişiye sorunu aktarmak sorunu çözmek için en önemli adımdır.
  • Çalışma ortamınızda teknik veya beşeri problemleriniz varsa bunları içinize atmayıp yetkililere aktarın. Hatta kendi önerilerinizi de söyleyin. Mesela sürekli entegrasyon metodolojinizi beğenmiyorsanız nasıl daha efektif olabileceğine dair konfigürasyon yöneticisi arkaşlarla fikir alışverişinde bulunabilirsiniz.
  • Her şirketin kendisine göre benimsediği bir iş geliştirme süreci oluyor. Bu sürecin tüm parçalarını detaylı olmasa bile öğrenmeye çalışın. Bu bilgi özellikle çalışma zamanınız üzerinde plan yaparken lazım olacaktır.
  • Muhakkak bu gibi eğitimlerde not alın ve soru sorun ! Yapılan işler üzerine fikir yürütün. Mesela daha evvelki çalışma ortamınızda kullanılan X ürünü yerine neden burada Y ürününün tercih edildiğini sorabilirsiniz.
  • İletişimde sözlü iletişim en keyifli yol olsa da iş konusunda yazılı iletişim ortamlarını tercih edin ve bunların mutlaka yedeklerini ayrı bir ortamda saklayın. (E-posta, Issue Tracking ürünleri vs.)

Gelelim teknik olarak altı çizilecek tavsiyelere:

  • Büyük çaplı projelerde aynı veri kaynağı üzerinde sizden başka kişilerin de çalıştığını yada çalışabileceğini aklınızdan hiçbir zaman çıkarmayın!
  • Uygulama geliştirme ortamınızın yetkiniz olsa bile dışına çıkmamaya çalışın. Bir uygulama geliştirici için en temel uygulama geliştirme ortamı kendi bilgisayarıdır. Bu ortamda her türlü iyileştirme , test ,gözlem vs. ‘yi yapıp ondan sonra sürüm ortamlarına akabilir :)
  • Yukarıdaki maddeye ek olarak sürekli entegrasyon için kullandığınız farklı ortamlar varsa (Dev,Alfa,Beta,Prod …) öncelikle DEV ortamında kodunuz düzgün çalışmalıdır. Geçişler de yine aynı şekilde Dev ‘den Prod ‘a doğru olmalıdır. Bu iş için oluşturulan otomatik sistemlere (Sürüm sistemleri) elle müdahele etmeye kalkmayın. Biraz sabırlı olun da sürüm çıksın ! Aksi halde Dev ‘den başlayan stabilite kaybı Beta ‘ya doğru yayılabiliyor. (İlerleyen zamanlarda bu madde üzerine daha detaylı bir yazı yazacağım)
  • Eğer kaynak kod yönetimi için herhangi bir kilit mekanizması (Ör: Exclusive Lock) kullanmıyorsanız o zaman ekip içi iletişimi en iyi seviyede tutmalısınız. Yani aynı kaynak kod üzerinde çalışıp daha sonra çakışma sorunu yaşamamanız için ekip arkadaşlarınızla senkronize bir şekilde çalışıyor olmanız gerekiyor. Elbette bunun için en temel çözüm daha sık COMMIT ve UPDATE işlemleri yapmak. Yani çalışma alanınızdaki dosyaları değiştirmeden en son hallerini kod havuzundan almakta fayda var.
  • Bir önceki maddede yer alan daha sık güncelleme işleminiz otomatize etmek sizin elinizde. Ufak bir batch dosyası ile CVS,SVN vs. ‘den dosyaların son halini alıp o şekilde IDE ‘nizi başlatabilirsiniz. (Bununla ilgili de bir yazı gelecek…)
  • Issue Tracking için herhangi bir X aracını kullanıyor olabilirsiniz. Bu aracı muhabbet amaçlı değil. Gerçekten hata ve iş takibi için kullanmalısınız. Burada hem hata tanımı yaparken hem de çözüm belirtirken açıklayıcı bilgiler verin ki daha sonra aynı işle tekrar tekrar uğraşmayasınız.
  • Çalışacağınız teknolojileri ve ürünleri iyice tanımaya çalışın ve bu iş için size işe başlangıcınızda tanınan zamanı en iyi şekilde değerlendirmeye çalışın. Bu iş için de en güzel yöntem varolan dokümantasyonu okumak ,uygulama yapmak ve SORU SORMAKTIR.
  • Eğer bir önceki maddedeki dokümantasyon şirketiçi Wiki (Ör: Confluence) gibi bir ortamdaysa mutlaka katkıda bulunun, yeni öğrendiklerinizi okuyun.
  • Kod yazımı sırasında şirketteki standartlara uymaya çalışın. Herkese kendi stili ve yaklaşımı en iyi gelir ama unutmayınki evde freelance olarak proje yapmıyorsunuz ve bir ekibin parçasısınız.
  • Yukarıdaki maddeyi es geçmek,kodda gerekli dokümantasyona yer vermemek,kendimizce geliştirdiğimiz yolları takip etmek bakım zamanı ÖLDÜRMEZ SÜRÜNDÜRÜR.
  • Mümkün mertebe işleri kolaylaştıracak otomatize yöntemleri projenize dahil edin. Özellikle de konfigürasyonel yapılandırmanız diğer çalışanların da birşeyleri değiştirmesini gerektiriyorsa bunun için gerekli batch veya ant scriptini yazmanız ŞIK ve YERİNDE bir davranış olacaktır.
  • İlk zamanlar eğer gerekli fırsatınız varsa yaptıklarınızı birilerine review ettirin ve iyileştirmelere açık olun.

Şimdilik aklıma gelenler bunlar. Elbette yukarıdaki herbir madde başlı başına bir blog konusu ama temel olarak bunlara uymak ve “Aman canım boşver” dememek hayatımızı kolaylaştıracaktır.

Umarım eğitimin ilk gününden katılımcı arkadaşlar memnun kalmıştır. (Kıymeti sorunlarla birebir karşı karşıya kalındıkça anlaşılacaktır) Önümüzdeki hafta salı,çarşamba günleri de uygulama geliştirme ile ilgili olarak bilgisayar başında bildiklerimi paylaşıyor olacağım.

Bu gibi eğitim süreçleri işe yeni başlayan arkadaşların iş ortamına daha hızlı adapte olmalarını ve şirketlerin de bu arkadaşlardan daha çabuk verim almalarını sağlar. O nedenle sizler de imkanlar dahilinde bu gibi eğitim fırsatlarını şirketiçinde oluşturmanın yollarını arayın.

Şimdilik benden bu kadar. Eğitimlerin diğer günlerinden gözüme çarpanları da blogumda paylaşmaya çalışacağım.