This presentation introduces essential skills for agile programmers. It will cover agile technical skills over 90 minutes and include demonstrations of test-driven development. Attendees will discuss in teams the most important agile skills and write down their ideas to share. The presentation will rank skills by priority and cover topics like design, testing, team behaviors, structuring work, and environment.
This presentation was presented in Android Only! 2011 conference on June 14th.
With more than 300 different Android devices out on 6 different platform versions, application developers are facing a real nightmare when trying validate that their applications really work on their customers' devices. While fragmentation is a new thing in Android platform, it is not new in software industry and there are several ways to deal with device fragmentation from testing point of view.
This presentation discusses most common approaches to tackle fragmentation from application developer's point of view and explains why testing for device compatibility is a must for any serious Android application developer.
Different Android Test Automation Frameworks - What Works You the Best?Bitbar
Watch a live presentation at http://offer.bitbar.com/different-android-testing-frameworks-what-works-you-the-best
Implementing the test automation as part of your daily activities can provide you an enormous value: coverage to detect bugs and errors, early and later during the development, reducing the costs of failure, save time through its repeatability and earlier verification. Today, there are bunch of different options available for testing frameworks on Android – what would work the best for you?
Stay tuned and join our upcoming webinars at http://bitbar.com/testing/webinars/
Comparison between Eclipse and Android Studio for Android DevelopmentWillow Cheng
Both Eclipse and Android Studio are free to use. Eclipse takes use of ADT (Android Developer Tools) as a plugin to provide a suite of tools which are integrated with Eclipse. ADT plugin provides UI design tool for rapid prototyping, designing, and building of Android application’s user interface. Meanwhile, Android Studio becomes the official IDE for Android application development on Nov, 2014, based on IntelliJ IDEA. It offers flexible Gradle-based build system, build variants and multiple APK (Android install package) file generation, code templates to help to build common app features, etc.
Exploring Android Studio presentation is about learning interesting features and #ProTips for developing better and faster Android apps and small tip for library.
Topics covered: Flavors, Layout Editor, Vector Assets, Lint Checker, Monitor Tools, Resource Prefix and few #ProTips.
This presentation was presented in Android Only! 2011 conference on June 14th.
With more than 300 different Android devices out on 6 different platform versions, application developers are facing a real nightmare when trying validate that their applications really work on their customers' devices. While fragmentation is a new thing in Android platform, it is not new in software industry and there are several ways to deal with device fragmentation from testing point of view.
This presentation discusses most common approaches to tackle fragmentation from application developer's point of view and explains why testing for device compatibility is a must for any serious Android application developer.
Different Android Test Automation Frameworks - What Works You the Best?Bitbar
Watch a live presentation at http://offer.bitbar.com/different-android-testing-frameworks-what-works-you-the-best
Implementing the test automation as part of your daily activities can provide you an enormous value: coverage to detect bugs and errors, early and later during the development, reducing the costs of failure, save time through its repeatability and earlier verification. Today, there are bunch of different options available for testing frameworks on Android – what would work the best for you?
Stay tuned and join our upcoming webinars at http://bitbar.com/testing/webinars/
Comparison between Eclipse and Android Studio for Android DevelopmentWillow Cheng
Both Eclipse and Android Studio are free to use. Eclipse takes use of ADT (Android Developer Tools) as a plugin to provide a suite of tools which are integrated with Eclipse. ADT plugin provides UI design tool for rapid prototyping, designing, and building of Android application’s user interface. Meanwhile, Android Studio becomes the official IDE for Android application development on Nov, 2014, based on IntelliJ IDEA. It offers flexible Gradle-based build system, build variants and multiple APK (Android install package) file generation, code templates to help to build common app features, etc.
Exploring Android Studio presentation is about learning interesting features and #ProTips for developing better and faster Android apps and small tip for library.
Topics covered: Flavors, Layout Editor, Vector Assets, Lint Checker, Monitor Tools, Resource Prefix and few #ProTips.
Android Studio vs Eclipse: What are the main differences?avocarrot
We explore the main differences in the Android Studio vs Eclipse battle. What should you chose to develop your next Android app with?
Pana Papageorgiou from Avocarrot (http://www.avocarrot.com) explores the pros and cons of each IDE to identify the best tool for developing Android apps.
Implementing Test Automation in Agile ProjectsDominik Dary
All new features at eBay Europe are developed using SCRUM. One key success factor for those projects is to have a reliable end-to-end test automation safety net. This presentation illustrates how in addition to a robust automation toolset it is essential to have an integrated approach to test automation design:
Test Aspects - Test Aspects are used to do the functional design of the end-to-end automation test cases. Since this is done upfront, the tester is able to focus on the what rather than the how.
Modeling of the Biz Domain Layer - The Biz Domain Layer is an abstraction layer above the user interface that is implemented in the test code. This layer is divided into pages and flows which are then used in the tests.
Test Implementation - Tests are written in Java, stored in SVN and are executed using the WebDriver Grid (Selenium2). Tests execution can be triggered by all team members via a continuous integration server (Hudson).
Lean Test Automation – it is important to retain and maintain the quality of the tests. Key success factors for this are: Code Reviews, Software Craftsmanship, Test Aspect Reviews and the “Definition of Done”.
Following an integrated approach to test automation ensures high efficiency, low overhead and easier maintenance.
MOPCON 2015 - Tips of Mobile Continuous Deliveryanistar sung
This deck was my sharing in MOPCON 2015. I told about some tips of continuous delivery in mobile development environment and what we did in Taiwan Yahoo. How to make a success strategy for mobile continuous delivery.
Slides from EclipseCon Europe 2012 session "A journey with Target Platforms".
This presentation contains some tips on tricks on how to leverage Eclipse target platforms at development time and build time, based n experiences from JBoss Tools team.
Watch a live presentation at http://offer.bitbar.com/learn-the-best-practices-of-mobile-game-testing
To get the best start for your mobile game - or just to improve the existing game's possibility to get in front of hundreds of millions of gamers - we'll be sharing our insights, best practices and lots of tips&tricks how to gain advantage in this race.
Stay tuned and join our upcoming webinars at http://bitbar.com/testing/webinars/
Do You Enjoy Espresso in Android App Testing?Bitbar
Watch a live presentation at http://offer.bitbar.com/do-you-enjoy-espresso-in-android-app-testing
Majority of us love coffee but let's put that aside and focus on Espresso - by Google. This exciting new test automation framework just got open sourced and is available for app developers and testers to hammer their app UIs. Espresso has a small, predictable and easy to learn API - built on top of Android Instrumentation Framework - and you can very quickly write concise and reliable Android UI tests with it.
Stay tuned and join our upcoming webinars at http://bitbar.com/testing/webinars/
How to Leverage Appium in Your Mobile App TestingBitbar
Watch a live presentation at http://offer.bitbar.com/how-to-leverage-appium-in-your-mobile-app-testing
Appium is an open source test automation framework for use with native and hybrid mobile apps. Appium is built on the idea that testing native apps shouldn't require including an SDK or recompiling your app. Appium also enables you to use your preferred test practices, frameworks, and tools.
Stay tuned and join our upcoming webinars at http://bitbar.com/testing/webinars/
Exercising and Scaling Up Mobile DevOps in the EnterpriseBitbar
Adopting the mobile devops culture, processes and practices in any organization may not happen overnight. The transformation from agile to true mobile devops requires identification of inefficiencies and understanding of how process, practice and infrastructure can be scaled up.
Stay tuned and join our upcoming webinars at bitbar.com/testing/webinars/
These are the slides for the presentation that Bitbar experts gave at Droidcon Berlin 2012 (http://de.droidcon.com/content/testing-device-compatibility-not-hard-you-think). The presentation included also a live demo of Recording tests with Testdroid Recorder 2.0 and running the same use cases with one click on all 100+ real Android devices in Testdroid Cloud.
An introduction to the Selenium test tool, including the Selenium IDE and Selenium RC. Hosted by the British Computer Society in London.
Presenters:
Komal Joshi
Director: Atlantis Software Limited
Anand Ramdeo
Head of Quality Assurance: GCAP Media
This presentation on sleep hacking provides an overview of some of the variables that affect sleep. Understanding these variables provides insight into how to optimize your sleep so you can achieve a better sleep. I tried to include some less obvious sleep hacks as a precursor to my class: Sleep Hacking - How to Dominate Your Sleep in Less than A Week
My recent presentation from the East Midlands Learning Technology Winter 2015 meeting discussing and highlighting the power of Digital Assessment for teachers, students and schools.
This is a modified version of a presentation given to high school students about understanding their digital reputations and identities online. It includes practical tips and guides from Erik Qualman's book, What Happens On Campus Stays On YouTube. A book to which I was a contributing author. Available on Amazon: http://www.amazon.com/gp/product/0991183525/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0991183525&linkCode=as2&tag=paulgordonbro-20&linkId=VEIE5AKM4DCK7MW2
Android Studio vs Eclipse: What are the main differences?avocarrot
We explore the main differences in the Android Studio vs Eclipse battle. What should you chose to develop your next Android app with?
Pana Papageorgiou from Avocarrot (http://www.avocarrot.com) explores the pros and cons of each IDE to identify the best tool for developing Android apps.
Implementing Test Automation in Agile ProjectsDominik Dary
All new features at eBay Europe are developed using SCRUM. One key success factor for those projects is to have a reliable end-to-end test automation safety net. This presentation illustrates how in addition to a robust automation toolset it is essential to have an integrated approach to test automation design:
Test Aspects - Test Aspects are used to do the functional design of the end-to-end automation test cases. Since this is done upfront, the tester is able to focus on the what rather than the how.
Modeling of the Biz Domain Layer - The Biz Domain Layer is an abstraction layer above the user interface that is implemented in the test code. This layer is divided into pages and flows which are then used in the tests.
Test Implementation - Tests are written in Java, stored in SVN and are executed using the WebDriver Grid (Selenium2). Tests execution can be triggered by all team members via a continuous integration server (Hudson).
Lean Test Automation – it is important to retain and maintain the quality of the tests. Key success factors for this are: Code Reviews, Software Craftsmanship, Test Aspect Reviews and the “Definition of Done”.
Following an integrated approach to test automation ensures high efficiency, low overhead and easier maintenance.
MOPCON 2015 - Tips of Mobile Continuous Deliveryanistar sung
This deck was my sharing in MOPCON 2015. I told about some tips of continuous delivery in mobile development environment and what we did in Taiwan Yahoo. How to make a success strategy for mobile continuous delivery.
Slides from EclipseCon Europe 2012 session "A journey with Target Platforms".
This presentation contains some tips on tricks on how to leverage Eclipse target platforms at development time and build time, based n experiences from JBoss Tools team.
Watch a live presentation at http://offer.bitbar.com/learn-the-best-practices-of-mobile-game-testing
To get the best start for your mobile game - or just to improve the existing game's possibility to get in front of hundreds of millions of gamers - we'll be sharing our insights, best practices and lots of tips&tricks how to gain advantage in this race.
Stay tuned and join our upcoming webinars at http://bitbar.com/testing/webinars/
Do You Enjoy Espresso in Android App Testing?Bitbar
Watch a live presentation at http://offer.bitbar.com/do-you-enjoy-espresso-in-android-app-testing
Majority of us love coffee but let's put that aside and focus on Espresso - by Google. This exciting new test automation framework just got open sourced and is available for app developers and testers to hammer their app UIs. Espresso has a small, predictable and easy to learn API - built on top of Android Instrumentation Framework - and you can very quickly write concise and reliable Android UI tests with it.
Stay tuned and join our upcoming webinars at http://bitbar.com/testing/webinars/
How to Leverage Appium in Your Mobile App TestingBitbar
Watch a live presentation at http://offer.bitbar.com/how-to-leverage-appium-in-your-mobile-app-testing
Appium is an open source test automation framework for use with native and hybrid mobile apps. Appium is built on the idea that testing native apps shouldn't require including an SDK or recompiling your app. Appium also enables you to use your preferred test practices, frameworks, and tools.
Stay tuned and join our upcoming webinars at http://bitbar.com/testing/webinars/
Exercising and Scaling Up Mobile DevOps in the EnterpriseBitbar
Adopting the mobile devops culture, processes and practices in any organization may not happen overnight. The transformation from agile to true mobile devops requires identification of inefficiencies and understanding of how process, practice and infrastructure can be scaled up.
Stay tuned and join our upcoming webinars at bitbar.com/testing/webinars/
These are the slides for the presentation that Bitbar experts gave at Droidcon Berlin 2012 (http://de.droidcon.com/content/testing-device-compatibility-not-hard-you-think). The presentation included also a live demo of Recording tests with Testdroid Recorder 2.0 and running the same use cases with one click on all 100+ real Android devices in Testdroid Cloud.
An introduction to the Selenium test tool, including the Selenium IDE and Selenium RC. Hosted by the British Computer Society in London.
Presenters:
Komal Joshi
Director: Atlantis Software Limited
Anand Ramdeo
Head of Quality Assurance: GCAP Media
This presentation on sleep hacking provides an overview of some of the variables that affect sleep. Understanding these variables provides insight into how to optimize your sleep so you can achieve a better sleep. I tried to include some less obvious sleep hacks as a precursor to my class: Sleep Hacking - How to Dominate Your Sleep in Less than A Week
My recent presentation from the East Midlands Learning Technology Winter 2015 meeting discussing and highlighting the power of Digital Assessment for teachers, students and schools.
This is a modified version of a presentation given to high school students about understanding their digital reputations and identities online. It includes practical tips and guides from Erik Qualman's book, What Happens On Campus Stays On YouTube. A book to which I was a contributing author. Available on Amazon: http://www.amazon.com/gp/product/0991183525/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0991183525&linkCode=as2&tag=paulgordonbro-20&linkId=VEIE5AKM4DCK7MW2
Despite the myth of "digital natives," most of my students have very little experience using technology as anything more than a consumer device. It doesn't have to be this way. By using the design thinking cycle, teachers can foster creative thinking in every content area.
This slide explains a simple Android library called Debot.
Debot offers features that are useful to debug Android applications. Those features can be added to any activity that has the toolbar menu. Also, developers can easily add their own custom debugging features with simple steps.
https://github.com/tomoima525/debot
Easy to add, hard to remove. It is the case in many situations including software development, process improvements etc. How we can stay lean eliminating unnecessaries and be agile? We’ll explore the solutions with pattern mining workshop sessions. Stay Lean, Be Agile!
AgileRoots 2014
The DevOps movement, like its Agile predecessor, is focused on improving the communication and collaboration between the development and operations teams responsible for different aspects of an app throughout its lifecycle. While successful DevOps initiatives start and end with organizational and cultural change, there are also common practices that are enablers and/or tools used in support of DevOps. In this session you will learn about the DevOps practice of Configuration as Code &ndash managing and maintaining application configuration as versionable assets. This session will focus on the practice of Configuration as Code, while demonstrating a few of the popular tools available today, including Opscode Chef, Powershell DSC (Desired State Configuration) and others. If you are interested in implementing a DevOps initiative in your organization, then this session is a must-see.
Configuration As Code - Adoption of the Job DSL Plugin at NetflixJustin Ryan
The Jenkins Job DSL plugin allows programmers to express job configurations as code. Learn about the benefits, from the obvious (store your configurations in the SCM of your choice) to the not-so-obvious (focus on intent, instead of succumbing to the distraction of multiple, complex job configuration options). We will share our experience adopting the plugin over the past year to create and maintain more complex job pipelines at Netflix.
This presentation gives you eight simple tips on how to make your PowerPoint presentation slides more visually engaging, creative and fun. Try out these advice and you will make your best PowerPoint presentation ever.
This presentation was created by my powerpoint design agency Slides. We are based in Spain but have clients worldwide.
Drop me an email and we will discuss your project.
Audrys Kažukauskas - Introduction into Extreme ProgrammingAgile Lietuva
Extreme Programming might not be a silver bullet, but in software development it is almost that. Managers get all the bells and whistles you would expect from an agile process, whilst developers are equipped with a set of principles and practices, which almost inevitably improve the codebase and enable frequent delivery of quality software. In fact, many teams, which use other software development processes (Scrum, for instance) eventually end up adopting quite a few XP practices. I'll give you an introduction into XP, share my experiences and provide references to XP material for learning more about XP.
Rakuten Technology Conference 2011.
By David Ramos and Ilya Solovyev(LinkShare Corporation)
In today's high tech world, the complexity of projects continues to increase rapidly. Many technical organizations continuously ask themselves – what can we do to ensure the highest level of quality within a time-boxed project? When a project faces unforeseen challenges, there's an increased need for creative solutions and a higher level of teamwork. This presentation explores the coexistence of the agile and waterfall methodologies. This may be taboo in the traditional project management organization, however we have proven that it works.
Agile is an umbrella term for a collection of values, principles and practices originating from eXtreme Programming, Scrum, Lean and other methodologies.
When combined with effective governance, Agile and Lean provide benefits that include increased business value, reduced risk, greater flexibility and improved transparency.
Agile Anti-Patterns. Yes your agile projects can and will fail too.Sander Hoogendoorn
This is the slide deck for a smooth presentation on agile and agile anti-patterns I did recently at several international conferences, including GIDS (Bangalore), ACCU (Oxford), Camp Digital (Manchester), Agile Open Holland (Dieren) and Jazoon (Zurich).
This presentation was used in "Agile workshop for FPT Aptech Hanoi students" in December 2012.
This doc covers most of core practices of an agile developer.
A New Business Model of Custom Software Development For Agile Software Develo...Tsuyoshi Ushio
Successful business model of custom software for agile development.
22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering
November 16-21, 2014, Hong Kong
This slide is for Ultimate Agilist Tokyo in Japan. 2012.Nov.
I want to think about agile programmer's skill set. and I want to introduce ICAgile to Japan.
I analyzed agile value, principles, practices and ICAgile.
and participant members created some mandatory skill set in this session.
See this blog entry , that will be better.
http://simple-architect.blogspot.jp/2012/11/agile-programmers-skill-set-ultimate.html
About Agile Programmer's skill sets
Ultimate Agilist Tokyo 2012
This presentation will be used tomorrow. after that session I have a plan to update this slide.
2. Elementary
バカにされてる
気分になる
A presentation for elementary programmers of Agile
Agile Fundamental Skill Set
Produced by Tsuyoshi Ushio
3. Agile Fundamental Skill Set
In this presentation, you will …
• learn about Agile technical skill set in 90 min.
• Know about book recommendations.
• Watch demonstration of TDD.
What will you do?
• Make some teams (4 people in each team)
• Think about important agile skill set for you.
• Write your ideas and share these.
Ranking
You should learn it now!
You can learn it.
Development Team should cover it.
4. Mission #1 Mandatory Skills (5min)
Discuss
with
Team
members
about
…
受動態多用
日本人っぽい
・What
skills
are
needed
for
agile
programmers?
Please
tell
me
your
opinions.
Discuss
and
write
down
and
share.
5. Agile Practice Overview
Goal
Business
Value
国によっては
Customer
SaOsfacOon
敏感!
Market
CreaOon
LeJ
Wing
Right
Wing
CollaboraOon
,
Team
Technical
PracOce
Scrum
Engineering
pracOce
(XP)
VisualizaOon
ConOnuous
IntegraOon
RetrospecOve
ConOnuous
Delivery
IteraOon
Automated
Build
/
Test
/
Deploy
Daily
Standup
MeeOng
Version
Control
Human
/
Mind
TDD
/
Refactoring
Reference
this
blog
and
customize
it.
hAp://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-‐and-‐leJwing-‐of-‐agile.html
6. Five Knowledge Areas
新規作成
ページ例
1. Designing & Programming
2. Testing
3. Team and behaviors
4. Structuring Work
5. Environment
7. 1. Designing & Programming
新規作成
ページ例
TDD
(Test
Driven
Development)
Refactoring
Good
Design
Refactoring and Good Design support TDD
8. Test Driven Development
• Test-driven development is a software development technique that
uses really short development cycles to incrementally design your
software.
日本語元ネタ
ありの例
Test
Driven
Development
NoOce
:
you
should
not
execute
add
funcOon
and
refactoring
on
the
same
Ome.
Write Test
Fail
Write Code
Success
Refresh the Design
Refactoring
8
9. Refactoring
• Refactoring is the art of safety improving the design of existing code.
Planed
Design
EvoluOonal
Design
AJer
the
design
,
implement
it.
Small
design
,Small
implementaOon,
small
refactoring.
design
Design
Programming
Add
funcOon
Refactoring
Add
tests
Before
AJer
• If
the
soJware
design
changes,
the
design
is
ge]ng
worse.
• If
the
soJware
design
changes,
the
design
is
sOll
smart.
• Cannot
embrace
change
• Embrace
change
• It
takes
too
much
Ome
for
analyze
and
design.
• It
takes
small
amount
of
Ome
for
analyze
and
design.
Point
日本語元ネタ
1.
Basic
skill
of
design
is
same.
あり例。ダサイ
2.
Automate
Test
3.
Learn
about
Refactoring
catalog
9
10. Good Design 新規作成例
• Agile Programmer has an ability to think some good designs.
TDD
/
Refactoring
Simple
Design
Design
Principles
Clean
Programming
/
PaAerns
Architecture
10
11. Simple Design
If you keep it simple, you will get … 新規作成例
Easy to change, Less time, Easy to Understand it.
We can t predict the future
Beck’s
4
rules
of
simple
design
Pass
all
tests
Contains
no
duplicaOons
Express
the
intent
of
the
programmers
Minimizes
the
number
of
classes
and
methods
Extreme
Prgramming
Explained:
Embrace
Change
–
Kent
Beck
hAp://theholyjava.wordpress.com/2011/02/14/clean-‐code-‐four-‐simple-‐design-‐rules/
11
OOP
(Object
Oriented
Programming)
12. Clean Programming
Poorly written code is hard to understand and hard to evolve, 新規作成例
making code base more expensive to maintain.
Avoid
Generic
Names
Like
tmp
and
retval
var euclidean_norm = function (v) {
for (var i = 0; I < v.length; i += 1)
retval += v[i] + v[i];
return Math.sqrt(retval);
};
The
Art
of
Readable
Code:DusOn
Boswell,
Trevor
Foucher
The
Art
of
Readable
Code:
DusOn
Boswell,
Trevor
Foucher
Instead
of
retval
you
should
use
sum_squares
Because
it
would
show
the
meaning
of
the
variable
12
13. Estimating
Estimate user stories on the product backlog using relative estimate.
恥ずかしい文法
ミス指摘の例
Planning
Poker
Agile
EsOmaOng
and
Planning
Mike
Corn
EsOmate
Size
=
0,
1,
2,
3,
5,
8,
13,
20,
40
and
100.
Fetch
a
user
story
which
seems
smallest
size
and
set
size
to
2.
Compare
user
stories
with
others
and
define
these
size.
13
15. Introduction of Agile programmer Skills
Agile Fundamental Skill Set
Produced by Tsuyoshi Ushio
16. Agile Fundamental Skill Set
In this presentation, you will …
• learn about Agile technical skill set in 90 min.
• Know about book recommendations.
• Watch demonstration of TDD.
What will you do?
• Make some teams (4 people in each team)
• Think about important agile skills and build your future skill set.
• Write your ideas and share these.
Ranking
Everybody must have
A Team should have
A Team may have
17. Mission #1 Mandatory Skills (5min)
Discuss
with
Team
members
about
…
・What
skills
do
you
need
as
an
agile
programmer?
Please
share
your
team’s
opinions.
Discuss
and
write
down
and
share.
18. Agile Practice Overview
Goal
Business
Value
Customer
SaOsfacOon
Market
CreaOon
CollaboraOon
,
Team
Technical
PracOce
Scrum
Engineering
pracOce
(XP)
VisualizaOon
ConOnuous
IntegraOon
RetrospecOve
ConOnuous
Delivery
IteraOon
Automated
Build
/
Test
/
Deploy
Daily
Standup
MeeOng
Version
Control
Human
/
Mind
TDD
/
Refactoring
Reference
this
blog
and
customize
it.
hAp://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-‐and-‐leJwing-‐of-‐agile.html
19. Five Knowledge Areas
1. Designing & Programming
2. Testing
3. Team and behaviors
4. Structuring Work
5. Environment
20. 1. Designing & Programming
TDD
(Test
Driven
Development)
Refactoring
Good
Design
Refactoring and Good Design support TDD
21. Test Driven Development
• Test-driven development is a software development technique that
uses really short development cycles to incrementally design your
software.
Test
Driven
Development
NoOce
:
you
should
not
execute
add
funcOon
and
refactoring
on
the
same
Ome.
Write Test
Fail
Write Code
Success
Refresh the Design
Refactoring
21
22. Refactoring
• Refactoring is the art of safety improving the design of existing code.
Planed
Design
EvoluOonal
Design
AJer
the
design
,
implement
it.
Small
design
,Small
implementaOon,
small
refactoring.
design
Design
Programming
Add
funcOon
Refactoring
Add
tests
Before
AJer
• If
the
soJware
design
changes,
the
design
is
ge]ng
worse.
• If
the
soJware
design
changes,
the
design
is
sOll
smart.
• Cannot
embrace
change
• Embrace
change
• It
takes
too
much
Ome
for
analyze
and
design.
• It
takes
small
amount
of
Ome
for
analyze
and
design.
Point
1.
Basic
skill
of
design
is
same.
2.
Automate
Test
3.
Learn
about
Refactoring
catalog
22
23. Good Design
• Agile Programmer has an ability to think some good designs.
TDD
/
Refactoring
Simple
Design
Design
Principles
Clean
Programming
/
PaAerns
Architecture
23
24. Simple Design
If you keep it simple, you will get …
Easy to change, Less time, Easy to Understand it.
We can t predict the future
XP
Simplicity
Rules
Run
all
the
tests.
Express
every
idea
that
we
need
to
express
Say
everything
Once
And
Only
Once
Has
no
superfluous
parts
Extreme
Prgramming
Explained:
Embrace
Change
–
Kent
Beck
hAp://c2.com/xp/XpSimplicityRules.html
24
OOP
(Object
Oriented
Programming)
25. Clean Programming
Poorly written code is hard to understand and hard to evolve,
making code base more expensive to maintain.
Avoid
Generic
Names
Like
tmp
and
retval
var euclidean_norm = function (v) {
for (var i = 0; I < v.length; i += 1)
retval += v[i] + v[i];
return Math.sqrt(retval);
};
The
Art
of
Readable
Code:DusOn
Boswell,
Trevor
Foucher
The
Art
of
Readable
Code:
DusOn
Boswell,
Trevor
Foucher
Instead
of
retval
you
should
use
sum_squares
Because
it
would
show
the
meaning
of
the
variable
25
26. Estimating
Estimate user stories on the product backlog using relative estimation.
Planning
Poker
Agile
EsOmaOng
and
Planning
Mike
Corn
EsOmate
Size
=
0,
1,
2,
3,
5,
8,
13,
20,
40
and
100.
Fetch
a
user
story
which
seems
smallest
size
and
set
size
to
2.
Compare
user
stories
with
others
and
define
these
size.
26