How To Improve Your Software Design Skills At Work

Few of my learnings from many years of software development experience and after many mistakes

Amrit Pal Singh
Level Up Coding

--

Design is an important part of the software development process. Yet many of us do not pay much attention to the design of the product and start coding directly. There are many conscious ways to improve your design skills every day. Results will start showing up over time. Eventually, a realization comes, better design helps in fewer bugs and better code structure, and ease of scalability.

I recommend the following approaches and tasks which if incorporated in the daily design process will improve your design skills.

Always doubt your design

There is always scope of doubt.

If you are not going to question yourself, it's hard to improve your design. I have seen cases where the developer who is proposing a design is not ready to listen to the solutions others are providing. I have been on both sides. The developer needs to be open to solutions and ready to consider various options.

There is no perfect solution

There is always a scope for improvement.

Developers tend to find the perfect solution for a problem. Don’t try to solve all the issues you expect to surface in the future like scalability etc. It's appropriate to design for the immediate problem, you don’t know how the business requirements will change and whether the feature will survive the course of time.

Always have two or more approaches to solve a problem and compare the trade-offs

Comparison is important.

How do you say the solution is good if it is not compared with other solutions! Discussion with the team with 2 or more solutions can bring up new aspects of the design to consider. A healthy discussion of the approaches will certainly bring up a quality solution.

Discuss with someone who is not working very close on your project

Sometimes we miss the big picture.

If you are working on a project for a long you tend to forget the big picture. Sometimes it's good to discuss with a colleague who is not working very closely on your project. This might help you get a broader perspective which you might be missing.

Revisit your designs

Design is not forever.

If you implemented a feature or solved a problem I would recommend keeping your mind open for design changes. Design changes as the project requirements change and if you hit a large scale.

Don’t design for the scalability in the beginning

Cross the bridge when you get to it.

Design the solution for the immediate requirements. Don’t try to solve a problem that does not exist yet. In the future, if you hit a problem you have to redesign anyways.

Design for the 80% of the use-cases in the beginning

Cater to the usual use-case(s) first.

Sometimes we try to accommodate all the corner cases in our design and make it complicated. Designing for the usual use-cases keeps the design clean and easy to understand. Though the design should be flexible to fit all the corner cases.

Wrapping it up

The most important part of the design is its simplicity and believe me it is not easy to achieve. I have seen various complicated designs where a simple design should suffice.

Like to experience Medium yourself? Consider supporting me and other writers by signing up for a membership. Membership is only $5 per month, it supports us, writers, at no extra cost. If you do so, I receive a portion of the fee, and it won’t cost you more. Thank you!

--

--

Cloud Software Engineer | Product Development | I write about Tech and Travel | Profile https://bit.ly/3dNxaiK | Golang Web Dev Course - https://bit.ly/go-gin