What is a Design Doc?
A software design doc (a.k.a. software design document or SDD; just design document; also Software Design Specification) is a representation of a software design that is to be used for recording design information, addressing various design concerns, and communicating that information to the design’s stakeholders. An SDD usually accompanies an architecture diagram with pointers to detailed feature specifications of smaller pieces of the design. Practically, the description is required to coordinate a large team under a single vision, needs to be a stable reference, and outline all parts of the software and how they will work.
A software design doc is really important. Especially if you are working on a large project or you are working in a large company. But
- What is a design doc?
- Why does design doc exist?
- How can we write a design doc?
- Example of design docs.
We will tackle these questions and also we will see an example of a design doc created by me.
I am very new to design docs. I am just sharing what I have learned. If you see any mistakes just let me know. I will be glad to learn more.
Why do design doc exist?
Suppose you have a blogging website where people can read blogs but can not interact because the website doesn't have authentication. Now you want to add authentication to the site. So, that's a new feature.
We all know that what could happen when we add new features. Code breaks, ui, and API changes, we get more bugs, and so on. So, while adding new features we also have to keep in mind that our real application doesn't get messed up.
So, we have to plan and design our software efficiently so that our software works properly. That's the main goal of software design docs.
If you have a good design doc, then the whole team will be focused on specific ideas. It will reduce ambiguity and conflict between team members.
It is very crucial for the future too. Because in the future when you modify the code more, you will get to know what you have done before and why you have done it. Also if another developer comes to develop the software, he will understand how the code has been developed.
If you are still reading this then I hope you have a little understanding of why do we need a software design doc.
What is a design doc?
A design doc is like a wedding planner before you even marry someone. Or you can say a business plan even before you start the business. In a design doc, you create the whole plan for the design doc. Your design doc should include topics from the idea to the solution. So, that everyone's goal stays clear.
How do we write a design doc?
Just because we call it a design doc that doesn't mean that you have to be a fancy designer. You can add cool graphics but mostly you have to do the writing.
What to include in a design doc?
Now, this depends on developers and projects. Different people have different opinions. I am a noob in design docs. Other developers know this far better than I do. But I believe a design doc should have at least these topics:
- Problem: This would be a summary of the problems that you want to solve.
- Solution: Here you will describe the possible solutions.
- New features: The new features that will solve the problems should be listed here.
- UI changes: If your application has a UI, then describe the changes that will come to the user interface.
- Database changes: If your application has a database, then write the changes that you will do to the design.
- API changes: As it says, point out the changes in your API design.
I have created a simple design doc for my Cules Coding website.
I want to add user authentication to the website so that users can interact with the blogs.
When to create a design doc?
If you are having a large scale application then a design doc will be helpful. You will not want to create a design doc just for a simple to-do app. That will be unnecessary. You will build the app with the time of writing a design doc.
And that's all I know about design docs. I know the explanation might not be good. But I have shared all I know. If I have made any mistakes please let me know in the comment section.
I have made a video about how to build a carousel postcard with React, Material-UI, and Swiper.js. If you are interested you can check the video.
You can also demo the application form here
Please like and subscribe to Cules Coding. It motivates me to create more content like this.
If you have any questions, feel free to contact me on any social media as @thatanjan. Stay safe. Goodbye.
Why do I do what I do?
The Internet has revolutionized our life. I want to make the internet more beautiful and useful.
What do I do?
I ended up being a full-stack software engineer.
What can I do?
I can develop complex full-stack web applications like social media applications or e-commerce sites.
What have I done?
I have developed a social media application called Confession. The goal of this application is to help people overcome their imposter syndrome by sharing our failure stories.
I also love to share my knowledge. So, I run a youtube channel called Cules Coding where I teach people full-stack web development, data structure algorithms, and many more. So, Subscribe to Cules Coding so that you don't miss the cool stuff.
Want to work with me?
I am looking for a team where I can show my ambition and passion and produce great value for them. Contact me through my email or any social media as @thatanjan. I would be happy to have a touch with you.
- Email: firstname.lastname@example.org
- linkedin: @thatanjan
- portfolio: anjan
- Github: @thatanjan
- Instagram (personal): @thatanjan
- Instagram (youtube channel): @thatanjan
- twitter: @thatanjan
Blogs you might want to read:
- Eslint, prettier setup with TypeScript and react
- What is Client-Side Rendering?
- What is Server Side Rendering?
- Everything you need to know about tree data structure
- 13 reasons why you should use Nextjs
- Beginners guide to quantum computers
Videos might you might want to watch: