As I write this I’m 34 and I’ve been getting paid to program since I was 19. In the grand scheme of things, that hasn’t been that long…but I’ve been lucky enough to be around and on the scene as the internet more or less exploded onto the scene (hence keeping most of my bills paid over the years).
Anyway over even this short period of time, I’ve seen a few cycles come and go…for a little while it’s all about centralized networks, then it’s all about distributed networks…it just keep flipping and flopping. The latest being cloud computing (centralized) vs. peer to peer computing (distributed)…
But the cycles aren’t just about centralized vs. distributed…they seem to be in just about everything…and the one that’s been of special interest to me lately is features/freedom vs. constraints.
There was a time, not too long ago, that the race was all about adding more and more features…doing more than the other guys…giving the users more freedom to do whatever they wanted, however they wanted, whenever they wanted…that time seems to have passed.
Today’s world seems to be all about intelligent constraints…limiting your features to just the core things that should be important to your users. Doing less, but doing it much much better.
Now I know that people will argue that the freedom and options to limitless features are not gone, they have just been shifted to third party developers via application programming interfaces (APIs)…and while I agree that providing an API allows for near limitless things to be done, associated, and derived from your service, I don’t think it’s quite the same thing.
For starters, only developers really have any way of actually doing anything with your API (so the general public doesn’t really get those options or features to with as they please). Second, even if millions of people build zillions of services on top of your APIs, they are not (usually) part of your service…and so they are not (usually) directly integrated into your offering. This means to really use all the zillions of features, a user has to visit those millions of sites/services built on top of your API (I know, I know facebook is different, but they are sort of the exception here).
Anyway, my point is that the current trend is away from limitless features and options and towards more controlled and constrained offerings.
And this cycle seems to be expanding beyond our end-user applications…we are seeing the same cycle taking place in our frameworks and design patterns behind the scenes. Thanks in part to the popularity of things like Rails, Hibernate, Django, and the likes.
On the one hand, I love this trend, because it really does make it easier for people to get started and actually ‘do something’…but at the same time I sort of hate it because there are so many people getting into things that they really have no knowledge (or interest) about.
So anyone off the street can build a pretty cool app in about a week (maybe less depending on the framework they pick)…but it’s only going to live for so long and be stretched so far before they are going to need to understand just what’s really under the hood (and what can be yanked out and customized). I’m not completely convinced someone off the street is really going to deal with that stuff well when it’s time (at least not most of them)…
But I guess that’s another argument for another day…and I’ve already been all over the place on this post, so I’ll leave it at that for now!
This post has received 44 loves.
Kevin has a day job as CTO of Veritonic and is spending nights & weekends hacking on Share Game Tape. You can also check out some of his open source code on GitHub or connect with him on Twitter @falicon or via email at kevin at falicon.com.
If you have comments, thoughts, or want to respond to something you see here I would encourage you to respond via a post on your own blog (and then let me know about the link via one of the routes mentioned above).