I have been developing web sites for a little over a decade now, and I have to tell you, I missed the boat. A lot of that time was wasted. I spent most of my career developing crappy code that was doomed to cause some poor sap some real heartache. To those who have had to support my crappy legacy code, I profusely apologize. You know who you are, and you undoubtedly know who I am. You've probably spent many hours rewriting my leftovers and trying to spin gold out of code-dung. Again, I apologize.
You see, I didn't have very many mentors. I worked quite a few jobs where I was the only developer. The few mentors that I had helped immensely, but I only learned from them what they taught me for the project we were working on. I never got involved in the community. I didn't read blogs. I read the wrong books. I didn't just sit down and chat with high-caliber developers and discuss techniques.
When I took my latest job, ASP.NET MVC Framework had just surfaced on ScottGu's blog and I was interested to see. I'd heard about MVC from people who'd done SmallTalk development, but since I was primarily an ASP.NET guy, it seemed far away until ASP.NET MVC showed up. This put it squarely on my doorstep and since I was evaluating what technologies to use to develop the product I was being hired to develop, it came at an exceptionally opportune moment. My current employer was great about giving me room to learn about these technologies and evaluate them.
While I was reading about ASP.NET MVC, I started seeing tests for TDD and the big buzz around the MVC framework is that it helped testability. So I started reading about that. With TDD, came mock objects and dependency injection inversion of control. I had opened up Pandora's Box. There was no closing it now. How had I been developing web sites so long without hearing any of this? I'd put together some pretty sophisticated line-of-business applications for the web and these things would have really made those products exceptional. Especially Test-Driven Development.
As anyone who's worked with me in the past can attest, I write code that resembles a Brazilian rain forest: Dark, wet, bug-filled and possibly deadly. (OK, I have no idea where dark and wet fit in there.) I always hated having QA testers finding bugs. They found tons. Everything seemed to work when I ran the app, but now it's breaking all over the place. It got to the point where if someone asked me if the app was working I always said, "As far as I know." Ugh. I hated it. The material I was reading about TDD was talking about high code confidence and I was HOOKED.
Anyway, the point of this post (which has been lost in nostalgia) is that it took me 8 years of development to finally start learning how to do it well. The point for me is to teach everyone else I know, what I've learned. I want to discuss it. I want to learn from you guys (my 2 trusty readers glued with Oouey Blouey to their RSS Readers). I want to see people bashing my code, trying it, fixing it, sharing it.
Understand that I am still a novice. I probably always will consider myself that way. Anything that makes me a better programmer is totally welcome in my book. Hopefully, it also makes all of you better developers, too.
~Lee