What the heck is strategy ?


I don’t know what is more difficult to get consensus on a definition – “meaning of life” or “strategy” . And I am only partly kidding here 🙂

Vast majority of the literature and talks on strategy are about what it is not , as opposed to what it really is . This was true when I was in business school a couple of decades ago , and it’s still true in the work place debates today . Recently I attended some leadership training at HBS and apparently Professors still love to debate what it is not !

I don’t deny that I enjoy these debates – but with a business to run, I also need simple definitions to do something with it . The reason I am thinking about it one more time is because I have an “all hands” call coming up with my global team in a few days and as it happens every year – I am challenging everything one more time just to make sure I set the team on a good path to success .

So here is how I look at strategy

1. Strategy is a way to get to a set of goals under uncertain conditions and limited resources within a certain period of time

2. It can only be defined at a high level given the uncertainty , and there needs to be a plan for known trade offs

3. The plan to execute on it consequently need to be constantly refined as you learn more over time

4. It needs to be defined at the highest level of an organization since a good strategy needs a lot of decisions on allocation of scarce resources , the goals itself will need to be questioned , and the result of those decisions has to serve as a compass (as opposed to a map) for the rest of the team as they execute on it

5. It should leave plenty of room to improvise during execution.

The goals are fairly straight forward for the business I lead . Where I need to temper my enthusiasm is how many of those goals can I map to a bottoms up plan . It’s very easy to make too many assumptions and become over confident in attaining those goals – but that would be ignoring the simple idea that there is no strategy if there is no uncertainty ! The trick is to minimize uncertainty instead of eliminating it .

Then there is the constraint of limited resources . I have swung on either extremes of “constraints are good” VS “unconstrained is good” over the years . These days I am a believer that it’s best to acknowledge constraints right upfront – but then start challenging them from first principles to see if they are as real as they appear . When we don’t acknowledge real constraints , we end up saying ridiculous things like “it was a great strategy, but execution failed us”.

All strategies have an expiration date and I realize that over time – the shelf life is becoming shorter . What seems to work for me is an annual overhaul with quarterly tweaks . If operational results trend the wrong way – I don’t wait for the next year to overhaul the strategy though 🙂

The easiest way to communicate a strategy for me is in the form of a plan . Too high level and it gives the feeling of a “slogan on a banner” which gets you not a lot more than eye rolls . Too much detail and it gets tedious for everyone . So I run it by a few people to iterate and get it to a decent enough shape . No magic bullets have been found so far !

Iterations come in all sizes and are triggered by multiple factors . The most common reason is the variance during execution. But there could be really big factors like the economy going into a recession . The key here is to keep an eye for detail on operations, while also scanning the environment for changes .

Zooming in and out constantly takes a lot of time and energy – and this is one of the many reasons why you should constantly grow more leaders in your team. The more (and better) leaders you groom – the more you can focus yourself on fewer high impact decisions .

The last point I want to make here is on leaving room for everyone to make decisions during execution . There is no creativity in following explicit and prescriptive directions all the time . This is why I like to think of my job as providing a compass and not a map . Unless your team develops skills to make their own plans – and intelligently change them as required along the way – they will not develop as leaders !

When you are powered by good espresso !


Some of you may know that I am a big dog lover . I also used to compete actively in dog shows with German shepherds , labs and goldens . As career started taking more and more of my time – I gave up on dog shows . I actually don’t care very much about winning a show any more – I don’t miss that thrill anymore . But I terribly miss the fun of training a puppy from scratch and competing and the constant problem solving .

When you compete seriously – you need a puppy or young adult who is suitable for your specific needs and that needs a lot of research to find one. I haven’t been at the big shows or following pedigrees closely for a long time – so I had to make a fresh start . I have several friends who are active in the field and I will get plenty of good advice from them . But for me to follow along their advice intelligently, I need to do some homework first .

So during the vacation period, I decided to start my research. Seeing several people walking their beautiful and well trained dogs in the streets of London and Paris added to my motivation 🙂

First step of any good research is of course to stock up on coffee . And we had just returned from Europe and the Parisian cafes had set a very high bar . Thanks to Amazon prime – it only took a couple of days to get a few different coffee bean packs . For good measure I brought out the old Espresso machines from their boxes so that I have enough options to find the perfect match .

Then I opened up YouTube and started watching clips from the big german Shepherd shows in Germany . About ten videos in – and probably 2 double shot espressos – I realized there is an unaddressed problem . I am in no shape physically to train a dog at the level I need to . I need strength , endurance , flexibility and things of that nature .

Two years ago – I had lost a lot of weight by signing up with a personal trainer and working out at the gym . Well that ended up with muscle tears in both arms and that kept me away from the gym for a year . I still lost some weight but it was negligible . At that pace – I wouldn’t get to the physical state I need to be anytime soon . Darn !

I love outdoors – and I hate doing cardio at the gym with a passion . Thanks to our mild winter in Chandler – I put on tennis shoes , and started walking . About 45 mins later – I couldn’t figure out how much distance I covered or how many calories I burned . This is the curse of being an analytics guy at work – I get this intense urge to measure ! Thankfully there are plenty of apps that can do it all – and I dutifully downloaded the requisite apps and started measuring weight , exercise , food , water etc .

I started at around 2 miles and can now do 5 miles of brisk walk . And in the first week I lost about 3 pounds . I hope I can continue the good habits and get into the right shape by the time I get the pup .

Thanks to the insistence of my teenage daughter who has been using AirPods for a while – I had bought a set for myself too but never used them . It’s one of those things – I always felt like a total idiot talking with Bluetooth headsets and generally have avoided using them . But the daily walks proved to be a turning point – I am now a big fan , using them for work calls as well as music from the phone .

Anyways – back to my research on dogs. So I read through the breed standard again – and surprisingly could more or less recite it verbatim from memory . I started looking at my favorite dogs from 80s and 90s to get my eye tuned to the ideal version . And then I started watching the videos and pictures of the more recent dogs .

I did not like most dogs . I started saying things in my mind like “great head but too long in the body” and “great movement but don’t like the tail set” . Highly frustrating to say the least !

And then came some sad news – my mentor in dog shows passed away and a dear friend from India sent me a message about it . I was so terribly sad and spent a lot of time thinking about the times I have spent with him when I was in college . And then the light bulb went on – I was doing a cardinal sin of evaluation of dogs called “fault judging”. My mentor – Nawab Nazeer – had warned me about it several times .

Purebred dogs have a written standard . Everyone knows the standard is for an ideal dog and no dog is ideal . So the principle of judging is to figure out how close a given dog comes to the ideal . However it is a lot easier for less experienced and lesser skilled people to judge all the faults and compare that way . That’s what fault judging means – and it’s a bad idea . I knew that from before – and yet I was doing it with full enthusiasm . Go figure !

Any way – I have some unlearning and resetting to do before I continue my research to find my puppy . Probably that gives me a bit more time to lose the weight 🙂

Today, I am typing this from the plane to NY – the first business trip of the year . And as I am slowly getting back to the normal work routine, I started thinking about how much fault judging happens in the work place . It’s much more easy for many of us to spot weaknesses and criticize people about it than recognize strengths and give them credit for it .

It’s funny how one thing leads to another when you are powered by great espresso ! For good measure , I just ordered some more espresso beans 🙂

Nuking code and starting over – revisited


I had an extensive debate recently on why monoliths are not universally such a terrible idea, where a young developer told me “Most of the code you would have written in your time as a developer is now what we call legacy code” .

I don’t blame the young man for thinking “legacy = bad”. I believed it too when I had his role many years ago . And then my thinking evolved over time and I am sure his will too.

I wrote this blog “Nuke that code, lets start over” nearly a decade ago, and I think many of the points discussed in there still hold true . There is a lot of wisdom in the comments section under the blog that I just finished reading again .

The young man’s comment made me think a bit about all the code I have written – from games in BASIC that I have sold to others for 50 rupees on cassettes while in high school to C/C++ , ABAP and java Programs that did more “Enterpisey” stuff for big companies across the world .

“Most” of the code I wrote probably have not lasted very long at all !

Some of the best code I wrote never made it to production – because priorities changed, projects were shelved , acquistion happened and a host of other reasons .

Most of the code I wrote has been refactored – some times by me , but mostly by developers who owned those repos after my tenure . I know of a couple of places where a bit of my code still runs in production – but it’s a tiny fraction of what I have written in total .

Legacy code survives because of many reasons – some good and some bad

1. It does something exceedingly well and it’s hard to make a case to replace II

2. It is way too complex for anyone in the team to rewrite now – usually due to poor knowledge management , not because the code itself is bad . Even with sophisticated tooling – it’s hard to understand logic completely from code, DB schemas and logs .

3. Refactoring is a routine activity in good tech shops . But the truth is that vast majority of large enterprise shops have ignored the importance of refactoring for a long time . They paint themselves to a corner and then need massive modernization projects to get out of the mess and cater to the business needs of today’s and tomorrow’s market . It also shocks me that some shops after finishing the modernization, they still refuse to follow any structured process to refactor along the way !

4. Another common pattern I have seen is that modernization is attempted purely for “tech fashion” – and usually with tragic results . I was quite amused once to watch the code of MRP process be rewritten to a new technology only to realize that even though the results now showed up in a fraction of the time of the old system, it was all wrong and hence useless !

Being honest about the need to rewrite is a good starting point in all modernization projects . There is only limited time, effort and money available and there is never a good reason to waste it by doing a project for the wrong reasons .

“we need to modernize because mainframe is dead” or “we need to move to NoSQL because RDBMS is dead” or “Our code base is a big monolith and we need to be serverless for our future” . It’s very common to hear these kinds of reasons being touted as the reason to start a modernization project . These are not bad reasons by themselves !

These statements are all good starting points to explore what is the real issue – do you take more time to deliver a new feature that business wants , and is that leading to less than optimal business results ? If the answer is yes – is it a tech problem or a process problem primarily that causes it ? Can you quantify the value of changing to a new system and prove that it is greater than the estimated cost ? What happens if the modernization project fails – how much risk can you take ?

Bottom line – you need an honest case for why you want to modernize . This case will then serve as your North Star in your modernization journey . It also will serve as a dose of reality check – which we will all need from time to time . The case itself has a shelf life – so it’s important to revisit periodically to check what changes are needed .

Big Bang vs Incremental changes – how do you decide which is the best way to go ? I will share some thoughts on that in another post . For now , I need to get back to my day job 🙂