lemi orhan ergin - code your agility: tips for boosting technical agility in your organization
TRANSCRIPT
CODE YOUR AGILITYTips for Boosting Technical Agility in Your Organization
LEMI ORHAN ERGIN Master Software Craftsman, ACM /lemiorhan /lemiorhan
Developing software since 2001 Community Lead of Agile Turkey Founder of Software Craftsmanship Turkey Developer, Architect, Trainer, Coach, Leader Sony & eBay Alumni Managing Partner at ACM
LEMI ORHAN ERGIN Master Software Craftsman, ACM /lemiorhan /lemiorhan
/lemiorhan
lemiorhanergin.com
@lemiorhan
AGILTYconcept emerges for helping developers to let them build productive processes and
high quality software
Customer satisfaction Employee motivation Team collaboration Technical AGILTY Product management Business involvement Project management Process efficiency feedback mechanisms decision making servant leadership continuous improvement sufficient Documentation talent acquisition Automated flows status transparency
is more than you expectAGILTY
Is technical agility about knowing technologies?
python
java
android
go
phpgroovy
webservicesjquery lucene
grailsnewrelic
mongodb
couchbasehibernate
memcache
html5laravel
bootstrap
xmldjango
ratpack
mysql
ajaxoauth
seo
zend
spring
perl
c++elasticsearch
solr
rabbitmq
activemq mulejson
c#hadoop
alfresco
css
apache
git
svn
jruby
scala
javascript
postgres
ehcache
redis
riak bashios
expressjs
socketio
jms
jmx
nodejs
ruby
primefaces
hazelcast
jsf
playpl/sql
dart
wordpress
behat
angularjs
akkacassandra
c
cucumber junit
erlangclosure
Technical agility is about how well you use them
pair programming
simple design
collaboration culturecode branching
short upfront design
central package repository
daily snapshots
behavior driven development
a/b testing
version control systems
solid principles
cloud compatibity
enterprise environments
branching modelsfeature freeze
collective ownership
educate upfront
frequent releases
unit testing
kaizen
code coverage
continuous builds
code standards
best practicesagile documentation
automatic security testing
static code analysis
refactoringcontinuous integration
testing strategies
minimum viable product
evolutionary design
tdd
devops culture
iterative development
bbs
cross functional teams
clean code principles
continuous deployment
fast bootupsdesign patterns
10 minutes builds
continuous delivery
evergreen build status
acceptance testingcode review
coderetreat
mind-mapping
lean startup
TECHNICAL AGILITY Is ALL about development
CULTURE
Let’s develop a project with succeeded practicesin an agile culture
commit to your manifestodefine how you build your software and what you believe
find your foremanbe apprentice of a craftsman and master your professionalism
he is a true believer he is a software craftsman he reminds you the principles he makes sure everything done right he checks test coverages he reviews all codebases he looks for low quality outputs he detects technical improvements he proposes training topics he does mentorship he convinces people he rejects unreasonable demands he checks works with standards he advices for continuous delivery he uses and advocates alm processes he identifies dependencies
FORMAN
be proficient with toolstools are your most reliable friends in your daily work
CI Server
IDE/Editor
Source Code Version System
Console
Build Tool
Code Analysis Tool
Vagrant / Docker
feel responsible of your workyou are what you build
BE RESPONSIBLE OFdesign architecture quality testing performance maintenance operations practicesOF YOUR WORK
share what you knowyour knowledge is not valuable if you don’t share with someone
brown
bagsessions
Everyone has things to teach Everyone should be a speaker Everyone should participate No limitations on topics No need to be experts
After organizing 100+ meetups, I realized thatBBS might be the most
effective catalyst of developer motivation
expertise tdd and testingmajority of problems occur due to lack of expertise in desing
I am
Scared!When I change something, some other features might stop working!
“I spend days for manual testing!”
WE’RE producing Zombie software
SOFTWARES HAVE TO BREATH TO LIVE
3 RULES OF WRITING A LIVING SOFTWARE
Continuous Refactoring Continuous Testing
Evolutionary Design
3 RULES OF WRITING A LIVING SOFTWARE
Continuous Refactoring Continuous Testing
Evolutionary Design
3 RULES OF WRITING A LIVING SOFTWARE
TDD
I cannot ACHIEVE TDD
WHY?
IS HARDSOFTWAREDESIGNING
YOU NEVER RESERVE TIME TO WRITE TESTS
you always have time for tests you either spend it for fixing bugs
or writing automated tests
THE ROADMAPFOLLOWINGYOU ARE NOT
LEARNESTABLISHPERFORM
THE ROADMAP
LEARNESTABLISHPERFORM
THE ROADMAP
Unit testing frameworks Mocking frameworks Automated testing types Designing software Refactoring best practices Clean code principles
THE ROADMAPLEARN
ESTABLISHPERFORM
Unit testing frameworks Mocking frameworks Automated testing types Designing software Refactoring best practices Clean code principles
Continuous Integration server Source code versioning system Notification mechanism Code coverage monitoring
THE ROADMAPLEARN
ESTABLISHPERFORM
Unit testing frameworks Mocking frameworks Automated testing types Designing software Refactoring best practices Clean code principles
Continuous Integration server Source code versioning system Notification mechanism Code coverage monitoring
Practice TDD via katas Develop via TDD Acceptance testing via TDD Verify by behaviours via BDD
THE ROADMAPLEARN
ESTABLISHPERFORM
Unit testing frameworks Mocking frameworks Automated testing types Designing software Refactoring best practices Clean code principles
Continuous Integration server Source code versioning system Notification mechanism Code coverage monitoring
Practice TDD via katas Develop via TDD Acceptance testing via TDD Verify by behaviours via BDD
THE ROADMAPLEARN
ESTABLISHPERFORM
organize code retreatspracticing is the best way to improve our craft
6 continents 137 cities 20 timezones 2000+ developers 31 hours of coding
Global Day of Code Retreat
November 15, 2014
coderetreat.org Coderetreat Community Network
35 people attended the day in Istanbul
build new habitsimproving quality of your software is a daily behavior
checkin others’ code with yours review CI build status review sonarqube reports review commits graph review bug reports review technical debt in backlog
define roadmap for craftsmanship
it’s not easy to identify what should we do to improve our craft
Apprentice, Youngling, Padawan, Jedi Knight, Jedi Master, Jedi Council,Grand Master, Yoda
from apprentice to journeyman
never release an unreviewed code
to production
it is so easy to fall into traps if you rely on your eyes only
ENJOYremember whatever you do do not forget to
Lemİ orhan ergİnagile software craftsman
/lemiorhanhttps://www.linkedin.com/in/lemiorhan
@lemiorhanhttps://twitter.com/lemiorhan
/lemiorhanhttp://www.slideshare.net/lemiorhan
lemiorhanergin.comOfficial site having personal information
www.acm-software.com