This should be on your reading list.
One of the things I’ve seen over the years is that work experience does not correlate to high quality and efficient software engineering.
So how can programmers get better? Todd Hoff, a programmer known for his C++ coding standard (among other things), says they can get better like pretty much anybody else – with practice.
Deliberate Practice, or Experience, to be precise:
Rather than mere experience or even raw talent, it is dedicated, slogging, generally solitary exertion, repeatedly practicing the most difficult physical tasks for an athlete, repeatedly performing new and highly intricate computations for a mathematician, that leads to first-rate performance. And it should never get easier; if it does, you are coasting, not improving.
This is true, whether in programming, or in skating or shooting. Deliberate practice to build unconscious skills (aim/shoot, make ever more difficult figure skating jumps) leads to excellent performance. Repeat at higher and higher levels to raise the performance bar.
Yet most programmers go home and forget about work. They don’t read about software engineering. They don’t expand or hone their skills. They really aren’t interested in software engineering beyond paying the bills. And while most managers would like software people to get better, sending them to training and giving them time to practice and expand their skills can be really hard to fund.
Some say we need to require certification and continuing education, like doctors or lawyers, but I don’t think that really necessary or helpful. It would just drive up costs of an already very costly and inefficient occupation.
Frankly, I don’t think there is an answer that is satisfying. Other than for software engineers to step up and take an interest and pride in their profession and want and try to get better at it.
For now, as I hire, I try to bring in those that are interested in computer science and software engineering. They read about it, and have memberships in professional organizations, and at a basic level have a self-motivated desire to improve.
I think I’ve just discovered my next topic for the software engineering class I present to each year.