During my career I have been working on many different projects in the IT industry. I have experience with several different architectures and technologies. 

The article discusses how to increase a programmer’s productivity by

  • Reduce application build time
  • Reduce project setup time
  • Reduce interruptions of programmers

The content is based on my personal experience and is recommended to both developers and project managers. 

REDUCE APPLICATION BUILD TIME

Build and run application is daily routine which each programmer executes several times daily (5-20 times depends on project and workload that day). So, it is crucial to be as fast as possible.
Here is my bad example:
Previously, I was working in a big team of 17-20 people. That big team was split into two smaller sprint teams. Each of them had around 5-6 developers, the rest of the team members were business analysts and testers. We had a really poor build setup, some configurations were saved in database, and we needed to perform the following steps upon building and running the application:

  • Delete and restore the database
  • Build application
  • Run migration scripts
  • Run application

The average time for this was 15 minutes. So, imagine that you would do this routine at least 5 times a day? And what if you need to do it more than 20 times?

Let’s calculate how much time a developer in our team lost daily, monthly and yearly. The programmer approximately worked around 6h per day, the rest of the time was spent on meetings and administration. Approximately, developer built and run the application locally 7 times per day

 7 x 15min = 105 min were lost per day.

 5 x 105 = 505 min(8h 20min) were lost per week -> Considering that a working day has 6h of productive work, more than 1.4 days were lost per week! 

 4 weeks x 1.4 day = 5.6 days were lost per month.

 12 months x 5.6 day = 67.2 working days were lost per year!!! It is around 3 working months.

One developer lost 3 months per year on builds, the team of 5 developers lost 1.25 developer per year. In my situation the other team was also working on the same project. So, in total we didn’t use 2.5 (of 10) programmers per year. When I talked to management about improving the build process, the answer was “We don’t have time for that” – which made me do the above   calculation – the result was astonishing as you can see.

Maybe your project has faster build and run procedure, but you can use my example and asses your own routines. If you can reduce the time of build for 1 minute you will save 4.48 working days per year per developer. If you got the same answer from management like me, then you can show them this calculation. Of course, all of these numbers are based on my assumptions and might not apply to your project. In any case, it is worth investigating. 

There is also another side effect of a long lasting routine which the programmer needs to perform daily. When a programmer, like any other person, needs to wait for something he or she will probably be distracted and lose the focus on the current problem he/she is trying to solve. Sometimes he/she will not return to the specific task immediately when the routine is done, but might rather take minutes and sometimes hours before the focus and productivity is reestablished.

Suggestions for improvement:

  • Invest time in order to get as much faster build of an application as possible
  • Talk to management and explain how much developers lose with a slow build of an application
  • Maybe building and running the application is good on your project, but you have another routine which programmers do daily – try to improve it.
  • Invest in faster computers

REDUCE PROJECT SETUP TIME

 Project setup process could be very complex and hard. I had a bad experience when I was working on a project where I spent around 2 weeks to setup a project – not just me, other colleagues were helping me all the time. So, this is also one example how programmers could utilize their time more wisely.

This problem is mostly related to old legacy systems and I have a couple suggestions for improvements.

What makes the setup complex and time consuming?

It mostly depends on the project, but for sure some of the reasons are configurations and installation of third party tools (Database server (SQL server), Message broker (RabbitMQ), Docker and etc.). You should aim that your code becomes machine independent. Using cloud versions of third party tools reduce time of setup a lot and on the other hand simplify the configuration. 

Using cloud database server

Choose one of the cloud providers (Amazon, Azure etc), some instances are free or at least affordable, because for development environment there is no need for a big/fast instances. 

You could create dev-database, that database could be used by all programmers in the team. If needed, you can create the database per developer.

Put the connection string in the dev-configuration file. When a new programmer sets up his environment, after cloning the repository he just needs to build and start the application. The application will be connected to database.

What are the benefits:

  • No need to install SQL server locally
  • No need to change configuration file to point your local database
  • No need to create database and execute migration scripts. So, one person can maintain this database.

Using cloud message broker (RabbitMQ)

There is the https://www.cloudamqp.com/. It’s very easy to setup an instance, there are also other possibilities like alarms and etc. Maybe you think it is not fast, but try it – it is pretty fast.

The procedure is the same as for SQL cloud, and benefits are similar.

If your team is using some other third party tools, try to find cloud version of them, if you can’t find them – that could be a good idea for start-up 🙂

Two months ago, I was responsible to onboard a new team member. The setup of the project lasted only 15 minutes. Just cloning repo and start the application. He started coding on his first day! 

REDUCE INTERRUPTIONS OF PROGRAMMERS

Programmers spend a lot of time on an abstract thinking. Abstract thinking is very hard and requires full concentration. In that period every interruption is fatal for the process of thinking. The next picture explains the situation about interruptions a bit better. 

So, this picture illustrates typical interruption in the middle of the deep (abstract) thinking. The average person needs around 15-20 minutes in order to put his/her brain into beta rhythm and every interruption resets the process. There are few suggestions how to reduce interruptions:

  • If you are working in an open-space office use noise canceling headphones. The open-space office is not recommended for programmers. It is much better if it’s possible to have offices with 3-5 people.
  • Make an agreement with your team members to not interrupt each other during work. You can start using flags, if a red flag is on the table, that means developer is in the deep thinking/working, otherwise you can talk with him.
  • Plan your daily activities and create few time windows for fully concentrated work. That time shouldn’t be more than 90 minutes and less than 30 minutes. In that window, will be good to:
    • Put your phone on Do Not Disturb mode
    • Turn off email, IMs and other communication tools on your PC
    • Put red flag on the table

CONCLUSION

The problems which I mentioned above are related to my career and projects. Maybe, you and your team have similar problems and I hope this article will help you a bit in order to solve them. The crucial thing is to start analyzing both your project and your daily habits. With a few small changes you can get very good results. 

Senior Software Developer

Aleksandar Cetkovic, Northprim