Yazılım Geliştirme Kültürünün Kodları: Motivasyon, Teknik Mükemmellik ve İnov...Lemi Orhan Ergin
Bugünün acımasız rekabet ortamında hayatta kalabilmek için her şirketin bir yazılım şirketi olması gerekir. Bu çok büyük bir mücadele demek. Kaliteli yazlımcılar işe alınmalı, projeler doğru yönetilmeli ve proje teslim tarihleri belirlenmelidir. Ancak, gerçekte çok farklı bir tabloyla karşılaşıyoruz. Yüzlerce geliştiriciyle iş görüşmesi yapılıyor ancak bulunamıyor. Geliştiricilerden oluşan bir ekip oluşturulsa bile, motivasyonel sorunlar, sürekli artan teknik problemler, iletişim sorunları, inovasyon eksikliği ve işten ayrılmalar ile ediyoruz. Müşteriler, kaçırılan tarihler ve çıktının düşük kalitesi nedeniyle hayal kırıklığına uğruyor.
Her yazılım geliştirme ekibi kendi dinamiklerini yaratır. Çalışanların davranışlarıyla ekiplerin gizli dinamiklerini toplandığımızda şirketteki yazılım geliştirme kültürünü oluşturuyoruz. Bu, bir yazılım geliştirme takımının ne kadar başarılı olabileceğini tanımlayan, en önemli faktörlerden biridir.
Bu oturumda, motivasyon, teknik mükemmellik, işbirliği, yardımlaşma, yenilikçilik ve başarı sağlayan bir yazılım geliştirme kültürünün nasıl kurulacağından bahsedeceğim. Yazılım dünyasına girmiş ve ilgilenen herkes katılabilir.
Bu sunum Dinamikler 2017 Kongresinde kullanılmıştır.
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme PratikleriLemi Orhan Ergin
Bu sunum, 23 Mart 2013 tarihinde Dinamikler 2013 Proje Yönetim Kongresi Agile Panelinde yaptığım konuşmanın yansılarından oluşuyor.
http://www.dinamikler.org/sunum5.asp
Konuşmamın ana fikri şöyle özetlenebilir:
Her yıl geliştirilen yazılım projelerinin yarısı çöpe gidiyor. Birçok şirket, uzayan, bitmeyen, kalitesiz projeler nedeniyle yüklü miktarda para kaybediyor. Her projede projenin kapsamı, donanımsal ve yazılımsal gereksinimler, projenin kaç kişi ile geliştirileceği, projenin kaç adam gün süreceği ve ne kadar bütçe ayrılacağı gibi sorular için cevap aranırken çoğu kez bir şey gözden kaçıyor: Yazılımın doğası.
Yazılımın doğası gereği kaynaklar kısıtlı ve gereksinimler belirsizdir. Belirsizlik ve kısıtlı kaynaklarla başadebilmenin tek yolu oyunu onun kurallarıyla oynamaktır. Değişken gereksinimleri kısıtlı kaynaklarla belirlenen süre zarfında bitirebilmek, yani daha azla daha çok şey başarmak için, çevik olmak, kaliteli yazılım geliştirmek, belirsizliğe değişimle anında cevap vermek gerekir.
Yazılım geliştirmek, özellikle de takım halinde yazılım geliştirmek belli bir disipline sahip olmayı gerektirir. Hızla değişen teknolojilere, belirsiz gereksinimlere, projelerin türlü ihtiyaçlarına ayak uydururken, kalıcı, dayanıklı, esnek ve kaliteli yazılım geliştirmek için elinizde size yol gösterecek tek şey yazılım ilkeleridir. Yazılım ilkeleri sizin ve takımınızın kültürdür, disiplinidir.
Çevik yazılım geliştirme uygulamaları tam da bu noktada sahneye çıkar. Bu uygulamalar, projelerinizin başarıya ulaşabilmesi adına gereken yazılım kültürünün yapıtaşlarını oluşturur. Bu oturumda, başarılı projelerde yazılım kültürüne şekil veren çevik yazılım geliştirme uygulamalarından ve etkilerinden bahsedeceğim.
Yazılım Geliştirme Kültürünün Kodları: Motivasyon, Teknik Mükemmellik ve İnov...Lemi Orhan Ergin
Bugünün acımasız rekabet ortamında hayatta kalabilmek için her şirketin bir yazılım şirketi olması gerekir. Bu çok büyük bir mücadele demek. Kaliteli yazlımcılar işe alınmalı, projeler doğru yönetilmeli ve proje teslim tarihleri belirlenmelidir. Ancak, gerçekte çok farklı bir tabloyla karşılaşıyoruz. Yüzlerce geliştiriciyle iş görüşmesi yapılıyor ancak bulunamıyor. Geliştiricilerden oluşan bir ekip oluşturulsa bile, motivasyonel sorunlar, sürekli artan teknik problemler, iletişim sorunları, inovasyon eksikliği ve işten ayrılmalar ile ediyoruz. Müşteriler, kaçırılan tarihler ve çıktının düşük kalitesi nedeniyle hayal kırıklığına uğruyor.
Her yazılım geliştirme ekibi kendi dinamiklerini yaratır. Çalışanların davranışlarıyla ekiplerin gizli dinamiklerini toplandığımızda şirketteki yazılım geliştirme kültürünü oluşturuyoruz. Bu, bir yazılım geliştirme takımının ne kadar başarılı olabileceğini tanımlayan, en önemli faktörlerden biridir.
Bu oturumda, motivasyon, teknik mükemmellik, işbirliği, yardımlaşma, yenilikçilik ve başarı sağlayan bir yazılım geliştirme kültürünün nasıl kurulacağından bahsedeceğim. Yazılım dünyasına girmiş ve ilgilenen herkes katılabilir.
Bu sunum Dinamikler 2017 Kongresinde kullanılmıştır.
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme PratikleriLemi Orhan Ergin
Bu sunum, 23 Mart 2013 tarihinde Dinamikler 2013 Proje Yönetim Kongresi Agile Panelinde yaptığım konuşmanın yansılarından oluşuyor.
http://www.dinamikler.org/sunum5.asp
Konuşmamın ana fikri şöyle özetlenebilir:
Her yıl geliştirilen yazılım projelerinin yarısı çöpe gidiyor. Birçok şirket, uzayan, bitmeyen, kalitesiz projeler nedeniyle yüklü miktarda para kaybediyor. Her projede projenin kapsamı, donanımsal ve yazılımsal gereksinimler, projenin kaç kişi ile geliştirileceği, projenin kaç adam gün süreceği ve ne kadar bütçe ayrılacağı gibi sorular için cevap aranırken çoğu kez bir şey gözden kaçıyor: Yazılımın doğası.
Yazılımın doğası gereği kaynaklar kısıtlı ve gereksinimler belirsizdir. Belirsizlik ve kısıtlı kaynaklarla başadebilmenin tek yolu oyunu onun kurallarıyla oynamaktır. Değişken gereksinimleri kısıtlı kaynaklarla belirlenen süre zarfında bitirebilmek, yani daha azla daha çok şey başarmak için, çevik olmak, kaliteli yazılım geliştirmek, belirsizliğe değişimle anında cevap vermek gerekir.
Yazılım geliştirmek, özellikle de takım halinde yazılım geliştirmek belli bir disipline sahip olmayı gerektirir. Hızla değişen teknolojilere, belirsiz gereksinimlere, projelerin türlü ihtiyaçlarına ayak uydururken, kalıcı, dayanıklı, esnek ve kaliteli yazılım geliştirmek için elinizde size yol gösterecek tek şey yazılım ilkeleridir. Yazılım ilkeleri sizin ve takımınızın kültürdür, disiplinidir.
Çevik yazılım geliştirme uygulamaları tam da bu noktada sahneye çıkar. Bu uygulamalar, projelerinizin başarıya ulaşabilmesi adına gereken yazılım kültürünün yapıtaşlarını oluşturur. Bu oturumda, başarılı projelerde yazılım kültürüne şekil veren çevik yazılım geliştirme uygulamalarından ve etkilerinden bahsedeceğim.
E-ticarette Yazılım ve Altyapı
Startup Heroes, Developers
We Made IT Possible
Software and Hardware Help Desk Saving %40 Time for IT teams
Hazır Yazılım Deri ceket gibidir, hep birşeylerin ekliğini hisedersin.
Before going down Proactive Monitoring
‘Mükemmel iyinin düşmanıdır’, Voltaire
‘Engineering is nothing but optimization’
Yazılım, yaşayan bir organizmadır... İhmale gelmez.
In IT Complete Solution means, Agile Swat Teams
Product Camp - Uçtan Uca Ürün Yönetimi ve Deneyim Tasarımı SemineriAkar Sumset
INVERTIV'in 5 D's of PMUX framework'ü ile "Ürün Yönetimi ve Deneyim Tasarımı için uçtan uca bir süreç neleri içermelidir? Neden gereklidir?" soruların cevap verdiğimiz seminerdeki sunumumuz.
Yasayan Bir Organizma: YAZILIM - YTU-KVK Finans ve Yazilim Gunleri - 18.11.2013Hakan ERDOGAN
Yıldız Teknik Üniversitesi Kalite ve Verimlilik Kulübü tarafından düzenlenen Finans ve Yazılım Günleri'13 (#finansveyazilimgunleri) etkinliğinde yaptığım sunum. Yaşayan Bir Organizma: Yazılım
CLICKON, interaktif mecralarda entegre pazarlama stratejileri geliştiren ve sunan dijital pazarlama ajansıdır.
Hizmet verdiği markaların projelerinin pazarlama stratejilerini dijital ve interaktif mecralara uyarlayarak çözümler üreten CLICKON, markaların iletişim stratejilerini dijitalleştirme yönünde geliştirmelerde bulunmaktadır.
Uzun yıllardır internet sektöründe değişik dallarda ve kademelerde yer almış bir ekibin bir araya gelmesiyle kurulan şirketimiz, dijital ajans olarak çalışmasının yanı sıra kendi web ve mobil projelerini de hayata geçirmek için çalışmalar içerisindedir.
Yazılım Eğitimlerinin Önemi – Kod Akademi.pdfKod Akademi
Günümüzün hızla dijitalleşen dünyasında yazılım eğitimleri, bireyler ve toplumlar için büyük bir öneme sahiptir. Teknolojinin sürekli olarak geliştiği ve iş dünyasının dijitalleştiği bir çağda, yazılım eğitimleri, bireylerin bilgi ve becerilerini güçlendirmelerine, iş fırsatlarına erişimlerini artırmalarına ve toplumun teknolojik ilerlemeye ayak uydurmasına yardımcı olur. İşte yazılım eğitimlerinin neden bu kadar önemli olduğuna dair bazı önemli noktalar:
ProductTank İstanbul'un ikinci meetup'ında Invertiv'in kurucusu Akar Şümşet ürün yönetimi framework'ünü ve bu framework'te metotları nasıl kullandığını uygulamalar ile anlattı.
Mobil uygulamanızı sıfırdan nasıl büyütürsünüz, etkileşim metrikleri nedir ve nasıl kullanılır, AARRR modeli ile uygulamanızın büyümesini nasıl sağlıklı hale getirirsiniz ve son olarak büyüttüğünüz uygulamadan nasıl gelir elde edebilir ve para kazanabilirsiniz... Bu sunumda bu soruların yanıtlarını vermeye çalıştım.
İyi Bir Yazılım Geliştirici Nasıl Olunur.pdfKod Akademi
Yazılım geliştirme, teknoloji dünyasında hızla büyüyen ve değişen bir alandır. İyi bir yazılım geliştirici olmak için sadece kod yazmayı öğrenmek yeterli değildir. Aynı zamanda projeleri yönetmek, işbirliği yapmak, yeni teknolojileri öğrenmek ve müşteri gereksinimlerini anlamak da önemlidir. İşte iyi bir yazılım geliştirici olmanıza yardımcı olacak bazı adımlar ve tavsiyeler:
E-ticarette Yazılım ve Altyapı
Startup Heroes, Developers
We Made IT Possible
Software and Hardware Help Desk Saving %40 Time for IT teams
Hazır Yazılım Deri ceket gibidir, hep birşeylerin ekliğini hisedersin.
Before going down Proactive Monitoring
‘Mükemmel iyinin düşmanıdır’, Voltaire
‘Engineering is nothing but optimization’
Yazılım, yaşayan bir organizmadır... İhmale gelmez.
In IT Complete Solution means, Agile Swat Teams
Product Camp - Uçtan Uca Ürün Yönetimi ve Deneyim Tasarımı SemineriAkar Sumset
INVERTIV'in 5 D's of PMUX framework'ü ile "Ürün Yönetimi ve Deneyim Tasarımı için uçtan uca bir süreç neleri içermelidir? Neden gereklidir?" soruların cevap verdiğimiz seminerdeki sunumumuz.
Yasayan Bir Organizma: YAZILIM - YTU-KVK Finans ve Yazilim Gunleri - 18.11.2013Hakan ERDOGAN
Yıldız Teknik Üniversitesi Kalite ve Verimlilik Kulübü tarafından düzenlenen Finans ve Yazılım Günleri'13 (#finansveyazilimgunleri) etkinliğinde yaptığım sunum. Yaşayan Bir Organizma: Yazılım
CLICKON, interaktif mecralarda entegre pazarlama stratejileri geliştiren ve sunan dijital pazarlama ajansıdır.
Hizmet verdiği markaların projelerinin pazarlama stratejilerini dijital ve interaktif mecralara uyarlayarak çözümler üreten CLICKON, markaların iletişim stratejilerini dijitalleştirme yönünde geliştirmelerde bulunmaktadır.
Uzun yıllardır internet sektöründe değişik dallarda ve kademelerde yer almış bir ekibin bir araya gelmesiyle kurulan şirketimiz, dijital ajans olarak çalışmasının yanı sıra kendi web ve mobil projelerini de hayata geçirmek için çalışmalar içerisindedir.
Yazılım Eğitimlerinin Önemi – Kod Akademi.pdfKod Akademi
Günümüzün hızla dijitalleşen dünyasında yazılım eğitimleri, bireyler ve toplumlar için büyük bir öneme sahiptir. Teknolojinin sürekli olarak geliştiği ve iş dünyasının dijitalleştiği bir çağda, yazılım eğitimleri, bireylerin bilgi ve becerilerini güçlendirmelerine, iş fırsatlarına erişimlerini artırmalarına ve toplumun teknolojik ilerlemeye ayak uydurmasına yardımcı olur. İşte yazılım eğitimlerinin neden bu kadar önemli olduğuna dair bazı önemli noktalar:
ProductTank İstanbul'un ikinci meetup'ında Invertiv'in kurucusu Akar Şümşet ürün yönetimi framework'ünü ve bu framework'te metotları nasıl kullandığını uygulamalar ile anlattı.
Mobil uygulamanızı sıfırdan nasıl büyütürsünüz, etkileşim metrikleri nedir ve nasıl kullanılır, AARRR modeli ile uygulamanızın büyümesini nasıl sağlıklı hale getirirsiniz ve son olarak büyüttüğünüz uygulamadan nasıl gelir elde edebilir ve para kazanabilirsiniz... Bu sunumda bu soruların yanıtlarını vermeye çalıştım.
İyi Bir Yazılım Geliştirici Nasıl Olunur.pdfKod Akademi
Yazılım geliştirme, teknoloji dünyasında hızla büyüyen ve değişen bir alandır. İyi bir yazılım geliştirici olmak için sadece kod yazmayı öğrenmek yeterli değildir. Aynı zamanda projeleri yönetmek, işbirliği yapmak, yeni teknolojileri öğrenmek ve müşteri gereksinimlerini anlamak da önemlidir. İşte iyi bir yazılım geliştirici olmanıza yardımcı olacak bazı adımlar ve tavsiyeler:
Irresponsible Disclosure: Short Handbook of an Ethical DeveloperLemi Orhan Ergin
Ethics... It could be the most important and underrated topic in software industry. It is directly related with professionalism, craftsmanship and professional discipline. From time to time we have to jump into the discussions, however we never discuss it deeper.
I have found himself in a huge blast of discussions when he tweeted about a **HUGE** security issue at the most popular operating system. Then I had deep thoughts about ethics and the behaviours of ethical developers.
In this session I talk about the followings:
* I refer to real-life stories of many good practices for professional ethics that are critical in the software development world.
* I mention technical and non-technical aspects of being an ethical developer.
* I deep dive into the arguments against the ethical controversies and the debate over the sharing of a major error in MacOS via Twitter.
DevOps & Technical Agility: From Theory to PracticeLemi Orhan Ergin
This is the content I presented in meetups for giving brief information about Agile, Devops, Software Craftsmanship, Opertions and Continuous Delivery and their connection with each other.
Git Anti-Patterns: How To Mess Up With Git and Love it AgainLemi Orhan Ergin
Git is one of the most powerful tool in developers' toolbox. If you use it correctly, it dramatically increases productivity of developers and eliminates the waste products continuously. Developers cultivate a development culture on top Git most of the time.
It's powerful but its power is untamed. Many teams fall into several traps of misusing commands and therefore feel uncomfortable while using Git. We mess up Git history, the codebase and the whole preferred branching strategy in seconds. We use branches, merge/rebase strategies, creating commits in wrong ways. Even we never take committing paradigms into account while using Git.
As a software craftsman, I've been using Git for years and I've already educated Git to hundreds of developers in all levels. I'm so lucky; I had a chance to experience huge amount of anti-patterns in time. In this talk, I will talk about what those anti-patterns are and what should we do in order not to fall into them.
TDD is the elengant way of designing software. People scares from it so much, because software design is hard and it requires discipline. In this talk, I tried to describe what TDD is from software design perspective.
Karabük Üniversitesi Programlama Günleri 2016'da gerçekleştirdiğim Git sunumu yansılarıdır.
These are the slides of my talk at Karabuk University Programming Days 2016. The slides are in Turkish.
8. onu üretemez, ya da sahtesini yapamazsınız
kültür stratejiyi kahvaltıda yer
onu sadece yavaşça büyütebilirsiniz...
9. Ona yatırım yaparak, sürekli gözlemleyip geliştirirsiniz...
onu sadece yavaşça büyütebilirsiniz...
onu üretemez, ya da sahtesini yapamazsınız
kültür stratejiyi kahvaltıda yer
11. Etik, profesyonellik,
takım çalışması,
ustalaşma, disiplin,
güvenlik, gizlilik, çeviklik,
iletişim ve kültür gibi
mesleğinizin temelleri
yapar.
Teknolojiler,
programlama dilleri,
protokoller,
programlama çatıları,
projeler vs.
sizi daha iyi birer
profesyonel yapmaz.
12. siradanlaşma
tuzağina düşme
Çırak ya da usta olman farketmez.
Önyargılarından arınmaya hazır ol.
Zorlanmayı ve kendini rahatsız hissetmeyi
göze almalısın.
yeni pratikler dene
çalışma şeklini değiştir
elle yapageldiğin sürekli işleri otomatikleştir
disiplinli ve ilkeli ol
kendini zorlamaya ve rahatsız hissetmeye zorla
konfor balonundan uzak dur
elbet bir gün patlayacak
14. Eğer bir konuyu sadece biri çalışan ya da
bir grup biliyorsa ve diğerleri için bir
bağımlılık oluşturuyorsa, burada bilginin
havuzlaşmasından söz edilebilir. Silolaşma
tehlikelidir, şirketleri batırabilir.
kabul edilemez
silolaşma.
.
15. sen yazdin, sen çaliştir
yazdığın ürünün tasarımından, mimarisinden, kalitesinden, testinden, performansından,
bakımından, operasyonlardan, pratiklerinden, desteğinden sen sorumlusun.
16. kod inceleme süreçlerini yazılım hayat
döngüsünün merkezinde tutmalısın
çikamaz
incelenmemiş kod
canliya
. .
18. brown bag sessions
lightening talk'lar
code retreat'ler
iç eğitimler
mob programlama
fikir fırtınası seansları
mimari gözden geçirme
kitap klüpleri
konferans videosu saati
ikili programlama
kod gözden geçirme
retrospektifler
coding dojo'lar
bilginin
akmasina
izin ver
. . .
. .
19. ne yaptığın ya da nerede olduğun önemli değil. terkederken daha temiz bırak.
izci kuralini takip et
. . .
20. hızlanmak için yavaşlamak
gerek. bunu başaranlar
daha kaliteli işleri daha
hızlı çıkarabilir, pazarda
rekabet gücü
sağlayabilirler.
ikili
şekilde
çaliş
. . .
.
21. manuel olarak test yapmak ciddi bir külfettir ve
çoğunlukla çöptür. birim, entegrasyon, fonksiyonel,
davranış, performans, güvenlik, regresyon ve kabul
testleri yazılmalıdır.
testi yazilmamiş
kod bitmemiştir
.
. . .
22. karmaşıklık dünyasında ancak ve ancak sürekli planlayarak ve değişime uyum sağlayarak başarılı olunabilir
planlar hiçbir şeydir, plan herşey
. . .
23. Geribildirim döngülerini harekete geçir. Kullandığın araçlardan kullandığınız iletişim
yöntemlerine kadar her alanda başarısız olduğunda bunu hemen öğrenebileceğin
ve adım atabileceğin sistemler geliştir.
başari için hemen başarisiz ol
. .
24. kariyerinizden sadece
siz sorumlusunuz
ustalar ile ikili çalışın
konferanslara gidin
kitap satın alın ve okuyun
meetup'lara gidin
seminerlerde konuşun
yeni pratikler deneyin
kendine
yatirim
yap
.