Your SlideShare is downloading. ×
Productive Programmer - Using IDE effectively and various small practices to improve productivity
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

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

1,315
views

Published on

The presentation from my talk on Programmer Productivity at XP Days Indore 2010. The target audience was MCA students, faculty and members of IT industry in and around Indore.

The presentation from my talk on Programmer Productivity at XP Days Indore 2010. The target audience was MCA students, faculty and members of IT industry in and around Indore.

Published in: Technology

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,315
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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”
  • 4. Programmer Productivity Why worry ?
  • 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)
  • 21. Activity Eclipse Shortcuts (15 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)
  • 32. Demo Automator (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
  • 37. DRY Documentation
  • 38. Demo Migrations (10 mins)
  • 39. References … and my personal experience working with agile teams
  • 40. Q & A Contact: [email_address]