I say this quite often but have never written about it: Build Platforms, not Solutions.
It became clear to me when I was in that middle-stage of project/developer evolution that it was much more efficient to build a platform than a one-off solution. It’s way better than the idea of custom developing new solutions for every problem that you deal with.
The idea of platforms really hit home on a project where I had developed an expert system and needed a way to get information out of the system. My “solution” was to create an object-oriented, tree-walking method that would extract only certain objects …blah, blah, blah… And then an engineer said to me: “Oh – why don’t you create a report writer!”. Always in plain site but invisible to me, that suggestion opened my eyes.
The idea is to extrapolate the problem to the next higher level and create a more universal tool to solve the immediate problem as well as similar problems. Better yet, make that a part of a whole bunch of common solutions in the form of a platform.
It’s always easiest to solve the problem at hand with the quickest and surest solution. If you take the time to look at the problems that you are solving you will likely find a number of separate solutions that, taken together, will comprise a platform for a wide range of applications.
“Build Platforms, not Solutions.”