Two years ago, I started out building a new software product. From the start, it would require mobile, web, and backend components to make it work, so I had to make quite a few technology choices. Here is how those turned out.
NoSQL, SQL, or NewSQL? Those database types and the concepts they are based on are not mutually exclusive, even though some dogmatists try to make you think otherwise.
There is an old and endlessly repeated saying in programming and software engineering: YAGNI – You ain't gonna need it. It is mainly related to premature optimization and over-engineering, things most developers are prone to. But sometimes, you should still follow your gut feelings.
The older a codebase gets, the more WTF moments will occur to the people working on it. Therefore, documenting architecture decisions over time is crucial to prevent them from pulling all their hair.
For a first-class user experience on desktop and mobile, native development techniques are the gold standard for various reasons. But is it the only reasonable approach to build user-facing non-web applications?