Warning - this is a rant about those 10-20% of software professionals that give the rest of our community a bad name.
One of my biggest annoyances in technical management is the 9-to-5 Software Engineer. A 9-to-5 Software Engineer (or developer) is someone who views their position simply as a way to pay bills. For them, there's little to no passion for the design and creation of software; instead their day is simply a collection of tasks that need to be completed so they can stay gainfully employed.
In general, I think this attitude towards work can be natural. Few people are passionate about working a low paying job at McDonald's. However, why would someone go through years of education and on-the-job-training in a field they don't like?
From observation, I've noticed workers tend to fall into one of these categories:
- Passionate about their work.
- Passionate about their field, but indifferent to or loathe their position or employer.
- Passionate about their hobbies (work is just a means to an end).
In terms of software engineering, I get the first two perspectives. The third, however, makes no sense to me. If there is something you are more passionate about, why not try to make that your field of expertise?
I realize that this is not a fair judgement to pass. Obviously not all hobbies are capable of supporting a family as well as a nice paying job in software.
However, if you are a 9-to-5 Software Engineer, and consider this condemnation to be excessively harsh, let me ask you another question:
Would you knowingly have a 9-to-5 Surgeon operate on you?
Would you hire a 9-to-5 Architect to design your home? Would you want 9-to-5 Firemen watching over your neighborhood? Would you want a 9-to-5 Football Coach leading your kid's team?
Of course not! We always want passionate people to provide our services. Typically, the reason why we seek passionate people is because they are much more likely to be informed and experienced in the subjects that they practice. Working a shift and checking out at the end of the day does not provide the kind of knowledge and experience that sustains one's occupational knowledge.
If you look at the fields of Law, Medicine, Architecture, Education, and life-saving services like Firefighting and Law Enforcement, there is a fair amount of sustainment training and education these professionals must undergo to maintain their licenses and certifications. Some of these fields have the ability to afford their professionals time on the job to maintain their proficiency. Software engineering typically does not. This is because the field is new, constantly changing, and incredibly diverse.
To keep up with current practices, I think it's a duty of a software engineer to read trade-publications and technical manuals, tinker with new technologies, and generally keep active in their communities. I posit that this is not possible if you do not spend at least some of your personal time researching or tinkering with software.