Monday, June 24, 2013

Logic is Magic


 How do I define Magic?
Transforming a green pigeon to violet elephant? Yes, could be…
Creating objects out of nowhere? Perhaps…
Vanishing into thin air? Interesting…

But essentially, the art of bringing a pleasant, satisfied smile on a person’s face, overcome with awe and respect, definitely is, MAGIC 

In our industry, creating a successful engagement with a satisfied client, who sees value for the money invested, while at the same time making the proposal profitable, is MAGIC... 

How do we get at it? Let’s see… 

With changing requirements, the most logical thing would be to first draw a baseline that would determine the agreed scope of delivery. As they say, walking on water and developing software from a client’s requirement are both easy, if frozen!!Let’s freeze them first… 

Let’s then see how all the requirements fit in. Lets not be the characters from ‘six blind men and the elephant’ where each one of them is right, but collectively wrong. Sit back and see what the holistic picture is. Check if your green pigeon is turning into a violet elephant or it is turning into a blue monkey! Bring out your pen and paper, draw a simple flowchart/ algorithm; it will keep us focused on the requirement! This is nothing but Logic being applied to create Magic. 

Faced with a complex situation? A KISS could definitely of great help in addressing it. Stop!!! Don’t let your thoughts run wild… It’s just thinking on “Keep It Simple Stupid” lines to tackle the problem. It helps, trust me!!! Or just take some time off, relax, sip some drink, try the ‘kiss’ you thought of as well – it could help too – you never know…Eureka!!! 

"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. Any fool can write code that a computer can understand. Good programmers write code that humans can understand." 

Consider this:
  • A simplistic client requirement is to have a utility that would help replicate nested folder structure from one machine to another? What do you use? C? C++? VB? Java? .NET? VC++? Completion is fierce and options are many. Assuming windows based system, a simple logical situation would be to use plain old DOS command XCOPY without having to refer to any of those big guys.
  • A data migration requirement to read through five year financial multi-line transactional text based output to a normalized form, say from Tally… Again what are the options? Well, a seeming lesser used, less time consuming option could be using MS Excel, with a splash of macros!!! Ever thought? You could end up doing the activity in just 5% of the time that would otherwise be consumed.
The point to drive home here is to think thru, apply logic and select what could be the best way to resolve a task…Programming language is just one of the means; it is and should be, by no way, a barrier to Logic, a barrier to thought. Any language you choose, find the learning resources related to the programming language; keep it handy, it’s just the syntax that differs mainly. Empower yourself… Knowledge is now free, knowledge is power.

Let’s draw an example from airline industry on using logic. The plane / jet / supersonic  despite being able to fly fast and high, don’t have a reverse gear to move back. Though technology could have aided in adding this feature, the simpler, cost effective, logical solution was to have a pusher vehicle to move the plane back. Again, objective achieved with logic rather than technology. 

Logic drawn, Just follow it, and do it right the first time…

Remember, a stitch in time, saves nine…:-) 

End of day, it’s the whole team working towards a single goal, it’s not anything about creating zero defect software or 99.999% defect free software ;-) (yeah…. Perfection is myth .. and blah blah), its all about creating Magic, the smile on everyone’s face, using Logic.

PS. This blog was originally posted in Mindtree web portalA big thanks To Ramachandran, my mentor for reviewing