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 ๐Ÿ™‚

Three snippets from my year end conversations


As 2019 is heading to its last few weeks, I had a chance to catch up with a lot of friends, mentees and my own mentors and also take some time to reflect how things worked out for me this year . The consultant in me immediately started grouping and classifying the common themes, apply MECE , and map it all to a 2 X 2 . Don’t worry – I somehow resisted the temptation and stopped at just grouping ๐Ÿ™‚

I thought three repeated themes were worth sharing here on my blog .

1. You need to tell some managers what they want to hear

So there is this guy who comes from a non tech background and does a good job managing a team of developers to hit milestones ahead of schedule (mostly by overworking them) . He is a flight risk, and the only way to keep him is to promote him to an executive rank . If he flees, his manager probably won’t earn his own promotion any time soon – so there is plenty of motivation to make this happen.

The only trouble is that this promotion needs the blessing of a very senior tech exec . There is no way this non tech dude is going to pass that level of tech scrutiny . That’s when the manager has a flash of brilliance in his thinking . The senior techie is somewhat of a philosopher and his current pet topic is “culture”. He coaches the up and comer to focus heavily of culture when the interview happens – which he masterfully does and gets promoted .

About half the people I caught up with had a similar story where promotions or raises were secured by telling their bosses what they wanted to hear .

2. Diversity seems to be a bit easier than inclusion

While it’s still a long ways to go, a lot of managers have been acting on improving diversity in their teams . There is a lot more awareness and training at all levels . In many cases there are top down directives like “by end of the year there needs to be X% women in your team , Y% URM in your team” etc . In a some of these cases, these are KPIs tied to the manager’s bonus too . All of these are great of course – and I hope it’s not just a one time exercise .

Then comes the question of inclusion . Are these “new” members of the team supported and set up for success ? Are their voices considered with the same importance as when your team was homogenous ? I was a bit surprised that even the people who actively champion the need for diverse teams haven’t done as much thinking on how to make inclusion happen in their day to day work.

That said – I was quite happy to hear that almost everyone I spoke to had done something good about making sure people doing similar roles are paid the same.

3. Being a newly promoted executive continues to be really hard

Before I made Partner , I had attended an exceptional internal training course in IBM called “Cornerstone”. And that’s where it was drilled into me that “what got you here won’t get you there”. Excellent advice which helped me and many others who attended that course . It is also very hard to put it into practice !

Everyone wants to make an immediate impact as an exec . Most have someone else they treat as their role model and want to be like him or her. Nothing wrong with any of it – just that what works for one exec in one context might not translate 1:1 to you in your context . Almost every single story I heard from the newly promoted folks made me say in my inner voice “oh no – I did that too” .

Here is one story I heard from someone who got promoted and took over a new team as its leader in January 2019. All six direct reports were asked to make 1 hr presentation to the new boss . The first one made a less than stellar presentation in the new manager’s opinion and the next day it was announced that this person will have a new role to be announced soon . Long story short – we are in December now and that position is still not filled , and two of the key next-in-line leaders quit because they couldn’t stand the ongoing chaos.

I asked them what were the words of wisdom they got from their leaders after their promotion and it was the usual list of “Have a bias to action”, “Lead with courage”, “Make your voice heard” etc . Those are all invaluable in their own rights – but perhaps we should add “slow down a bit now to speed up later” to the list .