SlideShare a Scribd company logo
1 of 89
Download to read offline
소프트웨어 장인으로 가는 길
( A Journey to Be a Software
Craftsman)
- Practicing Engineering Practices
Jaehoon Oh (jaehoon@nethru.co.kr)
Software Craftsmanship
Engineering Practice
Software
Craftsmanship
Software
Craftsman
CraftsmanCraftsmanship
https://www.youtube.com/watch?v=mRLLhwXyqSA
Craftsman
Cambridge Dictionary
- A person who is skilled at a particular craft
Longman Dictionary
- Someone who is very skilled at a particular craft
Craftsman
장인[匠人]
- 손으로 물건을 만드는 일에 종사하던 사람
- 예술 작품을 만드는 사람을 비유적으로 이르는 말
Someone who is very skilled at software
development.
Software Craftsman
How does a craftsman prove that he is
a skilled person?
QUALITY
How does a Software Craftsman
show that he is a skilled person?
QUALITY
http://blog.castsoftware.com/titanic-dilemma-the-seen-versus-the-unseen/
Readability
Flexibility
Testability
Maintainability
Cohesion
Coupling
EfficiencyCorrectness
Maintenance Cost
External
Quality
Internal Quality
(Code Quality)
Software Quality Iceberg
Test
Review
Craftsmanship ?
장인정신
≠
Craftsmanship
Cambridge Dictionary
- Skill at making things
Longman Dictionary
- The special skill that someone uses to make
something beautiful with their hands
Software Craftsmanship
Cambridge Dictionary
- Skill at making things Software
Longman Dictionary
- The special skill that someone uses to make
something Software beautiful with their hands
Agile Brief History
Waterfall Model
( Winston W. Royce)
(1970)
Concept of
“Adaptive Software Development”
( Edmends, E.A)
(1974)
Rapid App Development
(James Martin)
(1991)
Scrum (Ken Schwaber, Jeff Sutherland)
Adaptive Software Development(ASD)
(Jim Highsmith, Sam Bayer)
FDD (Jeff De Luca)
DSDM (DSDM Consortium)
XP(Kent Beck, Ward
Cunningham, Ron Jeffries)
Crystal Clear
(Alistair Cockburn)
Lean SW Development
(Mary & Tom Poppendieck)
(2003)
Agile Manifesto
(2001)
Software
Craftmanship
Manifesto
(2008)
(1995)
(1996)
https://www.visual-paradigm.com/guide/agile-software-development/what-is-agile-software-development/
Software Craftsmanship Manifesto
Raising the Bar
As aspiring Software Craftsmen we are raising the bar of professional software
development by practicing it and helping others learn the craft. Through this work we have
come to value:
Not Only Working Software
But Also Well-Crafted Software
Not Only Responding To Change
But Also Steadily Adding Value
Not Only Individual And Interactions
But Also A Community Of Professionals
Not Only Customer Collaboration,
But Also Productive Partnerships
That is, in pursuit of the items on left we have found the items on the right to be
indispensable.
Question #1. Why?
Why should we practice Engineering Practices?
Question #2. What?
What kind of Engineering Practice should we practice?
Question #3. How?
How do we practice Engineering Practices?
Question #1. Why?
Why should we practice
Engineering Practices?
Software Craftsmanship Manifesto
Raising the Bar
As aspiring Software Craftsmen we are raising the bar of professional software
development by practicing it and helping others learn the craft. Through this work we have
come to value:
Not Only Working Software
But Also Well-Crafted Software
Not Only Responding To Change
But Also Steadily Adding Value
Not Only Individual And Interactions
But Also A Community Of Professionals
Not Only Customer Collaboration,
But Also Productive Partnerships
That is, in pursuit of the items on left we have found the items on the right to be
indispensable.
Productivity - Business Plan
Productivity
Productivity - Reality
Productivity
Productivity Gap
Productivity
Why is development productivity
getting decreased
more and more?
http://blog.castsoftware.com/titanic-dilemma-the-seen-versus-the-unseen/
Readability
Flexibility
Testability
Maintainability
Cohesion
Coupling
EfficiencyCorrectness
Maintenance Cost
External
Quality
Internal Quality
(Code Quality)
Technical Debt
Quality Gap
Productivity
Craftsman’s Responsibility
Productivity
How can we keep
the development productivity
as high as we want?
Question #2. What?
What kind of Engineering
Practice should we practice?
Software Craftsmanship Manifesto
Raising the Bar
As aspiring Software Craftsmen we are raising the bar of professional software development
by practicing it and helping others learn the craft. Through this work we have come to value:
Not Only Working Software
But Also Well-Crafted Software
Not Only Responding To Change
But Also Steadily Adding Value
Not Only Individual And Interactions
But Also A Community Of Professionals
Not Only Customer Collaboration,
But Also Productive Partnerships
That is, in pursuit of the items on left we have found the items on the right to be
indispensable.
A journey to_be_a_software_craftsman
Relationships Between Engineering Practices
7
8 8
6
6
+ Legacy Code
Refactoring
Refactoring
Refactoring
is a discplined technique for restructuring an existing body
of code,
altering its internal structure without changing its external
behavior.
Refactoring - Cost Per Feature
Refactoring
You should prove that
you didn’t change the existing behaviors
when you refactor code.
Refactoring and Test
Suppose that you have changed a line of code.
There are about 10,000 functionalities in your SW.
How many functionalities should you test?
Test Driven Development
Software Behavior
Redefinition of Testing
Specified Unspecified
Tester
Programmer
Requirement
Specification
Analysis Design Code Test
Analysis
TC
Design
Test
Execution
Fix
Bug
Test
Execution
Fix
Bug
Test
Execution
...
How do we collaborate?
Test Test
https://www.infoq.com/news/2009/12/testing-or-checking/
http://www.skylinetechnologies.com/Insights/Skyline-Blog/July-2013/Test-Planning-Part-1-Improving-Your-Test-Results
시스템이 요구사항대로
동작하는지를 검증하는 것은
테스팅인가?
Software Testing
Redefinition of Testing
Specified Unspecified
Confirmation
Verification
Validation
Exploration
Discovery Investigation
Learning
Confirming existing behaviors Finding new information
Checking!!! Testing
Who is responsible for that
the implementation meets
specifications?
Programmer Test ⇒ Programmer Check
Programmer should prove that
the implementation meets specifications
by checking its’ behavior.
Tester
Programmer
Requirement
Specification
Analysis Design Code Test
Analysis
TC
Design
Test
Execution
Fix
Bug
Test
Execution
Fix
Bug
Test
Execution
...
How do we have to collaborate?
Test Test
Check
Check Check
Programmer Check Strategies
Strategy Description
Debug Driven Development
Manual Test
No Automated Test
Use Debugger
Test After Development
Write test code
after writing production code
Test First Development
Write all test cases
before writing production code
Test Driven Development Write a failing test case, make it pass and refactor
TDD Cycle
Writing
a Failing
Test
Make It
Pass
Refactor
Requirement
(User Story)
Production Code
( Solution Space )
Test CodeProblem Space
Test Code
Requirement
(User Story)
function
f(x)
Abstract
(Easy to misunderstand)
Specific
( Easy to understand)
TDD Cycle
Writing
a Failing
Test
Make It
Pass
Refactor
Requirement
(User Story)
Problem Space
1. Easy
2. Simple
1. Simple
2. Fast
1. Find a Logic
2. Make it duplicate
3. Remove Duplication
1. Change small
2. Run Test
3. Go Back If fail
Make It Pass
TDD Cycle
TC1 TC1
TC2
TC1
TC2
TC3
TC1
TC2
TC3
Writing a Failing Test
TC1 TC1
TC2
TC1
TC2
TC3
TC1
TC2
TCn
TC3
TCn
Refactor
TC1 TC1
TC2
TC1
TC2
TC3
TC1
TC2
TC3
TCn
TC1
TC2
TC3
TDD - Knowledge
# of Test Case
Amount of
Knowledge
Requirement
Solution
Development Phase in Waterfall
Analysis
Design
Code
Test
Development Phase in TDD
Analysis
Test Code Design
Test Code Design
Analysis Test Code Design
Test Code Design
Legacy Code Refactoring
Legacy Code
What is the Legacy Code?
Old
The code that I didn’t write!!
Hard to Understand
Hard to Change
Hard to Maintain
Legacy Code
“Code Without Test”
( Michael Feathers )
People are writing legacy code right now, maybe on your project.
( http://www.objectmentor.com/resources/articles/WorkingEffectivelyWithLegacyCode.pdf )
Adding a new feature
Legacy Code New FeaturePreserve Existing Feature
You should prove that you don’t break the existing features.
Legacy Code Refactoring Algorithm
1. 생성자 테스트 작성 ( 테스트 픽스처 생성 비용 검사 )
2. 테스트 커버리지 측정
3. 커버리지 데이터를 기반으로 테스트 되지 않은 코드를
커버할 새 테스트를 작성( Characterization Test )
4. 기능을 100% 커버할 때까지 2,3 단계를 반복
5. 리팩토링 시작
Production Code Only
(Legacy Code)
Legacy Code Refactoring
• Potential Bug Injection
• Fear to change code
• Insufficient Confidence
Production Code Production Code
Test
Code
Production Code + Test Code
• Shelter to Production Code
• Bugs found as soon as It is injected
• No Fear To Change Code
• Enough Confidence
Legacy Code Refactoring - One Big Step
One Big Step
Legacy Code Refactoring
Extract Method
Test
Move Method
Test
Extract Subclass + Push Down
Test
Extract Subclass + Push Down
Test
Sm
all Baby
Steps
Simple Design
Skills And Knowledge about Design
Low Coupled
High Cohesive
SRP
OCP
LSP
ISP
DIP
RREP
CCP
CRP
SDP
ADP
SAP
Coding Convention
KISS
Boy Scout Rule
TDD
Refactoring
Software Craftsmanship
ATDD
Code Smell
Don’t Repeat Yourself
Simple Design
You Are Not Gonna Need It!
Design Pattern
Unit Test
Test Automation
Separation of Concerns
Role, Responsibilities, Collaborations
Domain Driven Design
POSA
Analysis PatternUML
Legacy Code Refactoring
Law Of Demeter
Up Front Design
How big is your up-front design?
When do you design your code?
How much will you pay for up-front design if you can change your design at no
cost?
Design Spectrum
Over EngineeringNo Design
Simple Design
Simple Design
정의
- 현재까지의 문제를 해결하는 가장 단순한 설계
- 현재까지 발생한 변화의 방향을 쉽게 해결할 수 있는 설계
Simple Design
Rules of Code Simplicity by Kent Beck
● the code is verified by automated tests, and all such tests pass
● the code contains no duplication
● the code expresses separately each distinct idea or responsibility
● the code is composed of the minimum number of components (classes,
methods, lines) compatible with the first three criteria
https://www.agilealliance.org/glossary/rules-of-simplicity/
Simple Design
Principles for Simple Design
● design is an ongoing activity, which includes refactoring and heuristics such as YAGNI
● design quality is evaluated based on the rules of code simplicity
● all design elements such as design patterns, plugin-based architectures, etc. are seen as
having costs as well as benefits, and design costs must be justified;
● design decisions should be deferred until the "last responsible moment", so as to collect
as much information as possible on the benefits of the chosen option before incurring its
costs.
https://www.agilealliance.org/glossary/simple-design
Question #3. How?
How do we practice
Engineering Practices?
( A journey to be a software craftsman )
Start from Reading Books
Reading Books
is not enough.
Why?
Tacit Knowledge
Once shared, it belongs to everyone.
Can be seen “above the water”
Tangible
Visible
Public
Can be accessed on only a first-person basis
Hidden “Underwater”
Intangible
Invisible
Private
What is the most effective way
to learn
the tacit knowledge?
Work + Shop in the Medieval Period
A medieval baker with his apprentice, The Bodleian Library, Oxford.
Pair Baking!!
Pair Programming
Mob Programming
Copy the Thinking Process
CSM Workshops
● Certificated Scrum Master, May 2014
● What I learned?
○ What I read differs from what it really means
Michael Feathers Workshop
● October, 2014
● First Programming Workshop
● Legacy Code Refactoring
○ How to break dependency
○ How to change legacy code in baby
steps.
● What I learned?
○ How to refactor legacy code
○ How to transfer knowledge and
experience!!!
CSD Workshop
● Odd-e At Singapore
● 1 Week Sprint
● What I Learned
○ How to make a potentially shippable
product increment in a sprint
○ Specification Workshop
○ ATDD
○ TDD
○ ...
Steve Freeman Workshop
• April, 2015
• Acceptance Test Driven Development
● A Kind of Deliberate Practice
● Sites
○ http://codekata.com/
○ http://rosettacode.org/wiki/Rosetta_Code
○ http://www.exercism.io/
○ http://www.cyber-dojo.org
○ ...
Coding Kata
● Sites
○ https://www.industriallogic.com/elearning/
○ http://www.cleancoders.com
Online Training
Software Craftsmanship Manifesto
Raising the Bar
As aspiring Software Craftsmen we are raising the bar of professional software development
by practicing it and helping others learn the craft. Through this work we have come to value:
Not Only Working Software
But Also Well-Crafted Software
Not Only Responding To Change
But Also Steadily Adding Value
Not Only Individual And Interactions
But Also A Community Of Professionals ( Practice )
Not Only Customer Collaboration,
But Also Productive Partnerships
That is, in pursuit of the items on left we have found the items on the right to be
indispensable.
CoP - Closed Agile Talking Group
● First Meetup : 2014.5
● Last Meetup : 2017.?.?
● Once a week
● Meet almost every week
● Product : Agile Workshop
o Agile Introduction
o Agile Requirement
o Agile Mindset
o Test Driven Development
o Acceptance Test Driven
Development
CoP - Xper Engineering Practice
● Once a Month
● Every First Monday of the Month
● Topics : TDD, Legacy Code Refactoring, Pair Programming, ...
Teaching Others - Learning Pyramid
Connected to the Global Agile Leaders
A journey to_be_a_software_craftsman
Great Programmer?
“I'm not a great programmer;
I'm just a good programmer
with great habits.”
Great Habits
Reflection leads to all the other habits.
1. How’d that last hour go?
2. What could I have done better?
3. What do I want to try next time?
https://www.quora.com/Kent-Beck-You-have-been-quoted-saying-you-are-not-a-great-programmer-but-rather-a-good-programmer-with
-great-habits-What-are-these-great-habits
Thank You!

More Related Content

What's hot

Engaging IV&V Testing Services for Agile Projects
Engaging IV&V Testing Services for Agile ProjectsEngaging IV&V Testing Services for Agile Projects
Engaging IV&V Testing Services for Agile ProjectsRavi Kumar
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven DevelopmentJohn Blum
 
The WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpecThe WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpecBen Mabey
 
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...Zohirul Alam Tiemoon
 
TDD vs. ATDD - What, Why, Which, When & Where
TDD vs. ATDD - What, Why, Which, When & WhereTDD vs. ATDD - What, Why, Which, When & Where
TDD vs. ATDD - What, Why, Which, When & WhereDaniel Davis
 
Test-Driven Development (TDD)
Test-Driven Development (TDD)Test-Driven Development (TDD)
Test-Driven Development (TDD)Brian Rasmussen
 
Scrum and Test-driven development
Scrum and Test-driven developmentScrum and Test-driven development
Scrum and Test-driven developmenttoteb5
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)David Ehringer
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Developmentguestc8093a6
 
Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010guest5639fa9
 
TDD And Refactoring
TDD And RefactoringTDD And Refactoring
TDD And RefactoringNaresh Jain
 
A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD) A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD) CodeOps Technologies LLP
 
Agile Programming Systems # TDD intro
Agile Programming Systems # TDD introAgile Programming Systems # TDD intro
Agile Programming Systems # TDD introVitaliy Kulikov
 
Agile and ATDD the perfect couple
Agile and ATDD the perfect coupleAgile and ATDD the perfect couple
Agile and ATDD the perfect coupleStephen Tucker
 
iOS Test-Driven Development
iOS Test-Driven DevelopmentiOS Test-Driven Development
iOS Test-Driven DevelopmentPablo Villar
 
Test driven development
Test driven developmentTest driven development
Test driven developmentNascenia IT
 
ATDD in Practice
ATDD in PracticeATDD in Practice
ATDD in PracticeSteven Mak
 

What's hot (20)

Engaging IV&V Testing Services for Agile Projects
Engaging IV&V Testing Services for Agile ProjectsEngaging IV&V Testing Services for Agile Projects
Engaging IV&V Testing Services for Agile Projects
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven Development
 
The WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpecThe WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpec
 
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
 
TDD vs. ATDD - What, Why, Which, When & Where
TDD vs. ATDD - What, Why, Which, When & WhereTDD vs. ATDD - What, Why, Which, When & Where
TDD vs. ATDD - What, Why, Which, When & Where
 
Test-Driven Development (TDD)
Test-Driven Development (TDD)Test-Driven Development (TDD)
Test-Driven Development (TDD)
 
Scrum and Test-driven development
Scrum and Test-driven developmentScrum and Test-driven development
Scrum and Test-driven development
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010
 
TDD And Refactoring
TDD And RefactoringTDD And Refactoring
TDD And Refactoring
 
A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD) A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD)
 
Agile Programming Systems # TDD intro
Agile Programming Systems # TDD introAgile Programming Systems # TDD intro
Agile Programming Systems # TDD intro
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Atdd half day_new_1_up
Atdd half day_new_1_upAtdd half day_new_1_up
Atdd half day_new_1_up
 
Agile and ATDD the perfect couple
Agile and ATDD the perfect coupleAgile and ATDD the perfect couple
Agile and ATDD the perfect couple
 
iOS Test-Driven Development
iOS Test-Driven DevelopmentiOS Test-Driven Development
iOS Test-Driven Development
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
ATDD in Practice
ATDD in PracticeATDD in Practice
ATDD in Practice
 
ATDD in practice
ATDD in practiceATDD in practice
ATDD in practice
 

Similar to A journey to_be_a_software_craftsman

Continuous delivery its not about the technology, its about the people. @pipe...
Continuous delivery its not about the technology, its about the people. @pipe...Continuous delivery its not about the technology, its about the people. @pipe...
Continuous delivery its not about the technology, its about the people. @pipe...Tomas Riha
 
Agile Testing 20021015
Agile Testing 20021015Agile Testing 20021015
Agile Testing 20021015Raghu Karnati
 
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
 
Test Driven Design
Test Driven DesignTest Driven Design
Test Driven DesignSaad Ahmed
 
Tester developer interaction
Tester developer interactionTester developer interaction
Tester developer interactiongaoliang641
 
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011TEST Huddle
 
Agile Development From A Developers Perspective
Agile Development From A Developers PerspectiveAgile Development From A Developers Perspective
Agile Development From A Developers PerspectiveRichard Banks
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanQA or the Highway
 
Technologist_Interviews___Welcome_to_Modanisa_Wiki_2 (1).pdf
Technologist_Interviews___Welcome_to_Modanisa_Wiki_2 (1).pdfTechnologist_Interviews___Welcome_to_Modanisa_Wiki_2 (1).pdf
Technologist_Interviews___Welcome_to_Modanisa_Wiki_2 (1).pdfzohaib247331
 
End-end tests as first class citizens - SeleniumConf 2020
End-end tests as first class citizens - SeleniumConf 2020End-end tests as first class citizens - SeleniumConf 2020
End-end tests as first class citizens - SeleniumConf 2020Abhijeet Vaikar
 
Continuous Delivery Testing @HiQ
Continuous Delivery Testing @HiQContinuous Delivery Testing @HiQ
Continuous Delivery Testing @HiQTomas Riha
 
Failure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature DeliveryFailure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature DeliveryOptimizely
 
How to Add Test Automation to your Quality Assurance Toolbelt
How to Add Test Automation to your Quality Assurance ToolbeltHow to Add Test Automation to your Quality Assurance Toolbelt
How to Add Test Automation to your Quality Assurance ToolbeltBrett Tramposh
 
Testing and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedTesting and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedLB Denker
 

Similar to A journey to_be_a_software_craftsman (20)

Continuous delivery its not about the technology, its about the people. @pipe...
Continuous delivery its not about the technology, its about the people. @pipe...Continuous delivery its not about the technology, its about the people. @pipe...
Continuous delivery its not about the technology, its about the people. @pipe...
 
Agile Testing 20021015
Agile Testing 20021015Agile Testing 20021015
Agile Testing 20021015
 
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
 
Test Driven Design
Test Driven DesignTest Driven Design
Test Driven Design
 
Tester developer interaction
Tester developer interactionTester developer interaction
Tester developer interaction
 
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011
 
Agile Development From A Developers Perspective
Agile Development From A Developers PerspectiveAgile Development From A Developers Perspective
Agile Development From A Developers Perspective
 
Apex triggers i
Apex triggers iApex triggers i
Apex triggers i
 
Agile Engineering Practices
Agile Engineering PracticesAgile Engineering Practices
Agile Engineering Practices
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
 
Tec314
Tec314Tec314
Tec314
 
Technologist_Interviews___Welcome_to_Modanisa_Wiki_2 (1).pdf
Technologist_Interviews___Welcome_to_Modanisa_Wiki_2 (1).pdfTechnologist_Interviews___Welcome_to_Modanisa_Wiki_2 (1).pdf
Technologist_Interviews___Welcome_to_Modanisa_Wiki_2 (1).pdf
 
Future of QA
Future of QAFuture of QA
Future of QA
 
Futureofqa
FutureofqaFutureofqa
Futureofqa
 
End-end tests as first class citizens - SeleniumConf 2020
End-end tests as first class citizens - SeleniumConf 2020End-end tests as first class citizens - SeleniumConf 2020
End-end tests as first class citizens - SeleniumConf 2020
 
Continuous testing the new must have skill of tomorrow's tech leaders
Continuous testing  the new must have skill of tomorrow's tech leadersContinuous testing  the new must have skill of tomorrow's tech leaders
Continuous testing the new must have skill of tomorrow's tech leaders
 
Continuous Delivery Testing @HiQ
Continuous Delivery Testing @HiQContinuous Delivery Testing @HiQ
Continuous Delivery Testing @HiQ
 
Failure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature DeliveryFailure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature Delivery
 
How to Add Test Automation to your Quality Assurance Toolbelt
How to Add Test Automation to your Quality Assurance ToolbeltHow to Add Test Automation to your Quality Assurance Toolbelt
How to Add Test Automation to your Quality Assurance Toolbelt
 
Testing and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedTesting and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons Learned
 

More from Jaehoon Oh

Javascript refactoring workshop
Javascript refactoring workshopJavascript refactoring workshop
Javascript refactoring workshopJaehoon Oh
 
인수테스트 주도 개발
인수테스트 주도 개발인수테스트 주도 개발
인수테스트 주도 개발Jaehoon Oh
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Jaehoon Oh
 
Legacy code refactoring video rental system
Legacy code refactoring   video rental systemLegacy code refactoring   video rental system
Legacy code refactoring video rental systemJaehoon Oh
 
애자일 마인드셋
애자일 마인드셋애자일 마인드셋
애자일 마인드셋Jaehoon Oh
 
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발Jaehoon Oh
 

More from Jaehoon Oh (6)

Javascript refactoring workshop
Javascript refactoring workshopJavascript refactoring workshop
Javascript refactoring workshop
 
인수테스트 주도 개발
인수테스트 주도 개발인수테스트 주도 개발
인수테스트 주도 개발
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화
 
Legacy code refactoring video rental system
Legacy code refactoring   video rental systemLegacy code refactoring   video rental system
Legacy code refactoring video rental system
 
애자일 마인드셋
애자일 마인드셋애자일 마인드셋
애자일 마인드셋
 
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
 

Recently uploaded

AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyRaymond Okyere-Forson
 
Watermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesWatermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesShyamsundar Das
 
Kubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxKubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxPrakarsh -
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsJaydeep Chhasatia
 
About .NET 8 and a first glimpse into .NET9
About .NET 8 and a first glimpse into .NET9About .NET 8 and a first glimpse into .NET9
About .NET 8 and a first glimpse into .NET9Jürgen Gutsch
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntelliSource Technologies
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampVICTOR MAESTRE RAMIREZ
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Jaydeep Chhasatia
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilVICTOR MAESTRE RAMIREZ
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfTobias Schneck
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?AmeliaSmith90
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadIvo Andreev
 
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLBig Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLAlluxio, Inc.
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Neo4j
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionsNirav Modi
 
20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기Chiwon Song
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxAutus Cyber Tech
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfBrain Inventory
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdfMeon Technology
 

Recently uploaded (20)

AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human Beauty
 
Watermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesWatermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security Challenges
 
Kubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxKubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptx
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
 
About .NET 8 and a first glimpse into .NET9
About .NET 8 and a first glimpse into .NET9About .NET 8 and a first glimpse into .NET9
About .NET 8 and a first glimpse into .NET9
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptx
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - Datacamp
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-Council
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?
 
Sustainable Web Design - Claire Thornewill
Sustainable Web Design - Claire ThornewillSustainable Web Design - Claire Thornewill
Sustainable Web Design - Claire Thornewill
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and Bad
 
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLBig Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspections
 
20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptx
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdf
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdf
 

A journey to_be_a_software_craftsman