Tag Archives: egosuz programlama

Egosuz programlama

1971 yılında Gerald Weinberg‘in çıkardığı The Psychology of Computer Programming kitabında bahsettiği bir yazılım geliştirme metodolojisi bu.

Yazılım mühendisliği diğer mühendisliklere göre yeni bir alan aslında. Yeniliklere de oldukça açık. Genelde takım halinde icra edilen bir mühendislik olan yazılımı takım kimyasını koruyup, egoları bir kenara bırakıp nasıl yapılacağı ile ilgili yol gösterir bu kurallar.

1. Understand and accept that you will make mistakes.

Orhan Gencebay’ın dediği gibi, “hatasız kul olmaz“. Yazılımdaki hatalar çok az sektörde ölümcül durumlara sebep olur. Önemli olan bu hatalardan ders çıkarmak, öğrenmek, bu hatalara gülebilmektir. Bu hataları canlı ortamda tecrübe etmeden bulmak en önemli amaçtır.

2. You are not your code.

Geliştiricilerin kodları incelemesinde amaç hataları bulmaktır, ve hatalar daima olacaktır. Bu hataları kişisel olarak algılamayıp birinci maddeyi hatırlamalısın. Herkes hata yapabilir fakat önemli olan bu hataları çözmektir.

3. No matter how much “karate” you know, someone else will always know more.

El elden üstündür. Yazılım dünyasında benim en sevdiğim konulardan biri bu. Tecrübeye bakmaksızın her hangi bir kişiden yeni bir bakış açısı, yeni bir yöntem veya daha kolay bir çözüm öğrenebilirsiniz. Öğrenmek için hep çaba sarf edin, sormaktan çekinmeyin.

4. Don’t rewrite code without consultation.

Önemli bir şeyi değiştirmeden önce danışmak faydalı olur. Code review zaten yanlış bir değiştirmenin önüne geçecektir ama danışmaktan zarar gelmez. Hatalı kodu düzeltmek ile kodu yeniden yazma arasındaki farkı iyi anlamamız gerekir.

5. Treat people who know less than you with respect, deference and patience.

Yazılım ile alakası olamayan kişiler veya daha az tecrübeli, daha az bilgili yazılımcılar ile çalışırken saygılı, sabırlı ve geri bildirime açık ol. Yazılımcılar her zaman itiraz eden, üstten bakan kişiler olmamalıdır.

6. The only constant in the world is change.

Efesli Herakleitos‘un dediği gibi, “Değişmeyen tek şey değişimin kendisidir”. Yazılım için çok önemli bir söz. Durmadan değişen, gelişen teknolojiler ile baş başayız. Yenilikleri olumlu şekilde karşılamalı ve yeni meydan okumalar olarak görmelisin.

7. The only true authority stems from knowledge, not from position.

Bilgi yetkinliği, yetkinlik ise saygıyı doğurur. Saygı görmek istiyorsanız daha bilgili olun. Kendinizi her zaman geliştirin ve yetkin bir insan olun.

8. Fight for what you believe, but gracefully accept defeat.

Fikirlerini doğru şekilde savunmalısın ama fikrinden daha iyi fikirler daha doğru çözümler olduğunda vazgeçmeyi bilmelisin. Takım kararlarına saygı göster. Bazı durumlarda sana daha az mantıklı gelen tercih uygulanabilir. Bu karar sonucunda çıkan sonuçlara da saygılı olmalısın. Sonuç olarak senin fikrin doğru çıkmış olsa bile “ben demiştim ama” gibi kalıpları fazla kullanmaktan kaçınmalı, sadece gerekli yerde kullanmalısın. Olaylar yaşanır geçer, önemli olan daha önce de bahsettiğimiz gibi bunlardan en faydalı sonuçları çıkarmaktır.

9. Don’t be “the guy in the room.”

Karanlık bir köşede sessizce çalışan yabani kişi olmayın. Çalışma ortamınızdaki herkesle ilişki kurun. Sadece yazılım takımı değil herkesle. Yazılımcıların işi hep bilgisayarlarla olduğu için iş ortamında doğal olarak daha az sosyal etkileşimde bulunurlar. Bunu değiştirin.

10. Critique code instead of people – be kind to the coder, not to the code.

Kişileri değil kodu eleştir, kodlara değil kodu yazan kişiye nazik ol. kod içerisinde bir hata gördüğünde veya değişiklik olmasını istediğinde “bunu niye böyle yaptın” diye bir yaklaşım yerine “bunu böyle yapsak daha iyi olmaz mı?” yaklaşımı her zaman daha avantajlıdır. İstediğin değişikliğin sebebinde açıklayıcı ol, teknik olarak neden gerekli olduğu doğru bir şekilde anlat. Aynı hataları senin de yapacağının farkında ol ve ona göre davran.

Kaynak:

https://en.wikipedia.org/wiki/Egoless_programming

https://blog.codinghorror.com/the-ten-commandments-of-egoless-programming/

https://wiki.c2.com/?EgolessProgramming