New & Fun vs. Tried & True

I love new technology -- .NET 4.0 and the DLR are a dream come true. I cannot wait to convince other developers of the awesomeness of having IronPython for middleware supported by compiled C# on the backend.

But before I go upgrading existing client sites to 4.0, I need to be sure it will work. I just want to see it be successful from start to finish. I am skeptical by nature and want results before jumping in bed with any new tech. Not that I don't think Microsoft did an amazing job with the latest framework -- its just that I'm not as familiar with the "workarounds" that I need to learn for things. And yes, there will be workarounds -- I have yet to see perfection in software (only a few things come close).

From my experience it seems that developers fall into two general categories when faced with new technology decisions. Hopefully they change from one category to another. If you're like me, you change on a project by project basis.

New & Fun
Pros: You are constantly ahead of the curve; some problems can be solved with minimal effort. Faster than ever before. Chances are you have more job security & probably enjoy what you are doing everyday. Your mind is constantly expanding.
Cons: You need a new library, a new pattern, a new framework or even a new language all the time. If it isn't new, it's boring & therefore must be shit. You are constantly fighting with bugs and constantly discovering new things. Nothing ever feels stable. When it is stable -- it's time to move on or try something else.

Tried & True
Pros: You get to say "that's done, what else do you have for me?". You don't spend as much time debugging. You are great at estimating and meeting deadlines. Your days are predictable.
Cons: You're probably old. You may still write perl scripts (even COBOL or awk) when you need to. You're falling behind the curve and have a constant fear of being left behind. You may grow bitter as the world changes around you.

These categories are completely independent of skill level. I've seen Tried & True programmers who are brilliant and New & Fun programmers who can't get anything working.

The most important thing anyone of us can hope to learn is when do we use each technique. There are times when New & Fun is required. This project demands perfection & bleeding edge technology. Other times (usually tight deadlines, emergencies or low budgets), you must not deviate from the norm. Venturing into the unknown means suicide here.

What will really drive you insane is when a project or team's culture changes as time goes on. People quickly abandon New & Fun when the sky is falling (has fallen). Or what is the most frustrating: when something starts off tight, you go Tried & True only to find out that the client / owner / project manager demands new & flashy. "Can you add some cool new HTML 5 canvas animation to my Classic ASP site coded in VB"?

What I desire from any software I write is below. (Depending on the application 3 & 4 can switch).

  • 1) Working

  • 2) Stable

  • 3) Readable

  • 4) Fast

Anything else...is just prototyping.

No comments: