We, developers, are often practicing the best technology of today while trying to learn the best technology of tomorrow. The problem is that not so many of us focus on the other part of our work. Mostly understanding the client needs and improving our soft skills.
If a developer is not able to understand the client and have a decent overview about its business, he will be unable to create an appropriate solution. And that sadly means he will not be so different from a monkey with a keyboard.
The key for cultivating deep understanding is to create empathy and try to care about what is important for the client as we care about what is important for us but, unfortunately, the development culture is wrong.
Part of the blame goes to the schools. “Oh, this school has a great Computer Science program” or “Many people working in this amazing company come from that school” are common things to hear when you are about to pick a college. The problem is that most of the schools have an excessive focus on technical subjects making some of the future professionals with almost zero people skills as they are leaving the more “human” topics aside.
The other part of the blame I put on the people we look up to – Famous developers, our colleagues, seniors in our own companies and so on. When we start getting into software development for real we hear things like “clients never knows what they want” or, often, stories about developers who stayed overnight to deliver a project and are regarded as heroes.
The real heroes in software development are those who actually try and succeed to understand what the client wants and are able to translate this into a well written code. Understand the client is not difficult, we just need to empathize with them. Just like we should empathize with everybody else.
To put this into a context, imagine if you need to visit a doctor: You don’t know what you have when you go to the doctor. You describe how you feel and the doctor will make the diagnosis based on what he hears and what he checks. Then he will prescribe some medicaments or send you to a specialist. We tend to trust doctors because we know that, even if they are pressed with time, they know what they are doing.
I know there are bad doctors. There are also bad developers. Just stick with me.
Can you imagine how you would feel if you go to the doctor with a broken arm and the only thing they do is to give you an antibiotic? That’s more lack of interest of taking care of you than very poor diagnostic skills. In another words, he is a monkey with a stethoscope.
I guess you know what I mean: We are the doctors and the clients are the patients. The same empathy which connects the doctors to their patients, should connect developers with clients. Only then we will be able to understand what the client wants and actually do something useful about it.
Oh, and by the way, if you don't understand the needs of your client you most likely don't understand your colleagues either.