I don’t have any technical gobbledygook for you today, I’m afraid. Instead, I’m writing about what is probably the most important element a good software professional must have.
There are lots of people working in software out there, and the more devices people use the more likely it is that this number will keep on growing strong. The number of technologies available today makes this even easier as there are so many different parts to it, be it working on the guts of an application, it’s presentation, or even managing software teams and projects, there will surely be something for everyone to contribute to.
Some of these people will have chosen software because it’s what they like, others because the market is favourable, others because they simply need to pay the bills…
Now, forget about all the languages, technologies, methodologies and whatever else you know or may not know about. If there is just one thing I can be certain about a software professional is that if he1 really loves his stuff he is bound to be good at it.
I guess this could apply as easily to all other aspects in life, but within the software community there are lots of little signs that people show that demonstrate exactly this.
Take developers, for instance.
The passionate developer is likely to:
- Write clean code, helping others understand and maintain it if necessary
- Always look for answers when behaviour isn’t clear
- Research for alternative solutions, even if he already has something that works
- Validate assumptions with his peers and other technology experts
- Know that stopping to understand something will make him more productive, not less
- Keep on top of his game by reading books, articles and whatever else material is available
- Practice and test new found knowledge by himself for a deeper and confident understanding
- Have a vast awareness of technology and practices out there, so he knows when not to reinvent the wheel
- Love to help his colleagues and pass on his knowledge
You can work with very experienced developers, but how many will actually do any of this? Far less than you would expect. Unfortunately, “years of experience” is one of the most overused and useless metric out there if you ever wanted to assess someone on their software skills.
In a lot of cases, sure, having all those years of experience helps. But what if they were spent doing things badly? Then you might need just as many years to demonstrate that, perhaps, there are better ways of doing things after all. How successful you’ll be at it will depend on what their position in the company is. They might be the super-duper architects or the chief of something, so their pride of wall may be quite high.
This is a dangerous place to be in, as in most cases they will negatively affect everyone in the team by not allowing them to try or even question the path that has been layed out for them, so there is no opportunity to grow.
Some signs of this effect may be:
- The code is cryptic, and documentation is nowhere to be found (it reeks of job security)
- The design is very tightly coupled, and only a few would venture out changing anything (then known as gurus)
- Naturally, there are no tests to help you
- Because of this, developers are told what to do verbatim, otherwise stuff will break
- The team grows afraid of their own skills - they’ve grown accustomed to following orders
And the the business itself suffers:
- Confidence in employees lowers so processes are put in place to prevent doing more mistakes
- The gurus become the bottleneck of the development process and productivity plummets - they don’t have enough time to tell everyone how things should be done
- Even small changes take days to fix, and sometimes raise even more problems
- The QA team turns against any refactoring effort - too risky
- The company itself adapts to a culture of fear - any change is too costly
This may seem extreme to many, but I can guarantee you this is a reality and more common than it should be, especially in businesses where software is a complement for hardware sold (where ultimately most of the money ends up coming from).
I do believe that many of these problems stem from the fact that the people involved don’t really enjoy the area they are working in. Luckily we have many companies out there these days that live purely on software and are very successful, and I dare say that in good part it’s due to the fact that everyone likes their craft and has the passion to keep on improving.
You see, when you are really interested about something you are likely to look for more of it. Take sports, for instance, is football your thing? You might watch all the games you can and practice with your friends on the weekends. Music, perhaps? Maybe you have all the records for those artists you really like and you could hear them over and over again.
But what happened to software? If you work on it for a living, full time, then that will cover the vast majority of time spent of your working life.
Think about it for a second, that’s a lot of time wasted doing something you don’t like.
If you lost your mojo because you are fighting with writing software in general (maybe the compiler doesn’t agree with you, or you still struggle with some concepts) then with the right attitude you can fix that - don’t let the deadlines be what stop you from taking 10 minutes to understand what’s going on first, then you’ll find things get simpler and software is no longer a fight. Your business will thank you for the hours you’ll save them from there on.
If your company doesn’t let you grow in any way, well, then the market is full of opportunities for people with the right drive - go somewhere that values that.
And if software isn’t really for you then, please, find something you do enjoy - life is too short.
- He, or she, the gender is irrelevant - easier for me to write.