pinguar.org/gunluk

TAŞINDIK

Posted by pinguar on Salı, Ocak 16 at 7:24 PM | Permalink

Daha etkin bir geliştirici olmanın ip uçları...



Bu sene gördüğümüz son sınıf dersleri arasında "Yazılım Mühendisliği" diye bir ders var. Aslında hep teori içerikli gittiği için; öğretici olabilecek bu ders öğrenci psikolojisi karşısında direnemiyor ve anlatılanlar bir kulağımızdan gidip ötekinden çıkıyor :) Ancak hepimiz içgüdüsel olarak yazılım geliştirme konusunda kendimize göre yöntemler uygulamışız zaman içinde: mesela ben 1. sınıftayken ucundan tek kişilik ? extreme programlama yapıyor olduğumu farkettim * *. Programın tasarım sürecini göz ardı ederek direkt kodlamaya geçiyordum; hızlı geliştirme/bol bug oluyordu haliyle. Ya da yıllardır üst sınıflardan aldığımız bazı derslerin ödevlerini yeni ihtiyaçlara göre 'modifikasyon' ederken aslında reengineering yapıyormuşuz...

Açıkçası yazılım geliştirirken genel/geçer kuralları izlemiyorum. Ama daha iyi bir geliştirici/mühendis olmak için bazı kuralları akılda bulundurmakta fayda var. Deneyimli Ruby hackerlarından Yurii Rashkovskii, dün daha efektif bir geliştirici olmak için bir kaç ipucu vermiş. Bazıları benim de benimsediğim kurallar olduğu için bahsettiği ipuçlarına burada yer vermek istedim:

Planlama

Planlama şüphesiz bir yazılım için olmazsa olmaz adımlardan biri. Her ne kadar yazılım hakkında tasarladığınız bir takım adımlar olsa da; direkt kafanızdaki taslak ile kodlamaya geçerseniz mutlaka geri dönmeniz gereken adımlar oluyor. Yurii'nin önerdiği planlama şöyle:

  • Yapmanız gereken işlerin bir listesini hazırlayın
  • Kısa zamanda bitecek işleri 'Rightnow' dizinine koyun
  • Ertesi gün bitmesi gerekenleri 'Today', haftaya kadar bitirilmesi gerekenleri 'ThisWeek', ... vb. dizininlere koyun
  • Bunları yaparken görevleri kısa ve açıkça belirleyin
  • Zamanlama konusunda gerçekçi olun


Ben planlama için genelde kağıt-kalem :) bunları webe aktarmak için de Ta-da List'i kullanıyorum. Zihin haritalama programları da bu iş için alternatif olabilir.

Çalışma

  • Öncelikli işleriniz için 'Rightnow' dizinine göz atın. Yapılacakları yapın, dizin boşaldığında Today'a, o boşaldığında bir sonraki dizine atlayın
  • Ancak üzerinde çalıştığınız dizini bitirmeden bir sonrakine geçmeyin


Kaynak Kodun Yönetimi

Kaynak kodlarımız ortaya koyacağımız en önemli eser değil mi? :)

Hepinizin başına gelmiştir: kendi kendinize geliştirdiğiniz amatör uygulamalarda radikal bir değişiklik yaparken yedeğini alırsınız, bir süre sonra eğer sürüm numarası da vermesiyseniz iş içinden çıkılmaz hale gelir. Kendi subversiyon sunucunuzu kurmanıza gerek yok. *forge türü proje barındırma siteleri genelde bu hizmeti sunuyor.

  • Versiyon kontrol sistemi kullanın: Subversion, Darcs gibi..
  • Kontrol mesajlarınızın açıklayıcı olmasına dikkat edin
  • trac ya da ona benzer bir scm kullanın


Kaynak Kod

Kodumuzu açık kaynaklı olarak yayınlamakla iş bitmiyor tabii. Anlaşılır kodlar yazmak için de bir dizi öneri var:

  • İsimlendirme kurallarına uyun
  • Anlamlı değişken, metot, sınıf adları kullanın
  • Okunabilir kodlar yazmaya çalışın
  • Kod boyutunuzu küçültmeye çalışın; eğer kullandığınız metodun daha kısa hali varsa onu kullanın *
  • Kodunuzu depoya göndermeden önce gözden geçirin; beğenmediğiniz yerleri düzeltmeye çalışın
  • Meslektaşınızdan kodunuzu 15 dakikalığına gözden geçirmesini rica edin


Bu zaten sıkça dile getirilen bir şey ama, aynı zamanda kodunuza yorum satırları eklemeye özen göstermelisiniz. Bu sadece kodu okuyana değil, uzun bir aradan sonra koda baktığınızda size de faydalı olacaktır.

Test

Yurii bu maddeyi daha çok Ruby kullancıları için özelleştirmiş. Test noktasında ben birşeyler söyleyeyim: yazacağınız metodun/sınıfın önce iskelet halini oluşturun. Böylece neler yapmanız gerektiğini önünüze koymuş olursunuz. Aynı zamanda belli bir işi yapan kod parçalarını interaktif kabukta deneyerek tüm programı derlemeden/çalıştırmak zorunda kalmadan test edebilirsiniz. Tabii test aşaması oldukça geniş bir alan. Pek çok argüman eklenebilir.

Sonradan gelen edit: Bugun konuyu biraz daha araştırayım dedim. Keşke daha önce rastlasaydım dediğim harika bir makaleye rastladım: "How To Write Unmaintainable Code". Roedy Green tarafından yazılmış. Eğer benden önce davranan olmazsa en kısa zamanda Türkçe'ye çevireceğimdir ;)

Posted by pinguar on Perşembe, Ocak 11 at 11:33 PM | Permalink

ILSIS yüzünden makinanızda (evinizde) Windows beslemeyin!



WebExpose Ekibi, Linux makinenizde hem IE 5.0 & IE 5.5 & IE 6.0 hem de IE 7.0 sürümlerini nasıl yükleyeceğinize dair bir girdi yazmışlar. Yalnız 7.0 sürümünü arayüzü ile değil de, 6.0'ın rendering motoruna gömülü olarak kullanabiliyorsunuz (ki zaten bizi de IE 7.0'ın getirdiği tab ya da rss okuyucu gibi son teknoloji (!) özelliklerine ihtiyacımız yok :)).



Peki, makinamızda her çeşit IE sürümü çalıştırmanın ne gibi mantıklı sebepleri olabilir?

- Linux üzerinde çalışan web tasarımcıları: Sayfalarınızı yalnız Firefox, Opera, Epiphany vb. Linux ile uyumlu web tarayıcılarında değil, aynı zamanda makinanızda Windows beslemek zorunda kalmadan IE üzerinde de test edebilirsiniz (ki nerede bir Windows makina görsem, hemen IE'ı açıp web sayfalarımın nasıl gözüktüğünü kontrol eden - akabinde sayfalarımın bu kadar berbat gözüktüğüne inanamayıp olay yerinden hızla uzaklaşan ben: bu seçeneği kendime önermiyorum :))

- Windows üzerinde çalışan web tasarımcıları: Aynı Windows makinada hem IE 6.0 hem de 7.0 çalıştıramayan * web tasarımcıları bu yolla her çeşit IE üzerinde sayfalarını deneme imkanına sahipler! * *

- Veee... Ailesinde öğretmen barındıran, ve bu yüzden Milli Eğitim Bakanlığı'nın tasarım harikası ILSIS web sitesine login olabilmek için makinasında Windows beslemek zorunda kalan geniş kitle * : Annemi geçen sene emekli ettiğimiz için ihtiyaç duyup denemedim. Bu yüzden İlsis Sistemi her ne kadar "Internet Explorer 5.0 ve üzerindeki versiyonları için hazırlanmıştır." dese de yine de Windows üzerinde çalışmayan bir IE ile sorun çıkabilir. *.


Bu adreste kurulum işinin nasıl yapıldığı ayrıntılı olarak anlatılmış. Ama WINE'la * mı yoksa bu yolla mı daha güvenli bir IE'ye sahip olunur, bilemiyorum...

Posted by pinguar on Salı, Ocak 9 at 2:12 AM | Permalink

Google Docs & Spreadsheets -- Web word processing and spreadsheets. Edit this page (if you have permission) | Report spam