After working with web programmers and developers over the last four years (and being one myself) I've noticed a disconcerting trend. The average lifespan is very short… that is, the lifespan of interest in their job. This is not true for every single worker in this industry but results from a common way developers are handled by their clients and companies. Quick disclaimer: this post is not a reflection of my position nor my current place of employment but instead overall practices I've noticed in the community or discussed with peers.
First, why is this industry unique? There are a lot of jobs where workers suffer from apathy. I feel that programming and development is unique because it involves complex problem solving. The type of web developers I've seen afflicted with job apathy are the type that truly, intensely enjoy puzzles. This field is challenging and attracts smart people who enjoy coming up with creative solutions to difficult problems on a regular basis. However, this industry also has a tendency of mismanaging and burning out creative minds… but let's start by looking at how a developer's career begins.
When a person decides to pursue a career in development the first few steps can be quite confusing and difficult. Learning a new language is never easy, and depending on documentation and learning styles it can take a while to get used to the syntax and processes involved in building a website, let alone a dynamic application. My personal experience involved a lot of Google searches and trial-and-error, and figuring out the programming solution to a simple 'I want the site to do X' is not always straightforward.
Once the foundation is laid and the language starts to make sense it's quick to assume an air of excitement. Suddenly one doesn't need to look up the usage of a function or the proper way to structure a loop - everything starts to make sense. It make take a bit longer to write some new functionality but the tools are at hand. Every puzzle is solvable and anything is possible, and new chunks of code or methods that a programmer bumps into add to the fresh and unique solutions that keeps things exciting.
Slowly a new stage creeps in. Just because one knows how to do something doesn't mean they know how to do something right. Best practices, company processes, team standards… whether the definition of 'good code' and 'bad code' is laid out by yourself, your peers, company mandates, or even the web community, a developer will eventually realize that even though they know how to solve a problem, they're doing it wrong. There are solid reasons why standards and practices exist, especially when it comes to a team environments and code reuse, but it can shed an ugly light on previous work and established processes. A developer can choose to go in one of two directions at this stage: wallow in frustration or modify their practices to meet standards.
Note: Depending on the background of a developer these stages may be a bit jumbled. If a developer learns his/her trade by college or classes, some best practices and standards may be ingrained much earlier. However, I still feel that regardless of the initial stages, there comes a time when every developer realizes that they've been doing it wrong in regards to some standard and need to reinvent themselves or stagnant out.
Whether or not the developer passes the realization stage there is still another hurdle to overcome: the industry. Clients, companies, even once-a-programmer-now-a-manager have a dreadful tendency to stomp out creativity in their programming workforce. They have a few methods of doing this: repetitive tasks, emphasizing unimportant features or bugs, ignoring feedback and input, etc. Once again, I think a lot of jobs and industries have this issue, but few will result in such a severe cut in productivity or capability as development does. Tell a developer to run the same report every week for months or roll out a similar feature on multiple platforms manually and it will quickly kill off whatever creative juices they once had, the same creative juice that once made them excited to start in this field.
Keeping a Developer Alive
As with any highly creative and skilled employee, developers and programmers need to be nurtured. The largest difference can involve giving them fresh challenges and opportunities. Allowing senior developers to train and work side-by-side with new members of the team also helps - the excitement that younger developers have is infectious. If there is repetitous tasks that need to be done, providing clear goals, end dates, and incentives will help make them bearable. Realizing that the development team can include some of the most valuable, creative, and critical members of a company and taking steps to keep them involved and challenged can not only keep them productive but also pay high dividends for any web development company or team.