programmer productivity

18

Click here to load reader

Upload: japneet-singh

Post on 30-May-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 1/18

Programmer Productivity

By Japneet Singh

Page 2: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 2/18

Productivity

• Defined as amount of useful workperformed over time

•Productivity is relative

Page 3: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 3/18

Problems related to Productivity

• Due to improvement in computer interfaceto make it easy to use, developersefficiency has reduced.

• The stuff which makes computers easier to use (like GUI) also acts as a hindranceto developers trying to get bestperformance out of computers.

Page 4: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 4/18

Principles of Productivity

• Acceleration• Focus

• Automation• Canonicality

Page 5: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 5/18

Acceleration

• Becoming more productive by speedingthings up.

•The less you interact with your computer,the faster you can go.

• Concentrate on essence, not on ceremony

Page 6: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 6/18

Acceleration – Launching

• Launching Pad : Usefulness of applicationlist is inversally proportional to its length – Launchers

• Example : Launchy

– Create a Windows launching pad

Page 7: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 7/18

Acceleration – Accelerators

• Accelerators : Typing is faster than mousing – Operating System Accelerators

• Windows address bar • Windows shortcuts

– Clipboard(s) : Context switching eats time• For clipboarding in batches use clipboard stacks.• Example : CLCL

– Command history

• F8 for matching executed command search• F7 for executed command list

– Command prompt Explorer bar – “Open Command Window Here” Power Toy

Page 8: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 8/18

Acceleration – Accelerators contd.

• Development Accelerators : Coding is text based activity. Prefer keyboard over mouse – Full screen mode in Visual Studio :

Alt+Shift+Enter – Visual Studio Keyboard shortcuts : Learn

keyboard shortcuts in context, not by reading long lists

– Code snippets• Macro Recorders

Page 9: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 9/18

Focus

• Improve productivity by reducing clutter of environment and avoiding needless distractions

• The higher the level of concentration, thedenser the ideas

Page 10: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 10/18

Focus – Block distractions

• Block audible distractions in your environment by listening to music usinghead phones

• Block visual distractions like E-mailnotifications, needless notifications likeballoon tips (using Tweak UI Power Toy).

• “Black out” the background :JediConcentrate• Create Quite Time

Page 11: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 11/18

Focus - Search

• The bigger the haystack, the harder it is tofind the needle

• Use Search software to search filesystem – Example : Google Desktop Search

• Use regular expression searching featureof Visual Studio

Page 12: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 12/18

Focus – File System Explorer

• Use rooted views – explorer /e,/root,[DirPath]

•Explorer alternatives• Use project-based shortcuts

Page 13: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 13/18

Focus – Desktop

• Segregate your Workspace with VirtualDesktops

Page 14: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 14/18

Automation

• Making your computer do more work for you

• Computers are designed to performsimple repetitive tasks over and over reallyfast. But, people are performing simple,repetitive tasks by hand on computers.

Page 15: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 15/18

Automation

• Batch Files• Scripting

• Windows Power Shell• Use Selenium to walk web pages

Page 16: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 16/18

To automate or not to automate

• Justifying automation is about return oninvestment and risk mitigation

• Ask following questions: – Will it save time in long run? – Is it prone to errors and therefore will take

time to bring it to stable state?

– Does it destroy focus? – What is the hazard of doing it wrong?• Don’t shave yaks

Page 17: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 17/18

Canonicality

• Canonicality refers to practice of removingduplication.

• Remove duplication of information andcreate single source of information

• A canonical representation refers tosimplest form without loss of information.

Page 18: Programmer Productivity

8/14/2019 Programmer Productivity

http://slidepdf.com/reader/full/programmer-productivity 18/18

Focus

• Version Control - Everything required tobuild project should reside in VersionControl (including binaries).

• Build machine – Canonical build machineshould not include development tools youuse to create the project, only the librariesand other frameworks needed to build theapplication.