Manager/Lead or Client – who should developers care about?
Software developers in outsourcing companies are a harried lot.
Demands come from multiple quarters – Lead or Manager, Client, Colleagues – to name a few. Sometimes a CEO and other random people are also part of the group. In large organizations, Marketing, Interaction and other teams join the party. And often there are multiple people of each type above. Time is always running out. And sometimes none of these people agree among themselves! What is a software developer to do in such a situation? Who should s/he care about? Who is most important?
None of them.
Software is made for a purpose.
That purpose is to be used by people for something. The only thing that matters in making software succeed, is whether Users will use it. If Users use your software, everyone will be happy. If Users don’t care, everything is wasted.
All the people above – Lead, Manager, Client etc – are representatives for the User. They are people with good intentions, but they are maya – illusion – from the software’s perspective. The only thing that software cares about is whether Users use it or not.
Software that is used is happy software. Software that is unused is grumpy software.
It follows logically that if software cares only about its use, the developers of that software should primarily care about the User. Generally, Client and Lead and others are also doing the same thing – they are planning and prioritizing and designing and doing everything for final User.
Your Lead may find a short-cut that ignores user. Your CEO may want something done that is good for your company but bad for user. Your Client may prioritize something where user is short-changed. On top of this, ego and personal views may come into play.
In short, sometimes (although rarely) these other players may not have user in mind. In such situations your duty is to ignore them. If you can make them see reason, good. If you cannot, you still know what is right and wrong, because you know who to focus on – the User.
Your final responsibility is to the User. Your job is to make good software that Users love.
As a developer, your User is unknown, faceless and often doesn’t exist except in the future. It is easier and tempting to think of the representatives as real, and the User as maya. At core, it is just the opposite.
But my Client pays my company! But my Lead decides my salary!
In the place-time continuum of life and careers, you will find that the experience of making good software is what you will carry forever. Everything else will float away. Your Company will change, your Colleagues will change, your Client will change, your CEO will change, your Lead will change. But that experience of making good software that users use and love and you are proud of – that experience of exhilaration, that pursuit of excellence – that will never go away.
As humans, we sometimes do what our head tells us, and sometimes what our heart tells us. But through it all, our conscience guides. Think of Clients and Leads as head and heart, and User is conscience. Client and Lead may tell you what to do, but let User be your guide throughout. As in life, so in work.
Use Users as your yardstick in all situations.
When in doubt, think of Users. When not in doubt, think of Users. Everything and everybody else is maya.
Posted in Software Engineering, Software Industry, Thoughts | Tagged Philosophy, software industry, Thoughts