Search This Blog

Lean Thinking for DevOps and Software Architecture

Lean Thinking were and still is a big thing. The last Lean manifestation for me is on the DevOps Movement. That's the idea, unfortunately not every company is lean at all. A Lean approach is everything. Some people may call it vision, which is the ability to think in a very specific way. The reality is: It is broken and does not deliver what the business want. In order to archive high performance, you need more than just new techniques. Think lean is not hard but it need to carefully put in practice every day. It's very likely your company have a monolith application and you are trying to slice it and do DevOps like pretty much everybody else.

The Broken Escalator

If you are working with DevOps currently you have to agree with me - there are lots of different technologies around. The explosion of frameworks, libraries and SaaS available today is awesome and crazy at the same time. It's easy to get lost and not deliver. In order to be more effective, you need approach things with the right mindset.

I believe this mindset is very Lean. I call it the Escalator. Imagine you have a task to perform and this task requires you to do one simple thing which is going to the 10th step on the escalator. But there is a problem the escalator is shut down and you need to walk. You may think you just have one task wich is the 10th step but actually, you have 9 other things to do before in order to archive your goal. This effect happens so, so often.

People struggle sometimes because you can't know everything, nobody does, especially today. So how could I fix it? Well, you need to back to the basics and go Bady Steps. Go back to the first step and they slow move step by step. When you reach the 10th step everything will make sense. What we don't realize is most of the times are trying to go to the 10th step without knowing the pre-requirements.

Let's say you need to build a Jenkins pipeline, but you don't know Jenkins, you don't know Groovy, You don't know S3, You don't know even bash script. That's the escalator issue. You need to deliver the Jenkins job, however, you will need to step back and learn the other things first in order to understand what you are doing and them doing that you will go FASTER not slower.

Dimensional Quality

Another interesting idea to me is to work with dimensional quality and be able to do things by waves. This is another very Lean way to think. Instead of doing you single shot in a very waterfall-ish approach you can revisit tasks you did and improve the quality later.

I found this approach better because you need to many things and doing just one thing is not enough. The metaphor I like to think about is the mid-class couple buying an apartment, pretty much my case :-)

Here is Brazil often people don't have money to buy all the things you need up front so you need to do a very Lean and very smart money allocation, for instance, you might buy the bed first and them by a microwave and them buy a shower. You won't finish one entire room before going to another. So this is the dimensional quality you don't see the quality and a BIG STATIC WATERFALL-ISH block. This approach works very well with software architecture when you are slicing the monolith because you have the same situation.

The Broken Escalator and the Dimensional Quality are two metaphors I use in order to teach people how to stick with the Lean Thinking for DevOps and Software Architecture. Working with this mindsets allows us to make fewer mistakes and have less waste. Ultimately you get more things done with less stress as well.

Popular posts from this blog

Akka a great actor framework for the JVM. Akka is high performance with high throughput and low latency, resilient by Design. It's possible to use Akka with Java however I always used and recommend you use with Scala.

Create actors systems is pretty easy however creating multiple nodes on Akka cluster locally could be boring and error-prone. So I want to show how easy is to create an Akka cluster using Scala and Docker(Engine & Docker-Compose). We will create a very simple actor system, we will just log events on the cluster however you can use this as a base to do more complex code.