Technical

Technical dimension is looking into how sustainable our product is in terms of technology. Here you will be taking a deeper look into its implementation and maybe get your hands slightly dirty. It is quite hard to determine technical sustainability if you were not involved in the process of development, or if you do not have access to the documentation.

Maintainability - Dive deep into the code, and general structure of the project. Try putting yourself in the shoes of a new developer joining your team. Would they understand your code? Would they understand the structure? How easy would it be for him to join the team and start contributing? These questions will help you answer the first question - How maintainable is your product?

Do you have a lot of code smells?

Is it easy to understand function names?

Do you find methods and classes in files in which you expect them, or do you find something unexpected?

Does your code provide meaningful error messages?

Usability - Now change shoes, and think like a user of your app. You will have to change a lot of shoes, because there will be all different kinds of users of your product. Users with different preferences, users with different expectations, with different disabilities, different use-cases. You should test as many of those variations and based on that find out effects that your product has on them in the context of usability.

Did you implement your frontend in an accessible manner?

Have you optimized the number of clicks it takes to complete an action? Or do you require some unnecessary steps to be accomplished first?

Do your users understand how to use your application? Do not assume, be honest.

Adaptability

Security

Scalability

Resilience - Your system should design your system to remain operational in case of failures

Error Handling: You should use exception handling in error prone operations so as to minimize crashes. Most common ones are database and network operations.

Code: Having your code in a repository like GIT also serves as backup.

Recovery: Create a plan on how to quickly restore your system in the event that there is a total crash.

Interoperability -

API Design: Create well-documented APIs to facilitate communication between frontend and backend. You can use tools like Postman to test your APIs and swagger for API documentation.

Standard Protocols: Use standard communication protocols and data formats (e.g., JSON, XML) to ensure compatibility with web, mobile and backend.