A good design will solve your current problems, a great design will solve problems throughout your system’s lifecycle.
Software design is one of the first steps towards a solution for a given problem, there are various important factors which contribute to a design decision such as Purpose, efficiency, cost, security, aesthetic etc., but is it good enough ? Does the system accommodate change ? Does it cause more problems if a new feature is to be added ? Does it always demand work-arounds for new requirements ?.
A design should not be focused totally around its first iteration, it should compliment best practices and principles, it should make problem solving easier and enjoyable.
An example of how a great design makes problem solving easier
Problem statement: Setup ready to use AWS Cloud accounts for team A and team B to host applications.
Solution:
Initial Design Approach
Now both of the above approaches solve the current problem and provide a solution, let’s add something to it.
Problem 2: Send bill reports of AWS services to appropriate team
Solution:
Notice how beautifully approach 2 solves the problem when there is a new requirement without having to make any changes to existing system or coming up with work arounds.
Let’s add some more changes
Problem 3: Team A should not have access to Team B resources and vice versa.
Solution:
Clearly Approach 2 is way easier and requires almost no extra work, the design solves the problems. This example distinguishes a good design which solves the current problem at hand and a great design which compliments the system to solve all problems in an elegant way.
How to create Great Design
Understand the problem
There can be many fancy ways to solve a problem, there can be various solutions to solve a problem, its important to understand the problem domain and create a solution in the problem domain.
Identify the goal
Try to understand the vision and purpose of the system, if you do, you can create a wonderful image of what the system’s lifecycle and roadmap will be, that is more than enough to design a beautiful system.
Challenge the theories
Explore the possibilities, try to do a proof of concept on theories, do not make assumptions, understand data and make decisions based on knowledge derived from data, not mere data.
Design Thinking
- Be innovative and think creatively
- Change perspectives and connect with your users
- Question the problem and do not restrict your thinking.
Read more about Design thinking
Follow best practices and principles
The best practices are standards which have been built based on experience and practice, try to stick to the best practices as much as possible, they have proven to be of great value in a longer run.
Top comments (0)