10X —The Optimization Manifesto

Dennis Nerush
Sears Israel
Published in
4 min readFeb 9, 2017

We all want to be better in what we do.

We want our team to move fast and stay focused on our goals. We want to increase velocity and reduce waste.

This process is called optimization, and I have simple guidelines that help me focus on what can really boost my team’s performance.

I call it the Optimization Manifesto, and I wish to share it with you.

The optimization manifesto

  1. We prefer to have a single dashboard over working with multiple apps and screens
  2. We prefer to have a single button over manual work
  3. We prefer to be independent over relying on other teams
  4. We prefer to keep evolving our system instead of operating it

Let’s talk a little about these 4 principles.

We prefer to have a single dashboard over working with multiple apps and screens

I have a process that downloads some data from the web and puts it on an FTP. Then it moves it to another one… then inserts some data to MYSQL… then adds some more data to Mongo and then… Well, you get the picture.

If I want to follow this process in case there was an error, I need to have at least 5 different applications open in front of me.

It requires lots of prior knowledge and tons of context switched between every app, and obviously it takes a lot of time. The system can be complex and it can require all those apps, but it shouldn’t be the only way to understand what is going on.

Build a dashboard in some support app that will fetch all the necessary data from everywhere and present it in a way that will allow you to investigate issues without even leaving it. You should open other apps only after you have understood what the issue is and how to fix it.

We prefer to have a single button over manual work

Think of all the times you needed to connect to some server, execute a task and then use Postman to call some remote API after you deleted a row in the DB, only to update some counter.

We already know that doing manual work is hard, wastes time and might be done wrong. That’s why we have continuous deployment, right? Same principle should be applied here:

“If you are doing manual work - you are doing it wrong”, Me :)

Build a button that will trigger any process and perform any action instead of you. Expose API endpoints that will be triggered automatically after you click that button. It will save you time and reduce errors.

We prefer to be independent over relying on other teams

We are not always alone; we have other teams who are responsible for different parts of the system that our processes rely on. Don’t get me wrong, I’m not saying you should be responsible for everything. Devops is a great example, I don’t want to have their responsibilities along with mine.

However, I don’t want to depend on them in order to perform my work. I don’t want to wait for them to come back from lunch so that I can re-index my data in Elastic or execute some service. I want all these actions, which I rely on, to be exposed via API’s or other ways, so that I’ll be able to operate them by myself, and later build a button for them.

It is more complex since you cannot make others do everything you ask for. However, if you explain that this work will stop you from nudging them, then, usually, they will be happy to do it.

We prefer to keep evolving our system instead of operating it

We all work on complex systems and build incredible stuff. Our processes require having context and a lot of domain-specific knowledge. However, it doesn’t mean that you and your team are the only ones who are able to change data, perform actions, investigate/fix issues in production and be the only ones who really know what is going on.

You should provide simple tools that will answer some of the questions for you and will allow others to operate your system. If you need to add new data or modify the existing one, then expose actions via a CMS tool and delegate this responsibility to others (content managers, support team, etc.).

Build clear dashboards that present all the data and statuses of your domain, allowing anyone to understand what is going on and whether everything is alright. You can even take it further and provide simple tools for investigating and fixing issues. This way, you can focuses on evolving your system and let other operate it for you.

This is my optimization manifesto. I constantly try to focus on which aspects of my team’s work can be improved in order to reduce waste, increase velocity and let us focus on what really matters.

How do you optimize your work? Share it in the comments.

Best,

Dennis

--

--