Productivity is topic that often is ignored by a lot programmer. I have seen a bunch of documents out there talking about algorithm and data structure, so I would like to post a topic about productivity for an advanced programmer or for the programmer who wants to be a better programmer. So what exactly mean productivity in software development field? If you have seen my previous blog post ' Framework I have been working… (Part 1) ’ and ' Framework I have been working… (Part 2) ‘, then you might already know what I am going to write about for the rest of this article.

So what essentially methods that we could do to improve the productivity for ourselves as a software engineer? First of all, I would say build your tools. Anything that could speed up the development process will increase the productivity of the project. It sounds straightforward to make your tools or library, but when you start making it, it actually kind of hard to make. That I have heard of a lot of people asking me how to make a library for other people to use?

Building a tool is hard and time-consuming. The first thing to make your tool is to have learned Design Pattern (I have already mentioned few books I recommend in my previous post - ' Framework I have been working… (Part 1) ‘). Attention, learn design pattern is to learn how to build a better software architecture. Not to learn how to use a design pattern in your code! I have seen programmers use design pattern all the time and feel bad about it because they seem to be attempt to use design pattern instead of designing a software architecture.

Once you have the skill and knowledge of design pattern. I would recommend seeing how other people build their tools on any open source platform. As everyone knows GitHub, GitLab, SourceForge, etc. Designing tools are thinking about how to make other programmers feel comfortable when using your tool. Think what kind of params have to pass into this function? Think is this feature that is needed to be here/design?