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]

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 ProgrammerProductivity 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”
  • 4.
  • 5.
    We love ourcomputers 
  • 6.
    They can doa lot more than we think !!!
  • 7.
    But, we endup doing most of the hard work !!!
  • 8.
    Programmers are expectedto be highly productive especially with computers
  • 9.
    Programmers Productivity andXP 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 ProductivityAcceleration Focus Automation Canonicality
  • 11.
    Principles of ProductivityAcceleration 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 DW b a Cursor Target
  • 16.
    Launching Applications –Tell what you want
  • 17.
    Demo Quicksilver AppLauncher (5 mins)
  • 18.
    IDE – IntegratedDevelopment Environment
  • 19.
    Acceleration with IDELanguage support Shortcuts Code Templates Multiple clipboards Search Macros Plug-ins Regular Expressions
  • 20.
    Demo Working withEclipse (10 mins)
  • 21.
  • 22.
    Eclipse Shortcuts Finda 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 CodeTemplates (15 mins)
  • 24.
    Eclipse Code TemplatesFind 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 ProductivityAcceleration Focus Automation Canonicality © ThoughtWorks 2008
  • 26.
    Focus Kill distractionsCheck 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 ProductivityAcceleration 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.
  • 32.
  • 33.
    Principles of ProductivityAcceleration 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 PrincipleDON’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 toSoftware 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
  • 37.
  • 38.
  • 39.
    References … and my personal experience working with agile teams
  • 40.
    Q & AContact: [email_address]