The Little Things

It’s a long way to Tipperary…

Saturday Sep 6, 2014 around 6:00 am Indian Standard Time

As Air India 952 touched down at the Rajiv Gandhi International Airport from Dubai, I felt relieved. Less than 24 hours ago I was sitting at the Gate in Orlando in a Delta 757 that was already 75 minutes delayed. Another 30 mins and I’d have missed my Atlanta – Dubai connection and cut short my 7 day visit by a day.

It has been nearly 20 years since I flew Air India. I had decent memories of my last AI flight, back in 1995 when I flew from JFK-HYD. Food was decent. Times were kept. A pretty flight attendant sitting in the jump seat in front of us giving us a run down of how desi passengers were mostly to blame for Air India’s reputation (“they don’t use the button to call us, some people try to touch us, they don’t flush toilets, they get drunk”). When they announced boarding at Gate C2 in Dubai, I expected them to call the Executive Class passengers in first. Given there were only about 20 Business Class seats on the A320 I was hoping for an easy boarding. Instead, they called for everyone to board. The typical desi frenzy broke out. Everybody trying to rush into the aircraft. That’s when you get the first taste of systematic chaos that is India. Fortunately I found my way in before most others. The moment they saw 2A on the boarding pass the gate agent smiled, and said “you can go in sir”

3 passengers in the Executive Class. Yes – 3. The portly Flight Attendant was pleasantly surprised when I wished him on entering the aircraft. He barely managed to mumble back “Good Morning”. I expected to be asked “Can I get something to drink?” immediately after sitting. Instead, they allowed about 50 passengers before the young man came and asked “Will you eat dinner sir? We have veg and non-veg” After confirming he meant after take off, I chose the orange juice from his tray of drinks.

Boarding door closed at 12:50am. Wow, on time departure! Clearly I was in luck! As we taxied towards takeoff, a lady FA walked around making sure we all had our seat belts strapped on. She has got to be the most unpleasant FA ever. She actually had a frown on her face. Sort of like “why the heck are you on my plane?” Once she figured I was from the US her expression and demeanor both changed. She became more respectful and actually managed to smile on a couple of occasions. Uncle Sam’s charm is universal!

The male FA came around after we reached cruising altitude and asked me what I wanted to drink. When asked what they had he lowered his voice and said “we have whiskey, rum, beer and wine” – sounding like he was letting us in on a secret. I chose Sula, the Indian red. I also chose to eat dinner – chicken. They served the wine and waited inordinately to serve dinner. Turns out Indian passengers like to finish the drinks and then eat dinner. The food was tasty and plentiful. I was famished having only airline food in the past 24 hours cutting across 9 time zones. I could eat idli if they served it cold on that flight.

I was the first one out of the aircraft at RGIA. I was met with 3 people at the end of the jetway. The guy rudely stopped me in my tracks and asked for my boarding pass. See, AI 952 is actually Dubai to Vishakapatnam route, with a 40 min stop over in Hyderabad. At HYD they want to make sure no VTZ passengers accidentally (or intentionally) get off. I wish though that they had announced BEFORE taking off to keep our boarding passes handy. I spent an excruciating 90 seconds fidgeting around my pockets trying to produce the runaway boarding pass. Found it eventually and still made it first out into the immigration area.

At 6:15am with hardly any expected international arrivals, the immigration officials were seen dozing off at their desks – literally. As I made my way to the area, one alert officer realized there were arriving passengers and waved me to his desk. I produced my US passport and PIO card while wishing him a very good morning. At that point he realized I was a foreign national and asked me to fill out an immigration form. Yeah – right there. Wouldn’t it have been nice if they gave us those forms in the plane and asked us to have them ready when we get to the desk? Convenience is taboo in this country.

As I walked out of the hall post immigration, I was stopped and asked to show the stamp and my boarding pass. I wondered why they wanted the boarding pass at that point. Luckily I had it tucked away in one of the pages in the passport. He saluted me and smiled a sheepish smile – the standard Indian method for seeking ‘bakshish’. I ignored. Bakshish for doing his job and checking if my passport had been stamped? No thank you! I slowly made my way to the baggage claim area. After making the customary “I have reached safely” and “I have arrived safely” phone calls respectively I decided to take a bio break. The attendant at the entrance to the men’s room did the bakshish salute as I parked my trolley. Seriously… bakshish for what? Watching me pee?

My two 60 lb suitcases arrived fairly quickly, making me the first to advance to the customs area. As I approached the scanner, in typical desi fashion this dude cut me off and plonked his carton of whatever on to the conveyor belt. The ensuing drama was worth watching. The customs officer (why are they all in plainclothes anyway?) asked – quite politely I might add – the man to unload even his wallet into the scanner. And the guy simply stood there staring, refusing to part with his beloved wallet. The officer got suspicious and said out loud “kuch hai kya purse mein?”. I am patiently waiting behind while the officer goaded and the man refused. Then the guy behind me shouts “kuch nahin hota mian… daal do purse… aage jaake us taraf se nikalta… kahin nahin jaata”. After about 4 mins I got impatient, unloaded my suitcases, picked them up on the other side and headed out, only to be stopped by another khaki wearing officer asking to check my passport and boarding card. OK that’s the third time they asked me for the boarding card. As I showed him the page with the immigration stamp he gave me the bakshish smile and said “kuch tho bhi do saab”. Again, the guy expected to be given bakshish for doing his job and checking my credentials one last time before I head out of the airport. I SMHed (learned that acronym recently. For the uninitiated, it stands for Shaking My Head) and walked purposefully towards the exit.

The last thoughts as I made my way out was how we are missing doing the little things right in India. Good airline with fairly new aircraft and a perfect, on time departure. But horribly unfriendly staff. Great food but no follow up, completely oblivious to international food habits. No immigration cards in the aircraft, or on arrival at the gate, or even a sign that says “Foreign Nationals – Please Fill Immigration Card HERE”. No heads up about keeping the boarding card handy. That bakshish smile wherever you go. The single conveyor belt for customs scanning for a 150 passenger aircraft. What will they do when a 747 arrives? How long will that line be? There are so many good things happening in this country. But to go from good to great, it’s the little things that matter.

I walked into the air that I grew up breathing, and for the first time ever I was first out of the aircraft, first out of immigration and first out of customs. Feels good to be home!

Rahul D.

Location: Northeast Ohio

Forecast: Snowfall

Outside: Two feet of snow

Inside: A 1997 Toyota 4Runner (120K miles), A 2009 BMW M5 (20K miles), A 2010 Mercedes SLK Roadster (5K miles)

Mission: 25-mile drive taking your full-term pregnant wife to the hospital for delivery!

Question: Which car would you choose?

Thought so! That was exactly what Rahul Dravid was for the Indian cricket team for 17 years. He wasn’t the fastest in the team. He wasn’t the flashiest either. But the one word that comes to mind always is: Dependable. If you needed him he was there. Through rain and storm and sleet and snow he was the Toyota 4Runner of Indian cricket. Enough has been written about how he always played second fiddle. When he scored 153 in a One-Day match he was overshadowed by Sachin. When he scored 145 it was Saurav. In THAT Test match it was VVS. Even in his retirement Cricinfo carried his story below the NZ-SA Test match. He never complained. He never asked for more.

I did not grow up watching Rahul play as I did Kapil Dev or Sunil Gavaskar. I was already in the US when Dravid made his Test debut. Back in the 90s ‘watching’ cricket matches in the US wasn’t as commonplace as it is today. But he grew on me. His work ethic, his humble approach and above all his gentlemanly demeanor appealed to me. Knowingly or unknowingly I think he was is a tremendous influence on me and my attitude. I am not super talented. I am neither the BMW M5 nor the Mercedes Roadster in the garage. I may not be as dependable as Mr. Dependable. But at least 7-8 times out of 10 you can count on me to deliver. I wasn’t like this before. I think watching Dravid play made me that way.

Back in 2007 during the World Cup I and a bunch of friends went to Port-of-Spain to watch India exit out of the World Cup in the first round. Our hotel was a mile from where the Indian team was lodged. I met several of our cricketers there – Yuvi, Saurav, Kumble (another great player) to name a few. But my biggest disappointment was that I could not meet Rahul Dravid. I am a great admirer of Sachin Tendulkar: a once-in-a-generation cricketer. But I would’ve loved to meet Rahul more than Sachin.

See Dravid epitomizes all that’s not current day India. He’s more hardworking than talented. He’s more humble than flashy. Virat Kohli – another great talent – exemplifies the current generation of players. When pushed he flips the bird. Mistaking brashness for confidence is a grave error in judgment that today’s India would do well to unlearn. When Alan Donald needled Dravid he hit him for a six. Dravid 1 – Donald 0. The story ended.

Thank you sir… For giving us all we craved for as cricket fans. For showing me the value of ethics, determination, sincerity and above all humility. For making me understand that there is no I in team. That the team always comes first. For making me a better person.

In his own words (quoting Kipling): “The strength of the wolf is the pack and the strength of the pack is the wolf”.

Take a bow Mr. D!

The Release

Friday night, 11:58 pm, Eastern Standard (or Daylight) Time: 2 minutes to bring your production site down for the latest upgrade.

You have slogged your behind off to meet your ‘code freeze’ deadline. The new development process is challenging and stressful. But you have pulled it off. Post code-freeze, your QA has given you enough hard time to open several ‘Hot’ or ‘P1’ bugs. It just seems nothing works. Your project head is aghast. He yells in the regular bug meeting, ‘what the hell did you guys do?’. You know you’ve worked hard. You know you had some ‘known issues’ going into code freeze. But this is bad. It seems QA is bending over backwards to make you look like an incompetent fool.

The pre-release days are hell. Every bug is carefully monitored. It’s like having a camera in your bedroom and the whole world tuned into it. Of course some people make a pretty good living out of it. But not your friendly neighborhood software programmer. See, software developers despise micro-management. No matter how bad they are and how good they think they are, the last thing they want to feel is the constant breath of the project leader on the back of their necks. But anyone that worked in software development knows: Code freeze period is the time for extreme scrutiny. Every code check-in has to be approved. Nay, frowned upon. For the developers themselves, it’s an embarrassment. It’s like you are being caught out stealing. And those daily calls at 4 pm Pacific. Aargh!

And then the final week arrives. There are still 4 HOT bugs. None of which are yours. But those guys are never called out. They seem to get away with murder. A typo on your screen is an international incident but a null pointer exception for that team is brushed off saying, ‘can you take care of it by release date?’. WTF? Were you an adopted child or something?

Come the day of the release, you are literally hyperventilating. You signed in to the conference call and the chat room. There are all kinds of stuff going on in the chat room. You see the text, ‘I think John was supposed to take care of that’ and you fall off the chair before you see the other John has already responded. There are all kinds of noises in the conference call. Kids yelling, dogs barking, people sneezing and sometimes snoring. Everything. The meeting organizer’s repeated, ‘please mute your line if you aren’t talking’ falls on deaf ears.

Among all this, you are almost certain your piece of the application is going to break and either put you out of job or worse, be the ridicule of company wide email thread. That last bug you fixed 4 days ago, you didn’t get a chance to test the corner case scenario. Shit! It’s going to ‘blow up’ your application. You hurriedly sign in to your development environment to start testing that use case. At that time, you hear, ‘OK we’re live!’ It’s 2:15 am Saturday.

You type in your URL. It says, ‘Unable To Access’. Your fingers are now shaking. It’s mid-December and you are sweating like it’s 95 outside. You are not sure why you can’t even get to your page. Did your last check in go bad? Did the India team check in anything at the last minute without your knowledge?

It takes a few moments to realize you weren’t signed in to VPN. Phew!

Finally you take a moment, sign in and get to your URL. It is working just fine. You test out several use cases. Strangely, this is all too smooth, too good to be true. You wonder if you are on the correct site. You double and triple check. Your QA tester meanwhile has already filed a bug saying she cannot see the data. For the umpteenth time, she uses the test user’s credentials that does not have the right set up. You feel like you could break her neck right now! But decide against it as she’s located in Minneapolis.

Finally after 45 minutes of frantic testing, you figure everything is just fine. In fact, more fine than during development and UAT.

By the time you hit the bed at 3:45 am, you wonder if all that stress was worth it. You decide it was, considering the pay!


Designer vs. Developer

After years of letting the business group – with input from the customer – decide how the UI of your applications look like, you finally get a proper UI designer. He has taken several courses in UI design, usability, accessibility and several other -ilities. He’s super fast with Photoshop, can crank out a ‘quick mock-up’ during your design call and you are generally very excited as a developer that at last your product, your baby, on which you’ve spent countless hours and written thousands of lines of code, will finally ‘look’ nice.

It starts off great! Your first few meetings go well with the UI designer. You are excited by the ‘look and feel’ and the ‘consistency’ and the ‘ease of use’ of your product. You actually end up saying something like this to your manager, ‘You know John, bringing in a UI designer is one of the best things to happen to our team’. That’s the first positive thing you’ve said about your team in 3 years and 9 months.

Then the application development begins.

Like Kim Kardashian’s fake marriage, your relationship with the UI designer begins to crumble. He wants a ’rounded’ drop down. You know your IDE doesn’t support that. He wants a ‘tree’ structure. You complain it’s going to be a performance hit. You talk code, he talks art. You sit in your little cubicle coding your brains out, he comes back from a week long seminar in Copenhagen to lecture you on the ‘latest trends in UI design’. It keeps getting harder and harder.

Isn’t there a middle ground?

There’s no real short answer to that question. Well, yes there is. The short answer is No!

The primary difference is that he is paid to make your product look great. You are paid to make your product work. There was only one person in this world who could put both in one package but he died of pancreatic cancer last year.

The key is patience. Developers are programmed to think ‘logically’. Designers are not. The first step is to make them understand the business. Half of them come with lofty ideas that fall flat because they are totally unsuited for your business. So making them understand the business, the key elements, and especially the limitations is a key step. Failing this, your relationship is headed for divorce.

That is the easy part. The tough part is to make them understand the limitations of the programming platform you’ve chosen. Snazzy tools cost a lot to buy (and more to maintain the license). Open source tools are generally crappy in the flair department. But as said before, the key is to be patient. Don’t expect the UI person to understand everything upon the first conflict resolution. They need to be nurtured, and the limitation you mentioned in the team meeting yesterday, you need to repeat it today and Monday and the next month as well.

On the other hand you need to understand that he’s trying to make ‘your’ ugly product look better. In the process covering up some of the obvious flaws. Give him some credit. You’ll end up being happy and sleeping peacefully.

BTW, I have not met a ‘he’ UI designer so far.

The 10 Steps To Issue Resolution

We’ve all been through this…

It’s about 3pm on a Friday. You are winding up your work, looking out the window. Traffic is moving steadily. If you got out now, you can make it home by 3:45. You could catch an early dinner and watch ‘Margin Call’.

‘Ping’. Your business guy sends you an IM, ‘You got a minute?’. You know that’s usually not a good sign.

15 minutes later you are in a conference call with your application development team, the systems guys, the DBA, the QA person and of course the business guy. After two hours you decide it’s going nowhere and you need to contact the team in India to figure out what the solution is and defer the issue until Monday. If it’s a premium customer, the issue gets resolved in the wee hours Saturday after everyone and their team is spent.

The problem is not bad software or bad QA. It’s just bad issue resolution management.

Non-technical managers generally tend to pull everyone remotely related to the project into such calls. Instead, managers and teams would be better served following a few simple steps. These are by no means the 10 commandments nor do they work in every situation.

  1. Admit there is an issue: A lot of issues can be attributed to user errors – not without reason. But when you know it’s not the user, admit the error.
  2. Move on from 1: Once the error is confirmed, resist the urge to launch into a blame game, or into a philosophical diatribe. The ‘why’ can be researched later. First it needs fixed.
  3. Get the right people: Managers, you know who they are. There are people who are killer programmers and there are others that can zoom in on an issue quickly. Times like these, get the latter.
  4. Keep the systems guys and DBAs away: At least in the beginning. Make sure the issue is not on the application side before calling them in. They’ll be updating their FB status (with not very kind words about you) if pulled them in unnecessarily.
  5. Peel! Don’t slice and dice: Peel off one layer at a time while determining the problem. Your application is layered right? If not, get ready to say your favorite prayers.
  6. Do not attempt to change the world while addressing this one problem. Other problems have a time, place and patch to be fixed. Keep it simple, quick and easy.
  7. When you’ve fixed the problem, test it. After testing it, test it again. After testing it again, test it again. After testing it again, well you get the idea.
  8. Be nice to the RM guys: Chances are you’ll need them to do an emergency production patch tonight 🙂
  9. Communication: Let the customer that found the problem know the problem is fixed and they are free to test it out. Chances are they have moved on from that end of the world problem and won’t even remember it. But they’ll appreciate that you remembered.
  10. Finally, remember to smile and move on. Nobody died!