Productivity – foundations

Productivity

Always on-time, more at the same time, quicker, under control, planned, delivered. Productivity topics should be important not only for developers but for their bosses and clients as well. Being productive outside of a programming world won’t hurt either.

Below are general points about productivity explained from a developer’s standpoint.

 

1. Automation

Automation saves time and prevents silly mistakes, thus saving time possibly spent on fixing mistakes in repetitive tasks.

Processes can be automated too, e.g. by creating templates for documents: requirements gathering, project planning, testing.

Common tasks like debugging can also be either documented and followed, or remembered and followed automatically when needed.

Long tasks or tasks prone to mistakes like deployment, environment configuration, test data configuration, etc. should be scripted.

There are add-ons for IDEs created to improve the working speed with the code. Developers will save time in future projects by creating own snippets and libraries.

Another kind of automation is a keyboard shortcut. Many mouse pointing, clicking and dragging are condensed in a keyboard stroke.

 

2. Return on investment

Before automating everything a question should be answered – is this really needed now?

Let’s say the deployment takes ten minutes manually and writing an automated script is a work for two days. The next step is taking into account how often deployments take place and how problematic possible mistakes can be (both in the script and manual process). Finally, it may be better for the script to wait in the backlog for a better time (after the important deadline).

Creating a reusable library takes longer than a project-specific code, but can be useful in the future. Adding more maintainability is longer as well, and can save a lot of time. Cases like these should be analysed individually.

Keyboard shortcuts

Learning productivity tools and shortcuts is going to take some time in the beginning.

productivity-keyboard-shortcuts

There are better ways than not using the mouse at all. Keyboard vs The Mouse on Coding Horror may shed some light.

Relying on the tools, configurations and custom shortcuts may backfire when moving onto the new workstation.

And what is a point to memorize shortcuts for an app used only once a month? It makes sense for an IDE if being used often through the workday (which depends on additional daily duties developer has).

Moreover, learning shortcuts should happen more like this:
“I’m commenting large blocks of code by adding // at the beginning of each line and I can’t use /* */. It takes a lot of time and I’m doing it third time today. There must be a way to select the whole block, comment it or uncomment it, using a shortcut”.

Or this:
“I will skim the list of shortcuts from documentation to discover something useful, put it on my TODO/table/desktop and try to apply when needed. When I get comfortable with using it, I will move to the next shortcut.”

But not like this:
“Today I’m going to spend two hours learning all the shortcuts to manipulate windows in this IDE”.

And finally, is lack of shortcuts or typing slowly your bottleneck? If not, more productive would be fixing the bottleneck first. E.g. slow workstation or not being familiar with domain/codebase yet.

Remember – always question the cost before applying any productivity boost tip.

 

3. Self-organization

To be productive things have to be organized. Planned, prioritized; some calendar / TODO apps will come in handy.

Use techniques as:

Another aspect here is removing distractions. Finding a way of letting others know you are in your productive time and they should wait if something is not urgent. Like wearing headphones.

You can read how much impact distractions can have in the Maximizing Development Productivity article by Dave Chaplin.

 

4. Learning new paths

Questioning current ways of doing things and learning about new practices, new tools and new versions of the IDE can be beneficial for productivity.
Think about a situation where you discover that something currently done manually is now automated in the new version.

The fact that the new IDE will save you more time should be a good point in negotiations about the update. And consider if the time spent on switching to it compensates possible gains.

 

5. Mind and body

It’s hard to be productive if someone didn’t sleep well lately, well it’s hard for me. If one more hour of sleeping can provide two productive hours in the morning, it’s worth it. I’m addicted to sleeping but I know many of you prefer the alternative:
productivity-coffee-cup

The list for being more energized to work goes on: eating well, physical activity, avoiding stress, having a comfortable chair and keyboard, just to name a few.

 

Summary

Productivity is a very broad topic, I’ve just added some perspective to look at it and presented few practical tips. For more, browse productivity category and productivity tag on my blog.

By the way – the shortcut for comments in Visual Studio is Ctrl+K Ctrl+C (comment) and Ctrl+K Ctrl+U (uncomment).

 

2 thoughts on “Productivity – foundations

  1. Want to develop to be a better person that is the main capital to be productive and creative, but the leader and work environment are also things that must be considered too. Many leaders pay less attention to the performance and needed by employees to be more productive, many are now passive leaders with work environment

    Reply

    1. Thank you for the comment.

      If the leader / manager does not encourage productivity and automation, but does not discourage neither, there is a grey area to improve oneself and the team.

      The fact that you learned something or improved will stay with you.
      If that would not be noticed in the current job, it may in the next one. If leader will not notice, coworkers will. In the worst case, you will know that you did your best and you will be happy with your accomplishment.

      Reply

Leave a Reply to Slawomir Wrona Cancel reply

Your email address will not be published. Required fields are marked *