Mobile SDKs (software developments kits); love them or hate them, they're here to stay. They provide our apps with all sorts of functionality that would be incredibly time consuming to build, and they give us another means to monetize our apps. While it would be difficult to argue that SDKs aren’t useful, it’s also hard for developers to get a good idea of the amount of resources used by each SDK once the app is in production ...
When I was an active football player, I took my job as a goalkeeper seriously. During summer I started preparing myself for the new season. I went running and I practiced my skills so I could be in good shape as soon as the new season started.
One summer I wanted to do extra training. As a goalkeeper you not only need to have stamina and speed, but also a strong body to deal with all clashes and falling. Therefore I decided to work on my physical strength. I subscribed for a gym. I thought it would be wise to start with my upper body, training my arms, neck, shoulders, back and stomach muscles. I skipped the leg training, because I did some running as well.
During the season I kept going to the gym to strengthen my upper body. One day I made simple save and during landing something twisted in my knee. The injury came from nowhere, took me two months to recover and I lost my position. I needed to start all over again. The injury was a complete mystery to me and I told myself it was bad luck.
During my recovery I went to the gym again but this time I hired a trainer. This trainer asked me, "Power or cardio?". My answer was power to strengthen my upper body. He printed out some exercises and he was off. Based on this advice I started to do my exercises.
A few months later I was able to restart playing, only this time in the second team as I got used to the game. In the second match I twisted my knee again. This time very badly and I was out for 9 months.
I needed to start all over again. I thought this was bad luck, again. But this time I wanted to come back stronger than ever. I hired a trainer who will guide my whole recovery process to become the best goalkeeper in my competition. The trainer asked for my ambitions and goals. I explained I want to be back as the number one goalkeeper and become champion with my squad. He created a tailor made training program and to my surprise there were exercises to train my legs as well. He said "never skip a leg day". I told him there was no need to train my legs, because I wanted to do running exercises as well. He disagreed on this and said, "train your legs too and it will make you be a better athlete, increase your range of motion, reduce your risk of injury, improve your balance and you'll run faster and longer".
What Does This Have to Do with DevOps?
As a company you want to win the competition by creating awesome products for your customers. The competition is hard nowadays. Big companies are caught up by start-ups and products are more subject to change as they used to be 20 years ago. Products come and go and need continuously adjusted to meet customer needs. To meet customer needs we need to make sure that we organize in a way that we can take advantage of modern technology. Even better, we can fulfill customer needs before they actually know they have the need.
For many companies, technology and the way they are organized are not in sync to meet customer needs. Therefore there is long feedback loop and this leads to low quality, which is costly.
For example, startups have the ability to meet customer needs more than enterprises for several reasons:
■ In a start up, the creators are close to the creation, which means the products fit the needs of the customers really well.
■ The purposeful nature of start ups, people who work there are more motivated.
■ They can easily adopt new ways of working and technology. This is also a must, otherwise they won't survive.
■ The feedback loop is very fast. There are no otiose departments in between.
■ They embrace change to amplify the feedback loop.
If products need to change rapidly you need to be able to do the change. You need to be flexible in making changes. To survive or to be number one in the market, you need to be become an Agile organization.
For me Agile means DevOps. A way of system thinking to amplify the feedback loop and come to come to a culture of continuous experimentation and learning as described by Gene Kim in his DevOps blog.
DevOps means a mindset of:
■ Working together to create great products.
■ Working together as a team where everybody has his own competencies and talents.
■ Working together in your whole organization, both business and IT.
■ Working together with your customers to understand their needs.
DevOps means a mindset of getting better at getting better. You need to get better to fulfill customer needs, and therefore you need to get interested in what your customer wants and make sure the feedback loop will be as short as possible.
Read Part 2, answering the question: How do you reach the state of "get better at getting better"?
Mark Heistek is Head of Delivery and Founder of Devopsense.