Robert's blog
Robert Važan

My thoughts on productivity of programming

Practical productivity tips from veteran developer. The point is to do smart work instead of hard work,

There's never enough time for coding. Awesome things can be done with software except that it takes ages to do anything, even the simplest of the tasks. Productivity is key in all projects, simple or complex, small or large. Here are some of my thoughts on the subject.

Keep working late. It improves productivity massively. It's impossible to be productive in open plan office except in the evenings.

Kill all bugs and misdesigns mercilessly. Don't delay anything. Backlog is insanely expensive. Bugs should be shot on the spot without warning.

Go after specific goals rather than mindlessly completing tasks. Work with a vision of a particular feature being used by particular people. Goal-oriented coding will naturally prioritize all subtasks. It will also serve as a more meaningful benchmark of productivity.

Keep the code short and close to domain language. Uncontrolled complexity explosion caused by insufficient or improper abstraction will quickly drag you down. Keeping the kitchen clean is a prerequisite for quick and quality cooking.

Libraries, components, and patterns are hard to find. Search engines are full of noise. Websites for 3rd party components are usually confusing, inconsistent, and filled with meaningless marketing language. That makes component search so expensive it's usually not worth the trouble. Custom solution is usually better unless the choice of external component is obvious. Custom solutions have an additional advantage of a better fit with the rest of the code.

I am solving too many hard problems, which is severely time-consuming. This is related to the lack of good 3rd party components I mentioned above. The languages we use today aren't much help when trying to control complexity either. I see many opportunities for improvement here, both in languages and libraries. Watching the progress and upgrading quickly is usually worth the time invested.

This list is not exhaustive of course. I will likely write more posts like this in the future.