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.
This presentation shows some notes about learning with agile projects. As the final words of the AgileDev Tour, this presenation combines learning and agile methodologies with reflection on the current context of VNese students.
This presentation shows some notes about learning with agile projects. As the final words of the AgileDev Tour, this presenation combines learning and agile methodologies with reflection on the current context of VNese students.
SXSW 2013: Get Agile! Scrum for UX, Design & DevelopmentFabrique
Applying Scrum changes the day-to-day reality of agencies dramatically. If done well, it improves output and profitability like crazy.
However, for agencies, Scrum dynamics are radically different from in-house design and development teams. Our leading Dutch design agency, Fabrique, has built up over 35,000 hours of Scrum experience since 2008, designing and developing interactive products such as websites and mobile apps for national and international customers.
In this presentation we share our best-kept secrets. This talk features tons of photos from our scrum rooms.
Hundreds of organizations have now realized the benefit of Rapid Release Planning! Compared to traditional release planning, this increases your estimation and sizing accuracy from 34% to over 85%! Rapid Release Planning is one of the CORE Components for getting teams engaged early and using their Rapid Sizing to better forecast which candidates will successfully be a part of the release. The keys to making this work successfully revolve around making gut decisions about size and relative complexity of the items being estimated and validated.
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.
[IGC 2017] 라이엇게임즈 유석문 - 게임 개발의 Agile Best Practices강 민우
플레이어들이 원하는 기능을 적시에 개발하여 배포하기 위해 필요한 Agile의 Practice를 소개 합니다. 기획 단계에서부터 개발, 운영까지 필요한 기술 Practice와 함께 효과적인 조직 문화 구축에 필요한 Practice를 Riot Games의 사례를 기반으로 설명합니다.
Facilitation Foundations - A Guide to Effective Agile MeetingsAgileDad
Facilitation Foundations is a presentation that has been given at multiple Agile Conferences. The focus of the presentation is improving the quality and effectiveness of Agile Meetings.
Many who have downloaded this deck have made it a standard for assisting organizations who are struggling with spending too much time and money on Agile Meetings.
The Empowering Agile Teams Presentation has been presented at numerous Agile Conferences and has been VERY well received. Many teams get frustrated due to the lack of understanding of what they are expected to deliver vs what has been perceived. Gone are the days of opacity. Teams are better equipped to handle the day to day workload and are less fearful of commitment in an environment where healthy team relationships are valued.
In this interactive webinar, the participants will get an overview of the fundamental principles and mechanics of Scrum, thereby understanding the benefits of adopting Scrum principles and values in an organization
AgileTour-2010, Noida : What it means to be "An Agile Developer"?Ganesh Gembali
After working with an Agile company for around 3.5 years, I can say to be a successful agile developer you need something extra other than technology skill set.
SXSW 2013: Get Agile! Scrum for UX, Design & DevelopmentFabrique
Applying Scrum changes the day-to-day reality of agencies dramatically. If done well, it improves output and profitability like crazy.
However, for agencies, Scrum dynamics are radically different from in-house design and development teams. Our leading Dutch design agency, Fabrique, has built up over 35,000 hours of Scrum experience since 2008, designing and developing interactive products such as websites and mobile apps for national and international customers.
In this presentation we share our best-kept secrets. This talk features tons of photos from our scrum rooms.
Hundreds of organizations have now realized the benefit of Rapid Release Planning! Compared to traditional release planning, this increases your estimation and sizing accuracy from 34% to over 85%! Rapid Release Planning is one of the CORE Components for getting teams engaged early and using their Rapid Sizing to better forecast which candidates will successfully be a part of the release. The keys to making this work successfully revolve around making gut decisions about size and relative complexity of the items being estimated and validated.
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.
[IGC 2017] 라이엇게임즈 유석문 - 게임 개발의 Agile Best Practices강 민우
플레이어들이 원하는 기능을 적시에 개발하여 배포하기 위해 필요한 Agile의 Practice를 소개 합니다. 기획 단계에서부터 개발, 운영까지 필요한 기술 Practice와 함께 효과적인 조직 문화 구축에 필요한 Practice를 Riot Games의 사례를 기반으로 설명합니다.
Facilitation Foundations - A Guide to Effective Agile MeetingsAgileDad
Facilitation Foundations is a presentation that has been given at multiple Agile Conferences. The focus of the presentation is improving the quality and effectiveness of Agile Meetings.
Many who have downloaded this deck have made it a standard for assisting organizations who are struggling with spending too much time and money on Agile Meetings.
The Empowering Agile Teams Presentation has been presented at numerous Agile Conferences and has been VERY well received. Many teams get frustrated due to the lack of understanding of what they are expected to deliver vs what has been perceived. Gone are the days of opacity. Teams are better equipped to handle the day to day workload and are less fearful of commitment in an environment where healthy team relationships are valued.
In this interactive webinar, the participants will get an overview of the fundamental principles and mechanics of Scrum, thereby understanding the benefits of adopting Scrum principles and values in an organization
AgileTour-2010, Noida : What it means to be "An Agile Developer"?Ganesh Gembali
After working with an Agile company for around 3.5 years, I can say to be a successful agile developer you need something extra other than technology skill set.
A reflection on constructivism and engineering educationDUONG Trong Tan
This is the notes for the talk with all instructors of FPT University - Degree Division in 2015. It covers some key considerations at the time: constructivism, constructivist learning and teaching, CIO and engineering education reforms.
Chia sẻ kinh nghiệm học/dạy cờ cùng con Nguyễn Vũ Kỳ Anh (U6)
Học cờ cùng con U6 https://www.slideshare.net/vuhung16plus/hoc-co-cung-con
Học cờ cùng con U7 https://www.slideshare.net/vuhung16plus/2018-hoc-co-cung-co-nguyen-vu-ky-anh-u7
Học cờ cùng con U8 https://www.slideshare.net/vuhung16plus/hoc-co-cung-con-nguyen-vu-ky-anh-u8/
Hỏi không phải là một kĩ năng quan trọng. Chúng ta phải luyện tập thì mới nâng cao kĩ năng đặt câu hỏi cũng như tận dụng chúng để đạt được các mục đích học tập, giảng dạy hay làm việc.
Tài liệu này mô tả các loại câu hỏi khác nhau, cùng với những ví dụ tiêu biểu. Đồng thời nó cũng nêu những điều cần lưu ý khi thực hành việc hỏi và tạo môi trường cho việc hỏi đáp diễn ra suôn sẻ.
Phần đặc biệt nhất của tài liệu là giới thiệu quy trình truy tìm chân lí dựa trên câu hỏi của Socrates, một quy trình kinh điển!
The keynote for Agile Vietnam Conference 2016. In this presentation, I share my thoughts on why organization should put Learning into the core processes, leading it purposefully and systematically. The most important parts of this presentation may be the specific tactics and strategies for implementing learning organization at several levels: individual, team and organization.
Overview of agile values
This presentation shows some core concepts that make agile software development different.
This will help your team familiar with agile concepts and start boosting your team performance.
Expectations from IT Team
Project Methodology - Why it is as important as the Technology for your Product
Gaps in Recent Graduates
How to bridge these gaps?
As presented at Mile High Agile 2012 in Denver.
Review and discuss the basic agile practices in the context of two games. The first game will illustrate why small batches are important and how they can help you address project risks sooner. The second game will illustrate how small batches can help give you better information about your project sooner and will demonstrate some of the basic agile practices at work like iterations, continuous flow, manage to done, velocity, retrospectives, etc.
A Practical Approach to Agile Adoption - Case Studies from Egypt by Amr Noama...Agile ME
Agile Adoption is a big organization transition project. A big bang approach to Agile Adoption involves real risks and may lead to failure. Instead, small, continuous, and valuable improvements are more viable for most organizations. In this interactive session, we will start with an overview of the Agile mindset, values and principles, and will highlight the major differences between Agile and traditional approaches to managing software projects. Then, we will explain our approach for adopting agile which is incremental and iterative in nature. Finally, we will present some case studies and will share some interesting observations and conclusions collected through working with more than 40 companies during the last 6 years.
Focusing on the future of software development beyond the traditional “software factory” approach, this publication, Collaborate, Innovate, Accelerate, by Nearshore Americas & Ci&T, highlights the emergence of high performance development teams who have been proven to drive down costs and generate greater business value for their customers.
Nội dung nói chuyện ngắn tại sự kiện của Agile Vietnam tháng 3-2017.
Tóm tắt: Đào tạo thôi không đủ, khoa học về nhận thức và não bộ có nhiều bằng chứng cho thấy mọi người/các nhóm cần thời gian để phát triển năng lực. Cần Coaching để bổ khuyết những khiếm khuyết của mô hình đào tạo cấp tập, đào tạo tập trung hoặc đào tạo truyền thống. Agile Coaching là người giúp cho các cá nhân, đội nhóm và tổ chức mở rộng năng lực (capabilities) và nâng cao hiệu suất (performance).
Học cách học (version 2.0) - Learning How To LearnDUONG Trong Tan
Tài liệu học tập cho workshop "Học cách học" giúp người học hiểu rõ hơn về cơ chế học tập và cách thức để nâng cao hiệu quả tự học của bản thân.
Thông tin thêm về workshop: https://hoccachhoc.wordpress.com/workshop-hoc-cach-hoc/
Nội dung nói chuyện tại sự kiện hằng tháng của AgileVietnam.
Bài nói chuyện trở về với lịch sử của Agile, sự ra đời của XP, Scrum, Lean Software Development, Lean Startup, Personal Kanban và sự lan rộng của Agile sang các lĩnh vực khác.
Thông qua việc điểm qua các ứng dụng của Agile ở các lĩnh vực khác nhau từ phát triển phần mềm, đến sản xuất phần cứng, cho cuộc sống thường ngày hoặc các công việc đặc thù như marketing, người trình bày muốn cung cấp một bức tranh toàn cảnh về Agile. Nhờ đó chúng ta có những manh mối để nghiên cứu sâu hơn và bắt đầu áp dụng cho lĩnh vực của mình.
* Học tập là gì?
* Não học tập thế nào?
* Kĩ năng hình thành như thế nào?
* Thói quen hình thành ra sao?
* Cách thức để học tập hiệu quả ?
* Học tập tự định hướng là gì?
Bài nói chuyện ngắn tại hội thảo mở về giáo dục đào tạo FPT EduCamp 2015 tại Đại học FPT, Hòa Lạc, 29.11.2015. Trong bài có nêu 9 nhóm nguyên nhân cản trở sự hình thành và phát triển tổ chức học tập.
A presentation at AgileTour 2012 Ho Chi Minh city, 8-9/11/2012.
This presentation shows the Whys and the Hows to evolve agile teams to get much better development.
A presentation at AgileTour 2012 Ho Chi Minh City, 8-9/11/2012
This is a reflection on how we can innovate higher education in VN with the ideas from Agile.
Honest Reviews of Tim Han LMA Course Program.pptxtimhan337
Personal development courses are widely available today, with each one promising life-changing outcomes. Tim Han’s Life Mastery Achievers (LMA) Course has drawn a lot of interest. In addition to offering my frank assessment of Success Insider’s LMA Course, this piece examines the course’s effects via a variety of Tim Han LMA course reviews and Success Insider comments.
Embracing GenAI - A Strategic ImperativePeter Windle
Artificial Intelligence (AI) technologies such as Generative AI, Image Generators and Large Language Models have had a dramatic impact on teaching, learning and assessment over the past 18 months. The most immediate threat AI posed was to Academic Integrity with Higher Education Institutes (HEIs) focusing their efforts on combating the use of GenAI in assessment. Guidelines were developed for staff and students, policies put in place too. Innovative educators have forged paths in the use of Generative AI for teaching, learning and assessments leading to pockets of transformation springing up across HEIs, often with little or no top-down guidance, support or direction.
This Gasta posits a strategic approach to integrating AI into HEIs to prepare staff, students and the curriculum for an evolving world and workplace. We will highlight the advantages of working with these technologies beyond the realm of teaching, learning and assessment by considering prompt engineering skills, industry impact, curriculum changes, and the need for staff upskilling. In contrast, not engaging strategically with Generative AI poses risks, including falling behind peers, missed opportunities and failing to ensure our graduates remain employable. The rapid evolution of AI technologies necessitates a proactive and strategic approach if we are to remain relevant.
A Strategic Approach: GenAI in EducationPeter Windle
Artificial Intelligence (AI) technologies such as Generative AI, Image Generators and Large Language Models have had a dramatic impact on teaching, learning and assessment over the past 18 months. The most immediate threat AI posed was to Academic Integrity with Higher Education Institutes (HEIs) focusing their efforts on combating the use of GenAI in assessment. Guidelines were developed for staff and students, policies put in place too. Innovative educators have forged paths in the use of Generative AI for teaching, learning and assessments leading to pockets of transformation springing up across HEIs, often with little or no top-down guidance, support or direction.
This Gasta posits a strategic approach to integrating AI into HEIs to prepare staff, students and the curriculum for an evolving world and workplace. We will highlight the advantages of working with these technologies beyond the realm of teaching, learning and assessment by considering prompt engineering skills, industry impact, curriculum changes, and the need for staff upskilling. In contrast, not engaging strategically with Generative AI poses risks, including falling behind peers, missed opportunities and failing to ensure our graduates remain employable. The rapid evolution of AI technologies necessitates a proactive and strategic approach if we are to remain relevant.
Welcome to TechSoup New Member Orientation and Q&A (May 2024).pdfTechSoup
In this webinar you will learn how your organization can access TechSoup's wide variety of product discount and donation programs. From hardware to software, we'll give you a tour of the tools available to help your nonprofit with productivity, collaboration, financial management, donor tracking, security, and more.
Read| The latest issue of The Challenger is here! We are thrilled to announce that our school paper has qualified for the NATIONAL SCHOOLS PRESS CONFERENCE (NSPC) 2024. Thank you for your unwavering support and trust. Dive into the stories that made us stand out!
Synthetic Fiber Construction in lab .pptxPavel ( NSTU)
Synthetic fiber production is a fascinating and complex field that blends chemistry, engineering, and environmental science. By understanding these aspects, students can gain a comprehensive view of synthetic fiber production, its impact on society and the environment, and the potential for future innovations. Synthetic fibers play a crucial role in modern society, impacting various aspects of daily life, industry, and the environment. ynthetic fibers are integral to modern life, offering a range of benefits from cost-effectiveness and versatility to innovative applications and performance characteristics. While they pose environmental challenges, ongoing research and development aim to create more sustainable and eco-friendly alternatives. Understanding the importance of synthetic fibers helps in appreciating their role in the economy, industry, and daily life, while also emphasizing the need for sustainable practices and innovation.
The French Revolution, which began in 1789, was a period of radical social and political upheaval in France. It marked the decline of absolute monarchies, the rise of secular and democratic republics, and the eventual rise of Napoleon Bonaparte. This revolutionary period is crucial in understanding the transition from feudalism to modernity in Europe.
For more information, visit-www.vavaclasses.com
Francesca Gottschalk - How can education support child empowerment.pptxEduSkills OECD
Francesca Gottschalk from the OECD’s Centre for Educational Research and Innovation presents at the Ask an Expert Webinar: How can education support child empowerment?
2. Agenda
• WhatWhy is agile • Developer Testing
development? with TDD
• Mastery Level • Incremental and
• Pair-Programming testable design
• Mocking and • Coding Dojo
Feedback • Refactoring
• Incremental building techniques
• Collaborative coding • Refactoring Dojo
• Dojo Initiative at FAT
Centers
2
3. TODO
Introduction
Mastery level
WhatWhy Agile Developers?
Day 1 Working in Pair
Customer collaboration
BEGINNING
Mocking and Feedback
Pair Programing
Communication in Code
AGILITY
Code in Increment
Review and Retrospectives
Introduce the next session, and
the translation work
3
4. Expert
Competent
Proficient
Bruce Lee – Master of Kungfu
Advanced
Beginner
Novice
Learnt Wing Chun @ 13
Image: http://goo.gl/1RzEE4
5. Văn ôn Võ luyện @ Dojo (Võ đường)
10.000 hours of practicing
Image: VOV, CNN
5
6. Sequential vs.
overlapping
Sequential development
Overlapping development
Source: “The New New Product Development Game” by Takeuchi
and Nonaka. Harvard Business Review, January 1986. 6
7. Why agile?
Agile
Benefits
students:
3x SUCCESS RATE Great framework & tools
for learning
Improve skills better
Better Employability
Master software
development
Charts:
1. The CHAOS Manifestor, The Standish Group 2012
2. Methodologies popularity, Forrester Research, 2010 7
8. FDD XP
Scrum
Agile
Lean
Software Agile
Development
UP
8
9. Agile Manifesto
We are uncovering better ways of developing software by doing it and helping others do it. Through
this work we have come to value:
• Individuals and interactions over processes and tools
• Working software over comprehensive documentation
• Customer collaboration over contract negotiation
• Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
AgileAlliance.org
9
10. 1. Our highest priority is to satisfy the customer through early and
continuous delivery of valuable software.
2. Welcome changing requirements, even late in development. Agile
processes harness change for the customer's competitive advantage.
12
3. Deliver working software frequently, from a couple of weeks to a couple
of months, with a preference to the shorter timescale.
4. Business people and developers must work together daily throughout
the project.
5. Build projects around motivated individuals. Give them the environment
and support they need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and
Principles within a development team is face-to-face conversation.
7. Working software is the primary measure of progress.
http://agilemanifesto.org
8. Agile processes promote sustainable development. The sponsors,
developers, and users should be able to maintain a constant pace
indefinitely.
9. Continuous attention to technical excellence and good design enhances
agility.
10. Simplicity--the art of maximizing the amount of work not done--is
essential.
11. The best architectures, requirements, and designs emerge from self-
organizing teams.
12. At regular intervals, the team reflects on how to become more effective,
then tunes and adjusts its behavior accordingly. 10
12. Practices process
SHU HA RI
Follow rules until sink in Reflect on rules Forget the rules
Look for exceptions,
Beaks the rules
12
13. Development Flow
$ $
Collaboration:
PO DevTeam PO
UI Mocking Design Draft Code the
Refactoring
Steps: Requirement •Customer •Design skeleton to Coding in
and
Build the
Analysis discussion Discussion test the team increment
Refinement
design
Interface IDo{
//TODO …
A Interface IDo{ }
//TODO … Class A{
IDo } method1(){
As a super user,
Class A{ //Mr. A codes here
Artifacts:
I want to …
//TODO … }
}
B }
Class B:IDo{ Class B:IDo{
//TODO … method1(){
} //Mrs. B codes here
}
}
Note: 1. TDD|BDD|AMDD can be used or not Class C{
2. Images are for illustration only } 13
14. Feedback
• For transparency & adaptability
• Should be CONSTANT
• Sources:
– System
• Using testing, coding
– Users
• During requirement discussion, demo, sprint
review
– Team
• During code, test, design and “chit chat”
14
15. Listen to the users
• Let them do
acceptance testing
• “It’s a bug” :
Every complaint holds a
truth.
=> There is no ‘stupid user’.
15
16. Mocking
|Prototyping
• Easy
• Saving time & $
• Prompt
Feedback
• Understanding
Requirement
from end users
Image: Alistapart.com, ACU.edu.au, Conorogohagan 16
18. Pair-Programming
He drives
Tactics Focused
He navigates
Strategies Focused
1 pair, 1 PC, 1 problem, 1 goal
Image: wikipedia
18
19. Pair Programming
• Better
communication •Driver
• Increased discipline doesn’t see the big
picture
• Better code • The Driver should “step a
• Resilient flow way from the keyboard”
• Improved morale
• Collective code
• The Navigator
tends to use pattern-
ownership matching problem
• Mentoring solving technique
• Team cohesion
19
20. Program Intently and Expressively
• Code should provide high-level of:
– readability and
– understandability.
private object makeCoffeeLock = new object();
public void MakeCoffee()
{ public void MakeCoffee()
lock(this) {
{ lock(makeCoffeeLock)
// ... operation {
} // ... operation
} }
}
20
21. Communication in Code
• Use standard comments for communication,
avoid misunderstanding and create
“developer manual”
• Document code using well chosen,
meaningful names.
• Use comments to describe its purpose and
constraints.
• BUT Don’t use commenting as a substitute
for good code.
• Use tools for help: RDoc, javadoc, and ndoc,
IDEs
21
22. Communication tools
• Whiteboard
• Sticky note
• Email
• Version control
• Wiki
• Blog
• Task management tools
• Issue trackers
22
23. Trade-off and Simplicity
• “There is no best solution”
• Code incrementally, not a “big bang”
– Use of TODO + skeleton before code
• Keep It Simple, Stupid! but not simplistic
• Write High-Cohesive, Low-Coupled Code
– Efficient Use of Design Patterns
23
24. Keep it releasable
• Use version control for sharing code and
builds
– integrate early and often
– Tools: SVN, CVS, Git
• Commit “potentially shippable code” to
contribute the “potentially shippable
product”.
• Automate build and deployment early
– Preparing scripts, manuals, settings etc.
– Tools: Ant, Maven, Hudson
24
25. Day 2
BUILT TODO
WhatWhy is developer testing?
QUALITY
TDD and test strategies
JUnit
Simple design
IN
Coding Dojo
What did we do?
Review and Retrospectives
25
27. Technical Debt
Lack of building Business pressures
loosely coupled
components Lack of process
or
Lack of test understanding
Parallel Delayed
Development Refactoring
27
28. Test-Driven Development
• You don’t start programming until you have
designed your tests!
• Strategy
– Make it Fail
• No code without a failing test
– Make it Work
• As simply as possible
– Make it Better
• Refactor(code, design, test, documentation)
– Believe in testing
28
29. Design4Test
Design Testable
Test Test
Implement
29
31. Equivalence Classes
• Purpose: reduce the number of test cases by not
considering all possible inputs
• Equivalence partitioning
– One representative of class of inputs/outputs is
equivalent to all members of the class
– Minimize the number of test cases
• Testing based on equivalence partitioning is a
step process
– Identify the equivalence classes (EC)
– Identify the test cases
31
32. Boundary Value Analysis
The values used to test the extremities are :
• Min ------------------------------------ - Minimal
• Min+ ------------------------------------ - Just above Minimal
• Nom ------------------------------------ - Average
• Max- ------------------------------------ - Just below Maximum
• Max ------------------------------------ - Maximum
32
35. Robust Worst-Case Testing
If the function under test were
to be of the greatest
importance we could use a
method named Robust Worst-
Case testing which as the
name suggests draws it
attributes from Robust and
Worst-Case testing.
Blake Neate
35
36. Data Flow Testing
This method examines the full
flows of execution, set
verification points to critical
nodes for testing.
What is Conditional Complexity? 36
38. Error Guessing
• Ad hoc approach
– Use intuition and experience to derive tests
– “This usually screws things up so let’s try this.”
• Make a list of possible errors or error-prone
situations:
– Empty/null lists/strings
– Zero instances/occurrences
– Blanks/null chars in strings
– Negative numbers / zero
– Garbage chars/input
– All coded exceptions
38
40. Design is the key,
Planned Design is not …
• Takeuchi & Nonaka: overlapping is better than sequential
Not efficient:
• Time consuming
• No backward
• No “better idea” on the go
But how to do this kind of overlapping development?
40
41. What is Simple Design?
• Design grows as
implementation
– Complete design NOT
required. Just enough, GO!
• Part of programming
Evolve
processes
• Program evolves the
design changes
• Not “code and fix” tactics
41
42. Simplicity
Rationale behind Simple Design
• "Do the Simplest Thing that Could
Possibly Work“
• "You Aren't Going to Need It“
• Invest in patterns
• Simple system
1. Runs all the Tests
2. Reveals all the intention
3. No duplication
4. Fewest number of classes or
methods
42
43. Simplistic vs. Simplicity
Ignorance Awareness
Inattention Knowledge
Laziness Spirit of helping
Deception Honesty, Sincerity
Easy for us Easy for them
From Garry Reynold’s
43
44. Design for
Communication
• Draw design stuffs for discussion within your
team
– Just enough for clarifying solutions
• Only use diagrams that you can keep up to
date without noticeable pain
• Keep diagrams visible
– Post to wall or board
– Encourage people to edit
• Pay attention to whether people are using
them, if not throw them away.
44
45. Design for Construction
• “Working software is the primary
measure of progress”
• Your design will be realized into a working
item, so:
– Design should be code-able in team
• separation, interfacing, collaboration between
components
– Design should be testable
– “Architect must code!”
45
47. How about Architecture?
• PO works with DevTeam to specify
– Technologies used
– Frameworks used
– Initial Architecture
• Before Sprint 1
– @User Story Writing workshop
– @ Initial Requirement Envisioning and Initial
Architecture Envisioning
47
49. “Continuous” Architecting
Sprint #1: without layering
Presentation Tier Application Layer Business Layer Data Access Layer Data Tier
49
50. “Continuous” Architecting
Sprint #2: refactoring to layers
Presentation Tier Application Layer Business Layer Data Access Layer Data Tier
50
51. “Continuous” Architecting
Sprint #3: architecting “on the go”
Presentation Tier Application Layer Business Layer Data Access Layer Data Tier
51
52. Day 3 TODO
REFACTORING Refactoring for better code
Refactoring Dojo
TO Dojo Retrospectives
BETTER CODE
Review the final translation
Closing Retrospectives and
Remarks
52
53. Refactoring
• For simpler design
• For maintenanceupgrade later
• MustHave task in your DoneDefinition
checklist
• Invest in patterns and best practices
53
54. Refactoring
• You practice “code a bit, fix a little” => result in
dirty code & bad design.
• Refactoring helps in restructure or design your
code to make it better.
– what does “better” mean?
• Minimize “Technical Debt” for yourself
• Keep in mind:
– Maintainability
– Extensibility
– High Cohesion
– Low Coupling
54
55. Refactoring Techniques
• For abstraction
– Encapsulate Field
– Generalize Type
– Replace type-checking code with State/Strategy
– Replace conditional with polymorphism
• For breaking code apart
– Extract Method, turn part of a larger method into a new method
– Extract Class
• For improving code standard
– Move Method or Move Field
– Rename Method or Rename Field
– Pull Up, move to a superclass
– Push Down, move to a subclass
55
56. Code Review
• Very efficient in finding Receipt
problems • Can you read and understand the
code?
• “Bug-prevention” • Are there any obvious errors?
• Will the code have any undesirable
• Styles: effect on other parts of the
application?
– The all-nighter • Is there any duplication of code
(within this section of code itself
– The pick-up game or with other parts of the system)?
– Pair programming • Are there any reasonable
improvements or refactorings that
can improve it?
56
59. References and Resources
• Venkat Subramaniam & Andy Hunt, Practices of an Agile
Developer
• Peter Norvig, “Teach Yourself Programming in Ten Years”
(http://norvig.com/21-days.html)
• http://www.extremeprogramming.org/
• http://xprogramming.com/index.php
• http://xp123.com/
• James Shore, “The Art of Agile Development”
(http://jamesshore.com/Agile-Book/ )
• Martin Fowler, Is Design Dead?
(http://martinfowler.com/articles/designDead.html )
• Martin Fowler, http://refactoring.com/
59