Monday, April 28, 2014

Lessons to be learnt from Mr.Narendra Modi for IT Management

I have been always a keen follower of Mr.Narendra Modi's (Renowned Indian Politician) thoughts on his governance, growth and development methods. 

He has recently become a more impacting and youth driving + motivating sensation in India, with millions of motivated youth from urban and rural parts of India following him and wishing him to be next PM of India. 

The few lessons that he conveys to public in his rallies are of such unique but brilliantly vibrant that they can be applied everywhere to give astounding results. I wish to derive the learning aspect of his speeches to devise methods that can make IT Management a very focused route in order to benefit all i.e. client, team, ourselves and employer respectively.

So here are the points:
  1. Never Think of Becoming Someone rather Think of Doing Something: This mantra tells us the root of success in life. When a person thinks of becoming somebody important with power or prominence, it can hurt sometimes if the dream is not accomplished because not always you get what you want, not always the results of your hard work pays in the same amount you toiled for it. When this failure is encountered a person might get demotivated in life and can lose the sight on goal. Rather if you think of doing something which has importance, it motivates the person to deliver in short term goals which progressively leads the person to the larger goal and ultimately success. At times if a person loses the sight of short term goals or feels demotivated he can easily come back by realizing his stagnation or turmoils or mistakes. So now how can I apply this in managing an IT workforce. If we set target for our teammates on short term goals like automating parts of functionality each week, developing this part of code each week rather than giving them a bulk task of automation of complete payment procedure or developing code for complete checkout process. If we break the task it is easier to manage. In the same way if we think of earning a post of Delivery Manager we need to see that how well we are able to understand the basics of development while we are a novice developer, how will we advance on my skill set this year and how will I learn to mentor our juniors next year. Slowly like this when we pass the successive year we can later focus on leading team, innovating ang try to give value to client and then save company cost and increasing earning revenue. Working in the direction of doing something with excellence leads us to position of excellence and once this work habit is developed nobody can stop us from personal, social or organizational growth.
  2. Never look upon someone, never look down on someone rather look collectively towards achieving a goal: This suggests that we should neither look over somebody with self-proclaimed superiority, nor we should look over somebody thinking that he or she is weak, without self-decisive point of view. Rather we should look in ways that how we can contribute with him or her in order to achieve a common goal together. If we waste our time in petty hatred building views in a group or team we can never succeed both personally and collectively. In a team we should try to allocate jobs as per person's dire interest and fore-see how this allocation can be done in order to collectively drive the team towards its set goals. For example if there is a young programmer who does not code well but is good in criticizing other people's code and on the other hand there is a software tester who can find discrepancies in code. This young programmer and tester would normally in real world be asked to continuously do the same job on  daily basis even though there vested interests are in opposite roles. But if we don't look upon or down on there performance and adopt a collective approach of problem solving keeping the interests of our code base quality as the benchmark of success we can easily switch the roles and see if this really works. If it works it is good for the team and them if not we can see how there roles can be slightly modified so that they can become code reviewer and software developer engineer for testing respectively. Thus solving both the problems and creating a win-win for all.
  3. Life is choosing between intense hard work, hard work and smart way of working:  People can do the jobs in 3 ways, people  achieve their goals in 3 ways, people life is also governed by these 3 ways i.e. by doing intense hard work, or by doing hard work in general, or by doing work smartly. Suppose there is functionality to be tested this can be done by covering all the test scenarios manually on all the required platforms by working day and night i.e. intense hard work. This can also be done by combining automation and manual testing by covering all scenarios on all platforms i.e. hard work.Third is using cloud based automated test environments for test scenario execution in parallel yet covering all the scenarios. So the essence is that no matter hard work is always rewarded but smarter way of doing work is appreciated, it saves valuable time, earns benefits and above all develops a way of thinking to do things unconventionally. This out-of-the-box thinking makes us smarter and helps us in making our work more efficient and productive. 
  4. Come together to Grow together: If we come together in a team and participate in each and every decision taken by the team management whole-heartedly we have better chances of succeeding together. Rather if people within the teams are divided in sub-groups who does not keep their points or discuss their issues going forward in a particular direction it becomes difficult for all to come together and work towards a team goal. Slowly all members lose interest and neither the team goals are achieved nor the individual goals are achieved. But if all members discuss things and resolve issues beforehand and then work towards a goal whole-heartedly it increases the probability of succeeding. Effort should not be made in the direction of avoiding or alienating team members if they are not willing to co-operate but towards finding ways so that all come together for the same.
  5. Freedom to Work as per own's interest for some part of the day:  I personally have experienced the same in my team once. There was Software tester in my team who liked to think about new product designs and innovative products he always was full of wonderful ideas to discuss. But he was going nowhere with them as his job was just the mobile apps for the client. Once a manager thought of giving him some time to analyse the mobile apps and provide some feedback. After 2 days the draft version of app features suggestions he proposed were so marvelous that client's marketing head wished to meet him in order to work on the same ideas he proposed. This is the power of doing what we like doing the most. In IT companies if for identified individuals who have shown some interest based caliber in doing something different that in turn can benefit the project/product should be encouraged.
  6. Growth for all is the solution for all problems: In a team if there are 50 IT specialists, then a lead or manager should have a plan from beginning to ensure growth for all these 50 members from day one. If a lead or manager fails to do so, the team will lose talent, team members will lose interest, team will lose targets, and like a domino effect everything will fail one day. And one day the lead or manager will have to escape and witness the downfall over the shoulder's of new lead or manager.
  7. More the power lead/manager has distributed to subordinates the more powerful the team will be: If a person or 2 person have all the power and tries to manage everything then the team or system will fail. If the person-in-charge distributes the power to capable subordinates and in return looks into solving problems that these subordinates cannot solve, will make a team more productive. Rather than wasting time in managing subordinates. 
  8. A Creative Man is motivated by Desire to Achieve but not by Desire to Defeat others: Suppose if I try to compete with a fellow architect and try to defeat him by doing few things better than him. What really I would be doing is that I will be limiting myself to the capabilities of the other guy and concentrate my energy in working on skills that will make me only competitively superior to the other guy. But if I work to compete with myself if I challenge myself that OK if I can design an effective architecture for developing High Performance Cloud Services for Healthcare then how can I better myself in reducing the throughput to a much lower level. If I work in this direction then I will be taking my knowledge and skill set level to a much higher standards rather than wasting my time on petty individual targeted advancement of skill set.
  9. Life is 10% what happens to you and 90% of how you react to it: Suppose I get a low performance appraisal this year so shall I stop performing and stop enhancing my skillset, shall I stop going to office, shall I stop enjoying my work? No if I get something that I don't deserve then I should have the self-esteem and confidence to show the management that what I am capable of. If a person works undeterred towards his/her goal no matter how long he/she has to work he/she achieves what he has always deserved. No hard work goes waste no learning is useless. If we wish to go ahead and succeed we should learn to tackle 10% of hurdles with 90% of positive and powerful determination. 

Friday, April 11, 2014

How Smart Watches or Smart Gadgets can truly be made Smart?

The Smart Watches that we currently have in market or will see in the forthcoming years cannot become truly Smart if they don't present the users with something that is based on disruptive innovation and makes the prospective users accept it as a daily need rather than just providing them with a new accessory for a fashion or geeky statement.

These smart watches will be mere "Mobile Phones" miniaturized and redesigned for wrists having the same redundant phone features without presenting the users with joy and excitement of using a truly remarkable smart companion. 

The features that should be included in a true smart watch in order to stand out as a successful product needs to be supported with focused research & development plus with an understanding that redundant products don't last long but the products can creates their own market does.

Points that can make present day smart watches truly "Smart" are:


  1. A smart watch should have its own tech to access the internet. It is a "Good to Have" feature now that the present day smart watches rely on mobile phones for the same but in future such devices would not be worthy as they are bound to lose user's interest. Mainly because of short battery life, relying on bluetooth short ranges etc. A smart watch that will have its own internet access power will stand out and that access should be supported in all forms like SIM, Wi-Fi or Tethering.
  2. A smart watch needs to have the ability to set smart notifications. A smart notification is like suppose I like to get updated about Formula1 news but I do not want all the news to be collected but only one like Ferrari/Alonso standing in Australian Race. Price of USD/INR fluctuation below certain level etc. Check how many colleagues have voted yes for an weekend outing only with a vote count notification after my Friday's 3:00 pm meeting, remind me of my friend's ping in the evening that I checked but not replied etc. If we can provide with this ability to set smart notifications then that would be a really helpful feature. 
  3. Judging the mood of the wearer would be wonderful for example the best way to do it is to notice that how many times the wearer had a laugh in a day or how many times he paid for Starbucks coffee or how late he slept and got up matching it with physical activity next day. So there are many ways in which this also can be tracked and can provide more than just activity tracking. Once we know the mood of the wearer we can make other features on the smart watch behave accordingly like if the person is happy then we can tell him about weekend's weather or latest movie, if wearer is tired due to busy day and less sleep we can decrease the notifications and give the person a more peaceful aura and so on and so forth.
  4. Provide the watch with the ability to detect health conditions like if a user's blood pressure always stays at 80/120 with 5% variations normally but if there is steep rise or fall then watch can ask for SOS alert to preset emergency numbers. If there is sudden rise or fall of heartbeat then ask for user's attention and there can be many other features that can help in this way.
  5. Usage of smart watch's processing power when it is not used at some points of day in order to collect meaningful data/info for the user like I wish to know relation between ontology and knowledge engineering then ask the watch to search through Google's top 10 search results for this and present with a informational summary.
  6. Learn through user engagement like there are times in a day when user will spend time on the watch like going through notifications, checking news headlines or set preferences. So this time can be used to push the user with the info that he/she has shown more interest in like checking of social networking feeds, checking calendar for planning, reminder to reply missed pings/calls/texts etc
  7. Make use of sensors on device to provide with relevant information at relevant time
  8. Ability to connect derive and use information about the user from all the computational platforms like desktop, laptop, phones, home automation systems, music players, other smart devices or sensors. This can be achieved by slowly building the ecosystem or by providing smart watch all possible ways it can connect to these external electronic environments without owning them but via collaboration.
  9. Ability to get long battery life or power through solar energy or utilization of human body heat/movement for energy purposes until other sufficiently advanced technologies are not fully developed for commercial use. What if your watch charges if you tie it around your leg and go for a run? 
  10. Most importantly it should have the ability to take feeds from smart watches of friends or relatives who authenticate for example only sharing their Lunch time location so that we can meet up and discuss new ideas. My brother shares his latest time spend in gym for a push-up challenge. My wife's mood share to plan the weekend :) etc.
  11. Ability to provide probabilistic predictions based on my personality like if I ask my smart watch that what will be the best time to go downtown for getting my prized possession watch glass fixed so that there is minimal traffic based delay, or how frequently I need to walk in office so that I can burn at least 500 calories etc
  12. Ability to give me geo-location based feeds of interesting stuff that is happening around like I am travelling to a trekking track but there is hot water spring nearby or if I go to a movie in the evening and find that there will be a surprise visit by the star cast at that theater. So all this stuff can be taken from search services available but the striking point is the semantics that will make this possible
  13. Providing the watch with enough computational power so that it can be connected to a larger display and students in developing nations can use it for very basic & general computer related jobs like net browsing, video streaming, communication etc.
  14. Lastly giving watch the power to authenticate or securely identify the wearer. For example if a pin is required for a transaction smart watch can generate one based on encryption to authenticate a payment, provide secure identification for monitored areas, and provide security officials with users identification in case of fatal incidents.
These are few ideas that can make a smart watch truly "Smart", working and learning ways on how some day these can be implemented. So continue to make your grey matter more dense and enjoy the gifts & joy of learning each day more about science & technology. 



Bad practices for a Software Test Engineer

People mostly talk about the good and the best practices but it is also important to know the worst or the bad practices which a Software ...