SlideShare uma empresa Scribd logo
1 de 34
Session 2  Practices of agile developers AgileDev Tour Duong Trong Tan tandt@fpt.edu.vn Hanoi, December  2010
Objectives TurboBoost your development performance 2 Beginning agility Feeding agility Deliver what customers want Agile feedback Agile coding Agile debugging Agile collaboration Improvement of individual expertise and productivity
Keep it releasable in increment TurboBoost your development performance 3 Use version control for sharing code and builds This helps you integrate early and often Tools: SVN, CVS, Git Commit “potentially shippable code” to contribute the “potentially shippable product” at the end of sprint. Automate build and deployment early Preparing scripts, manuals, settings etc. Tools: Ant, Maven
Issue Tracking TurboBoost your development performance 4 As the project progresses, you’ll get a lot of feedback including  corrections,  suggestions,  change requests,  feature enhancement,  bug fixes, etc.  Log all issues into a good tracking system Hints: Redmine, Google Code, Assembla.com, etc.
TurboBoost your development performance 5 Open Question Do we need estimation?
Sources for adaption TurboBoost your development performance 6 Agile Feedback
Where feedbacks come from? TurboBoost your development performance 7 From the System Using testing, coding From the Users During requirement discussion, demo,  sprint review From the Team During code, test, design and “chit chat”
Unit Testing TurboBoost your development performance 8 Unit testing provides instant feedback makes your code robust can be a helpful design tool is a confidence booster Unit tests  can act as probes when solving problems are reliable documentation are a learning aid Tools: Junit, NUnit, HttpUnit, etc. Write tests before writing code (TDD)
Best Practices from Scrum TurboBoost your development performance 9 Feedbacks are gathered before, during and after the sprint: Sprintplanning => feedback from the customers, about requirement DailyScrum => feedback from the team Sprintreview => feedback from the customer, about the product
Listen to the users TurboBoost your development performance 10 Let them do acceptance testing “It’s a bug” : Every complaint holds a truth. => There is no such thing called a stupid user.
Quality code for productivity TurboBoost your development performance 11 Agile Coding
Dreyfus Model Levels of Expertise TurboBoost your development performance You are neither “expert” nor “novice” at all things; rather, you are at one of these stages in some particular skill domain Expert Proficient Competent Advanced Beginner Novice 12 From Journeyman to Master
Pair Programming TurboBoost your development performance 13 A pair of developers shares a problem, a computer, a keyboard and a goal: solve the problem PP was defined in XP Utilize the R-mode activities Improve communication and effectiveness Improve software quality Widely ADOPTED, but still CONTROVERSAL! 2 roles: Driverand Navigator: The Driver doesn’t see the big picture The Driver should “step a way from the keyboard” The Navigator tends to use pattern-matching problem solving technique
Program Intently and Expressively TurboBoost your development performance 14 Code should provide high-level of:  readability and  understandability. public void MakeCoffee() { lock(this) { // ... operation } } private object makeCoffeeLock = new object(); public void MakeCoffee() { lock(makeCoffeeLock) { // ... operation } }
Communication in Code TurboBoost your development performance 15 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
Trade-off and Simplicity TurboBoost your development performance 16 “There is no best solution” Code in Increments, not a “big bang” Use of TODO + skeleton  before code Keep It Simple, but not simplistic Write High-Cohesive, Low-Coupled Code Efficient Use  of Design Patterns
Design Patterns TurboBoost your development performance 17 Design Patterns is a modern classic in the literature of object-oriented development, offering timeless and elegantsolutions to common problems in software design.  Utilize design principles and best practices for better design Create “vocabulary” for team communication Keep  GoF’s and JavaEE’s DP in your “thinking toolbox”
What do you see in this piece of code? /** * This is a singleton class. * Used for logging action to the std out. * Example: Logger.getInstance().log(“foo”); */ public class Logger{ 	private static Logger instance; 	private Logger(){} 	public static getInstance(){ 		if(instance!=null){ 			return instance; 		}  		else{ 			instance = new Logger(); 		} 	} 	public void log( String message){ System.out.println(message); 	} } 18 TurboBoost your development performance
Refactoring TurboBoost your development performance 19 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. But what does “better” mean? Keep in mind: Maintainability Extensibility High Cohesion Low Coupling
Refactoring Techniques TurboBoost your development performance 20 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
How do you face with mistakes? TurboBoost your development performance 21 Agile Debugging
There is no bug-free software! TurboBoost your development performance 22 Keep a solutions log Don’t get burned twice Use custom DB, or issue tracker Warnings are really errors Attack problems in isolation Report all exceptions ,[object Object],Provide useful error messages
TurboBoost your development performance 23 Agile Collaboration
Meetings TurboBoost your development performance 24 Planning Objective oriented Review Product|Release review : formal Technical review (code, design): informal Attack and Defense Design, algorithm, code review Tracking Daily meeting Stand up meeting Retrospection Training|Seminar|Composium|Pilot
Keep the meeting focused TurboBoost your development performance 25 Ask 3 questions: What did I achieve yesterday? What am I planning to do today? What’ s in my way? Or What impeded me from doing good job? Use time box
Stand-up Meeting Benefits TurboBoost your development performance 26 kick off the day ahead in a focused way bring the issue out into the open and actively seek help determine areas that may need additional hands make team members aware of what’s going on	 identify redundancy or areas facilitating the sharing of code and ideas encourage forward momentum
Collaborative Coding  TurboBoost your development performance 27 Architects Must Write Code Don’t let anyone design in isolation Practice collective ownership correctly Share Code Only When Ready Developers should be a Mentor Knowledge grows when given Don’t let others smell your code
Code Review TurboBoost your development performance 28 Formal code inspections are very efficient in finding problems It works in “bug-prevention” mode Styles: The all-nighter The pick-up game Pair programming Receipt: Can you read and understand the code? Are there any obvious errors? Will the code have any undesirable effect on other parts of the application? Is there any duplication of code (within this section of code itself or with other parts of the system)? Are there any reasonable improvements or refactorings that can improve it?
Self-organization and Self-management TurboBoost your development performance 29 In Scrum, developers in Scrum Team manage themselves.  This helps in: Encouraging transfer and share of ideas, status, problems Seeking problems as soon as possible Avoiding conflicts and problems Working collectively. Image courtesy to http://www.richmondmontessori.ca
Communication tools TurboBoost your development performance 30 Whiteboard Sticky note Email Version control  Wiki Blog Task management tools Issue trackers
How can you kaizen? TurboBoost your development performance 31 Improve Expertise and Productivity Continuously
TurboBoost your development performance 32 to conclude …
10,000 HOURS Malcolm Gladwell writes in Outliers that people at the very top don’t work harder than everyone else. They work much, much harder. In fact, Gladwell quotes neuroscientists who believe that 10,000 hours of practice is required to become world class at a particular skill--whether it’s surgery, shooting baskets, or public speaking.
References and Further Readings TurboBoost your development performance 34 Code Complete 2ndEdn., by Steve McConnell Practices of an Agile Developer - Working in the Real World by VenkatSubramaniam and Andy Hunt. Pragmatic Thinking and Learning – Refactor your wetware by Andy Hunt.

Mais conteúdo relacionado

Mais procurados

Why Test Driven Development?
Why Test Driven Development?Why Test Driven Development?
Why Test Driven Development?Naresh Jain
 
Pair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsPair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsMarcello Duarte
 
Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...
Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...
Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...agil8 Ltd
 
Essential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile AdoptionEssential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile AdoptionSteven Mak
 
eXtreme programming (XP) - An Overview
eXtreme programming (XP) - An OvervieweXtreme programming (XP) - An Overview
eXtreme programming (XP) - An OverviewGurtej Pal Singh
 
Pair Programming - a pratical guide
Pair Programming - a pratical guidePair Programming - a pratical guide
Pair Programming - a pratical guideGiuseppe Sorrentino
 
Extreme programming
Extreme programmingExtreme programming
Extreme programmingaaina_katyal
 
Going extreme-with-extreme-programming
Going extreme-with-extreme-programmingGoing extreme-with-extreme-programming
Going extreme-with-extreme-programmingMichael Green
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme ProgrammingKnoldus Inc.
 
Extreme & pair programming Slides ppt
Extreme & pair programming Slides pptExtreme & pair programming Slides ppt
Extreme & pair programming Slides pptMr SMAK
 
Introduction to Extreme Programming
Introduction to Extreme ProgrammingIntroduction to Extreme Programming
Introduction to Extreme ProgrammingNaresh Jain
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming Fatemeh Karimi
 
Extreme programming - a quick and agile overview !
Extreme programming - a quick and agile overview !Extreme programming - a quick and agile overview !
Extreme programming - a quick and agile overview !Vinit Kumar Singh
 
Introduction To Extreme Programming
Introduction To Extreme ProgrammingIntroduction To Extreme Programming
Introduction To Extreme ProgrammingJoe Drumgoole
 
Extreme Programming (XP) for Dummies
Extreme Programming (XP) for DummiesExtreme Programming (XP) for Dummies
Extreme Programming (XP) for DummiesJon McNestrie
 
Tech talks #1- Unit testing and TDD
Tech talks #1- Unit testing and TDDTech talks #1- Unit testing and TDD
Tech talks #1- Unit testing and TDDDUONG Trong Tan
 

Mais procurados (20)

Why Test Driven Development?
Why Test Driven Development?Why Test Driven Development?
Why Test Driven Development?
 
Agile methods
Agile methodsAgile methods
Agile methods
 
Pair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsPair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical things
 
Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...
Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...
Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...
 
Essential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile AdoptionEssential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile Adoption
 
eXtreme programming (XP) - An Overview
eXtreme programming (XP) - An OvervieweXtreme programming (XP) - An Overview
eXtreme programming (XP) - An Overview
 
Pair Programming - a pratical guide
Pair Programming - a pratical guidePair Programming - a pratical guide
Pair Programming - a pratical guide
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Going extreme-with-extreme-programming
Going extreme-with-extreme-programmingGoing extreme-with-extreme-programming
Going extreme-with-extreme-programming
 
Extreme programming (xp)
Extreme programming (xp)Extreme programming (xp)
Extreme programming (xp)
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Extreme & pair programming Slides ppt
Extreme & pair programming Slides pptExtreme & pair programming Slides ppt
Extreme & pair programming Slides ppt
 
Introduction to Extreme Programming
Introduction to Extreme ProgrammingIntroduction to Extreme Programming
Introduction to Extreme Programming
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming
 
Extreme programming - a quick and agile overview !
Extreme programming - a quick and agile overview !Extreme programming - a quick and agile overview !
Extreme programming - a quick and agile overview !
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Introduction To Extreme Programming
Introduction To Extreme ProgrammingIntroduction To Extreme Programming
Introduction To Extreme Programming
 
Extreme Programming (XP) for Dummies
Extreme Programming (XP) for DummiesExtreme Programming (XP) for Dummies
Extreme Programming (XP) for Dummies
 
XP In 10 slides
XP In 10 slidesXP In 10 slides
XP In 10 slides
 
Tech talks #1- Unit testing and TDD
Tech talks #1- Unit testing and TDDTech talks #1- Unit testing and TDD
Tech talks #1- Unit testing and TDD
 

Semelhante a Practices of agile developers

Periodic Table of Agile Principles and Practices
Periodic Table of Agile Principles and PracticesPeriodic Table of Agile Principles and Practices
Periodic Table of Agile Principles and PracticesJérôme Kehrli
 
DevOps interview questions and answers
DevOps interview questions and answersDevOps interview questions and answers
DevOps interview questions and answersHopeTutors1
 
Continuous Deployment and Testing Workshop from Better Software West
Continuous Deployment and Testing Workshop from Better Software WestContinuous Deployment and Testing Workshop from Better Software West
Continuous Deployment and Testing Workshop from Better Software WestCory Foy
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingUtkarsh Khare
 
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest IrelandMarkus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest IrelandDavid O'Dowd
 
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsAmanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsRehgan Avon
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practicesjackcrews
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovSvetlin Nakov
 
Agile Software Development Overview
Agile Software Development OverviewAgile Software Development Overview
Agile Software Development OverviewDUONG Trong Tan
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure rupeshchanchal
 
Code Review
Code ReviewCode Review
Code ReviewRavi Raj
 
Agile Manifesto & XP
Agile Manifesto & XPAgile Manifesto & XP
Agile Manifesto & XPSemen Arslan
 
Effective Testing Practices in an Agile Environment
Effective Testing Practices in an Agile EnvironmentEffective Testing Practices in an Agile Environment
Effective Testing Practices in an Agile EnvironmentRaj Indugula
 
Georgia State Presentation
Georgia State PresentationGeorgia State Presentation
Georgia State Presentationpatrickbrandt
 
How to run an Enterprise PHP Shop
How to run an Enterprise PHP ShopHow to run an Enterprise PHP Shop
How to run an Enterprise PHP ShopJim Plush
 
Chen's second test slides again
Chen's second test slides againChen's second test slides again
Chen's second test slides againHima Challa
 
A simple test paper from Chen
A simple test paper from ChenA simple test paper from Chen
A simple test paper from Chentechweb08
 
Chen's second test slides
Chen's second test slidesChen's second test slides
Chen's second test slidesHima Challa
 

Semelhante a Practices of agile developers (20)

Periodic Table of Agile Principles and Practices
Periodic Table of Agile Principles and PracticesPeriodic Table of Agile Principles and Practices
Periodic Table of Agile Principles and Practices
 
DevOps interview questions and answers
DevOps interview questions and answersDevOps interview questions and answers
DevOps interview questions and answers
 
Continuous Deployment and Testing Workshop from Better Software West
Continuous Deployment and Testing Workshop from Better Software WestContinuous Deployment and Testing Workshop from Better Software West
Continuous Deployment and Testing Workshop from Better Software West
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest IrelandMarkus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
 
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsAmanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practices
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
Agile Software Development Overview
Agile Software Development OverviewAgile Software Development Overview
Agile Software Development Overview
 
Michael Elkabetz
Michael Elkabetz Michael Elkabetz
Michael Elkabetz
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
 
Code Review
Code ReviewCode Review
Code Review
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Agile Manifesto & XP
Agile Manifesto & XPAgile Manifesto & XP
Agile Manifesto & XP
 
Effective Testing Practices in an Agile Environment
Effective Testing Practices in an Agile EnvironmentEffective Testing Practices in an Agile Environment
Effective Testing Practices in an Agile Environment
 
Georgia State Presentation
Georgia State PresentationGeorgia State Presentation
Georgia State Presentation
 
How to run an Enterprise PHP Shop
How to run an Enterprise PHP ShopHow to run an Enterprise PHP Shop
How to run an Enterprise PHP Shop
 
Chen's second test slides again
Chen's second test slides againChen's second test slides again
Chen's second test slides again
 
A simple test paper from Chen
A simple test paper from ChenA simple test paper from Chen
A simple test paper from Chen
 
Chen's second test slides
Chen's second test slidesChen's second test slides
Chen's second test slides
 

Mais de DUONG Trong Tan

Trở thành Agile Coach
Trở thành Agile CoachTrở thành Agile Coach
Trở thành Agile CoachDUONG Trong Tan
 
Coder nên biết thêm gì ngoài việc lập trình
Coder nên biết thêm gì ngoài việc lập trìnhCoder nên biết thêm gì ngoài việc lập trình
Coder nên biết thêm gì ngoài việc lập trìnhDUONG Trong Tan
 
Building a Learning Organization
Building a Learning OrganizationBuilding a Learning Organization
Building a Learning OrganizationDUONG Trong Tan
 
Giáo dục thông minh (Smart Education)
Giáo dục thông minh (Smart Education)Giáo dục thông minh (Smart Education)
Giáo dục thông minh (Smart Education)DUONG Trong Tan
 
A reflection on constructivism and engineering education
A reflection on constructivism and engineering educationA reflection on constructivism and engineering education
A reflection on constructivism and engineering educationDUONG Trong Tan
 
Học cách học (version 2.0) - Learning How To Learn
Học cách học (version 2.0) - Learning How To LearnHọc cách học (version 2.0) - Learning How To Learn
Học cách học (version 2.0) - Learning How To LearnDUONG Trong Tan
 
Người lớn học như thế nào - Nhìn từ tiếp cận kiến tạo
Người lớn học như thế nào - Nhìn từ tiếp cận kiến tạoNgười lớn học như thế nào - Nhìn từ tiếp cận kiến tạo
Người lớn học như thế nào - Nhìn từ tiếp cận kiến tạoDUONG Trong Tan
 
Agile có thể giúp chúng ta những gì?
Agile có thể giúp chúng ta những gì?Agile có thể giúp chúng ta những gì?
Agile có thể giúp chúng ta những gì?DUONG Trong Tan
 
Học cách học (Learning How To Learn)
Học cách học (Learning How To Learn)Học cách học (Learning How To Learn)
Học cách học (Learning How To Learn)DUONG Trong Tan
 
Các nguyên lí giáo dục
Các nguyên lí giáo dụcCác nguyên lí giáo dục
Các nguyên lí giáo dụcDUONG Trong Tan
 
Vì sao các tổ chức không học hỏi
Vì sao các tổ chức không học hỏiVì sao các tổ chức không học hỏi
Vì sao các tổ chức không học hỏiDUONG Trong Tan
 
Học qua dự án (Project-based Learning)
Học qua dự án (Project-based Learning)Học qua dự án (Project-based Learning)
Học qua dự án (Project-based Learning)DUONG Trong Tan
 
Scrum - a tool to achieve agility
Scrum - a tool to achieve agilityScrum - a tool to achieve agility
Scrum - a tool to achieve agilityDUONG Trong Tan
 
Training is not enough - Coaching your agile team
Training is not enough - Coaching your agile teamTraining is not enough - Coaching your agile team
Training is not enough - Coaching your agile teamDUONG Trong Tan
 
Đường vào agile - 2013
Đường vào agile - 2013Đường vào agile - 2013
Đường vào agile - 2013DUONG Trong Tan
 
Practices of an agile developer
Practices of an agile developerPractices of an agile developer
Practices of an agile developerDUONG Trong Tan
 
ScrumDay Vietnam 2012 - Agile adoption - Nhan
ScrumDay Vietnam 2012 - Agile adoption - NhanScrumDay Vietnam 2012 - Agile adoption - Nhan
ScrumDay Vietnam 2012 - Agile adoption - NhanDUONG Trong Tan
 
ScrumDay Vietnam 2012 - Scrum with Team Foundation Server - Quang
ScrumDay Vietnam 2012 - Scrum with Team Foundation Server - QuangScrumDay Vietnam 2012 - Scrum with Team Foundation Server - Quang
ScrumDay Vietnam 2012 - Scrum with Team Foundation Server - QuangDUONG Trong Tan
 

Mais de DUONG Trong Tan (20)

Trở thành Agile Coach
Trở thành Agile CoachTrở thành Agile Coach
Trở thành Agile Coach
 
Coder nên biết thêm gì ngoài việc lập trình
Coder nên biết thêm gì ngoài việc lập trìnhCoder nên biết thêm gì ngoài việc lập trình
Coder nên biết thêm gì ngoài việc lập trình
 
Luyện cách hỏi
Luyện cách hỏi Luyện cách hỏi
Luyện cách hỏi
 
Building a Learning Organization
Building a Learning OrganizationBuilding a Learning Organization
Building a Learning Organization
 
Giáo dục thông minh (Smart Education)
Giáo dục thông minh (Smart Education)Giáo dục thông minh (Smart Education)
Giáo dục thông minh (Smart Education)
 
A reflection on constructivism and engineering education
A reflection on constructivism and engineering educationA reflection on constructivism and engineering education
A reflection on constructivism and engineering education
 
Học cách học (version 2.0) - Learning How To Learn
Học cách học (version 2.0) - Learning How To LearnHọc cách học (version 2.0) - Learning How To Learn
Học cách học (version 2.0) - Learning How To Learn
 
Người lớn học như thế nào - Nhìn từ tiếp cận kiến tạo
Người lớn học như thế nào - Nhìn từ tiếp cận kiến tạoNgười lớn học như thế nào - Nhìn từ tiếp cận kiến tạo
Người lớn học như thế nào - Nhìn từ tiếp cận kiến tạo
 
Agile có thể giúp chúng ta những gì?
Agile có thể giúp chúng ta những gì?Agile có thể giúp chúng ta những gì?
Agile có thể giúp chúng ta những gì?
 
Học cách học (Learning How To Learn)
Học cách học (Learning How To Learn)Học cách học (Learning How To Learn)
Học cách học (Learning How To Learn)
 
Các nguyên lí giáo dục
Các nguyên lí giáo dụcCác nguyên lí giáo dục
Các nguyên lí giáo dục
 
Vì sao các tổ chức không học hỏi
Vì sao các tổ chức không học hỏiVì sao các tổ chức không học hỏi
Vì sao các tổ chức không học hỏi
 
Học qua dự án (Project-based Learning)
Học qua dự án (Project-based Learning)Học qua dự án (Project-based Learning)
Học qua dự án (Project-based Learning)
 
Scrum - a tool to achieve agility
Scrum - a tool to achieve agilityScrum - a tool to achieve agility
Scrum - a tool to achieve agility
 
Agile mindset
Agile mindsetAgile mindset
Agile mindset
 
Training is not enough - Coaching your agile team
Training is not enough - Coaching your agile teamTraining is not enough - Coaching your agile team
Training is not enough - Coaching your agile team
 
Đường vào agile - 2013
Đường vào agile - 2013Đường vào agile - 2013
Đường vào agile - 2013
 
Practices of an agile developer
Practices of an agile developerPractices of an agile developer
Practices of an agile developer
 
ScrumDay Vietnam 2012 - Agile adoption - Nhan
ScrumDay Vietnam 2012 - Agile adoption - NhanScrumDay Vietnam 2012 - Agile adoption - Nhan
ScrumDay Vietnam 2012 - Agile adoption - Nhan
 
ScrumDay Vietnam 2012 - Scrum with Team Foundation Server - Quang
ScrumDay Vietnam 2012 - Scrum with Team Foundation Server - QuangScrumDay Vietnam 2012 - Scrum with Team Foundation Server - Quang
ScrumDay Vietnam 2012 - Scrum with Team Foundation Server - Quang
 

Último

Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibitjbellavia9
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdfQucHHunhnh
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxVishalSingh1417
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxDenish Jangid
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docxPoojaSen20
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin ClassesCeline George
 
psychiatric nursing HISTORY COLLECTION .docx
psychiatric  nursing HISTORY  COLLECTION  .docxpsychiatric  nursing HISTORY  COLLECTION  .docx
psychiatric nursing HISTORY COLLECTION .docxPoojaSen20
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsMebane Rash
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.pptRamjanShidvankar
 
SOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning PresentationSOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning Presentationcamerronhm
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseAnaAcapella
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxAreebaZafar22
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17Celine George
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and ModificationsMJDuyan
 
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxnegromaestrong
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfNirmal Dwivedi
 
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxAmanpreet Kaur
 

Último (20)

Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
Asian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptxAsian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptx
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptx
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docx
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
 
psychiatric nursing HISTORY COLLECTION .docx
psychiatric  nursing HISTORY  COLLECTION  .docxpsychiatric  nursing HISTORY  COLLECTION  .docx
psychiatric nursing HISTORY COLLECTION .docx
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
SOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning PresentationSOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning Presentation
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
Spatium Project Simulation student brief
Spatium Project Simulation student briefSpatium Project Simulation student brief
Spatium Project Simulation student brief
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptx
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
 
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
 

Practices of agile developers

  • 1. Session 2 Practices of agile developers AgileDev Tour Duong Trong Tan tandt@fpt.edu.vn Hanoi, December 2010
  • 2. Objectives TurboBoost your development performance 2 Beginning agility Feeding agility Deliver what customers want Agile feedback Agile coding Agile debugging Agile collaboration Improvement of individual expertise and productivity
  • 3. Keep it releasable in increment TurboBoost your development performance 3 Use version control for sharing code and builds This helps you integrate early and often Tools: SVN, CVS, Git Commit “potentially shippable code” to contribute the “potentially shippable product” at the end of sprint. Automate build and deployment early Preparing scripts, manuals, settings etc. Tools: Ant, Maven
  • 4. Issue Tracking TurboBoost your development performance 4 As the project progresses, you’ll get a lot of feedback including corrections, suggestions, change requests, feature enhancement, bug fixes, etc. Log all issues into a good tracking system Hints: Redmine, Google Code, Assembla.com, etc.
  • 5. TurboBoost your development performance 5 Open Question Do we need estimation?
  • 6. Sources for adaption TurboBoost your development performance 6 Agile Feedback
  • 7. Where feedbacks come from? TurboBoost your development performance 7 From the System Using testing, coding From the Users During requirement discussion, demo, sprint review From the Team During code, test, design and “chit chat”
  • 8. Unit Testing TurboBoost your development performance 8 Unit testing provides instant feedback makes your code robust can be a helpful design tool is a confidence booster Unit tests can act as probes when solving problems are reliable documentation are a learning aid Tools: Junit, NUnit, HttpUnit, etc. Write tests before writing code (TDD)
  • 9. Best Practices from Scrum TurboBoost your development performance 9 Feedbacks are gathered before, during and after the sprint: Sprintplanning => feedback from the customers, about requirement DailyScrum => feedback from the team Sprintreview => feedback from the customer, about the product
  • 10. Listen to the users TurboBoost your development performance 10 Let them do acceptance testing “It’s a bug” : Every complaint holds a truth. => There is no such thing called a stupid user.
  • 11. Quality code for productivity TurboBoost your development performance 11 Agile Coding
  • 12. Dreyfus Model Levels of Expertise TurboBoost your development performance You are neither “expert” nor “novice” at all things; rather, you are at one of these stages in some particular skill domain Expert Proficient Competent Advanced Beginner Novice 12 From Journeyman to Master
  • 13. Pair Programming TurboBoost your development performance 13 A pair of developers shares a problem, a computer, a keyboard and a goal: solve the problem PP was defined in XP Utilize the R-mode activities Improve communication and effectiveness Improve software quality Widely ADOPTED, but still CONTROVERSAL! 2 roles: Driverand Navigator: The Driver doesn’t see the big picture The Driver should “step a way from the keyboard” The Navigator tends to use pattern-matching problem solving technique
  • 14. Program Intently and Expressively TurboBoost your development performance 14 Code should provide high-level of: readability and understandability. public void MakeCoffee() { lock(this) { // ... operation } } private object makeCoffeeLock = new object(); public void MakeCoffee() { lock(makeCoffeeLock) { // ... operation } }
  • 15. Communication in Code TurboBoost your development performance 15 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
  • 16. Trade-off and Simplicity TurboBoost your development performance 16 “There is no best solution” Code in Increments, not a “big bang” Use of TODO + skeleton before code Keep It Simple, but not simplistic Write High-Cohesive, Low-Coupled Code Efficient Use of Design Patterns
  • 17. Design Patterns TurboBoost your development performance 17 Design Patterns is a modern classic in the literature of object-oriented development, offering timeless and elegantsolutions to common problems in software design. Utilize design principles and best practices for better design Create “vocabulary” for team communication Keep GoF’s and JavaEE’s DP in your “thinking toolbox”
  • 18. What do you see in this piece of code? /** * This is a singleton class. * Used for logging action to the std out. * Example: Logger.getInstance().log(“foo”); */ public class Logger{ private static Logger instance; private Logger(){} public static getInstance(){ if(instance!=null){ return instance; } else{ instance = new Logger(); } } public void log( String message){ System.out.println(message); } } 18 TurboBoost your development performance
  • 19. Refactoring TurboBoost your development performance 19 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. But what does “better” mean? Keep in mind: Maintainability Extensibility High Cohesion Low Coupling
  • 20. Refactoring Techniques TurboBoost your development performance 20 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
  • 21. How do you face with mistakes? TurboBoost your development performance 21 Agile Debugging
  • 22.
  • 23. TurboBoost your development performance 23 Agile Collaboration
  • 24. Meetings TurboBoost your development performance 24 Planning Objective oriented Review Product|Release review : formal Technical review (code, design): informal Attack and Defense Design, algorithm, code review Tracking Daily meeting Stand up meeting Retrospection Training|Seminar|Composium|Pilot
  • 25. Keep the meeting focused TurboBoost your development performance 25 Ask 3 questions: What did I achieve yesterday? What am I planning to do today? What’ s in my way? Or What impeded me from doing good job? Use time box
  • 26. Stand-up Meeting Benefits TurboBoost your development performance 26 kick off the day ahead in a focused way bring the issue out into the open and actively seek help determine areas that may need additional hands make team members aware of what’s going on identify redundancy or areas facilitating the sharing of code and ideas encourage forward momentum
  • 27. Collaborative Coding TurboBoost your development performance 27 Architects Must Write Code Don’t let anyone design in isolation Practice collective ownership correctly Share Code Only When Ready Developers should be a Mentor Knowledge grows when given Don’t let others smell your code
  • 28. Code Review TurboBoost your development performance 28 Formal code inspections are very efficient in finding problems It works in “bug-prevention” mode Styles: The all-nighter The pick-up game Pair programming Receipt: Can you read and understand the code? Are there any obvious errors? Will the code have any undesirable effect on other parts of the application? Is there any duplication of code (within this section of code itself or with other parts of the system)? Are there any reasonable improvements or refactorings that can improve it?
  • 29. Self-organization and Self-management TurboBoost your development performance 29 In Scrum, developers in Scrum Team manage themselves. This helps in: Encouraging transfer and share of ideas, status, problems Seeking problems as soon as possible Avoiding conflicts and problems Working collectively. Image courtesy to http://www.richmondmontessori.ca
  • 30. Communication tools TurboBoost your development performance 30 Whiteboard Sticky note Email Version control Wiki Blog Task management tools Issue trackers
  • 31. How can you kaizen? TurboBoost your development performance 31 Improve Expertise and Productivity Continuously
  • 32. TurboBoost your development performance 32 to conclude …
  • 33. 10,000 HOURS Malcolm Gladwell writes in Outliers that people at the very top don’t work harder than everyone else. They work much, much harder. In fact, Gladwell quotes neuroscientists who believe that 10,000 hours of practice is required to become world class at a particular skill--whether it’s surgery, shooting baskets, or public speaking.
  • 34. References and Further Readings TurboBoost your development performance 34 Code Complete 2ndEdn., by Steve McConnell Practices of an Agile Developer - Working in the Real World by VenkatSubramaniam and Andy Hunt. Pragmatic Thinking and Learning – Refactor your wetware by Andy Hunt.

Notas do Editor

  1. No more theory, no more processes, no more models. We’ll discuss the daily practices of an agile developer which help you actively transform yourself to a higher level of SoftDev capability. We need to step out from books!
  2. 1: human-driven2: outcome-driven3: feedback-driven4: adaptive
  3. Things: code, process, model, tools. Adjustment must be based on well-understanding of stuffs.common responses to an obvious error:• Dismiss the person as incompetent.• Dismiss the idea by pointing out the obvious flaw.• Ask your teammate to address your concern.Courage: sometimes you don’t see the situation as written in books, you must be honest with ys that requires courage
  4. At the start of a meeting, pick a mediator who willact as the decision maker for that session.
  5. take Java, forinstance. You have the Java language with its series of updated features.Then you have Swing, Servlets, JSP, Struts, Tapestry, JSF,JDBC, JDO, Hibernate, JMS, EJB, Lucene, Spring...; the list goes on.If you are into Microsoft technology, you have VB, Visual C++, MFC,COM, ATL, .NET, C#, VB.NET, ASP.NET, ADO.NET, WinForms, EnterpriseServices, Biztalk.... And don’t forget UML, Ruby, XML, DOM, SAX,JAXP, JDOM, XSL, Schema, SOAP, web services, SOA; yet again the listgoes on (and we’re starting to run out of short acronyms).
  6. Words vs. ImagesImage: http://www.flickr.com/photos/vaxzine/2278300537/
  7. Metaphor : transferWhat we call windows on the computer screen aren’t really windows at all. The mouse isn’t actually a rodent. A folder on your hard disk isn’t a real folder, and the trashcan isn’t a real can.
  8. For pricing, for example.What are use case point, function point, man month, person day, user story point?
  9. Use prototyping for test code, code some, fill someAutomate to save timeSimulation: write code for Arithmetics. Add/Substract/Divide/Multiply
  10. Novices need recipes. Advanced beginners don’twantthe big picture. Competent practitioners can troubleshoot. Proficient practitionerscan self-correct. Experts workfrom intuition.For your team:Use rules for novices, intuition for experts.For you: Know what you don’t know.For student: Expert != TeacherNo Expertise Without ExperienceGladwell: take any chance you got to practice. Think ab. the case of MS.
  11. Comment a function:Purpose: Why does this method exist?Requirements (pre-conditions): What inputs do we need, and what state must the object be in, for this method to work?Promises (post-conditions): What state is the object in, and what values are returned, on successful completion of this method?Exceptions: What can go wrong, and what exceptions may be thrown?
  12. XP values:Keep it simpleDRYCohesion is a measure of how functionally related the members of acomponent (package, module, or assembly) are
  13. GoF: Gang of Four() – authors of Design Patterns: Elements of Reusable Object-Oriented Software“Don’t reinvent the wheel”Example:
  14. Example of Singleton design pattern, used in code
  15. What do you have in NetBeans, Eclipse, VS?
  16. Bug Report:* Date of the problem• Short description of the problem or issue• Detailed description of the solution• References to articles, and URLs, that have more details or relatedinformation• Any code segments, settings, and snapshots of dialogs that maybe part of the solution or help you further understand the detailsAttack Problems in Isolation: design low-coupled code
  17. Training is not all about technical .Ask Phuong : how can she train her team?
  18. DRY practice in seeing others report progress motivates each of us to do the same.
  19. What is dirty|smelling code?
  20. One-night-a-month monster code review session: bring all needed stuffs: food, drink, music, game ..
  21. Using “crowd intelligence”
  22. Next session will examine some advanced tool for agile devlopers
  23. Reflection: use a paper, draw a mind-mapRepeat the spirit
  24. Closing Remarks: Take any chance, and practice.