One of my biggest struggles in the last few years is that, outside of my normal day job (and I still can't believe I have one that I actually like), is that I don't seem to deliver anything. When you run Web sites that people get a lot of use out of, and they stay the same for four or five years, they feel stale.
The issue is one of agility. Simply put, I didn't know how to stay agile four or five years ago (and I mean "agile" in a last century way, as in able to move quickly, not in a development methodology sense). Back then, I wasn't writing loosely coupled components that were easy to glue together. My efforts at source control were half-assed at best. Frankly, my skills were less developed.
There is a pretty good, evolutionary reason for this state of affairs too. If you think back to 1999, when I first started to write code for a paycheck, we were largely in a script world. Perl and ASP (the old kind) were what people were using, and this thing called PHP started to get popular. Every kid and 20-something with a computer instantly recognized there were neat things you could do on the Web with a little bit of code.
And so a generation of developers hatched with an unprecedented lack of educational background. To this day, 75% of the people I work with went to school for something else (double major in radio/TV and journalism here!). Script was easy to learn, and even easier to use in away that was totally incorrect. Object-oriented programming? Seemed like voodoo to me.
But ASP script monkeys like me, who wrote really bad scripts, got laid-off and had lots of time to learn this new .NET thing. It was a struggle I think for a lot of people, myself included, but I got up to speed pretty quickly. Realizing that people like me were not being spoken to, I even wrote a book.
But with a lack of formal education and at least some background on evolving development techniques, design patterns and general computer science, we weren't writing the best stuff, that's for sure. Fortunately, the servers running our applications were plenty powerful enough to compensate in most cases.
Now I feel that we, the people who hacked our way into the profession, are catching up. We might even be moving ahead of the academics because we creatively look at things differently. Where we may get held up is in our legacy.
I have a lot of code baggage, so to speak. I have photo library code running on at least three of my sites that is totally inflexible. It sucks. I've written something new that I really like, but it's hard to do any kind of wholesale change because I'm dealing with old legacy systems, incomplete code bases, and worse, .NET v1.1, the old stuff. Snapping things in is a little harder than I'd like.
I have a reasonably functional forum app ready to go, but can't use it in my sites until the sites themselves are changed. It all feels so close and ready to go, but I can't get out of the legacy quickly enough. I could be tweaking and optimizing every little thing that a user responds to, if I could only completely make the old stuff go away. I'm ready to cut the cord, I just need to let the birthing begin. Then I'll have the agility I seek.