Note: This is one of failed “let’s start now and finish later” attempts. I decided to publish them even they are not finished. My experience with myself (more than 30 years) if I don’t complete it in a reasonable time, I never will. So here it is, with hope that it will all make sense one day…
Note II: “Scalability” here is used as the project size rather than problem size. I noticed that it was not the best choice of words.
I was listening a talk on google tech talks and this came up: This morning I was thinking modularity is key to simplicity at the office. As a developer I love modularity, especially if you are dealing with large scale projects involving tens of developers you appreciate the ability to take a piece of functionality and dig into it knowing it fits all together at some level.
A developer learns to appreciate the modulariy (either for scalability or for simplicity) but hopefully your software has some users, and users do not always makes the connection between lack of modularity and the pain he is facing. Since user has an easy way out (this software suck, let’s uninstall) it is better someone walks him through the logic.
Modularity requires avoiding duplications in functionality. Simpler your modules are, or more specialized in their functionality, the better. However, users like short cuts. Yes I know that command is available there but can’t we put a small button here too he says. Most of the time it is simple to add and developers like that. But then, can’t we have that list box here too he says. It looks like it’s becoming simple at first since number of clicks is getting less and less to perform a certain functionality with each click. But, short cuts start becoming duplicated or worse imitated functionalities since it is not always easy to be that much modular.
I thought about lego blocks this morning. Each block has a one and only one functionality (at least the ones I know). Success of lego comes from the way different blocks work together, not how much additional built-in functionality each block comes with.
…