When reading an article about Web Operations For Developers, one point in particular resonated with me. It discussed how you need to introduce new infrastructure carefully, and how each new shiny piece you add to your product adds another possible point of failure. I've always enjoyed utilizing new technologies and frameworks, but in the past year, I've started scaling back to basics. Why is that? Well, I'm tired of the problems that these new pieces can cause.
Let me illustrate this first with an example. If you've followed any of my posts, you'll have read my ravings about Titanium, which makes mobile development faster, cross platform and generally easy. This has been a great technology to get me going in my mobile app development adventures, but I'm going to have to call it quits. Why? I'm missing the real control. Sure, I can write a wrapper to provide some API/feature to my higher level framework. But is that overkill? Shouldn't I just use the lower level Objective-C or Java APIs in the first place? There are workarounds for almost everything, but workarounds take time too.
In fact, most of the frameworks that end up getting in your way provide an excellent starting point, and things look really good for a while. You've passed out someone who took a more traditional low level path. But for all that start-up speed, it's the last 20% that's going to slow you down. Who wins out in the end? Usually the guy who went with the more basic approach. Most of the time you'll need to go messing around with the internals anyway, to get things working as you'd like.
While I'm sure I'm not the only one who has hit this type of problem, there's a lot of good productivity frameworks available - Roo and Play! seem to be popular. But I haven't used these enough myself to see if there are any flaws.
So, are you someone who's been burnt one too many times by introducing a 'saviour technology' and adding a critical point of failure? What frameworks have you used that promised the world and caused you 12 hour days?