Something I've been thinking about lately is large multi-use programs, and I was interested to see how people in the Handmade community felt about them, vis-a-vis the Unix Philosophy of having lots of very small single purpose programs.
When I say large, multi-use programs, I'm thinking of things like Visual Studio, which includes a code editor, debugger, profiler, static analysis tool, search and refactoring tools and much else besides. Another example would be Blender, which is a 3D modelling tool, a rigging tool, an animation tool, a video editor, a renderer, a texturing tool, a game engine, and lots lots more too.
My questions really are:
- As a user, do you prefer working with many small applications or a few larger ones?
- As a developer, do you see any benefits to one approach or the other?
Personally as a user, I feel very conflicted. I dislike it when software appears to bundle things I do want to use (e.g. the Visual Studio debugger) with things that I don't want to use (e.g. the Visual Studio code editor). However I'm also aware that there can be a bit of a context switching overhead from constantly Alt-Tabbing between lots of different programs. As a developer, I think I'm still leaning towards the Unix Philosophy, in that I feel that smaller programs are much more manageable to develop and polish into high quality products than giant monolithic ones are. I'm really curious to hear other people's opinions on this though.
As a follow up question, assuming that there is at least some point beyond which a program becomes too large, how do you decide where to draw the line? If you've already developed a tool, and have an idea for something else that would be useful, how do you decide whether you should add it to the existing tool or create a new one?