Software design docs

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.

Note:

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.

Image description Image description

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.

Shameless Plug

I have made few project based videos with vanilla HTML, CSS, and JavaScript.

You will learn about:

  • Javascript intersection observer to add cool effects
  • DOM manipulation
  • Aligning elements with CSS positions.
  • How to make responsive websites.
  • How to create slide based webpage.

These will be great projects to brush up on your front end skills.

If you are interested you can check the videos.

You can also demo the application from here:

Please like and subscribe to Cules Coding. It motivates me to create more content like this.

That's it for this blog. I have tried to explain things simply. If you get stuck, you can ask me questions.

By the way, I am looking for a new opportunity in a company where I can provide great value with my skills. If you are a recruiter, looking for someone skilled in full stack web development and passionate about revolutionizing the world, feel free to contact me. Also, I am open to talking about any freelance project.

About me

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. See more of my work from here

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.

Screenshot

Homepage

More screenshots

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.

Contacts

Blogs you might want to read:

Videos might you might want to watch: