Matt Hamilton wrote an excellent blog post about something that I’ve been thinking about for a long time. As a developer you want to keep improving, but the more you know the more choices that appear.
When first coding projects that require database access you get used to learning the SqlCommand class and have nested using statements to retrieve your readers. Next thing you learn is strong typed DataSets and then you move on to ORMs and code generators. Your code constantly evolves for the better (we hope).
Just recently I’ve been attempting to learn Inversion of Control Containers. After a bit of research I felt I had a good grasp on how they work and I then begun the process of choosing a .Net IOC. Next thing I know I’m overwhelmed with all sort of different implementations like Spring.Net, Castle Windsor, StructureMap, and Unity. Woah! Which one do I choose? Now I feel the need to try all of them out to see which one can be adapted to my style the most.
I came to the realization why the Ruby on Rails are so excited about their development environment. The choice is limited. You just follow the conventions that are put up front and you happily be productive and code some cool sites. I can see the same difference between running a Unix OS on my desktop vs. a Mac. With Unix you have an infinite amount of choice, but for most that’s a great barrier to entry.
Barry Schwartz does a great talk about the paradox of choice and discusses how it paralyzes you. I guess for now I need to recognize this and find some ways (I mean the best way irony) to decrease the time spent in this stagnant productivity mode.
What I’ve learned is that the more I know the more I realize any approach at something will not be optimal and that slows me down. Gone are the days when I blissfully wrote many more lines of code in complete ignorance of better ways to do things. Perhaps now I have more power with one line of code then I did a few years ago, but does that count more much? I guess it’s the results that matter, right? Or is that just the pragmatic part of me talking…