DEV Community

Cover image for System Design Principles!
Young Mamba
Young Mamba

Posted on

System Design Principles!

( There is a video version of this blog, check it here )

What Is System Design?

There are tons of different definitions( that all have the same meaning) of System Design. The most comprehensible would be:

System Design is the process of designing the architecture, components, and interfaces for a system so that it meets the end-user requirements.

via/ geeksforgeeks.org

In other words, System Design is just defining every feature of a system( Website, App, etc.).

I talk a lot about making a plan and following a structure when coding, well System Design is that!

And, well today I'm going to show you, 5 tips that will help you design the BEST Systems!


1. Think For The Now

You're building a system, that will function now. Something that will solve a problem your users have now.

Yeah, it's very good to think ahead, but you can easily get lost in doing so. Instead, try to solve and think about the problems you( or your users) have now.


2. Scalability

This, contradicts the 1st tip, but not really, the name of the game here is:

Think For The Now, Make Room For The Future

Yeah, solving the problems you have now should be your priority. But keep in mind that tomorrow is inevitable( unless the world is ending, ha-ha, jk).

You have to make sure you can still be up and running tomorrow.
Or, maybe you find a lot of success.

You won't be able to do either of those two things if you don't make room for the future.

Again, so we're clear about one thing.

Solve the problems you have now, while not bottlenecking yourself in the future!


3. Flexibility

Make sure you are not rigid in your approach. Make sure everything is flexible and can change based on requirements.

The worst thing you can do is to have a design where you cant innovate!

Today chat apps work a certain way. Maybe tomorrow, the trend is completely different. Maybe tomorrow we send encrypted messages, and the user isn't shown! Who knows?!???


4. Reusable

This is something more on the coding aspect. Make sure, your code isn't rigid( otherwise known as hard coding).

Make sure your code is fluid.

Don't make specific functions that do only one thing, make broad or general-purpose functions.

Use loops when necessary, define global rules( for example, your theme), etc.

In other words:

Make sure your code can be reused.

Also known as, D.R.Y. ( Don't Repeat Yourself)


5. Don't Go Into Detail Prematurely, and K.I.S.S.

Don't dive into your design head first.

Take your time. Relook at things twice, thrice, ten times.
Don't overthink it. If something looks more complicated than it should be, it probably is.

Don't focus on one specific thing, take a step back and look at the whole problem. And slowly, but surely, go into detail.

Also, Keep It Simple Stupid( K.I.S.S.)

Top comments (0)