One thing that experience has taught me is that it takes a village to raise a software product. What I mean by that is a developer and all of their team members including management have to be focused on
quality...quality of product, quality of training, quality of process
and quality of work life. They all have to share the same passion and
excitement. They all have to be on the same page.
No man is an island and neither is a developer or their team mates and managers. We all have to have each others back. If one team mate is
struggling then the others have to be eager to help out and share the
load. We need to be advocates for each others success. We all have to
take ownership in our professional development, each others development and the projects we work on.
All too often, we get caught up in skill sets and technology when the most important thing is pride, a giving nature, a sense of collaborative spirit and fun. We never use the applications and/or systems we build after they go live.
We build them for our clients. So why do we get all "geeky" and forget about our purpose. As developers, we are in the "helping" business. We are in the position to help people and make their lives easier. If we want to create great software then the approach we take has to be one of philanthropy. We need to understand our clients and by understanding them, create something that they like using and not just tolerate until the next version comes out.
So how do we get there? How do we create teams likes this? It starts with us. We need to desire and want our friends and colleagues to be successful. They have to be advocates for our success as well. This means leaving your ego and
selfishness at the door. This means creating a desire to help out...to be a mentor, even when that is not your immediate role. If you have an internal need to say , "What is in it for me?", then look at this way. If you have someone else's best interest at heart, then most likely they will have yours. It is to your advantage to be someone who cares about quality of product, quality of process and quality of work life.
I have seen first hand enterprise wide .NET applications, built by teams of developers, that fell short of this mark. The applications were buggy. The usability was horrible and its over all ease of use was absent. It was way over-engineered. And yet the team that built this application were extremely intelligent. They were very knowledgeable in
all things .NET and C#. They had years of industry knowledge.However, they lacked the ability to understand the wants and needs of the user and their team mates They didn't have that "thing" that makes them want to reach and find out how the actual user of the software would like it to function or how their team mates were enjoying the
project development process. In fact, they did not care. There was no internal feeling inside these folks that motivated them to make the end user happy. It was their technical prowess they thought would drive them to the promise land of success.
In the end, it is those character traits that understanding, caring and empathetic people possess that I think, if a developer has more of, will make the software product better. So learn those soft skills. Get good at them.
Train yourself to be a better listener. Train yourself to put the end user's needs before your own. Help and mentor your team mates. Take time out to help them. Remember, you are building the software for the client. Reach out to them and try to solve their problem. Make them part of the process. After all, you should be developing your software
for their needs and not your own. You should be trying to help them and make their lives easier and remember that it takes a village to raise a software product.