Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Any modern software design has to meet these 3-4 key aspects:

1. Make the software scalable w.r.t machines.

2. Make the software scalable w.r.t humans.

3. Make the software maintainable over time.

4. Make the software reusable to reduce startup costs.

Motivated by these, we make a lot of choices:

1. decompose a large complex problem into smaller, isolated, modular problems that can be worked on by different small teams, and run on different servers with inter-server communication.

2. organize code along with its documentation for easy understanding, readability and modifiability over time by same developers and different developers.

3. organize reusable and independently upgradable parts of the code for ease of upgrade with stable interfaces and stable test suites.

4. maintain the build/package/deploy toolchains for ease of underlying hardware and operating systems upgrades without affecting all of the code.

5. reuse is the only way to reduce costs – both time and effort – for anything. thinking carefully and setting up for reuse of services, systems, libraries, toolchains, processes, practices etc are critical to any large successful software project.

These are general rules for normal times. But there are inflection points when it is profitable to violate these rules.

Things that distort the cost/benefit tradeoffs and make it profitable to violate these rules:

1. When tech ecosystem is rapidly evolving and toolchains and libraries ecosystem isn't mature.

2. When time to market is super critical and if successful we will have more than enough money to deal with these problems later, and if we are late even with good software we would have failed and shut shop.

3. When we can't hire talented skilled engineers and still it is worthwhile to win in the short-term.

With these rules and violations, you can get stuck in an early local optima. A culture of continuous safe refactors is a super-power that can make you immune to it. Ossification of any kind is bad.



Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: