Two articles about software design pop up on HN:
Design is about dealing with complexity. You start with a problem and then you want to solve the problem. There can be numerous ways but often the best way is the simplest way. Now in a craft like software design, it's usually not that easy to be simple and often it requires years of experience for one to reach that point. But sticking to the fundamentals and avoiding shiny techniques can go a long way:
- Learn about the battle-tested design principles
- Adopt boring, stable technology
- Think before writing
In another article Dan Luu mentioned Wave and according to him they are not using async Python for io-blocking tasks, but relying on task queues. This is interesting. I also find async Python annoying as it adds a lot of complexity. But I wonder if it's simpler to use a task queue to replace it? Asynchronous programming is big in Python community. It's fresh to hear some different voices from the industry.
In the future, I'll be telling myself over and over again: it's easy to be complex but hard to be simple. Always try to seek the simple answers first.