Software Development

Why project managers act like a frog in boiling hot water

Posted on Updated on

Imagine a frog and then imagine a pan of boiling hot water. Now imagine that some crooked mind lifts the frog and puts it in the pan of boiling hot water. What do you think will happen? Yes, the frog will jump straight out of the pan within a faction of a second (if the lid of the pan is not closed).

Now imagine the same frog and a pan with room temperature water. Now imagine an even more crooked mind leaving the frog in that pan and putting that pan on a burner with a slow flame underneath it. What do you think will happen now? Yes, in this case the frog will not jump out but will feel at home in water.

Now, over time, the water in the pan will get warmer. What do you think frog will do? It will feel even more at home; feel happy at the warm water giving it a gentle massage to its skin & legs.

Now the crooked mind increases the flame and slowly the water starts getting warmer & warmer and then hot. What do you think the frog will do? As the water gets warmer, it will feel happier but it will not be able to realize when the water has become too uncomfortable for its own good. As the flame gets bigger underneath & water gets boiling hot, the frog will have lost all the energy in its legs to jump out. Its mind will tell to bail out but there won’t be any energy left in the frog and it will continue to be in the pan and face a slow death…

So, what has this got to do with project management & project managers?

Well, analyze carefully and you will realize that there is not much difference between a frog & the most project managers. There is also not much difference between the pan (with water) & the project environment. Most project managers, if asked to take over a project in between, would know how ‘hot or cold’ it is and then take appropriate action. This is just like the frog being put in hot water and it taking immediate action.

However, what most project managers don’t realize the 2nd scenario they land up in — where they start with water at room temperature & the water gets warmer at first and with the flame getting bigger over time the temperature under the collar gets soaring. At the start of the project, just like the water in the pan at room temperature, things look perfectly in control for the PM – a small team, key members staffed, not much confusion.
Things remain fine for some more time (till the water is warmer) but somewhere down the line things just implode and before the PM realizes things have gone out of hand (water is too hot, in the pan, for the frog to take any action). There are quality issues, builds are failing, customer is dis-satisfied, the team is unhappy & clueless, senior management is watching with eagle eyes, your family life is ruined and while driving to office you wonder how things came to be where they are today…
You wonder how & when that excellent Tech-Lead became a bottleneck & the go-to person for even small things – such as from where to setup the development environment or which version of IDE to be used with what plugins — you wonder why the leads are spending more time in answering routine questions & forwarding emails rather than doing their actual work. You wonder why the testing team doesn’t have access to the latest requirements in order to prepare the test cases. You wonder why the same question is being asked and answered a gzillion times. You wonder why customer wants you to resend the status update report of last month. You wonder when this project will end..!!!!

The fact is that we don’t realize or observe or are blind to the small changes happening around us and the long term impact of these small changes. Many downstream issues are caused by our inability  to react to significant changes that occur gradually. And in today’s era, nobody pays attention to anything ‘small’ unless it is on fire or priority#1. Everybody loves a hero – a person who turns around a losing situation into a winning one (organizations reward people who get troubled projects back on track but not necessarily those who avoid trouble and go unnoticed.) Because changes (from room temperature to warm to hot to boiling hot) happen so slowly that they go unnoticed and you are then left to wonder where and when things went wrong.

The irony is that it is not just first time PM’s who fall for this. Experienced PM’s also fall into this over & over again and then blame the ‘system’. Great PM’s foresee & preempt the ‘upcoming changes’ and plan accordingly. They plan like good chess players – several moves in advance and multiple scenarios. They manage the environment of the project accordingly to prevent the effects of ‘global warming’ within the project. Such PM’s ensure satisfied customers, happy people and predictable outcomes.

So, how can PM’s foresee & preempt the ‘upcoming small changes’ and prepare well? What can they do?  That’s for another post 🙂

Your Social Networth | Why you need diversity in your network(s)

Posted on Updated on

Your Social NetworksNOTE: While this post is applicable to all professionals, I am writing this specially for the young folks starting their first job — straight out of campus 

As a campus mind, these are probable the best days of your life. You have just landed your first job, through campus, and you would naturally be on cloud nine (everything needs to be cloud enabled these days you see 🙂), You would be looking forward to the start of your career and the many firsts that would accompany it – the first salary check (the most important thing, and I am sure you would have already thought on how to spend it also 🙂), your first office space/desk with a phone, your first visiting card, your first project, your first PM and so on…..  This is a great moment in your life and you should enjoy each & every moment of it.

Social networking is one area that you folks are experts at. For you all it is like second nature; having grown with online social networks around you. So, I will write about the various ‘real networks’ that you would be having & the need for diversity in your various networks.

Your Work Place Circle: This will consist of people in your circle at the workplace. Chances are that you would be joining MindTree with your batch-mates/friends from college and you would naturally move around in a group with them – have lunch with them, stay with them at a PG/rented house, go out with them, etc. These are people with whom you have spent 4+ years of your life in college and naturally the trust, the bonding, the relationship you have with them will run very deep. The fact that they are also part of the same organization as you are is like icing on the cake as it allows you to carry on the friendship at work also.

Your Social Circle: Chances are that many of your friends from college/batch-mates would have joined some other equally good IT company in your city and that would form your larger social circle in the near future. You would be either staying with them or meeting them on weekends late evenings. You would talk about your work with them, exchange notes on which company is good, which is paying what salary, how the food at the canteen sucks and what is happening at work etc etc. This social circle will be your source of stories on what is happening at which company and you will form perceptions about various organizations without having any first hand info about them.

Your Mentor/Professional Circle: Chances are that you (through your social/work circle) would be connected to your seniors from college – people who were 1-2 year senior to you — and that will form the majority of your mentor/professional circle. Here you will hear stories of how some senior of yours is getting XXX lakhs, or going to onsite, or got promoted to a PM role in just XXX years, or an XYZ domain/area being the future of things would be doing the rounds. Over time, you WILL make your career decisions based on the inputs from this mentor/professional circle.

Now, if you analyze the above circles, you will realize that almost all consist of people who have similar experience as your, are from same background, do the same things as you – basically think the same as you. So, where is the diversity in your network? I am pretty sure that almost everybody in such a network thinks the same, which basically means that there is very little diverse thinking at all and it is just like a ‘herd of sheep’s going somewhere’ — one blindly following the other.

So, why do we need diversity in our networks?

Just think of it, Facebook (or your next favorite social network) is meant to connect you with people who you already know. Not with people who you would like to know. Nothing wrong with it as this familiarity provides comfort & provides a support system. BUT, familiarity or uni-dimensionality of your network doesn’t necessarily work well for getting fresh & new points of view. New & fresh insights can also be found outside your immediate & familiar networks. So, how do you ensure you don’t miss out on those insights? How do you ensure that your network is challenging your thoughts/ideas/assumptions and not just reinforcing them — if all you do is talk to the same people all the time?

Now, not for a moment I am suggesting that we don’t have our facebook friends, our social/professional circles. As humans we are hardwired to like familiarity. We like confirmation that whatever it is that we’re doing is right. However, you should also hang out (at least for a little bit) with people who are not like you. You should break that pattern of familiarity before it becomes an echo chamber of just similar & one-dimensional thoughts. This diversity will be like oxygen to your thinking and help you immensely over time.

So, how do you bring diversity in your networks?

Work Circle: Don’t limit your friend circle at workplace to the people you already know. Try to make new friends from your campus batch – people who are NOT from your college or the place that you come from. You need to expand your workplace circle to include new people into it so that your work circle is diverse and not just one-dimensional – of people you already know. You could team up with these new people and start your pet side-projects. Join the various clubs in your organization and play an active role in them. I am sure every organization would have several clubs that you can join and expand your social circle

Social/Professional Circle: To expand your social circle & mentor/professional circle, try attending the various technology/geeky events that happen in almost every city these days. BarCamps are a perfect place to meet new, young, dynamic, enthusiastic people of diverse backgrounds and experience. It is the perfect place for you to build your “real network” (and not just your online network) and know people who you would not have met otherwise. BarCamps are a melting pot of ideas, energy, enthusiasm & a fun place to be. (I have read about people who have met at barcamps for the first time, became friends and later got married too :-)) Over time, you can reach out to this network of yours for professional advice & bounce of ideas. Apart from barcamps, you can also get involved with other geeky events that happen at IIM-B, startup circles, TiE, technology events/tracks etc . If you are socially inclined, and based out of Bangalore, then you can get involved with Janagraaha — they need good technical folks like you for various volunteering activities.

Another way to expand your social circle & bring diversity in your network is to have a passion outside of your work. Now, don’t worry if you don’t have one already. You can find one if you want to. There are tons of options from guitar classes, to salsa dancing to Shiamak Davar bollywood dance academy to food clubs, from railway travel groups to automobile freaks to weekend trekking to cycling to photography to theatre to Janagrahaa to some other equally exciting thing. You will be amazed at the number of options you have these days to get involved in various things. Amongst these, hopefully, you will find or discover your passion also. In these groups, you will meet people from all age groups, diverse backgrounds, education, professions and such network will help you give different perspectives towards various things which you could miss if your entire network is just from the IT industry & the people you already know.

So, don’t remain a ‘frog in the well’ jump out of it. Get out of your comfort zone and make your network count..!!!

Are you a developer without a side-project??

Posted on Updated on

 Shania Twain would have sung: ‘Ok, so you are a software developer in the IT industry? That don’t impress me much..’

The reality of software industry is that 9/10 times you will not get to work on the technologies that you are interested in. Even if you are lucky to work in the area of your choice, chances are that you may be working on the older versions of the technology. Every day there are more and more cutting edge technologies coming out and how do you, as a software professional, get to work on them?

Suppose, you want to keep your skillset upto date(for various reasons :-)) & want to learn new technologies and skills. How do you get about that? The reality is that opportunities are limited and if you just wait for opportunities to come to by; time will run by.!!!

OK, time for a pop quiz: When was the last time you created an application/software from scratch? Most projects require package implementations, maintenance work, adding new features, fixing bugs, etc. Even in the few projects where applications are built from scratch, you would be part of a large team and not creating software all by yourself.

So, what can a software developer do that will impress Shania Twain?

Enter Side Projects: Call them pet-projects, side-projects, pickle-projects, etc whatever.. In a nut-shell, they are projects that you do for yourself. They are a great place to do all you want with no one else asking you to do this or that. Side-projects will allow you to work on the technologies that you want to work on, problem statements that you want to solve — at your pace & leisure without any pressure of worrying about bugs or performance issues. It’s perfectly ok if the side-project build crashes 10 times a day and has a few bugs here and there.

Side-projects will allow you to work towards creating software that you are passionate about, something that you enjoy working on. Yes, side-projects can bring the fun back into programing and can also help prevent the burn-outs that one can encounter while working on customer projects/areas that one is not passionate about.

Side-projects can help you keep up-to-date with latest technologies & emerging trends in software development. You can try out the bleeding edge of software for yourself. Never written a jQuery +CSS3 + HTML5 code yourself? No problem, just start a small side-project using it and soon you can have something to show off as proof of your newly acquired skills. (and this can help you in ways that you can’t even imagine :-))

Having your side-projects will force you to think of your software from scratch. You will need to think of design issues performance issues. You will have to think of trade-offs and make ‘this-vs-that’ decisions. Your side-projects allow you to program in an exploratory way which allows you to take paths that you would have normally not done in your work projects. You can try out different algorithms, logic and see what happens without any worry in the world. Your side-projects will also allow you to incorporate all your past learning’s into creating a new (and improved) project.

And you know what; all said and done, real programming & coding is an art, a creative process that can take you onto a ‘zone’. A ‘zone’ where things just flow… and to get into the zone, you need to be working on code that you are passionate about and may not necessarily come from coding what your day job code requires.

But yes, just like nature, nothing worthwhile will come without its own set of challenges. Yes, you will face challenges in your side-projects.

The biggest challenge to your side-projects will come from your losing interest in your side-project. You will have all the enthusiasm at the start but slowly you could end up skipping days and procrastinating the work to tomorrow. Before you know, two months later you would have forgotten about it.

You will have pressure of time. You may be tempted to say that you don’t have time… but you know what? Most of us complain about not having enough time. The truth is, we have enough time to do whatever we want, but we’re not willing to make the sacrifices to do it. Yes, you’ll have to sacrifice good things for great things.

So, what are you waiting for… Get that side-project going…!!!

What do you want? User adoption or compliance?

Posted on Updated on

I believe that successful KM initiatives & professionals pay a great deal of importance to the change management aspects. If, there is one place where “build it and they will come” doesn’t work, it is KM. After all, users are tuned to a way or working and majority of them would resist any kind of change. It’s a natural reaction and for various reasons a very tricky area to deal with.

Now to counter this tricky area of change management, KM initiatives/professionals rely on approaches which could be counter-productive to what their intentions are. Once such approach, that is commonly adopted is the “top down” mandated approach. On the surface of it, this looks simple, obvious, fast, scalable, logical and the most powerful approach that one can envision. What could be better than the top most management sending out a ‘memo’ asking people to do things a certain way.

I have seen this approach and have observed that this works best when you need ‘compliance’. Areas such as ‘time sheet entry’, ‘filing expenses’ etc are best suited for this approach. Anything transactional can be rolled out on a mass scale using this approach.

The issue arises when you try & roll out KM initiatives with this compliance driven/top-down method. Chances are that more often than not this will not yield the desired results and one can get in a vicious cycle of asking for more ‘top down compliance support’. This can frustrate the hell out of people who are leading these change management initiatives as they can’t fathom why on earth the seemingly obvious method of top down/compliance driven approach is not working.

We all know the results of a top down approach that mandates submission of 2 documents to the knowledge repository every quarter by each employee. On the last week of the quarter you will have a deluge of submissions and most of them would be not worth the bytes contained in them.

On the other hand, KM initiatives/professionals that rely on the adoption approach have greater chances of success. On the surface of it, the adoption approach looks to be an insurmountable obstacle but with patience & a long view of time this can be achieved. Adoption happens when people ‘buy into’ things and not because they are being ‘told to do so’.  Adoption happens because people see that things actually help them, appeal to them on an emotive/cognitive wavelength. Adoption happens when people, who we trust, tell us that it is good, they are using it & it makes sense. Adoption happens ‘through’ people… (We adopted facebook, twitter etc using these principles of adoption.)

The key to adoption approach also lies in finding the right set of people, who you will work with initially. They are going to be your evangelist and believe me they will be like customers who “tell 1 more person, at best, if they satisfied and will tell 100 people if they are not satisfied”.  Starting the process of adoption is slow and takes time. However the growth over time can be exponential and usually has a more stable foundation which is not only dependent on ‘top down’ directives. Adoption approach is akin to trying to move a heavy flywheel… lots of effort & commitment is required initially to even move the flywheel but as the revolutions go by the speed increases and over time the flywheel literally moves on an auto-pilot mode.

I have also observed that a combination of adoption (at a macro level) & top-down (at a micro level) also works in several circumstances. The key is in knowing which one to use when and for what. And that’s comes from experience & losing your hair over the years 🙂

Compliance is best achieved through systems & adoption is best achieved through people. So, if you need compliance of initiatives then build systems that monitor themselves for the compliance automatically. However; if you need adoption then be prepared for the long haul & work with people

Do processes kill developer passion?

Posted on Updated on

Two interesting pieces of content i read on the internet, around programming, that I would like to share

An O’reilly article that says ‘Best practices sound good in isolation, but they can suck the life out of developers...’

O’Reilly Radar argues that excessive process in software development is sucking the life out of passionate developers, all in the name of making sure that ‘good code’ gets written. ‘The underlying feedback loop making this progressively worse is that passionate programmers write great code, but process kills passion. Disaffected programmers write poor code, and poor code makes management add more process in an attempt to “make” their programmers write good code. That just makes morale worse, and so on.'”

My take is that the time for these processes need to be budgeted in the development process itself. If we don’t then we may not get the benefits of these processes. To be fair, even the O’reilly article doesn’t make a case for the ‘wild-wild west’ kind of chaotic programming. What I found even more interesting than the article itself was the comments on that article. Makes for a pretty interesting read.

The other question I had was: combined together, with all these best practices to be followed, do developers even get time to code? Here is a humorous take on what programmers eventually spend their time on

Not all of the above is true but it kind of makes the point 🙂

So, what’s your take on this subject? Are these & a hundred other industry ‘best practices’ a great idea. Or do they ‘in isolation‘ make a great case but lose out when chained together and become an unnecessary overhead leaving little time for developers to be innovative and creative?

Using Hadoop/Python/HBase for processing 2.6 million crash reports per day | A Mozilla story…

Posted on Updated on

Every computer literate person, at some point or the other, would have faced an application crash and a message something similar to the following:

“xxxx application crashed. Would you like to send the details to the XYZ company to help make the product better…” 

I will be honest that I have seldom hit the ‘OK’ button but have at times wondered how would these crash reports get processed.

Now, here is a great insight into how Mozilla processes the browser crash reports it receives. The project is called Socorro & uses Hadoop, Python, HBase etc.

You can read a wonderful article here. A must read for all Techies, has a short demo video, a PoC showing how Mozilla could integrate Hazelcast into Socorro and achieve caching and processing 2TB of crash reports with 50 node Hazelcast cluster.

Caching and Processing 2TB Mozilla Crash Reports in memory with Hazelcast

Mozilla receives ~2.5K crash reports per minute during peak traffic & stores 2.6 million crash reports per day….!!!!.

PS: Am wondering how much crash reports Microsoft would be getting for it’s applications :-))