Ask HN: Impossible to successfully make big software?
An earlier article linked from HN posits that software that has become big has failed. Many here argued that there are naturally big problems -- for example, powering Amazon.com -- that must be solved with big software. Others counter that it still becomes a mess and causes high turnover and lower innovation.
What are the principles in building very large systems over long periods of time, such that they remain easy to maintain and improve upon?
What are examples of companies with very big problems needing big software solutions that have done this successfully?
What architecture is used? Is there an optimal class of languages to use?
If you were the CTO of a big company dependent on a massive technology infrastructure, how would you build it?
4 comments
[ 2.6 ms ] story [ 24.1 ms ] threadSmall parts can be written in whatever language makes sense for the task. Their partitioning leads to clean interfaces: command line options, file formats, or protocols, without which the parts could not be usefully combined. This has the great side effect of making each piece easier to test in isolation, as regression test data can be created for each part without regard for how the data reached that point. It also makes everything inherently more flexible, for unforeseen improvements.
When you have small parts that are easily tested, you can easily replace them. This is the basis for innovation or other maintenance: if you really have to, you can confidently throw out one piece and put in something better that is compatible.
It also helps immensely to open-source each part; at least, within your organization. It should not be surprising that people are more willing to contribute when there is something small they can wrap their heads around.