Bilge Programcı - Nasıl uzman yazılımcı olunur?

6,376 views
6,421 views

Published on

24.3.2010 tarihinde Elazig Fırat Üniversitesi'nde yapmış olduğum Bilge Programcı - Nasıl uzman yazılımcı olunur? başlıklı seminerimin içeriği. Detaylar için bakınız: http://www.bilgeprogramci.com

Published in: Education, Technology, Sports
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,376
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
56
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Bilge Programcı - Nasıl uzman yazılımcı olunur?

  1. 1. Özcan Acar © 2010 Kurumsal Java Akademisi.com
  2. 2. Nasıl Uzman Yazılımcı Olunur? Özcan Acar acar@unitedinter.net http://www.ozcanacar.com http://www.kurumsaljava.com K JK K J J Özcan Acar © 2010 Acar © 2009 avaurumsal ava.com Özcan urumsal © 2009 urumsal ava.com Akademisi.com
  3. 3. Özcan Acar Hakkında 1974 Đzmir doğumlu Bilgisayar Mühendisi Sun Certified Enterprise Architect (SCEA 5) Sun Java Champion KurumsalJava.com ve JugTR.org kurucusu K JK K J J Özcan Acar © 2010 Acar © 2009 avaurumsal ava.com Özcan urumsal © 2009 urumsal ava.com Akademisi.com
  4. 4. Özcan Acar Đletişim http://www.twitter.com/oezcanacar http://www.friendfeed.com/oezcanacar acar@unitedinter.net K JK K J J Özcan Acar © 2010 Acar © 2009 avaurumsal ava.com Özcan urumsal © 2009 urumsal ava.com Akademisi.com
  5. 5. Özcan Acar Hakkında K JK K J J Özcan Acar © 2010 Acar © 2009 avaurumsal ava.com Özcan urumsal © 2009 urumsal ava.com Akademisi.com
  6. 6. Java Tasarım Şablonları ve Yazılım Mimarileri Tasarım şablonu nedir? Interface / Abstract sınıf nedir? Oluşturucu Tasarım Şablonları Factory, Abstract Factory, Builder, Prototype, Singleton Yapısal Tasarım Şablonları Adapter, Bridge, Facade, Decorator, Composite, Flyweight, Proxy Davranışsal Tasarım Şablonları Command, Memento, Strategy, Iterator, State, Observer, Visitor K JK K J J Özcan Acar © 2010 Acar © 2009 avaurumsal ava.com Özcan urumsal © 2009 urumsal ava.com Akademisi.com
  7. 7. Extreme Programming Çevik süreç nedir? Çevik manifesto Extreme Programming nedir? XP değerleri ve prensipleri Çevik proje planlaması Çevik süreçlerde iletişim Çevik tasarım Sürekli entegrasyon Test güdümlü yazılım Yazılım metrikleri K JK K J J Özcan Acar © 2010 Acar © 2009 avaurumsal ava.com Özcan urumsal © 2009 urumsal ava.com Akademisi.com
  8. 8. www.BilgeProgramci.com K JK K J J Özcan Acar © 2010 Acar © 2009 avaurumsal ava.com Özcan urumsal © 2009 urumsal ava.com Akademisi.com
  9. 9. Bilge Programcı nedir? K JK K J J Özcan Acar © 2010 Acar © 2009 avaurumsal ava.com Özcan urumsal © 2009 urumsal ava.com Akademisi.com
  10. 10. Karateci ve Yazılımcının Ortak Yönleri Nelerdir? K JK K J J Özcan Acar © 2010 Acar © 2009 avaurumsal ava.com Özcan urumsal © 2009 urumsal ava.com Akademisi.com
  11. 11. Karate-Do Sporu Karate-Do‘da kuşaklar olgunlaşma ve mükemmelleşmenin sembolüdür. Bu mükemmellik sadece Karate-Do tekniklerinde değil, büyüklerine sevgi, saygı, toplum kurallarına uymak ve sahip çıkmak , hocalara sonsuz itaat, zayıfları korumak, hoşgörü, inanç, camiayı sahiplenme ve tüm manevi değerler diye devam eder. K JK K J J Özcan Acar © 2010 Acar © 2009 avaurumsal ava.com Özcan urumsal © 2009 urumsal ava.com Akademisi.com
  12. 12. Karate-Do Sporu Karate-Do da kullanılan kuşaklar hakkındaki bu kısa açıklamadan, Karate- Do'nun sahip olduğu prensip, pratik ve ve değer sistemi hakkında fikir sahibi olmak mümkündür. Her bir üst kuşak öğrencinin takip ettiği yolda olgunlaşma seviyesinin göstergesidir. Öğrenci, geldiği seviyenin ihtiva ettiği prensip, pratik ve değer sistemini benimseyerek olgunlaşma sürecinde emin adımlarla ilerler. K JK K J J Özcan Acar © 2010 Acar © 2009 avaurumsal ava.com Özcan urumsal © 2009 urumsal ava.com Akademisi.com
  13. 13. K JK K J J Özcan Acar © 2010 Acar © 2009 avaurumsal ava.com Özcan urumsal © 2009 urumsal ava.com Akademisi.com
  14. 14. Karate-Do‘dan yola çıkarak Bilge Programcı için bir değer sistemi ve uzmanlaşma metodolojisi formalize edebilir miyiz? K JK K J J Özcan Acar © 2010 Acar © 2009 avaurumsal ava.com Özcan urumsal © 2009 urumsal ava.com Akademisi.com
  15. 15. Bilge Programcılığın Reçetesi Değer Sistemi Prensipler Pratikler Olgunlaşma Simgesi Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  16. 16. Bilge Programcı Kuşakları Prensip & Pratikler 1. Kuşak: Beyaz Prensip & Pratikler 2. Kuşak: Sarı Prensip & Pratikler 3. Kuşak: Turuncu Prensip & Pratikler 4. Kuşak: Yeşil BP Değer Sistemi Prensip & Pratikler 5. Kuşak: Mavi Prensip & Pratikler 6. Kuşak: Kahverengi Prensip & Pratikler 7. Kuşak: Siyah Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  17. 17. Bilge Programcı Bilekliği Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  18. 18. Beyaz Kuşak Prensipler 1. Kendi kendini yetiştirme prensibi 2. Kırık cam prensibi 3. DRY prensibi Pratikler 1. Đzci kuralı 2. Kodun ifade gücünü artırmak 3. Her gün tefekkür etmek Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  19. 19. 30 gün sonra… Beyaz Kuşak Sarı Kuşak Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  20. 20. Sarı Kuşak Prensipler 1. KISS prensibi 2. Yazılım araçlarına hakim olma prensibi 3. Nesneye yönelik programlama 4. Yazılımda test konseptlerinden haberdar olmak Pratikler 1. Interface ve Abstract sınıfları tasarımda kullanmak 2. JUnit Testleri oluşturmak 3. Kalıtım yerine kompozisyon kullanmak 4. Kitap okumak, kitap okumak, kitap okumak 5. Kodu gözden geçirmek Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  21. 21. Kitaplar Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  22. 22. 30 gün sonra… Sarı Kuşak Turuncu Kuşak Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  23. 23. Turuncu Kuşak Prensipler 1. Arayüz ayırma prensibi 2. Bağımlılıkların tersine çevrilmesi prensibi 3. Liskov'un yerine geçme prensibi Pratikler 1. Sektörün öncülerini takip etmek 2. Yazılımla ilgili konferans ve seminerlere katılmak 3. Versiyon kontrol sistemi kullanmak 4. Test güdümlü yazılım yapmak 5. Bir logging framewörkü kullanmak Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  24. 24. Arayüz Ayırma Prensibi Interface Segregation Principle (ISP) Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  25. 25. Arayüz Ayırma Prensibi Interface Segregation Principle (ISP) public class RMIConnector implements Connector { public void commit() { throw new RuntimeException("not implemented"); } public void rollback() { throw new RuntimeException("not implemented"); } } Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  26. 26. Arayüz Ayırma Prensibi Interface Segregation Principle (ISP) Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  27. 27. Bağımlılıkların Tersine Çevrilmesi Prensibi Dependency Inversion Principle (DIP) Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  28. 28. Bağımlılıkların Tersine Çevrilmesi Prensibi Dependency Inversion Principle (DIP) Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  29. 29. Liskov Yerine Geçme Prensibi Liskov Substitution Principle (LSP) Alt sınıflardan oluşturulan nesneler üst sınıfların nesneleriyle yer değiştirdiklerinde aynı davranışı göstermek zorundadırlar. Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  30. 30. Liskov Yerine Geçme Prensibi Liskov Substitution Principle (LSP) public void print(A a) { if(a instanceof B) { ((B)a).printB(); } else if(a instanceof C) { ((C)a).printC(); } } Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  31. 31. Turuncu Kuşak Prensipler 1. Arayüz ayırma prensibi 2. Bağımlılıkların tersine çevrilmesi prensibi 3. Liskov'un yerine geçme prensibi Pratikler 1. Sektörün öncülerini takip etmek 2. Yazılımla ilgili konferans ve seminerlere katılmak 3. Versiyon kontrol sistemi kullanmak 4. Test güdümlü yazılım yapmak 5. Bir logging framewörkü kullanmak Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  32. 32. 60 gün sonra… Turuncu Kuşak Yeşil Kuşak Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  33. 33. Yeşil Kuşak Prensipler 1. Tek sorumluluk prensibi 2. Açık-Kapalı prensibi 3. Esnek bağ prensibi Pratikler 1. Basit refactoring işlemleri yapmak 2. Tasarım şablonlarını kullanmak 3. Sürekli entegre etmek 4. MVC framewörklerle haşır, neşir olmak Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  34. 34. Tek Sorumluk Prensibi Single Responsibility Principle (SRP) Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  35. 35. Tek Sorumluk Prensibi Single Responsibility Principle (SRP) Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  36. 36. Açık Kapalı Prensibi Open Closed Principle (OCP) Programlar geliştirilmeye açık ama değiştirilmeye kapalı olmalıdır. Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  37. 37. Açık Kapalı Prensibi Open Closed Principle (OCP) public void on(Object obj) { if(obj instanceof TV) { ((TV)obj).tvOn(); } else if(obj instanceof CDPlayer) { ((CDPlayer)obj).cdOn(); } } Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  38. 38. Açık Kapalı Prensibi Open Closed Principle (OCP) Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  39. 39. Açık Kapalı Prensibi Open Closed Principle (OCP) private RemoteControlInterface remote; public RemoteControl(RemoteControlInterface _remote) { this.remote = _remote; } public void on() { remote.on(); } public void off() { remote.off(); } Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  40. 40. Stratejik Kapama Eğer kapama tam sağlanamıyorsa, kapamanın stratejik olarak implemente edilmesi gerekir. Programcı implementasyon öncesi meydana gelebilecek değişiklikleri kestirerek, implemente ettiği metotların kapalılık oranını yükseltmelidir. Bu tecrübe gerektiren stratejik bir karardır. Programcı her zaman ne gibi değişikliklerin olabileceğini kestiremeyebilir. Bu durumda konu hakkında araştırma yaparak, oluşabilecek değişiklikleri tespit edebilir. Eğer olabilecek değişikliklerin tespiti mümkün değilse, beklenen değişiklikler meydana gelene kadar beklenir ve implementasyon yeni değişiklikleri de yansıtacak şekilde OCP uyumlu hale getirilir. Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  41. 41. Esnek Bağ Loose Coupling (LC) Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  42. 42. Esnek Bağ Loose Coupling (LC) Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  43. 43. Yeşil Kuşak Prensipler 1. Tek sorumluluk prensibi 2. Açık-Kapalı prensibi 3. Esnek bağ prensibi Pratikler 1. Basit refactoring işlemleri yapmak 2. Tasarım şablonlarını kullanmak 3. Sürekli entegre etmek 4. MVC framewörklerle hasır, neşir olmak Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  44. 44. 60 gün sonra… Yeşil Kuşak Mavi Kuşak Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  45. 45. Mavi Kuşak Prensipler 1. Paket bazındakı tasarım prensipleri 2. Komponent tabanlı yazılım prensibi 3. Kod konvensiyonları 4. Kök neden analizi Pratikler 1. Code coverage (kod kapsama alanı) analizi yapmak 2. Bilgiyi paylaşmak 3. Bugtracking ve wiki kullanmak 4. Katmanlı mimarileri oluşturmak 5. Bulunan her bug için bir Unit test oluşturmak Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  46. 46. Paket Bazında Tasarım Prensipleri • Reuse-Release Equivalence Principle (REP) • Common Reuse Principle (CRP) • Common Closure Principle (CCP) • Acyclic Dependency Principle (ADP) • Stable Dependencies Principle (SDP) • Stable Abstractions Principle (SAP) Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  47. 47. Tekrar Kullanım ve Sürüm Eşitliği Reuse-Release Equivalence Principle (REP) Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  48. 48. Yeniden Ortak Kullanım Prensibi Common Reuse Principle (CRP) Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  49. 49. Ortak Kapama Prensibi Common Closure Principle (CCP) Aynı sebepten dolayı değişikliğe uğrayabilecek sınıfların aynı paket içinde yer alması gerekir. CCP daha önce incelediğimiz, sınıflar için uygulanan Single Responsibility (SRP) prensibinin paketler için uygulanan halidir. Her paketin değişmek için sadece bir sebebi olmalıdır. CCP uygulandığı taktirde sistemin bakılabilirliği artırılır ve test ve yeni sürüm için harcanan zaman ve emek azaltılır. Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  50. 50. Çevrimsiz Bağımlılık Prensibi Acyclic Dependency Principle (ADP) Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  51. 51. Çevrimsiz Bağımlılık Prensibi Acyclic Dependency Principle (ADP) Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  52. 52. Çevrimsiz Bağımlılık Prensibi Acyclic Dependency Principle (ADP) Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  53. 53. Mavi Kuşak Prensipler 1. Paket bazındaki tasarım prensipleri 2. Komponent tabanlı yazılım prensibi 3. Kod konvensiyonları 4. Kök neden analizi Pratikler 1. Code coverage (kod kapsama alanı) analizi yapmak 2. Bilgiyi paylaşmak 3. Bugtracking ve wiki kullanmak 4. Katmanlı mimariler oluşturmak 5. Bulunan her bug için bir Unit test oluşturmak Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  54. 54. 90 gün sonra… Mavi Kuşak Kahregengi Kuşak Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  55. 55. Kahregengi Prensipler Kuşak 1. Kişiselleştirmeme prensibi 2. Anlayana kadar sorma prensibi 3. Kodu kırmama prensibi Pratikler 1. Inversion of Control 2. Mockup nesne kullanmak 3. Sürüm yönetimi yapmak 4. Kompleks refactoring işlemleri yapmak 5. Oluşan tüm hataları raporlamak Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  56. 56. 90 gün sonra… Kahregengi Kuşak 1. Dan Siyah Kuşak Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  57. 57. 1. Dan Siyah Kuşak Prensipler 1. YAGNI prensibi 2. Müşteriye kulak verme prensibi 3. Hafif bavulla yola cıkma prensibi 4. Tell, don't ask prensibi Pratikler 1. Sertifikasyon 2. Çevik süreç kullanmak 3. Yeni yazılım dilleri ögrenmek 4. Davranış güdümlü yazılım yapmak 5. Soft skilleri gelistirmek Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  58. 58. 1. Dan Siyah Kuşak Soft Skill 1. Takım oyunculuğu 2. Đletişim becerisi 3. Sorumluluk üstlenebilme 4. Yönetim kompetansı 5. Kreatiflik 6. Zor şartlarda çalışabilme Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  59. 59. 1 yıl sonra… 1. Dan Siyah Kuşak 2. Dan Siyah Kuşak Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  60. 60. 2. Dan Siyah Kuşak Prensipler 1. Kendi prensiplerini geliştirme prensibi Pratikler 1. Konferanslara sunucu olarak katılmak 2. Açık kaynaklı bir projeye katkıda bulunmak 3. Açık kaynaklı bir proje geliştirmek Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  61. 61. Bilge Programcı Prensip & Pratikler 1. Kuşak: Beyaz (30 gün) Prensip & Pratikler 2. Kuşak: Sarı (30 gün) Prensip & Pratikler 3. Kuşak: Turuncu (60 gün) Prensip & Pratikler 4. Kuşak: Yeşil (60 gün) Toplam: Prensip & Pratikler 5. Kuşak: Mavi (90 gün) 720 iş günü Prensip & Pratikler 6. Kuşak: Kahverengi (90 gün) Prensip & Pratikler 1. Dan: Siyah Prensip & Pratikler 2. Dan: Siyah (360 gün) Özcan Acar © 2009 © 2009 Kurumsal Java.com Kurumsal Java.com
  62. 62. Detaylar için bakınız: BilgeProgramci.com Özcan Acar © 2009 Kurumsal Java.com
  63. 63. Son Đlginiz için teşekkür ederim. Özcan Acar © 2009 Kurumsal Java.com
  64. 64. Özcan Acar © 2009 Kurumsal Java.com
  65. 65. JugTR.org Özcan Acar © 2009 Kurumsal Java.com

×