SlideShare a Scribd company logo
Productive Programmer  Using IDE effectively  & various small practices to improve productivity 24th Apr 2010 Bhavin Javia, Senior Consultant, ThoughtWorks Indore 2010
Agenda Productivity Programmer Productivity Principles of Productivity Using IDE effectively Other productivity techniques and practices Demos and Hands-on Exercises References Q & A
What is Productivity ? “ Amount of useful work done over time”
Programmer Productivity Why worry ?
We love our computers  
They can do a lot more than we think !!!
But, we end up doing most of the hard work !!!
Programmers are expected to be highly productive especially with computers
Programmers Productivity and XP Iterative life cycle depends on rapid analysis, development, testing, deployment and feedback A process can be only as fast as it’s “slowest” step Programmer productivity is a “must have” in such a process
Principles of Productivity Acceleration Focus Automation Canonicality
Principles of Productivity Acceleration Focus Automation Canonicality
Concentrate on Essence, not Ceremony To use a computer You have to boot it Launch applications Provide input via keyboard and mouse Interpret results shown on the monitor Human <-> Computer != Human <-> Human Less human interaction = Faster execution Don’t feed the tool, use it Trivialize interactions – e.g. launching applications
Launching Applications – Find what you want
Fitt’s Law “  The time required to rapidly move to a target area is a function of the distance to and the size of the target ” T is the average time taken to complete the movement a  is the  start/stop time  of the device (intercept) b  is the inherent  speed of the device  (slope) D  is the  distance  from the starting point to the center of the target W  is the  width of the target  measured along the axis of motion
Fitt’s Law D W b a Cursor Target
Launching Applications – Tell what you want
Demo Quicksilver App Launcher (5 mins)
IDE – Integrated Development Environment
Acceleration with IDE Language support Shortcuts Code Templates Multiple clipboards Search Macros Plug-ins Regular Expressions
Demo Working with Eclipse (10 mins)
Activity Eclipse Shortcuts  (15 mins)
Eclipse Shortcuts Find a pair and grab a computer Launch Eclipse Find out shortcuts for the following actions Open a Class/Type Open a File/Resource See currently open files Create a new Class/File Find references to the selected method in the project Extract a local variable Assign key bindings to actions if missing Test each other
Activity Eclipse Code Templates (15 mins)
Eclipse Code Templates Find a pair and grab a computer Launch Eclipse Find out where code templates are configured Use a few code templates to see how they work Create a custom code template to create – A class with a private variable a constructor which initializes this variable getter and setter for the private variable Create a class ‘Wallet’ with field ‘money’ using the template created above © ThoughtWorks 2008
Principles of Productivity Acceleration Focus Automation Canonicality © ThoughtWorks 2008
Focus Kill distractions Check emails less frequently - Reserve socialization for the coffee/lunch breaks -  Turn off notifications -  Define core working hours Search, don’t navigate Rooted views Sticky attributes  Project shortcuts Virtual Desktops Use IDE plug-ins © ThoughtWorks 2008
Demo Virtual Desktops (5 mins) © ThoughtWorks 2008
Principles of Productivity Acceleration Focus Automation Canonicality
Why Automate ? Make the computer do repetitive tasks Avoid the infamous “human error” Mitigate risks Better ROI Maintain focus on core tasks
What to automate ? Automate builds and deployments Automate interaction with websites Use build tools for non build tasks Use shell scripts to extract information Use automation software
Demo Selenium IDE (10 mins)
Demo Automator (10 mins)
Principles of Productivity Acceleration Focus Automation Canonicality
What is Canonicality ? Canonical  representation : “ The simplest form without loss of information” Canonicality  : “ The practice of eliminating duplication”
The DRY Principle DON’T REPEAT YOURSELF (DRY) “ Every piece of knowledge must have a single, unambiguous, authoritative representation within a system” -  The Pragmatic Programmer,  Andrew Hunt and David Thomas
Applying DRY to Software Development Version Control everything Maintain single copy if not/can’t be versioned Use separate build machine Use Indirection (links) to sync and share configuration Virtualization Keep code and db in sync DRY Documentation Generate documentation from code Generate code from documentation Avoid multiple representations of the same information
DRY Documentation
Demo Migrations (10 mins)
References …  and my personal experience working with agile teams
Q & A Contact: [email_address]

More Related Content

PDF
Pair Programming (2014)
PPTX
Architecture In An Agile World
PDF
Top Reasons Why Java Rocks (report preview) - http:0t.ee/java-rocks
PPTX
Small Hyper-Productive Teams (IT Brunch)
PDF
VS2017 saturday - Historical debugging with intelli trace in visual studio
PDF
How Do You Build Software? Software Engineering Practices of an Agile Developer
PPTX
Development without Testers: Myth or Real Option? (ConfeT&QA conference)
PDF
How does pair programming work?
Pair Programming (2014)
Architecture In An Agile World
Top Reasons Why Java Rocks (report preview) - http:0t.ee/java-rocks
Small Hyper-Productive Teams (IT Brunch)
VS2017 saturday - Historical debugging with intelli trace in visual studio
How Do You Build Software? Software Engineering Practices of an Agile Developer
Development without Testers: Myth or Real Option? (ConfeT&QA conference)
How does pair programming work?

What's hot (20)

PPTX
Preocupações Desenvolvedor Ágil
PDF
Lean Software Development
PPTX
Tdd 4 everyone full version
PPT
Best practices for agile design
PDF
Pair programming
PPTX
Software Craftsmanship VS Software Engineering
PDF
DevOps – the future of Agile – why, what, how? Agile Israel 2014
PPTX
Agile design pattern
PPT
Arch factory - Agile Design: Best Practices
PPTX
Going extreme-with-extreme-programming
PPTX
Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...
PDF
Citrix Labs Rapid Prototyping Workshop
PDF
How BDD enables True CI/CD
PDF
Introduction to Extreme Programming
PPTX
DOES15 - Elisabeth Hendrickson - Its All About Feedback
PDF
Don’t Make These Scrum Mistakes
PDF
What does it mean to be a test engineer?
PPT
extreme Programming
ODP
Devops Devops Devops
PPTX
Agile Mindset and Its Implications - My Understanding
Preocupações Desenvolvedor Ágil
Lean Software Development
Tdd 4 everyone full version
Best practices for agile design
Pair programming
Software Craftsmanship VS Software Engineering
DevOps – the future of Agile – why, what, how? Agile Israel 2014
Agile design pattern
Arch factory - Agile Design: Best Practices
Going extreme-with-extreme-programming
Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...
Citrix Labs Rapid Prototyping Workshop
How BDD enables True CI/CD
Introduction to Extreme Programming
DOES15 - Elisabeth Hendrickson - Its All About Feedback
Don’t Make These Scrum Mistakes
What does it mean to be a test engineer?
extreme Programming
Devops Devops Devops
Agile Mindset and Its Implications - My Understanding
Ad

Viewers also liked (18)

PPTX
Центр поддержки семьи на пер. Киевский, 10а
PPTX
Agile Team Dynamics
PPTX
Get on "The Cloud" with AWS
PPT
Continuous Integration and Builds
PDF
Productive Programmer
PDF
Why Hire From the Military?
PPTX
Programming the Programmer
PDF
the productive programer: mechanics
PPT
Making IT Process Automation Work for You
PPTX
Jobs 141208160939-conversion-gate02
PPTX
Programer Ivan Stolic VII3
PDF
Make ruby talk to your users - literally
PPTX
Programer Dusan Zivanovic VII1
PPTX
Xортикултура Tеодора Aлексић VII2
PPT
Computer languages 11
PPTX
Computer Languages.
PPT
Programming languages
PPT
Lect 1. introduction to programming languages
Центр поддержки семьи на пер. Киевский, 10а
Agile Team Dynamics
Get on "The Cloud" with AWS
Continuous Integration and Builds
Productive Programmer
Why Hire From the Military?
Programming the Programmer
the productive programer: mechanics
Making IT Process Automation Work for You
Jobs 141208160939-conversion-gate02
Programer Ivan Stolic VII3
Make ruby talk to your users - literally
Programer Dusan Zivanovic VII1
Xортикултура Tеодора Aлексић VII2
Computer languages 11
Computer Languages.
Programming languages
Lect 1. introduction to programming languages
Ad

Similar to Productive Programmer - Using IDE effectively and various small practices to improve productivity (20)

PPTX
Application Lifecycle Management with Visual Studio 2013
PPTX
Developer effiencency
PPTX
Lean Product Development at Discovery Communications: Methodology, Practices,...
KEY
Essential practices and thinking tools for Agile Adoption
PPT
Vittorio Viarengo, VP Oracle Telco Strategy and Development Oracle fusion mid...
PDF
Agile Database Development - SDC2012
PDF
How to be a 10x Engineer
PPTX
ESEconf2011 - Caine Matthew: "Creating an Environment of Teamwork, Quality, I...
PDF
The BA role in Agile Development
PPT
Get Faster - While You're Getting Better
PDF
Practical Guide to Scrum
PDF
The BA role in Agile software development
PDF
The Business Analysts Role in Agile Software Development
PPT
PPT
Agile presentation
PPT
Vittorio Viarengo, ViVi software
PPT
Vittorio Viarengo, ViVi software
PPTX
This one weird trick will fix all your Agile problems
DOCX
The principles of agile development
PPTX
Making Cornwall Agile
Application Lifecycle Management with Visual Studio 2013
Developer effiencency
Lean Product Development at Discovery Communications: Methodology, Practices,...
Essential practices and thinking tools for Agile Adoption
Vittorio Viarengo, VP Oracle Telco Strategy and Development Oracle fusion mid...
Agile Database Development - SDC2012
How to be a 10x Engineer
ESEconf2011 - Caine Matthew: "Creating an Environment of Teamwork, Quality, I...
The BA role in Agile Development
Get Faster - While You're Getting Better
Practical Guide to Scrum
The BA role in Agile software development
The Business Analysts Role in Agile Software Development
Agile presentation
Vittorio Viarengo, ViVi software
Vittorio Viarengo, ViVi software
This one weird trick will fix all your Agile problems
The principles of agile development
Making Cornwall Agile

Recently uploaded (20)

PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
Cloud computing and distributed systems.
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Encapsulation theory and applications.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
KodekX | Application Modernization Development
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPT
Teaching material agriculture food technology
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Modernizing your data center with Dell and AMD
NewMind AI Weekly Chronicles - August'25 Week I
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Cloud computing and distributed systems.
Review of recent advances in non-invasive hemoglobin estimation
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Advanced methodologies resolving dimensionality complications for autism neur...
Understanding_Digital_Forensics_Presentation.pptx
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Encapsulation theory and applications.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Big Data Technologies - Introduction.pptx
KodekX | Application Modernization Development
Reach Out and Touch Someone: Haptics and Empathic Computing
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Teaching material agriculture food technology
Building Integrated photovoltaic BIPV_UPV.pdf
Encapsulation_ Review paper, used for researhc scholars
Mobile App Security Testing_ A Comprehensive Guide.pdf
Modernizing your data center with Dell and AMD

Productive Programmer - Using IDE effectively and various small practices to improve productivity

  • 1. Productive Programmer Using IDE effectively & various small practices to improve productivity 24th Apr 2010 Bhavin Javia, Senior Consultant, ThoughtWorks Indore 2010
  • 2. Agenda Productivity Programmer Productivity Principles of Productivity Using IDE effectively Other productivity techniques and practices Demos and Hands-on Exercises References Q & A
  • 3. What is Productivity ? “ Amount of useful work done over time”
  • 5. We love our computers 
  • 6. They can do a lot more than we think !!!
  • 7. But, we end up doing most of the hard work !!!
  • 8. Programmers are expected to be highly productive especially with computers
  • 9. Programmers Productivity and XP Iterative life cycle depends on rapid analysis, development, testing, deployment and feedback A process can be only as fast as it’s “slowest” step Programmer productivity is a “must have” in such a process
  • 10. Principles of Productivity Acceleration Focus Automation Canonicality
  • 11. Principles of Productivity Acceleration Focus Automation Canonicality
  • 12. Concentrate on Essence, not Ceremony To use a computer You have to boot it Launch applications Provide input via keyboard and mouse Interpret results shown on the monitor Human <-> Computer != Human <-> Human Less human interaction = Faster execution Don’t feed the tool, use it Trivialize interactions – e.g. launching applications
  • 13. Launching Applications – Find what you want
  • 14. Fitt’s Law “ The time required to rapidly move to a target area is a function of the distance to and the size of the target ” T is the average time taken to complete the movement a is the start/stop time of the device (intercept) b is the inherent speed of the device (slope) D is the distance from the starting point to the center of the target W is the width of the target measured along the axis of motion
  • 15. Fitt’s Law D W b a Cursor Target
  • 16. Launching Applications – Tell what you want
  • 17. Demo Quicksilver App Launcher (5 mins)
  • 18. IDE – Integrated Development Environment
  • 19. Acceleration with IDE Language support Shortcuts Code Templates Multiple clipboards Search Macros Plug-ins Regular Expressions
  • 20. Demo Working with Eclipse (10 mins)
  • 22. Eclipse Shortcuts Find a pair and grab a computer Launch Eclipse Find out shortcuts for the following actions Open a Class/Type Open a File/Resource See currently open files Create a new Class/File Find references to the selected method in the project Extract a local variable Assign key bindings to actions if missing Test each other
  • 23. Activity Eclipse Code Templates (15 mins)
  • 24. Eclipse Code Templates Find a pair and grab a computer Launch Eclipse Find out where code templates are configured Use a few code templates to see how they work Create a custom code template to create – A class with a private variable a constructor which initializes this variable getter and setter for the private variable Create a class ‘Wallet’ with field ‘money’ using the template created above © ThoughtWorks 2008
  • 25. Principles of Productivity Acceleration Focus Automation Canonicality © ThoughtWorks 2008
  • 26. Focus Kill distractions Check emails less frequently - Reserve socialization for the coffee/lunch breaks - Turn off notifications - Define core working hours Search, don’t navigate Rooted views Sticky attributes Project shortcuts Virtual Desktops Use IDE plug-ins © ThoughtWorks 2008
  • 27. Demo Virtual Desktops (5 mins) © ThoughtWorks 2008
  • 28. Principles of Productivity Acceleration Focus Automation Canonicality
  • 29. Why Automate ? Make the computer do repetitive tasks Avoid the infamous “human error” Mitigate risks Better ROI Maintain focus on core tasks
  • 30. What to automate ? Automate builds and deployments Automate interaction with websites Use build tools for non build tasks Use shell scripts to extract information Use automation software
  • 31. Demo Selenium IDE (10 mins)
  • 33. Principles of Productivity Acceleration Focus Automation Canonicality
  • 34. What is Canonicality ? Canonical representation : “ The simplest form without loss of information” Canonicality : “ The practice of eliminating duplication”
  • 35. The DRY Principle DON’T REPEAT YOURSELF (DRY) “ Every piece of knowledge must have a single, unambiguous, authoritative representation within a system” - The Pragmatic Programmer, Andrew Hunt and David Thomas
  • 36. Applying DRY to Software Development Version Control everything Maintain single copy if not/can’t be versioned Use separate build machine Use Indirection (links) to sync and share configuration Virtualization Keep code and db in sync DRY Documentation Generate documentation from code Generate code from documentation Avoid multiple representations of the same information
  • 39. References … and my personal experience working with agile teams
  • 40. Q & A Contact: [email_address]