
Today, for the first time, I did technical training for other programmers regarding a project that I've been working on in various incarnations for about 2 2/3 years. It's this project that has really taught me a lot about ColdFusion and database design, and it shows in the code; the newer parts are much cleaner and more efficient than the older parts.
I think the oddest thing is that these weren't customers - these were the programmers hired by the client to take over the daily maintenance of the site from us. It's strange enough training one's own replacements. The fact that I'm showing these people my old code and my old designs makes it even stranger. I've been programming for 3 years, and I'm not an expert in anything. I've tought myself everything as I've had to do it. While learning by doing is the easiest way for me to learn, it also means that my early attempts aren't necessarily so good. Unlike a personal project, though, I can't just upgrade and update a paid project whenever I want, so my old code is left hanging in the wind. I'm just nervous that they're going to see the code and think how piss-poor the programming is and tell the client.
Actually, the code's not that bad. It's been functioning fine for the last 2 years. It's just that, as a professional, I have little faith in my talent/skill level. I'm adaptable, which is a big strength - throw me at a project, and I'll learn how to do it - but I don't grok anything in fullness. There's no one language or platform that I excel in, and I've got no formal training to make up for a lack of practical experience. I know a smattering of everything, and I'm a capable web app developer, but not an exceptional one.
Of course, there's only one way to get better - to just do it. Practice makes, if not perfect, proficient. I'm getting better at PHP programming as I work with SiteMonkey and its derivatives. I know a decent amount of ColdFusion and Perl, and my basic Java skills aren't too bad... so maybe there's still hope for me yet.