Thoughts on Layered Architecture and Market

Reusability

Real software relies on technology. The purpose of applying layered architecture is to provide your software the highest reusability and the highest ease to change. This task is both challenging and demanding.

Technology-Specific Software

In real corporations, most software is tailored to a specific technology stack, which tightly couples the code to it. The chosen technology becomes obsolete sooner or later. When that time arrives, it's common for projects to require a new platform, with a new rewrite. Consequently, from a company perspective, software doesn't need to be engineered with the expectation of highest reusability.

Market

It's an idealistic notion for programmers to believe that clean code and clean architecture matters to a company. The true priority is time-to-market. An application that accomplishes its tasks with dirty code is profitable. Moreover, there will always be developers ready to handle the dirty code to satisfy the users.

Aspiration

Should I, as a software developer, give it up on clean code and clean architecture? Not as long as I can still meet deadlines. Software is vital in our society. As developers, we possess the skills, intelligence, and accountability necessary to thoughtfully craft software that not only performs accurately but can also be comprehended by humans.