2 recent experiences
Earlier this year I had 2 experiences which made me pause & reflect:
The first was an outsourcing company’s framework from hell. The framework was made to make MVC work like webforms … I kid you not. I suspect they had a webforms framework and were trying to hold on to their previous productivity gains by jamming their square peg into the MVC paradigm’s round hole. The end result was an undocumented, inconsistent, buggy mess that only an experienced developer can figure out; ironically it’s the kind of mess an experienced developer would know enough to stay away from. (Although I didn’t)
Fine. Whatever. We all make mistakes right? But I did find the video on their website talking about how “good high quality code” “pays dividends down the road when you’re trying to add features” and how it “enables you to have high performance applications” a little nauseating, especially while fixing errors around Sql Server’s 2,100 parameter limitation. Turns out they were querying ids matching their filter, passing the results back to .NET, and then passing those ids back into a second query. There was a bunch of rookie mistakes like that which hardly enabled ‘high performance applications’.
The second was when a friend asked me to add OSCommerce to his brand new brochure website. No problem, but I was shocked that the guy who wrote the brochure website (this year … in 2013) did it in Classic ASP. .. wait. wuht? Yes, somebody wrote a brand new app in a technology which was obsoleted in 2001. Don’t get me wrong, if they did this in 2001, 2002, or even 2003 because they didn’t want to work in the ‘untested’ new .net technology, I would understand, I’m rather risk adverse myself. … but it’s been 12 years. I think we’re ok.
Since they were moving to OSCommerce which is written in PHP, their ability to find hosting which has both PHP and Classic ASP might be limited, and it would be so easy to port a Classic ASP brochure site to PHP, I just ported it. The original Classic ASP code was good code, it was clean, easy to read, and used appropriate best practices … but how good is your code when it’s obsolete 12 years before it’s written? Well from what I hear, the original developer didn’t think my decision to move to PHP was a great idea and questioned my competence.
When I watched the video and heard the Classic ASP developer’s comment, their perception of themselves faintly reminded of Fredo’s pathetic tantrum in the God Father. “I’m smart! Not like everybody says. Like dumb. I’m smart and I want respect!”
Um yeah … ok. 🙂
I’m a good developer
We all have our moments don’t we? When we solve a complex problem with a simple design … we’re freak’n brilliant! We’ll bask in the glory of our accomplishment for the rest of the day. J
More than those momentary euphoric instances though, we have a general feeling about how good we are. How we compare with our peers. We feel that the technologies we’ve chosen are the best, our architectural decisions are elegant, and our code superior. Actually, I wonder if there’s something wrong with somebody who doesn’t feel that way, since if you didn’t feel that way, you would do things differently.
We are all riding the edge of our knowledge, doing the best we can. Our point of view is biased because we don’t know any better and can’t even see when our architecture is a disaster painting ourselves into corners and the technology we’ve chosen is going to be a decade long burden and our code is spaghetti.
We’re always learning
It’s impossible to know if your code is lacking though. At least until you have a paradigm shift, your eyes are opened, and you see a better way. And once you see it, you can’t unsee it, all your code before that paradigm shift is ‘inferior’ … or worse depending on the magnitude of your paradigm shift.
Even if you don’t have a break through like that, you’re still going to learn something on every project. If you finish a project and wouldn’t do it differently given the opportunity to do it over, then you either a) aren’t paying attention or b) are repeating the same functionality over and over again way beneath your skill level. Then again, if it’s the later, then you should probably be thinking about ways to push that repeated functionality into a framework or library … hence, a) you aren’t paying attention.
Thinking you’re a good developer is a smell, a learning smell, and a hint that you haven’t been upgrading your skills and/or aren’t thinking about how to improve your architecture.
If you think you’re good for too long, you’re probably way behind and are about to burden your client with technical debt.