Despite all the cloud talk and where I live, it is like the cloud mecca, for enterprises it is still quite new and many are just starting to think about it. A hard lesson that many of us learn (and partly how we amass our scars) is to design for failures. For those, who run things in their enterprises data center, are quite spoilt I think. Failures are rare, and if machines or state goes down, moving to another one isn’t really a big deal (of course it is a little more complex, and not to say, there isn’t any down time, or business loss, etc.).
When thinking about a cloud migration (hybrid or otherwise) – a key rule is that you are guaranteed to have failures – at many aspects, and those cannot be exceptional conditions, but rather the normal design and expected behavior. As a result, you app/services/API/whatever needs to be designed for failure. And not only how your loosely couple your architecture to be able to handle these situations, but also, how the response isn’t a binary (yay, or a fancy 404); but rather a degraded experience, where your app/service/API/whatever still performs albeit in a deprecated mode.
Things that can throw one off, and is food for thought (not exhaustive, or on any particular order):
Managing state (when failures is guaranteed)
Latency – cloud is fast, but slower than your internal data center; you know – physics. 🙂 How are your REST API’s handling latency, and are they degrading performance?
“Chatiness” – how talkative, are your things on the wire? And how big is the payload?
Rollback, or fall forward?
Lossy transfers (if data structure sizes are large)
DevOps – mashing up of Developers, and Operations (what some call SRE) – you own the stuff you build, and, responsible for it.
AutoScale – most think this is to scale up, but it also means to scale down when resources are not needed.
Physical deployments – Regional deployment vs. global ones – there isn’t a right or wrong answer, it frankly depends on the service and what you are trying to do. Personally, I would lean towards regional first.
Production deployment strategies – various ways to skin a cat and no one is right or wrong per se (except, please don’t do a basic deployment) – that is suicide. I am use to A/B testing, but also what is now called Blue/Green deployment. Read up more here. And of course use some kind of a deployment window (that works for your business) – this allows you and your team to watch what is going on, and take corrective actions if required.
Automate everything you can; yes its not free, but you recoup that investment pretty quick; and will still have hair on the scalp!
Instrument – if you can’t measure it, you can’t fix it.
Again, not an exhaustive list, but rather meant to get one thinking. There are also some inherent assumptions – e.g. automation and production deployment suggests, there is some automated testing in place; and a CI/CD strategy and supporting tools.
Bottom line – when it comes to cloud (or any other distributed architecture), the best way to avoid failure is to fail constantly!
Recently, a few of us went through a workshop where one of the ‘homework’ was to score oneself, on the following 7 aspects – some of these are attributes that allows one to grow from being (hopefully) good managers to great leaders.
In most enterprises, as one grows in their career, managers need to acquire new capabilities – and quickly. What they have, in terms of skills and capabilities and got her or him to this place, won’t be enough for the next step – as the scope and complexity increases it can leave executives underwhelmed. At the core, new executives need support on these seven dimensions that will help them make this transition.
Specialist to generalist – Understand the mental models, tools, and terms used in key business functions and develop templates for evaluating the leaders of those functions.
Analyst to Integrator – Integrate the collective knowledge of cross-functional teams and make appropriate trade-offs to solve complex organizational problems.
Tactician to Strategist – Shift fluidly between the details and the larger picture, perceive important patterns in complex environments, and anticipate and influence the reactions of key external players.
Bricklayer to Architect – Understand how to analyze and design organizational systems so that strategy, structure, operating models, and skill bases fit together effectively and efficiently, and harness this understanding to make needed organizational changes.
Problem Solver to Agenda Setter – Define the problems the organization should focus on, and spot issues that don’t fall neatly into any one function but are still important.
Warrior to Diplomat – Proactively shape the environment in which the business operates by influencing key external constituencies, including the government, NGOs, the media, and investors.
Supporting Cast Member to Lead Role – Exhibit the right behaviors as a role model for the organization and learn to communicate with and inspire large groups of people both directly and, increasingly, indirectly.
I was surprised on how few people talk about this. These come from an awesome HBR article called How Managers become Leaders, which if you haven’t read, I would highly recommend.
So, what can one do? The suggestions outlined are not rocket science, but something to think about. And fundamentally not that much different on how the armed forces trains new officers.
Give potential leaders:
Experience on cross-functional projects
An international assignment
Exposure to a broad range of business situations – accelerated growth, sustaining success, realignment, turnaround.
When a high potentials’ leadership promise becomes evident give them:
A position on a senior management team
Experience with external stakeholders
An assignment as chief of staff for an experienced enterprise leader
An appointment to lead an acquisition integration or a substantial restructuring
Just before their first leadership promotion:
Send them to an executive program that addresses capabilities like – organizational design, business process improvement, and transition management.
When promoted, place new enterprise leaders in business units:
That are small, distinct, and thriving
And are staffed with an experienced and assertive team that they can learn from.
At a recent internal meeting, we were discussing productivity and the various levels of distractions that one has these days. Did you know that there is a hierarchy of digital distractions (see image below). No wonder, in todays connected, and agile world, for some people why it is so difficult to get any actual work done (that is not to suggest that they are not busy of course).
At this meeting, analogy of the distraction was coined as the “monkey” – the monkey that each of us has on our shoulder and the constant attention it demands – I.e. the distraction. And we all know we cannot control this monkey and bottle it up. The idea isn’t to try and bottle it up, which will rattle it more trying to get out and demand more attention – but rather let it out in a controlled manner for some time – similar to how one would take a dog out for a walk (of course different outcomes) .
So instead of avoiding distractions, which might be very difficult for some folks, the idea is to let it out in a controlled manner – so the monkey is entertained and happy. This will help concentrate on the rest of the times and enable one to be more productive. And the science behind is how our brains gets the same effect as with drugs, and the ‘pleasure’ effects – it is both fascinating and scary.
We, humans, are multi-threaded by design and can do many things in parallel – with two exceptions I think. The only two blocking function we have to deal with are sneezing and farting. During these times, all current activity must be suspended for the duration. And of course it can be pretty annoying (or depending on the function, embarrassing).
So next time you check in some code, think about it – is this smelly and sneezy (yep, that’s a word, now) or have I done the right thing?
Got a really good read from Jerome, fellow Avanade colleague – ten extraordinary things bosses give their employees. Not surprisingly, good bosses care about getting important things done. And exceptional bosses care about their people.
I came across this very interesting article in the guardian called “Google logic: why Google does the things it does the way it does“. This is a fascinating insight and a lot of it makes sense to me. What was also interesting to understand a little more on how the mindset is very different from the other corporates and technology leaders out there. Especially interesting the self-righteous view one perceives that Google has of themselves. It is a little long, but worth a read.
I am probably the only guy on the planet who broke his Surface Pro device! 😳 So much so that the screen shattered – so much for Gorilla glass and all that!
I was starting out on a 4 week long trip and the Surface slipped and fell at the airport when taking it out for the X-Ray machine. It fell on one corner and the screen shattered. With small pieces of glass everywhere on it, it was not usable. However it did work when I switched it on a week later. Here are a few photos that show the extend of the damage and the fact that it was still working post that!