In you we trust

A couple of years ago me and my wife were visiting the picturesque city of Nikko in Japan and came across the Rinnoji temple that was under renovation at the time. Here’s a picture of how they had covered the entire temple in a huge wooden box so that it would stay safe from the elements and the restoration team could do their job well, a pretty impressive feat if you ask me.

Rinnoji Temple under renovation in Nikko, Japan (Oct 2011)

There was a noticeboard near the entrance which mentioned that it was forbidden to click pictures inside the temple. Such signboards aren’t uncommon outside monuments, and we all know how routinely such rules are flouted. The space inside the temple was truly majestic, not to mention the Sanbutsudō or the Three Buddha Hall, containing three magnanimous gold lacquered, wooden statues. Some of the artifacts on display were quite intricate and beautiful. One couldn’t help but feel like clicking a few photographs and carry them along as souvenirs. I had my camera strapped around my neck and could’ve easily removed the lens cap and taken a few shots. Without the flash, no one would have noticed, and to be frank, there weren’t an awful lot of people inside anyway. But I did not. And many of the people I observed later, irrespective of nationality, did not too.

Clicking pictures inside the temple was never going to be a capital offense, but by putting their faith in the visitors, the management staff at the temple had passed the responsibility of upholding that trust over to those same visitors and thus, for the conscious mind at least, it had become a law worth upholding.

This act of humankind to put the control of your own fate in the hands of another person is something that has always amazed me. The stakes can be pretty high sometimes. It could be your life on the line. For example, every time you climb into an elevator, you are trusting the maintenance guys to have done their job well, people whom you rarely lay your eyes upon and a team that you definitely do not control. Neither do you control the person piloting your airplane, though you might spot him on your way into the aircraft. But then its all about the responsibility that you pass on to the pilot or the elevator maintenance guys. Its easy to follow the path of least resistance, and some people do lax in that regard. Real trust is often unspoken and I believe that the people who are remembered after an event are the ones who try to uphold that trust.

In the connected economy and the geographically-dispersed teams culture that we find ourselves today, the person on the other continent isn’t watching you closely. He does his work trusting that you will do yours well, and this will eventually lead both towards the common goal. A slip up from anyone in this chain can lead the entire team astray and it might be too late to recover from that stage. An overseas client may not be able to read your software code, but he trusts your development and testing skills to avoid any troubles for him in the future. The onus is upon you to deliver.

Even with all the available surveillance, its in you we trust. Now, more than ever.

Update Previous: Hardware, Software and Human Beings

Consider this. You’ve been gifted a new iPad 2 for Christmas last year. Just a couple of months later, Apple comes out with its new iPad model, with a better screen, a better camera and supposedly more oomph under the cover. Feel cheated?

You buy the first edition of a revolutionary car model from your favorite car manufacturer, only to realize in a few months time that the company has recalled all units for a faulty brake pedal wiring. None of the editions of that car model produced after that incident have this fault. What’s more, they even have more goodies packed in with a sleeker design. Feel left out?

That’s the thing with hardware. You buy something and you are stuck with it, for good or for worse. You can’t update hardware, you can just get a new one and forget about the old stuff.

Thankfully, that’s not the stuff with software, or else it would be a real shame if you’d have to throw away a beautifully working solution once there was a new version announced for the machine’s operating system, or the most used app on your Android or iOS phone, your bank’s web application, or your favorite online car racing game. There’s always the specter of compatibility with the existing system though, and its not always smooth sailing on that front.

How does this phenomenon affect us humans personally? It swings both ways, and therein lies the rub.

You break a bone in your hand, or have a heart surgery, and you ideally want the medical update to mend your body in such a way that it feels as if nothing was ever wrong. Just like in the case of hardware, that rarely happens. Scars remain, unless of course you go for some cosmetic surgery. Now consider that you have a splintered relationship with a friend or a family member. Life is strange, and after a few years you bump into this person at a shopping mall or at an airport lounge, get chatting and have a genuine chance to mend ways with him or her. Its up to you whether you want this update to work or not. Compatibility remains an issue, mental scars are tough to wipe off altogether, but you do have a chance to make them less relevant in the new scheme of things.

Some food for thought?

The best person for the job

Quite frankly, its not you. Neither its me.

The best tennis player in the world is somewhere in Somalia, scrounging for food and squandering away his true stamina and talent for want of opportunity. While my country, India, is lamenting about not being able to secure medals in the Olympics, the best archer in the world is living somewhere in its tribal hinterland. These people just haven’t been discovered yet.

The best young talent in the domain of car racing is somewhere in Afghanistan, dodging bombs and the remnants of a bloody civil war, whiling away his childhood playing with toys and excelling in mock car races with his friends.

You are not the best teacher in the world. Your college or your university just hasn’t come across that person yet.

You are not the best software developer or architect in the world. Your boss or your client just hasn’t stumbled upon the best person for your job yet, and the day he will he’ll happily swap you for him.

You’re not even the best spouse for your husband or wife. If he or she had waited longer each one would have found a better, and maybe a more ‘perfect’ partner.

In a world so varied in geography, economy and history, success and fame are a function of ability and being at the right place at the right time. Everything after that is just chance, and how you capitalize on it. This is the best tool I’ve ever encountered to help me keep my feet grounded at all times.

On my own.. one year on.. and I believe that ‘I can go the distance’..

This post has been long overdue. So here goes!

There are a few times in life when you are forced to make a tough choice, either due to self-will or due to the circumstances around you, or both, in some cases. A year ago I took the decision to quit my day job as a full-time software developer in an IT firm and start out as a freelance consultant. This was the time when the IT industry had just broken the ‘recession’ waters and me branching out as an independent then was a bold move even by aggressive standards. So how has the journey been so far? A brief look-back at the sojourn.

Reasons

Its funny, but I still haven’t been able to pin my decision of quitting the full-time guaranteed-salary-plus-perks job on a particular reason. Maybe there were many reasons. I’ll try and be as less controversial, yet honest, as possible. I was sure of one thing – I did not want to live someone else’s life anymore. Plus, if I was good at the job that I was doing and people liked it, why couldn’t I work for myself? That made sense.

I still remember Steve Jobs’ 2005 Stanford Commencement Speech, in which he urged everyone to look into the mirror every morning and to think this over –

“If today were the last day of my life, would I want to do what I am about to do today?”

And whenever the answer has been “No” for too many days in a row, I know I need to change something.

I knew the time had come to throw off the bowlines and sail out. There would also be relatively more freedom, I thought, of choosing the work which I wanted to do. I had also started lecturing to college students in a few technical subjects then (something which I loved) and often found it hard to juggle time for both tasks. I have always been a dreamer and there were many other aspects of life to explore, which called for passion and required free time. Being an independent would give me a little bit more time than I had then; or at least that’s what I thought. Did it really happen? Read on.

Challenges

‘Money’. But obvious isn’t it! When you are independent, whatever money you earn or loose, both in quantity and value, is directly related to your vision, efforts, will and luck. I knew achieving financial stability would not be an overnight task, but rather a long and steady process, and would depend on the opportunities I get, and more importantly – the ones I ‘convert’. Plus, I always wanted to be a man of quality and value, and that was one of the reasons why I quit my job in the first place because I was tired of mediocrity. So this aspect too had to be balanced with money-inflow.

Support

When you have ever supporting and equally adventurous yet practical parents, support is just round the corner! Some of my closest friends believed in me, and just that belief was probably good enough. It might sound too poetic, but I seriously believe that the good wishes of my family and close friends carried me through the initial phase. Among others, I’ll be forever indebted to Amruta, Bhakti and Dnyanprabha for knowing all and still ‘being there’ for me every single time. In general, this period helped me in separating the true friends (believers) from the superficial ones (non-believers). I drew inspiration from a few friends, like Aditya and Harshad, who have successfully tread on the freelancing path before. The support of Gokhale sir and Rama ma’am, two people I regard as my ‘friends-philosophers-guides’ too must be mentioned. Some incidences and resulting revelations were quite heart-breaking, but they too added to the experience of finding out the real people underneath the masks they wore.

Initial phase

Financially, I started out with some savings from my job days. I had some lecture schedules then at C-DAC’s Sunbeam Institute of Information Technology as well as at the Fergusson College (both institutes here in Pune) to keep me busy. There weren’t any real software developments projects on the anvil, so I decided to make good use of the sabbatical when the lecture schedules ended in November.

From December through March, I voraciously read not just technical books to update my knowledge, but also non-technicals books and novels to help me grow as a complete person. I read the complete Harry Potter books collection from JK Rowling and Dan Brown’s collection of fiction novels (Digital Fortress, Deception Point, Angels and Demons, The Da Vinci Code, The Lost Symbol) among others. Ayn Rand’s ‘Atlas Shrugged‘ and ‘The Fountainhead‘ provided me much needed answers to the questions I had about friendships, relationships, business and life in general. I read Scott Berkun’s ‘Confessions of a Public Speaker‘ to aid my public interaction as a classroom lecturer, and a few other business-oriented books like Randall Stross’ ‘Planet Google‘ and Phil Baker’s ‘From Concept to Consumer‘. Being a huge history buff, I sharpened my knowledge on ancient Indian, European and American history through articles on the internet, mostly on Wikipedia, and any good books which I could lay my hands on, mostly at the British Library. I could dedicate some time to photography, and also to reading more about aero-modelling and airplanes in general, an old passion of mine. Did all this help? Certainly did. You could easily draw parallels and analogies between the stories in these books and life in general, even the world of software development!

I think that at some point of time everyone needs to look at themselves closely and analyze their ideas, beliefs and actions. This period certainly gave me that reflection-time. It was absolutely priceless!

In April I received an unexpected call from the Fergusson College’s Computer Science department to conduct a few lectures on Software Design Patterns. Frankly, I had never thought of studying this topic in detail, and now to teach it to students meant a big challenge. But when you are swimming in the water already, you don’t fear getting more wet, do you? I took up the challenge. Preparing for the lectures gave me an opportunity to delve into the topic, and I must say it was really enjoyable. Incidentally, I could use the some of analogies learnt from the fictional novels that I had read, in the lecture sessions while explaining some technical concepts. I can safely say now that the students ‘liked’ them if not ‘loved’ them 🙂

Return to software development

Around late-April I got a call from an old client of dad’s to come and visit him for some software development work he had in mind. I had a positive meeting with him and after a few presentations and discussions with the company’s ‘think-tank’, bagged my first real big software development project contract. The presentations themselves were something, because it was the first time that I was dealing with people almost twice my age, having tons and tons of experience! I had worked on cost estimation for a software project during my job days, but this was a totally different kettle of fish, and there were some really hilarious episodes there when I had to quote and re-quote! As I found out a few weeks later, this was just the beginning of the learning process 🙂

I was tasked with developing a software solution for designing and estimating the true cost of Cranes, a commonly used machine in material-handling systems. It was engineering college days all over again for me, as I had to re-learn concepts from basic physics and the laws and fundamentals of mechanics. Then I had to translate that knowledge into software code, and create a lightweight, relatively easy-to-use, yet fool-proof software with lots of permutations and combinations possible in the input parameters. The entire experience spread over almost four months, was priceless. On the last day of development, the highly meticulous tech advisor whom I worked with, took me and a friend of mine for dinner and said that he was very happy with my work. Well, you can now add the ‘memorable’ tag too to the experience 🙂

I was a consultant in the organization, which meant that apart from me and a couple of IT guys who looked after the computer systems and networking in that place, everybody else was from a non-computer background. Over the course of the development I had at least 25 different people walking up to me and enquiring what “exactly” I was doing there 🙂 It was fun answering the queries in as simple (non-geeky) a way as possible!

One thing I’ve always done since childhood is to keep my eyes and ears open for any kind of knowledge or information that comes my way. Sitting there and coding and listening to the stuff going on around me, I subconsciously picked up so many things about the working of the departments in the organization, for example, Human Resource Development, Accounts, Order Processing, Mechanical Design, Electrical Design, Purchase, Sales, Marketing. For me, this was worth its weight in gold, because in this roller-coaster ride called ‘life’ you never know when you’ll require a particular piece of information!

I was lucky enough to make some wonderful friends during these four months; friends whom I can relate with, which is so rare. I can just hope that these friendships strengthen over time 🙂

So, how did I fare?

When I started out as an independent a year ago, I had promised myself that I’ll evaluate my position every six months, both professionally and financially. This means that I’ve been through a couple of such self-evaluations. I’ll tell you what I concluded after these evaluations. I realized that success is much more than just 2 + 2 = 4. Professionally, it was great that I got a chance to work upon a different kind of assignment. It gave me a lot of satisfaction. Financially, I hadn’t expected to get a break this big in my first year as an independent consultant. So money-wise, that was sort of a relief. Obviously there is always room for improvement, and one could argue that I could have earned more if I had actively sought projects, but again as I said, the sabbatical at the start of the year was a blessing in disguise. Experience-wise, I feel I’ve grown by three years in just this one year! I put in my best efforts and I’m quite happy with the results. At the end of the day, that’s what counts the most.

The college lectures have continued to give me as much satisfaction as the software development work. I hope I can dedicate good amounts of time to both areas in the future too. In general, this year has provided me with far more free, yet valuable time than before. Its enabled me not just to recharge my mind, but also to pursue other hobbies and broaden perspectives.

The future

I realize that this is just the start. There’s a long journey ahead and you never know what life might throw at you. They say that personal and professional lives should be kept separate. I don’t believe that. I feel that each one aids the other, and likewise each one affects the other. You’ve got to be alert. You have to be audacious enough to plan, and adaptable enough to change those plans to suit the situations.

I will end this post with one of my favorite songs. Its from the 1997 Disney animation movie ‘Hercules‘, and it gives a near perfect picture of my thoughts at this moment 🙂

“I have often dreamed
Of a far off place
Where a hero’s welcome
Would be waiting for me,
Where the crowds will cheer
When they see my face,
And a voice keeps saying
This is where I’m meant to be..

I’ll be there someday
I can go the distance,
I will find my way
If I can be strong,
I know every mile
Will be worth my while,
When I go the distance
I’ll be right where I belong..

Down an unknown road
To embrace my fate,
Though the road may wander
It will lead me to you,
And a thousand years
Would be worth the wait,
It may take a lifetime
But somehow I’ll see it through..

And I won’t look back
I can go the distance,
And I’ll stay on track
No I won’t accept defeat,
It’s an uphill slope
But I won’t loose hope
Till I go the distance
And my journey is complete..

But to look beyond the glory is the hardest part,
For a hero’s strength is measured by his heart..

Like a shooting star
I will go the distance,
I will search the world
I will face its harms,
I don’t care how far
I can go the distance,
Till I find my hero’s welcome
Waiting in your arms..

I will search the world,
I will face its harms,
Till I find my hero’s welcome
Waiting in your arms..”

A strangely fulfilling day

Ok, so how do you brand a day as ‘strangely fulfilling’? Well, here’s my take on it. You go into a day feeling a little down on your health. Also, you aren’t exactly in a great frame of mind since the past few weeks so you don’t expect anything miraculous to happen that day either, plus you know you have a long week ahead full of work and the little health problem I mentioned earlier might unnecessarily impede your best efforts. You seek some random inspiration, maybe from the people and happenings around you, but aren’t quite sure where to find it from.

This Monday (well, it had to be a Monday, right 😉 ), I started my day exactly like that. I had been ‘under the weather’ for the whole of last week; got rain-wet once to often and paid the price by having a sore throat and a slight fever over the weekend. The project I’m working on for a client is in its final stages so I couldn’t really stay at home. I almost dragged myself to the workplace, unshaven and all, and settled down in the day’s planned tasks. About half-an-hour after lunch-time I got a call from the technical advisor (the person whom I work with in the company) saying that he wanted to test my software program for some live calculations. Well, this program I’m developing is an optimized, automated substitute for an extremely lengthy and tedious manual calculation process for Crane design. We started running some tests on it, and after a few tweaks to the output we got the required results in absolutely no time. He was satisfied. I too was satisfied.

Gantry Crane (Image courtesy: Emech.in)

The number of calculations I’ve had to code in to this software program easily outnumber the sum total of the Math problems I solved as homework during all my schooling years put together! So you can see I was on tenterhooks while we were running the tests, hoping for them to succeed. I realized later that these tests made it possible for the sales team to answer the queries of a particular client and give him a quote by the end of the day – a task which seemed difficult that morning. It was sort of fruition for my efforts during the last 3 months.

Along the way I also interacted with a few people from the sales team and got to know them better. Being a person who loves to interact and make friends with like-minded people, I relished this opportunity. In a high-pressure job environment driven by a world of cut-throat competition, I guess it means a lot to these guys if something helps in quickening their response to their respective clients.

For some time, I almost forgot about my sore throat. Ironically it didn’t forget me 😦 , and by the end of the day it caught up with my growing enthusiasm. I drove back home, carrying a slight temperature. I really needed something different to divert my attention away from body-ache, paining-throat and medicines. “A good, light, comedy movie would be great”, I thought. I picked up the TV remote and flicked to the movie channels section, and there it was! They were playing a 1980’s classic, the tremendously hilarious Airplane!. Full of sarcastic humor, it reminded me of another of my favorite movies belonging to the same genre – Hot Shots!. Really, I couldn’t have asked for a better remedy that evening!

It was almost time for dinner when I finished watching the movie, but due to the nauseating feeling I didn’t really feel like having normal food. “Something different?”, I though to myself and peeped into the kitchen. I realized that we had Foccacia bread in there. Mom and me then embellished it with some Tomatoes, Onion and Chillies, put it in the microwave oven and after a few minutes I had an absolutely wonderful dinner ready for me!

Focaccia bread with toppings of Tomatoes, Onions and Chillies

Believe me, it tasted GOOD! The tummy was full by now, but the exertion had taken its toll on my physical-condition, which was quite bad to begin with. As I headed toward the warmth of my bed, though, I began thinking about the day. It had started out as any other day, and could have ended just the same without any special mentions anywhere, but it didn’t. It wasn’t as if I had discovered a new chemical element or had achieved something just as ground-breaking, but 3 very different things had made the day ‘fulfilling’ in their own strange way! 🙂

I was reminded of a quote from the movie Peaceful Warrior (2006) –

“There are no ordinary moments.”

Well, I think there are no ordinary days either! In the end, everything boils down to your perspective.

Can software ever be 100% tested?

By now everyone would have at least heard of the longest match in Tennis history that was played at this year’s Wimbledon between John Isner and Nicolas Mahut. As unearthly as their will, effort, and stamina sounds, the match was also a very good example of an earthly peculiarity – ‘errors in software applications’.

Wimbledon Scoreboard (Image courtesy: Wikimedia Commons)

During that legendary final set, the stadium scoreboard went kaput after displaying ’47-47′. So the stunned spectators as well as the weary chair umpire had to rely only on manual records of the game score for the never-ending set.

Why? Well, nobody at IBM had thought that two supposedly sane individuals would ever reach that figure, let alone cross it! Not only that, even the online scoreboard reset itself after displaying ’50-50′! Were the programmers wrong? Now, that’s a tricky question.

For any amount of budget, there has to be a limit until where software applications, like automatic scoring systems, can be tested. You can either trust a wise man who magically comes up with certain values, or base your limits on certain empirical data, the fact is that these limits cannot be infinity. Software testers are paid their wages to put the application through the paces. Yes, there are fixed rules and conditions (test cases) to satisfy, but hardcore testers pride themselves in thinking of innovative conditions where the application might break. All this is added to the already exhaustive list of test scenarios, but how exhaustive can ‘exhaustive’ be! There will always be certain cases and non-conventional types of inputs where even the best pieces of softwares will crack.

The impact of this might not sound as catastrophic in a Tennis match scenario, but consider this happening to a near-perfect auto-pilot application in the aircraft you might be boarding during your business trip next week, or to a highly secure online-banking and money-transfer application which your bank uses to handle multi-million dollar transactions. The knowledge of some recent unsolved aircraft accidents and some computer hacking incidences is enough to realize the severity of the issue. A bit ruffled now, are you?

The point is not to get hysterical about the state of affairs, but to remain alert. Always look at the odds of these things happening, e.g. the ratio of air-accidents to the amount of aircraft taking off and landing on airports all over the world on any given day, or the ratio of banking-frauds to the total amount of money being handled online every hour. There are hundreds of thousands of people working in the software field which are dedicated towards producing secure and highly-reliable pieces of software, be it for the microwave oven in your kitchen or the International Space Station (ISS) flying many miles above you.

Many would remember the recent controversies and product recalls by the auto major Toyota regarding the software (embedded firmware) in its hi-tech cars. As more features are added to existing systems and software gets more and more complex, the chances of it behaving erratically even after months of thorough testing increases! Also, not every issue that occurs is easily reproducible back at the factory. Not everybody in this world is a software developer and so not everybody actually understands this fact. The thing we all have to remember before starting the blame-game when some untoward incident happens is that nothing can be 100% secure; that’s a myth. People work day and night to iron out any known (and imaginatively unknown) issues and test cases, which, let me tell you, can run into thousands. There is always scope for improvement which, like it or not, takes time. Neither can companies stop selling cars until that time, nor can airlines stop flying the aircraft in their arsenal until every possible glitch is resolved.

The 2035 edition of the Audi RSQ Sport Coupe (Image courtesy: PopularMechanics.com)

We humans aren’t perfect, then how can we expect the machines we make to be so; unless of course they are made by a Positronic brain, as mentioned in Issac Asimov‘s sci-fi classic ‘I, Robot‘!

The best analogy I can think of is that of a letter by Pete Docter, the director of the highly successful Pixar movies ‘Monsters, Inc.‘ (2001) and ‘Up‘ (2009), where he had quoted Pixar’s John Lasseter. He had said – “Pixar films don’t get finished, they just get released.” I think the same logic applies to the world of software applications!