2020-04-19

What is Engineering Productivity?

Every programmer likes different things. I always enjoyed developing tools for the team, automate things and make the developers live easier. A few months ago, I finally stumbled upon a term which summaries all of these things I’m passionate about: Engineering Productivity 💕

Of course it doesn’t make any difference if there’s a term for something or not. But for me it felt like ‘I’m not alone’ and ‘This topic does exist’. And of course it is much more easier to phrase what I really want to do.

But as always, everyone has other things in mind when they hear about Engineering Productivity. There is no one official definition. So let me explain, what Engineering Productivity is for me.

What is part of Engineering Productivity?

Engineering Productivity aims to help developers to deliver high quality code as fast as possible. Most of the people think about Engineering Productivity as setting up environments quickly or have the right test tools and metrics. Of course this is all part of it.

For me it includes especially the following topics (in no specific order):

  • Setup
    Easy setup of a new project with CI/CD and everything you need.
  • Coding
    A useful IDE, easy to setup for new team members and all necessary plugins. (If there is one necessary plugin missing, I’m happy to implement it. 😉 )
  • Process
    Of course the whole process is important. Which meetings do the developer have? Are they useful and are the intervals useful? Where do they loose time because they have to wait? etc. Sometimes things are done because “we always did it this way”, it’s always worth to think about how the process can be improved.
  • CI/CD
    One of my favorite topics. Everything possible should be automated. You should test as much as possible with a minimum build duration.
  • Debugging
    You should have all the tools and knowledge how to debug efficiently. During debugging a lot of time is wasted. Sometimes this is good, because developers learn a lot while debugging. But sometimes it is just a bad setup or a lack of knowledge.
  • Monitoring
    Developers can fix bugs easily if they are discovered quickly. With a good monitoring you will see errors or increasing response times very fast and hopefully can fix it or roll back. Tools for monitoring are sometimes underrated. You need to have a good dashboards and links to further information when something goes wrong. Developers don’t want to waste time by searching through a dozen of different systems.
  • Testing
    The code should be easy to test. For this you need a testing strategy, maybe some testing frameworks, sometimes testing patterns are useful. What is a unit test? When do I want to have an integration test? How to test the front-end, the database, all different devices and which test environments do I need?
  • Documentation
    To be productive you want to find answers and explanations quickly. So documentation is also part of Engineering Productivity. This does include Architectural Design Records, Bug Tracking, Root Cause Analysis, Diagrams, Backlog, etc.

You see, Engineering Productivity is a very wide field and I really enjoy to improve my productivity and the productivity of the team.

Do you miss something? I’m happy to learn about all the areas you think about when you hear Engineering Productivity.