Etiket arşivi: kodlama standartları

Hal 96:Bir suçlu aradığında bu genelde projede kendinden önce çalışmış olan geliştirici/geliştiriciler olur

Yazılımcının işi aslında hiç kolay değildir. Sayısız programlama dilinden birini veya bir kaçını kullanıp, karmaşık problemleri yine karmaşık sayılabilecek mimariler, disiplinler ile harmanlayarak, müşterinin yüzünde tebessüm bırakacak ürünlerin geliştirimesinde rol almaya çalışır. Hele ki bir ekip çalışmasının söz konusu olduğu geliştirmelerde koordinasyon, süreç ve yönetim güçlükleri de işin içerisine girince tebessüm bıraktırmak epeyce zorlaşır.

Projenin veya iterasyonun sonlanmasına yakın artan baskı, sıkışık teslimat süreleri, yönetici tavırları, müşterinin olur olmaz isteklerinin kabülü, beklenenden az elde edilen gelir, kız/erkek arkadaşla yapılan kavga ve daha bir çok şey geliştiricinin zaten çorba olan kafasına tuz biber eker.

Yoğun olarak yazılım geliştirme işinde yer alan kişilerin zaman içerisinde psikolojik yıpranmaya uğramaları çok da şaşılacak bir durum değildir.

Peki işler kötüye gitmeye başladığında? Pproje geciktiğinde, istenen görevlerde sarkmalar olduğunda? Geliştiricilerin hepsi insandır ve çok doğal olarak psikolojisi vardır. Günlük rutin içerisinde değişken durumlarda değişkenlik gösterebilen bu psikolojinin içinde savunma ve yaptığını korumu dürtüleri de vardır.

Eğer süreç içinde işler bir geliştirici için ters gidiyorsa mutlaka “ürünün önceki zaman diliminde meydana gelen bir hat”a sonucu bu noktaya gelinmiştir düşüncesi hakimdir. Bu düşünce esasında önceki geliştiriciyi veya geliştiricileri suçlama noktasına kadar gider.

Bir ürüne geliştirme yaparken var olan koşullar çerçevesindeki standartlara uymak ve bunun dışına çıkmadan kodlama yapmak, sonradan gelen geliştiricilerin hakkımızda iyi şeyler düşünmesine neden olur.

En azından şirketin var olan kod-kalite standartlarına uyulmaya çalışılmasında yarar vardır.

Ne yazık ki bu tip savunma mekanizmalarının yöneticiler için bir kıymeti yoktur. Her ne kadar geçerli bir sebep olsa da yönetim kademesi veya işin sahibi, ürünün istenen nitelikleri ile istenen zamanda veya olabilecek en kısa sürede çıkmasını bekler.

Anahtar Kelimeler(Bunlara Bir Bakalım)

  • Hatasız Kodlama
  • Okunabilir Kod
  • Kodlama Standartları
  • Kod-Kalite Standartları

Hal 27:Kodlarını, yıllar sonra başka bir geliştiricinin yeniden kurcalayabileceğini düşünmeyerek yazması.

Yazılımcı ne kadar çok sıkışırsa, işin yetiştirilmesi için üzerinde kurulan baskı ne kadar artarsa, ortaya çıkacak işin kalitesinin azalması her zaman için bir ihtimaldir. Bu tip bir durumda yazılımcının panik olmadan, baskıyı kaldırarak, emin adımlar ile ilerleyememesi halinde uygulama kodlarının enkaz haline dönmesi de kaçınılmazdır.

27

@coderizbiz

Bir yazılım ürününün kod anlamında enkaz haline gelmesi epeyce çaba isteyen bir iştir. Ancak şartlar bunun oluşması için bazen çok uygundur!

Acele acele yazılan kodlar, ilerisi düşünülmeden entegre edilen geçici çözümler(bilhassa yıllar içinde teknik desteği azalan veya kaybolan açık kaynak kütüphaneler), var olan ürünler üzerindeki pansumlanlarda çalışan deneyimsiz yazılımcılar gibi nedenler, zamanla kodun kirlenmesine ve enkazın devleşmesine sebebiyet verecektir.

Enkaz ürünler özellikle kod ve kalite standartlarını denetleyen araçların hışmından kurtulamaz.

Unutulan bir şey varsa o da bu hale gelmiş ürün kodlarına yarın öbür gün başka bir geliştiricinin bakacak olmasıdır. Öyle ürünler vardır ki onlarca yıl belirli sektörlerce kullanılır, sürekli eklemeler ile genişler, genişler, genişler… Hatta şirketin farklı iş ihtiyaçlarını yürüten kanallara ve buradaki uygulamalara kadar etki eder. Genişleyen bu tip ürünlerin yıllara varan oluşumu sırasında kullanılan teknoloji eskiyebileceği gibi, o teknolojiyi bilen ve pansuman yapabilen yazılımcı sayısı da azalır. Bu nedenle yazılımcının daha az “Ah!” alması ileriyi düşünerek yapacağı hamlelere de bağlıdır.

Anahtar Kelimeler(Bunları Bir Araştıralım)

  • Hatasız Kodlama
  • Okunabilir Kod
  • Kod Kalite Standardları
  • Anti-Patterns
  • Desteği Bitmiş/Azalan Açık Kaynak Ürünler

Hal 4: Ömür boyu sadece iyi kod yazmasının yeterli olacağını düşünmesidir.

İyi kodu nasıl tanımlarsınız!? Okunabilir olması mı? Bir kaç yazılım kalıbını başarılı bir şekilde uygulanabilmesi mi? Kodlama standartlarının bire bir entegre edilmesi mi? Yorum satırı olmadan da anlaşılabiliyor olması mı? Yoksa bunların hepsinin bir arada bulunması mı?

İyi kodlama için pek çok teknik, öğreti ve kitap vardır. Code Complete, The Art of Readable Code, Clean Code, Writing Solid Code(Bizdeki adıyla Hatasız Kodlama) sadece bu konuyu içeren kitaplardan bir kaçıdır.

4

@coderizbiz

Ama bu çoğu zaman bir geliştiricinin hayati hedefi haline gelir. Bu iyi bir şey gibi görünse de mükemmel kodu yakalamak her zaman için zordur. Dahası yakın geçmiş, günümüz ve gelecek nesil ürünlerin geliştirildikleri ortamlar göz önüne alındığında, iyi kodun sadece gerekli olan minik bir figuran olduğu kabul edilmelidir.

Sıklıkla vurgulandığı gibi iyi kodun etrafını saran pek çok kriter vardır. Doğru bir mimari ve uygun araçların seçimi, gerekliyse etkili bir dokümantasyon, süreç yönetimi, ekip çalışması, diğer bakış açılarının katkısı(örneğin finans departmanının ürüne bakış açısı, beklentileri nedir veya bir üniversite öğrencisinin bakış açısı nasıl olabilir vb), ürün olgusu, farklı ortamların bir arada sorunsuz konuşabilmesi vb…

Yani, kodlama artık 80li yıllardaki Commodore 64 ün 64Kb lık kısıtlı bellek kapasitesi altında yapılması gereken bir iş değildir.

Eğer hala öyle olsaydı sadece iyi kod yazmaya odaklanabilir bir hayatı hedefleyebilirdik. Dünyamız artık bir biri ile konuşabilen akıllı makinelerin olduğu bir gelecek vaat etmekte. Hatta o geleceği çoktandır yaşamakta. Şartlar çok ama çok değişti/değişiyor.

Çevresel kriterler ve kodu saran faktörler ortada. Dolayısıyla iyi kod yazmak gerekli olan ama tek bir hedef olarak düşünülmemesi gereken bir olgu olarak geliştiricinin karşısında durmakta.

Anahtar Terimler(Bunları Bir Araştıralım)

The Art of Readable Code
Clean Code
Kodlama Standartları – Coding Standards
Uygulama Geliştirme Yaşam Döngüsü – Application Lifecycle Management
Yazılım Mimarı mısın?