SlideShare ist ein Scribd-Unternehmen logo
1 von 118
www.unicomlearning.com

India Agile Week-2013
26 October 2013 | Pune
Paving the Way for Agile Engineering Practices
Aman King
Agile Technologist | Agile Coach
ThoughtWorks India | Bangalore

www.agileinbusiness.com
www.unicomlearning.com

Paving the Way
for

Agile Engineering
Practices
UNICOM Presents

India Agile Week-2013
www.unicomlearning.com

Paving the Way
for

Agile Engineering
Practices
UNICOM Presents

India Agile Week-2013
www.unicomlearning.com

Paving the Way
for

Agile Engineering
Practices
UNICOM Presents

India Agile Week-2013
www.unicomlearning.com

Paving the Way
for

Agile Engineering
Practices
UNICOM Presents

India Agile Week-2013
Exploring Agile Engineering Practices…
Exploring Agile Engineering Practices…
Exploring Agile Engineering Practices…
Exploring Agile Engineering Practices…
Exploring Agile Engineering Practices…
Agile Engineering
Practices
Paving the Way
for

Agile Engineering
Practices
Paving the Way
for

Agile Engineering
Practices
Why?
Observations
as
Agile Practitioner &
Agile Coach
Most code bases are
inherited by teams
Most teams starting Agile
adoption have an existing
code base
Existing code bases differ
from “Agile” code bases
Agile Engineering Practices
cannot be applied as-is
to existing code bases
Result?
Technical improvements
cannot keep up with Agile
planning, time-boxes &
frequent delivery
Everyone stresses out!
Code base worsens with
every iteration!

Agile deemed a failure!
Paving the Way
for

Agile Engineering
Practices
What?
Removing common
roadblocks
Code smells
Architectural smells
Deployment smells
Code smells
Most common, most offending!
•
•
•
•
•
•
•
•
•
•

Long methods
Long class
Static method calls
Lot of if-else’s, including null checks
Primitive obsession
Multiple assignments to a local variable
Temporal coupling
Fields as temporary variables
Out parameters
Setters!!!
Hurt Matrix
Smell

TDD

Refactoring

Pair
Programming

Continuous
Integration

Long methods/class

X

X

X

-

Statics

X

X

-

X

Conditionals

X

X

X

-

Primitive obsession

X

X

-

-

Multiple assignments

X

X

X

-

Methods with side-effects

X

X

X

-

Setters

X

X

X

-
Architectural smells
Most common, most offending!
•
•
•
•
•
•
•
•

Incorrect responsibility-split across layers
Confusing or inconsistent module structure
Missing Dependency Injection
Abused Dependency Injection
No componentization
Over-componentization
Rewrites: big-bang, either-or, long-lived
Mixed tech stack
Hurt Matrix
Smell

TDD

Refactoring

Pair
Programming

Continuous
Integration

Layering

X

X

X

X

Module structure

X

X

X

-

Missing or abused DI

X

X

X

X

Componentization

X

X

X

X

Rewrites

X

X

X

X

Mixed tech stack

X

X

X

X
Deployment smells
Most common, most offending!
•
•
•
•
•
•

Branching based on release / feature / team
Dependencies not version controlled
Database changes not version controlled
Deployment scripts not version controlled
Shared non-isolated environments
Infrastructure access highly restricted
Hurt Matrix
Smell

TDD

Refactoring

Pair
Programming

Continuous
Integration

Branching strategy

-

X

X

X

Untracked dependencies

-

-

X

X

Untracked DB changes

X

X

X

X

Untracked deployment
scripts

-

-

X

X

Shared environments

X

X

X

X

Restricted infrastructure
access

-

-

X

X
Paving the Way
for

Agile Engineering
Practices
How?
Let’s look at
examples…
Code smells
Most common, most offending!
•
•
•
•
•
•
•
•
•
•

Long methods
Long class
Static method calls
Lot of if-else’s, including null checks
Primitive obsession
Multiple assignments to a local variable
Temporal coupling
Fields as temporary variables
Out parameters
Setters!!!
Most common, most offending!
•
•
•
•
•
•
•
•
•
•

Long methods
Long class
Static method calls
Lot of if-else’s, including null checks
Primitive obsession
Multiple assignments to a local variable
Temporal coupling
Fields as temporary variables
Out parameters
Setters!!!
Smelly!
TDD Hurt:
Hard to test for
one thing at a
time!
Refactoring
Hurt:
Hard to safely
refactor!
Failed attempt at IDE refactoring!
Pair
Programming
Hurt:
Hard to quickly
understand!
Hard to quickly
debug!
What to do?

Smelly Code
Smelly Code

Tests for
Smelly Code
Smelly Code

Tests for
Smelly Code

Tests for
new Feature
Smelly Code

Tests for
Smelly Code

Tests for
new Feature

Add to
Smelly Code
Smelly Code

Tests for
Smelly Code

Tests for
new Feature

Add to
Smelly Code

Smellier
Code
Let’s back up a bit…
Smelly Code

Tests for
Smelly Code

Tests for
new Feature

Add to
Smelly Code

Smellier
Code
Smelly Code

Tests for
Smelly Code

Tests for
new Feature

Manual
Refactor to
Less Smelly
Code

Add to
Smelly Code

Smellier
Code
Smelly Code

Tests for
Smelly Code

Tests for
new Feature

Manual
Refactor to
Less Smelly
Code

Add to
Smelly Code

Smellier
Code
Smelly Code

Tests for
Smelly Code

Tests for
new Feature

Manual
Refactor to
Less Smelly
Code

Add to
Smelly Code

Add to
Refactored
Code

Smellier
Code
Smelly Code

Tests for
Smelly Code

Tests for
new Feature

Manual
Refactor to
Less Smelly
Code

Add to
Smelly Code

Add to
Refactored
Code

Refactor to
Less Smelly
Code

Smellier
Code

Cleaner
Code
Smelly Code

Tests for
Smelly Code

Tests for
new Feature

Manual
Refactor to
Less Smelly
Code

Pave!

Add to
Smelly Code

Add to
Refactored
Code

Refactor to
Less Smelly
Code

Smellier
Code

Cleaner
Code
Most common, most offending!
•
•
•
•
•
•
•
•
•
•

Long methods
Long class
Static method calls
Lot of if-else’s, including null checks
Primitive obsession
Multiple assignments to a local variable
Temporal coupling
Fields as temporary variables
Out parameters
Setters!!!
Most common, most offending!
•
•
•
•
•
•
•
•
•
•

Long methods
Long class
Static method calls
Lot of if-else’s, including null checks
Primitive obsession
Multiple assignments to a local variable
Temporal coupling
Fields as temporary variables
Out parameters
Setters!!!
Smelly!
Pave!
Most common, most offending!
•
•
•
•
•
•
•
•
•
•

Long methods
Long class
Static method calls
Lot of if-else’s, including null checks
Primitive obsession
Multiple assignments to a local variable
Temporal coupling
Fields as temporary variables
Out parameters
Setters!!!
Smelly!
How to
test
different
outcomes?
Pave!
Architectural smells
Most common, most offending!
•
•
•
•
•
•
•
•

Incorrect responsibility-split across layers
Confusing or inconsistent module structure
Missing Dependency Injection
Abused Dependency Injection
No componentization
Over-componentization
Rewrites: big-bang, either-or, long-lived
Mixed tech stack
Most common, most offending!
•
•
•
•
•
•
•
•

Incorrect responsibility-split across layers
Confusing or inconsistent module structure
Missing Dependency Injection
Abused Dependency Injection
No componentization
Over-componentization
Rewrites: big-bang, either-or, long-lived
Mixed tech stack
Smelly!
Pave!
Smelly!
Two database hits!
Pave!
More domain driven
Most common, most offending!
•
•
•
•
•
•
•
•

Incorrect responsibility-split across layers
Confusing or inconsistent module structure
Missing Dependency Injection
Abused Dependency Injection
No componentization
Over-componentization
Rewrites: big-bang, either-or, long-lived
Mixed tech stack
Smelly!
Field-based
injection
How to inject the
mock?
Pave!
A

B

C

Spring IoC

D
A

B

C

Spring IoC

D

E
A

B

C

E

Spring IoC

D
A

B

C

E

Spring IoC

D

Is E really
“cross-cutting”
or is it just too
easy to inject?
A

High
coupling

B

C

E

Spring IoC

D

Smelly!
A

B

C

E

Spring IoC

D

Solution?
A

B

C

D

E

Pave!

Spring IoC
Deployment smells
Most common, most offending!
•
•
•
•
•
•

Branching based on release / feature / team
Dependencies not version controlled
Database changes not version controlled
Deployment scripts not version controlled
Shared non-isolated environments
Infrastructure access highly restricted
Most common, most offending!
•
•
•
•
•
•

Branching based on release / feature / team
Dependencies not version controlled
Database changes not version controlled
Deployment scripts not version controlled
Shared non-isolated environments
Infrastructure access highly restricted
Smelly!
http://martinfowler.com/bliki/FeatureBranch.html
Pave!

http://martinfowler.com/bliki/FeatureToggle.html
http://paulhammant.com/blog/branch_by_abstraction.html
Most common, most offending!
•
•
•
•
•
•

Branching based on release / feature / team
Dependencies not version controlled
Database changes not version controlled
Deployment scripts not version controlled
Shared non-isolated environments
Infrastructure access highly restricted
Pave!

Dump
current
schema DDL

Introduce a
tool like
Liquibase/
dbdeploy &
commit
initial DDL
script

Similarly for DML

http://www.liquibase.org
http://dbdeploy.com

Further
changes
made only
via
Liquibase/
dbdeploy
scripts

Test the
Liquibase/
dbdeploy
scripts

Commit the
Liquibase/
dbdeploy
scripts
Most common, most offending!
•
•
•
•
•
•

Branching based on release / feature / team
Dependencies not version controlled
Database changes not version controlled
Deployment scripts not version controlled
Shared non-isolated environments
Infrastructure access highly restricted
Pave!

Automate
deployment
steps with
bash scripts

Commit the
scripts into
a versioncontrolled
repository

http://rubygems.org/gems/chef
http://rubygems.org/gems/puppet

Automate
invoking the
scripts via a
CI tool like
Jenkins/Go

Build
confidence
with
automated
smoke tests

Replace
scripts with
a tool like
Chef/
Puppet
Most common, most offending!
•
•
•
•
•
•

Branching based on release / feature / team
Dependencies not version controlled
Database changes not version controlled
Deployment scripts not version controlled
Shared non-isolated environments
Infrastructure access highly restricted
Pave!

Identify
volatile
shared
resources

Deploy/
install local
version of
identified
resources

Create stubs
as local
version of
identified
resources

Develop
against local
version of
identified
resources

Regularly
update/sync
local version
of identified
resources

Test end-toend on a true
integrated
environment
Paving the Way
for

Agile Engineering
Practices…
Is difficult but doable!
Needs some upfront thinking,
planning & implementation.
Can be done alongside business
functionality.
Just be alert & prepared…
to pave the way!
www.unicomlearning.com

amanking.com
king@thoughtworks.com

India Agile Week-2013
Organized by
UNICOM Trainings & Seminars Pvt. Ltd.
contact@unicomlearning.com

Example code available at
https://github.com/amanking/paving_the_way_talk_companion

Weitere ähnliche Inhalte

Was ist angesagt?

Escaping Test Hell - Our Journey - XPDays Ukraine 2013
Escaping Test Hell - Our Journey - XPDays Ukraine 2013Escaping Test Hell - Our Journey - XPDays Ukraine 2013
Escaping Test Hell - Our Journey - XPDays Ukraine 2013Wojciech Seliga
 
Operations: The Last Mile
Operations: The Last Mile Operations: The Last Mile
Operations: The Last Mile Rundeck
 
A Business Case for Git - Tim Pettersen
A Business Case for Git - Tim PettersenA Business Case for Git - Tim Pettersen
A Business Case for Git - Tim PettersenAtlassian
 
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...Clinton Wolfe
 
Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE Rundeck
 
Beyond Agile and DevOps: From Concepts to Products in Weeks, Not Months
Beyond Agile and DevOps: From Concepts to Products in Weeks, Not MonthsBeyond Agile and DevOps: From Concepts to Products in Weeks, Not Months
Beyond Agile and DevOps: From Concepts to Products in Weeks, Not MonthsAtlassian
 
Optimizing Git LFS Migration Through Repository Data-mining
Optimizing Git LFS Migration Through Repository Data-miningOptimizing Git LFS Migration Through Repository Data-mining
Optimizing Git LFS Migration Through Repository Data-miningAtlassian
 
Atlassian - Software For Every Team
Atlassian - Software For Every TeamAtlassian - Software For Every Team
Atlassian - Software For Every TeamSven Peters
 
Is your API misbehaving?(Keith-Casey)
Is your API misbehaving?(Keith-Casey)Is your API misbehaving?(Keith-Casey)
Is your API misbehaving?(Keith-Casey)Future Insights
 
Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE Rundeck
 
Achieving Continuous Delivery with Puppet
Achieving Continuous Delivery with PuppetAchieving Continuous Delivery with Puppet
Achieving Continuous Delivery with PuppetDevoteam Revolve
 
IT Trends 120-ish in the real world
 IT Trends 120-ish in the real world IT Trends 120-ish in the real world
IT Trends 120-ish in the real worldChristian John Felix
 
Agile Infrastructure - Agile 2009
Agile Infrastructure - Agile 2009Agile Infrastructure - Agile 2009
Agile Infrastructure - Agile 2009Andrew Shafer
 
The business case for contributing code
The business case for contributing codeThe business case for contributing code
The business case for contributing codeZivtech, LLC
 
Poka yoke: The Science of Mistake Proofing in Software
Poka yoke: The Science of Mistake Proofing in SoftwarePoka yoke: The Science of Mistake Proofing in Software
Poka yoke: The Science of Mistake Proofing in SoftwareGurpreet Luthra
 
SysAdmin to SRE: Solving the Last Mile Problem
SysAdmin to SRE: Solving the Last Mile ProblemSysAdmin to SRE: Solving the Last Mile Problem
SysAdmin to SRE: Solving the Last Mile ProblemRundeck
 
Chaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in ProductionChaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in ProductionKeet Sugathadasa
 
Passion For Software
Passion For SoftwarePassion For Software
Passion For SoftwareSven Peters
 
Scaling Scrum with UX in the Enterprise
Scaling Scrum with UX in the EnterpriseScaling Scrum with UX in the Enterprise
Scaling Scrum with UX in the EnterpriseCaleb Jenkins
 

Was ist angesagt? (20)

Escaping Test Hell - Our Journey - XPDays Ukraine 2013
Escaping Test Hell - Our Journey - XPDays Ukraine 2013Escaping Test Hell - Our Journey - XPDays Ukraine 2013
Escaping Test Hell - Our Journey - XPDays Ukraine 2013
 
Operations: The Last Mile
Operations: The Last Mile Operations: The Last Mile
Operations: The Last Mile
 
A Business Case for Git - Tim Pettersen
A Business Case for Git - Tim PettersenA Business Case for Git - Tim Pettersen
A Business Case for Git - Tim Pettersen
 
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...
 
Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE
 
Beyond Agile and DevOps: From Concepts to Products in Weeks, Not Months
Beyond Agile and DevOps: From Concepts to Products in Weeks, Not MonthsBeyond Agile and DevOps: From Concepts to Products in Weeks, Not Months
Beyond Agile and DevOps: From Concepts to Products in Weeks, Not Months
 
Optimizing Git LFS Migration Through Repository Data-mining
Optimizing Git LFS Migration Through Repository Data-miningOptimizing Git LFS Migration Through Repository Data-mining
Optimizing Git LFS Migration Through Repository Data-mining
 
Atlassian - Software For Every Team
Atlassian - Software For Every TeamAtlassian - Software For Every Team
Atlassian - Software For Every Team
 
Is your API misbehaving?(Keith-Casey)
Is your API misbehaving?(Keith-Casey)Is your API misbehaving?(Keith-Casey)
Is your API misbehaving?(Keith-Casey)
 
Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE
 
Achieving Continuous Delivery with Puppet
Achieving Continuous Delivery with PuppetAchieving Continuous Delivery with Puppet
Achieving Continuous Delivery with Puppet
 
IT Trends 120-ish in the real world
 IT Trends 120-ish in the real world IT Trends 120-ish in the real world
IT Trends 120-ish in the real world
 
Agile Infrastructure - Agile 2009
Agile Infrastructure - Agile 2009Agile Infrastructure - Agile 2009
Agile Infrastructure - Agile 2009
 
The business case for contributing code
The business case for contributing codeThe business case for contributing code
The business case for contributing code
 
Poka yoke: The Science of Mistake Proofing in Software
Poka yoke: The Science of Mistake Proofing in SoftwarePoka yoke: The Science of Mistake Proofing in Software
Poka yoke: The Science of Mistake Proofing in Software
 
SysAdmin to SRE: Solving the Last Mile Problem
SysAdmin to SRE: Solving the Last Mile ProblemSysAdmin to SRE: Solving the Last Mile Problem
SysAdmin to SRE: Solving the Last Mile Problem
 
Chaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in ProductionChaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in Production
 
why-tdd
why-tddwhy-tdd
why-tdd
 
Passion For Software
Passion For SoftwarePassion For Software
Passion For Software
 
Scaling Scrum with UX in the Enterprise
Scaling Scrum with UX in the EnterpriseScaling Scrum with UX in the Enterprise
Scaling Scrum with UX in the Enterprise
 

Ähnlich wie Paving the Way for Agile Engineering Practices

Topic production code
Topic production codeTopic production code
Topic production codeKavi Kumar
 
Test Driven Development - Workshop
Test Driven Development - WorkshopTest Driven Development - Workshop
Test Driven Development - WorkshopAnjana Somathilake
 
Continuous delivery is more than dev ops
Continuous delivery is more than dev opsContinuous delivery is more than dev ops
Continuous delivery is more than dev opsAgile Montréal
 
Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Danny Preussler
 
Working with Legacy Code
Working with Legacy CodeWorking with Legacy Code
Working with Legacy CodeEyal Golan
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....Mike Harris
 
springtraning-7024840-phpapp01.pdf
springtraning-7024840-phpapp01.pdfspringtraning-7024840-phpapp01.pdf
springtraning-7024840-phpapp01.pdfBruceLee275640
 
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...Mozaic Works
 
Battle for Code Quality - A Story of One Java Project
Battle for Code Quality - A Story of One Java ProjectBattle for Code Quality - A Story of One Java Project
Battle for Code Quality - A Story of One Java ProjectGlobalLogic Ukraine
 
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...Raffi Khatchadourian
 
Principled And Clean Coding
Principled And Clean CodingPrincipled And Clean Coding
Principled And Clean CodingMetin Ogurlu
 
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...ORAU
 
Test Driven Design
Test Driven DesignTest Driven Design
Test Driven DesignSaad Ahmed
 
Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Lemi Orhan Ergin
 
Sap inside track Munich 2017
Sap inside track Munich 2017Sap inside track Munich 2017
Sap inside track Munich 2017Rainer Winkler
 
Effectively Using UI Automation
Effectively Using UI AutomationEffectively Using UI Automation
Effectively Using UI AutomationAlexander Repty
 
Ionic Advisory: Your partner at every stage of development
Ionic Advisory: Your partner at every stage of development Ionic Advisory: Your partner at every stage of development
Ionic Advisory: Your partner at every stage of development Ionic Framework
 
Coder sans peur du changement avec la meme pas mal hexagonal architecture
Coder sans peur du changement avec la meme pas mal hexagonal architectureCoder sans peur du changement avec la meme pas mal hexagonal architecture
Coder sans peur du changement avec la meme pas mal hexagonal architectureThomas Pierrain
 
iOS Test-Driven Development
iOS Test-Driven DevelopmentiOS Test-Driven Development
iOS Test-Driven DevelopmentPablo Villar
 

Ähnlich wie Paving the Way for Agile Engineering Practices (20)

Topic production code
Topic production codeTopic production code
Topic production code
 
Test Driven Development - Workshop
Test Driven Development - WorkshopTest Driven Development - Workshop
Test Driven Development - Workshop
 
Continuous delivery is more than dev ops
Continuous delivery is more than dev opsContinuous delivery is more than dev ops
Continuous delivery is more than dev ops
 
Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)
 
Working with Legacy Code
Working with Legacy CodeWorking with Legacy Code
Working with Legacy Code
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....
 
TDD and Getting Paid
TDD and Getting PaidTDD and Getting Paid
TDD and Getting Paid
 
springtraning-7024840-phpapp01.pdf
springtraning-7024840-phpapp01.pdfspringtraning-7024840-phpapp01.pdf
springtraning-7024840-phpapp01.pdf
 
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
 
Battle for Code Quality - A Story of One Java Project
Battle for Code Quality - A Story of One Java ProjectBattle for Code Quality - A Story of One Java Project
Battle for Code Quality - A Story of One Java Project
 
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
 
Principled And Clean Coding
Principled And Clean CodingPrincipled And Clean Coding
Principled And Clean Coding
 
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...
 
Test Driven Design
Test Driven DesignTest Driven Design
Test Driven Design
 
Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016
 
Sap inside track Munich 2017
Sap inside track Munich 2017Sap inside track Munich 2017
Sap inside track Munich 2017
 
Effectively Using UI Automation
Effectively Using UI AutomationEffectively Using UI Automation
Effectively Using UI Automation
 
Ionic Advisory: Your partner at every stage of development
Ionic Advisory: Your partner at every stage of development Ionic Advisory: Your partner at every stage of development
Ionic Advisory: Your partner at every stage of development
 
Coder sans peur du changement avec la meme pas mal hexagonal architecture
Coder sans peur du changement avec la meme pas mal hexagonal architectureCoder sans peur du changement avec la meme pas mal hexagonal architecture
Coder sans peur du changement avec la meme pas mal hexagonal architecture
 
iOS Test-Driven Development
iOS Test-Driven DevelopmentiOS Test-Driven Development
iOS Test-Driven Development
 

Mehr von Aman King

Agile Testing Dilemmas
Agile Testing DilemmasAgile Testing Dilemmas
Agile Testing DilemmasAman King
 
From Practitioner to Coach
From Practitioner to CoachFrom Practitioner to Coach
From Practitioner to CoachAman King
 
Agile Testing!
Agile Testing!Agile Testing!
Agile Testing!Aman King
 
Reducing Build Time
Reducing Build TimeReducing Build Time
Reducing Build TimeAman King
 
Multimethods
MultimethodsMultimethods
MultimethodsAman King
 
Agile Buzzwords in Action
Agile Buzzwords in ActionAgile Buzzwords in Action
Agile Buzzwords in ActionAman King
 
Ruby OOP: Objects over Classes
Ruby OOP: Objects over ClassesRuby OOP: Objects over Classes
Ruby OOP: Objects over ClassesAman King
 

Mehr von Aman King (7)

Agile Testing Dilemmas
Agile Testing DilemmasAgile Testing Dilemmas
Agile Testing Dilemmas
 
From Practitioner to Coach
From Practitioner to CoachFrom Practitioner to Coach
From Practitioner to Coach
 
Agile Testing!
Agile Testing!Agile Testing!
Agile Testing!
 
Reducing Build Time
Reducing Build TimeReducing Build Time
Reducing Build Time
 
Multimethods
MultimethodsMultimethods
Multimethods
 
Agile Buzzwords in Action
Agile Buzzwords in ActionAgile Buzzwords in Action
Agile Buzzwords in Action
 
Ruby OOP: Objects over Classes
Ruby OOP: Objects over ClassesRuby OOP: Objects over Classes
Ruby OOP: Objects over Classes
 

Kürzlich hochgeladen

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 

Kürzlich hochgeladen (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 

Paving the Way for Agile Engineering Practices

Hinweis der Redaktion

  1. Credits:http://shop.oreilly.com/product/0636920020271.do
  2. Credits:http://shop.oreilly.com/product/0636920020271.dohttp://www.cs.ox.ac.uk/softeng/subjects/APE.html
  3. Credits:http://shop.oreilly.com/product/0636920020271.dohttp://www.cs.ox.ac.uk/softeng/subjects/APE.htmlhttp://www.scrumalliance.org/courses-events/courses/csd/united-states/new-jersey/princeton/2013/august/20132307-certified-scrumdeveloper-track
  4. Credits:http://shop.oreilly.com/product/0636920020271.dohttp://www.cs.ox.ac.uk/softeng/subjects/APE.htmlhttp://www.scrumalliance.org/courses-events/courses/csd/united-states/new-jersey/princeton/2013/august/20132307-certified-scrumdeveloper-trackhttp://www.agileinbusiness.com/pune/program