Why should we evaluate our system design solution?

Evaluation is an often forgotten but essential component when creating a system design solution. In evaluation, we compare the solution to the system’s requirements and check for conformity.

Evaluation process

The evaluation process occurs after we have designed a system. The system design process should be incrementalAn incremental approach to system design means that we do not make the whole system design at once, rather, it is made in small increments., meaning the evaluation process will happen multiple times.

Note: In the early years of software development, the convention was to follow a top-down or a waterfall methodology to develop applications. In such methods, we used to make the architectural design of the software at the start of the development cycle. However, nowadays, we follow an incremental approach where the system design itself evolves over time.

This relationship can be seen in the illustration below:

System design life cycle with evaluation process incorporated
System design life cycle with evaluation process incorporated

In this process, we check for conformity with the requirements. This offers us several advantages, and we can see a few of them below:

  • Incremental improvement: When we incrementally evaluate the system design, we ensure the incremental improvement of our system as a whole.

  • Quality assurance: We ensure the system meets the functional and nonfunctional requirements. We can quickly identify if any requirement is missing from the system design.

  • Optimization: In evaluation, we can identify areas in the system design where we can improve the system’s design.

  • Goal orientation: We can ensure that the system design is oriented toward meeting the objectives or goals of the project.

  • Triple constraintThe Triple constraint in software development refers to the time, scope, and cost constraints of a software project. control: We can evaluate whether a system design meets the system’s scope, time, and cost constraints. This can then help us minimize the cost of the system in each of these constraints.

System design interview

A system design interview is usually 45–60 minutes. We might be inclined to believe that we should spend 100% of this time designing a solution. However, it is essential to review our solution as it not only shows our skill in evaluating solutions but also allows us to incrementally improve the system. It can be exponentially beneficial to save 10–15% of your interview time for evaluation of the solution and do a second iteration of the solution.

When we compare our solution against the requirements given by the interviewer, we can identify any shortcomings in our solution.

The following example shows how critical the evaluation of a solution can be.

Let’s say someone was being interviewed for a system design role, and they made the following solution for a short URL generation system:

Initial system design solution
Initial system design solution

When we evaluate this system, we can see that the cache is being used alongside most of the components. Now, if we were to implement cache storage at every component, it would be hard to maintain, causing scalability issues. This solution would not be feasible for a large-scale system. So we found a place for improvement, now what?

This is where we will iterate and improve the solution.

Second iteration of the system design solution
Second iteration of the system design solution

Now, we have added a separate “Cache service” component, which will be handling all our cache needs. This way, the design has improved scalability and maintainability.

This is just one of the examples of how evaluation can be useful. Some others might be more obvious, like not adding a load balancer for a large-scale application, while some may be a bit more hidden within the design, like which components are communicating and why.

Evaluation is essential to ensure having a good system design solution, whether it be in an interview setting or in a real-world application.

Copyright ©2024 Educative, Inc. All rights reserved