SlideShare a Scribd company logo
소프트웨어 장인으로 가는 길
( 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.
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
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 Development
John 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 RSpec
Ben 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 & Where
Daniel 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 Development
guestc8093a6
 
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
guest5639fa9
 
TDD And Refactoring
TDD And RefactoringTDD And Refactoring
TDD And Refactoring
Naresh 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 intro
Vitaliy Kulikov
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
Sachithra Gayan
 
Atdd half day_new_1_up
Atdd half day_new_1_upAtdd half day_new_1_up
Atdd half day_new_1_up
jaredrrichardson
 
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 Development
Pablo Villar
 
Test driven development
Test driven developmentTest driven development
Test driven development
Nascenia IT
 
ATDD in Practice
ATDD in PracticeATDD in Practice
ATDD in Practice
Steven 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 20021015
Raghu 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 2016
Lemi Orhan Ergin
 
Test Driven Design
Test Driven DesignTest Driven Design
Test Driven Design
Saad 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 2011
TEST Huddle
 
Agile Development From A Developers Perspective
Agile Development From A Developers PerspectiveAgile Development From A Developers Perspective
Agile Development From A Developers Perspective
Richard Banks
 
Apex triggers i
Apex triggers iApex triggers i
Apex triggers i
Obidjon Komiljonov
 
Agile Engineering Practices
Agile Engineering PracticesAgile Engineering Practices
Agile Engineering Practices
Vernon Stinebaker
 
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
QA or the Highway
 
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
Abhijeet Vaikar
 
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
Nadav Yeheskel - Looking for a Test/QA engineer
 
How to become a Software Tester Carrier Path for Software Quality Tester
How to become a Software Tester Carrier Path for Software Quality TesterHow to become a Software Tester Carrier Path for Software Quality Tester
How to become a Software Tester Carrier Path for Software Quality Tester
jeetendra mandal
 
Continuous Delivery Testing @HiQ
Continuous Delivery Testing @HiQContinuous Delivery Testing @HiQ
Continuous Delivery Testing @HiQ
Tomas 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 Delivery
Optimizely
 
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
Brett 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
 
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
 
How to become a Software Tester Carrier Path for Software Quality Tester
How to become a Software Tester Carrier Path for Software Quality TesterHow to become a Software Tester Carrier Path for Software Quality Tester
How to become a Software Tester Carrier Path for Software Quality Tester
 
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 workshop
Jaehoon 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 system
Jaehoon 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

Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 

Recently uploaded (20)

Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 

A journey to_be_a_software_craftsman