If I Can DevOps, So Can You – Part III : “Do I have what I need in the kitchen…”
Congratulations, you decided to cook at home. Now do you have those skillsets required to achieve an edible meal?
Don’t worry, even the worst cook will eventually get to a point where they can eat their creations. Mistakes are part of the learning process, and you, among many others will be making them along the way.
This is essentially modern application and service development as a whole. Agile, the method du jour, works best when utilizing sprints to get incremental change and achievable capabilities versus a traditional waterfall approach, which tends not to handle incremental deliverables and changes to the carefully laid out schedule very well. The mantra of “fail fast, fail forward” doesn’t indicate that failure is ever-present, but as a byproduct of being able to try out, test and see if an idea or direction actually works for the activity being performed. It’s definitely a hard methodology to swallow for organizations who are extremely risk adverse or have a culture where even a small mistake is not tolerated, but in order to be successful with such things, a change in culture is definitely warranted.
So, say as part of this project, or “meal”, you’re adopting this iterative approach to refining your meal, making some smaller versions of your goal meal to try out if you’re getting the flavors you want right. Oddly enough, this may seem a bit odd, doing a proof of concept (or two) for a meal, but many commercial kitchens and catering companies do this every day for their clients. This is also a core tenet of Agile, being able to try some methods without fully committing until you know it’s what you will be needing.
Think that a certain object storage or database may suit your needs initially, only to find out after doing some load testing or some other integration requirement, it doesn’t suit your need – there should be no penalty to swap out another option or even a runner up. Granted, swapping garlic for ginger, both used in certain cuisines, is not really going to get your flavors, but the idea is trying “like for like”, say swapping out an allergen in a recipe for something that agrees better dietarily to you or your diners. The key thing when you run into a demand driven change, is to avoid hyperbole with your tech staff and have a plan in place for alternatives rather than throw your hands up and say you can’t proceed.
However, this is merely the start of your journey to your eventual meal. If this is your first time, and say you were a happy bachelor beforehand, you may not have a stocked knife block, or a cutting board, or more than one frying pan or pot. In your similar technology cases, this would be that you have accounts setup with your possible cloud service providers (even though some may offer a “free taste”), a development, test, quality assurance, and production environment for your developers, and even just having properly skilled developers in the tech and tools you plan to use.
That latter part is often the biggest challenge, but some of the most important parts of modernization or even new, cloud-centric computing development. For your own current state, you have a relationship, or folks on staff, who can make modifications or fixes to your legacy environment. Will those same skills translate into new languages such as Python, Postgres, or understanding the complexities of serverless computing? Do you think your staff or contractors could make the transition, or will you have to hire new staff or upskill who you have already to work through this? You, as a senior technology leader, are the chef but you’ll probably need a sous-chef to help manage this, somebody well aware of those challenges of keeping things running smoothly as you work towards getting everybody aligned to that goal and get a palatable dish at the end of it all.