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 ...
The Muscle Groups of a DevOps Transition
When you start to work out in order to get your body and mind in shape, you need to know why you want to do it, how you want to do it and what you need to do. In my case it was:
WHY: Become the best goalkeeper in the competition in order to become champion with my squad.
HOW: Get to a certain level of physical strength and mental well being.
WHAT: Follow a balanced routine to train all muscle groups based on best practices and with help of professionals.
By answering the why, how, what questions I had a clear understanding of how to achieve my goals. The injuries were caused by an incomplete view of what to do to reach my goals. I was optimizing the upper body and neglected my legs. I did not reach out to good trainers to help me to understand my "why" translating this to my "how" and "what".
The neglection of "legs" or "skipping the leg day" happens a lot in companies where they transform towards a DevOps organization. I am going to explain this based on the pillars or "muscles groups" of a DevOps transition.
To transform towards a DevOps organization you need to cover all DevOps "muscle groups". Let's dive into these groups.
Profit driven towards Culture-Purpose driven
Purpose driven companies gives them the ability to measure customer satisfaction. Well defined measures give manageability and therefore a feedback loop to learn and improve your product or product delivery. If you are not purpose driven you can cannot measure progress of your product.
For more insights I'd like to refer to this Financial Times' article of Simon Caulkin.
Waterfall structure towards Agile/Scrum
The waterfall methodology of building software products can be compared by constructing buildings.
■ You analyse what to do and arrange budget for developing the building
■ You hire a few architects to design the whole building
■ You hire a construction company to build the building based on the design and specifications
■ Finally you open the doors and hand over the keys to the new residents
This process can take months or years.
Since software products need to change rapidly to meet customer needs and external circumstances, the waterfall methodology takes too much time.
You need to move away from creating big blocks of software and start to deliver small products which can be improved based on customer feedback. An Scrum framework can be used to achieve this. Working is short periods to shorten the feedback loop.
Implementation of the Product
Manual delivery towards Continuous Delivery
Delivering increments to add value to your product means doing the same process over and over again. This can result in dull and repetitive manual work. There is also a huge possibility of making mistakes.
Tools to build, test and deploy your software can do the dull and repetitive work for you. They'll do it faster, make no mistakes and therefore a higher quality.
By automating the delivery process you can reuse the process as much as you like and get instant feedback, so you can immediately respond to improve the product.
Monolith towards Micro Services
Creating changes to a monolith application can have a huge negative impact to your product. A monolith application is build with many dependencies, so it is hard to change just a small part without taking into account the effect on other parts in the application. It can break quickly.
Breaking down your application towards micro services makes it much easier to make small changes. When it breaks it will not affect other micro services, so your application will just not work in a small part. Benefit of this you can do changed independently and when it breaks, you can fix it quickly.
Autocratic towards Autonomy
Delegate to the team. Do not tell how to do stuff, but coach them to improve themselves, so they can improve the product. Let the team decide how to change the product. Give trust to the team and give them time to proof this trust.
If you want to get better in doing things better, you need to fail and learn. Failing is not an option, it is a must.
You Can't Change Overnight - It Takes Time and It Will Hurt
The change towards an Agile organization with a DevOps mindset is a natural one. It can not be captured in processes and procedures.
DevOps is more than just a way to build better and faster software/products. It's more than just a cultural shift in the way we work. DevOps is a self-organizing force that becomes part of your company DNA, driving complete organizational change. Therefore you can never skip a leg day in DevOps. All muscle groups matter and it will make your company a better athlete, increase its range of motion, reduce its risk of injury, improve its balance and it will run faster and longer.
Practice every day. Take small steps. Fall, get up, learn and get better.
Mark Heistek is Head of Delivery and Founder of Devopsense.