Another option to make your system ready for the future is to make it as simple as possible. If it does exactly what it needs to do with no duplication, you'll have the flexibility to add necessary complexity.
Sure, provided that:
- You write unit tests to make sure that your necessarily complex additions (heh) don't break anything, and
- Your code is sufficiently decoupled that adding new components doesn't involve (excessive) changes to old.
Both of these requirements are more easily met with simple software than with complex, "try to predict the future" designs. I need to tell myself that about once a week, on a good week. :-) I guess my point is that just making your software simple isn't enough, although it's a big help.
--
F
o
x
t
r
o
t
U
n
i
f
o
r
m
Found a typo in this node? /msg me
The hell with paco, vote for Erudil!
| [reply] |
I absolutely agree with you that, making your system simple is one of the way to support growth.
FoxtrotUniform gave a very good point: decoupling. I see decoupling as one way to modulize your application, and there are lots of other ways: put your code in a function, wrap your code in classes. You can even view multi-process, multi-threading as sort of modulization...
Said all this, I am thinking whether we can combine your thought, FoxtrotUniform's thought and mine together, and say:
To simplify the functionality of each module, and make modules have clearly and carefully defined/designed boundaries, would absolutely support future growth.
| [reply] |