Devops and The Principle Of Flow

lean-software-development-1-728

In the technology value stream, work typically flows from Development to Operations, steps consisting of functional areas between our business and our customers.

As stated in the lean principles developed by Toyota, we should optimize to get a single-piece fast and smooth flow for our releases.

We increase flow by:

  1. Making work visible,
  2. Reducing batch sizes and intervals of work
  3. Building in the quality, preventing defects from being passed to downstream work centers.

Why a fast flow is needed?

By speeding up the flow through the technology value stream, we reduce the lead time required to fulfill internal and external customer requests, further increasing the quality of the work while making us more agile.

Our goal is to decrease the amount of time required to deploy the changes into production and increase the reliability of those services.

Make our work visible

agile-pm-kanban-board

A significant difference between manufacturing and technology value streams is that our work is invisible.

It’s so easy for work to keep bouncing off between teams and yet have no visual control over it.

To prevent this and make out work more visible, we can use something like a Kanban board. (I prefer Trello for this).

Ideally, our Kanban board will span the entire value stream, defining work as completed only when it reaches the right side of the board.

Work is not done when development completes, but only when our application is running successfully in production.

Limit Work In Progress (WIP)

In technology, our work is far more dynamic than manufacturing. Teams have to satisfy demands of multiple stakeholders. As a result daily work gets dominated by urgent requests for work coming through every communication channel possible.

We can limit multi-tasking by using Kanban board, such as by codifying and enforcing WIP limits for each column on the board.

For example, we may set a WIP limit of three cards of testing. When there are already three cards in the testing column, no new cards can be added.

Using Kanban ensures that work is visible and WIP doesn’t get piled up.

Reduce Batch Sizes

one-piece-flow

Another key component to creating smooth and fast-flow is performing work in small batch sizes. Prior to the lean manufacturing revolution, it was common practice to manufacture work in large batches.

However, large batch sizes result in skyrocketing levels of WIP. According to lean principles, the ideal is a single piece flow, where each batch size is of just one.

Let’s take an example:

Suppose we have ten brochures to mail and mailing each one of them requires 4 steps:

  1. fold the paper
  2. insert the paper into the envelope
  3. seal the envelope
  4. stamp the envelope

Now in the traditional batch processing flow, we will perform each step sequentially for all ten envelopes.

In the lean one-piece flow, only one envelope can be at any given step. In other words, we fold the paper, insert it into the envelope, seal the envelope and stamp it before starting the next one.

How is one-piece flow dramatically better?

In the above example, suppose each step takes 10 seconds. In batch processing, we get our first complete envelope after 310 seconds, but with the one-piece flow we get it just after 40 seconds.

Worst, what if we find that the way we have folded the paper, doesn’t allow the envelope to be sealed. In which case we’ll be in a bigger trouble?

Eliminating hardships and wastes in the value stream

According to the Toyota Production System pioneer Shiego Shingo, a waste is:

The use of any material or resource beyond what the customer required or is willing to pay for

In software development value stream, a waste is anything that causes a delay for the customer, such as activities that can be bypassed without affecting the result.

The following are some common categories of waste that we encounter when implementing lean in software value stream.

  1. Partially done work
  2. Extra processes
  3. Extra features
  4. Task switching
  5. Waiting on QA or testing or acceptance testing
  6. Defects and bugs
  7. Non-standard or manual work

Explaining each of the above point deserves a post of its own. Will do that soon.

Conclusion

Improving flow through the technology value stream is essential to achieving DevOps outcomes. We do this by making work visible, limiting WIP, reducing batch sizes and eliminating wastes from our processes.

All of this will allow us to become more agile and will help in reducing lead times dramatically, and at the same time increasing the quality of releases.

That’s all, folks!

 

Advertisements

Business In Boxers 3 : The Psychological Roller Coaster

One of my favorite things about instrumental music is that the listener is encouraged to use his or her imagination. I have been a huge Owl City and Adam Young fan since forever. Lately he is releasing sets of instrumental music called as Adam Young Scores inspired by incidents that made a lasting impression on the world.  Reading about all those incidents has made a lasting impression on my mind for sure, our small failures and success doesn’t even matter to the world, we have got to make it large.

This month has been a wacky psychological roller coaster. A slow motion wave on the ocean stirring my emotion up like a rain cloud. When you are trying to start something new and you know odds are against you I guess this happens, you become very paranoid in some sense. Each blow shakes your confidence and you have to build that up again. It’s exhausting some time. Here is where a nice snack helps 😀

IMG_20160619_122004

At start of this month we all were very keen towards making the MVP (minimum viable product) ready but my mentor and CEO of the startup where I am working suggested to do a market research and look for idea validation. So one afternoon me and my friend visited few shops and tried to convey the idea to them . Very few got the idea and showed interest. I guess demography plays a vital role here. We all made peace with it that we will need real tangible product to make people excited about it.

But soon things got hard. Workload at intern got high and juggling both my startup and intern got really difficult. This made me think that how hard it would be to manage it with a full-time job. This was the first blow. And soon other members of team took off for exams or campus preparation or god knows what excuse.

Lately realized that to become good entrepreneur you should know the shit you are dealing with. Though I know that we learn stuff on the way, but still first we should invest in our-self. That’s why I am learning rails and other things needed to run the company. Attention to details will cause a momentarily pain in the ass. But it will be worth all the while.

As an overview all startups working on similar domain look the same. It is the one who really dig deeper and strive for great brand experience that makes all the difference. This what I believe in and want to do.

That’s why I took sales course before going to sellers for local survey. This is why I was studying business plan of Vinod Khosla to know and set my goals. This is why I am honing my technical skills. It all comes down to this, you should believe that whatever you are doing can be hard, but in the end it will be worth all the while.

I guess now we are on track now. Now that I have stopped counting on the members who were just pretending to be part of the team, I can be sure of what we can do in certain time. We are now clear to drop every operation and just build the damn product. Period. After 8 months I’ll be graduating and I want to be ready with a use-able product before that.

Meanwhile I am also trying to concrete the company goals. So that we can start moving. Breaking down to achievable goals with deadlines and metrics to measure how we are moving.

One more habit I am trying to develop is to write down my very specific goals for the day twice. In morning and at evening. It kinda helps you keep track. I have also started to workout and exercise more regularly than I used to, it’s good to do more of what makes you feel good about yourself because it reflects in all the other things that you do.

I am still not properly over of thinking whether I am making the right bets or not, I guess you can never tell. It like I am on emotional state of PMS.

But I know one thing for sure, whatever you do your job is to tell the story.

Thanks. See you next time.

 

 

The Lean Startup : Reading Experience

 

My 3rd book of the year was The Lean Startup by Eric Ries. I first got to know about the existence of this book during a keynote video of Gary Vaynerchuk where it was up for display. Finally got the time to read it.

The book focuses on how the lean manufacturing using in Toyota can be used in startups as well. And it makes sense! The case studies to new terms defined all help you shape your mind to run your startup in a lean manner.

Part One : Vision

Start

Traditional management taught in business schools is just not what an entrepreneurial manager need. The uncertain market, the uncertain product requirements all needs to be taken care of. This can’t be done with classic managerial metrics. A startup needs new metrics to track itself.

Define

A startup is human institution designed to create new product or service under extreme uncertainty.

 

Validated Learning

Failure is over hyped in startup world. People are happy to fail and then masquerade it as learning. But are we actually learning in the process?

Validated learning is the metric that startup needs to track its progress that it is making by learning from failures. Validated learning focuses on making use of learning to make tangible progress.

Experiment 

Get into the market as quickly as possible. Bootstrap the product and hit the market. Get the feedback of the customer. Nobody wants to end up building something that nobody wants. Find it as soon as possible.

Part Two : Steer

Build-Measure-Learn Loops

Eric suggests that startup should continuously run Build-Measure-Learn loops within the organization. Use metrics like innovation accounting and learning milestones to track actionable metrics and not to dwell on vanity metrics.

Leap of Faiths

Leap of faiths are the assumptions you make as an entrepreneur that your business depends upon. Entrepreneurs should have foresight, ability and tools to discover which of their leap of faiths are working and which are not.

There are two major hypothesis a startup depends upon :

  1. Value Creation Hypothesis : How you are looking to give value to customers?
  2. Growth Hypothesis : How you think that your product will grow?

Minimum Viable Product : Test It Out

Only way to test your hypothesis and leap of faiths is to hit the market.

Best way to do so is to create an MVP, that consists of your core business features. Make sure that customer actually wants what you are building.

A very good example is Dropbox : Their MVP was a video showing how it will work. It was enough to let them know that there is need for there product in the market.

Concierge MVP  : It is testing MVP with selected customers that you take feedback from in exchange of VIP treatment and support.

Measure 

How do you know that your product is improving? Innovation Accounting is again a metric that allows you to do so. It involves 3 steps.

  1. MVP
  2. Learn – Lean towards working business model
  3. Pivot or Persevere

Cohort Analysis and Split Testing

How do you know which change in product is steering the change in customer behavior? Cohort analysis and split testing is used to test different versions of products with different customers at the same time. This allows us to test features and do innovation accounting properly.

Kanban or Capacity Constraints 

Kanban is an agile development methodology that doesn’t allow new features to be added in backlog until implemented features are validated.

Pivot or Persevere 

The most important decision for a startup is to persevere current approach or pivot.  Pivot is special kind of change designed to test new business hypothesis about the product.

Eric states 10 types of pivots in the book :

  1. Zoom in Pivot
  2. Zoom out Pivot
  3. Customer Segment Pivot
  4. Customer Need Pivot
  5. Platform Pivot
  6. Business Architecture Pivot
  7. Value Capture Pivot
  8. Engine of Growth Pivot
  9. Channel Pivot
  10. Technology Pivot

PART THREE : ACCELERATE

Batch

Eric focuses on the point that startups should now follow large batch production systems but instead work on small batches. This means shortest possible release cycles and always keeping customer involved.

Grow

Startups should focus on sustainable growth. A sustainable growth is when new customers are drive towards the product by the actions of previous customers.

Engine Of Growths

There are three engine of growths that can exist in a startup :

  1. Sticky Engine of Growth : Customers stick with the product for long term.
  2. Viral Engine if Growth : Customers spreading the name of the product as side effect of using the product.
  3. Paid Engine Of Growth : Promotions and stuff.

Paid engine of growth is only profitable when customer lifetime value is greater than cost per acquisition.

Building an Adaptive Organization

Startups should focus on building an adaptive organization. Don’t go too fast nor too slow, don’t get too structures neither lack any structure at all.

The 5 Whys

As used in Toyota. 5 Whys is asking 5 level of whys on every problem. This helps you to get to the root of the problem.

Beware this should not become game of 5 Blames where each team keeps blaming other.

Innovate

Startups should provide platform for their employees to innovate. Best way to do so is to create an innovation sandbox. New features are added within this sandbox and are tested on early adopters segment of customers. Take validated learning out of it and move forward.

Also key is to hold the internals of the startup accountable for their actions. This will increase sense of belonging-ness among the employees.

 

It was a great read. All stuff you read about makes perfect sense. All the problems the book states are real world problem and if you are in touch with startups are not new for you.

 

My next book is Founders At Work : Story of Startups’ Early Days. Excited to read this one.

 

 

 

Starting c/c++ programming in Linux.

So, guys this post is just a kick off to my blog.

This post is about coding in c or c++ in Linux . So, if you are a beginner looking to get your hand on coding in c or c++ in Linux, this will be of great help.

STEPS:

1.You can use gedit or i recommend you download Sublime Text for Linux.

2. Select your language as c/c++ and code and save the file.

3. Open the terminal and use cd (change directory ) command to get to the directory in which you have saved your program .

4. Now, type ” gcc  -o name name.c” and hit enter. This will create the object code of your program and compile it and reports the error( if any )  which can be read by your computer,

5.To run your program ,type “./name”. And hit enter.

6. And you are done.