DEV Community

Cover image for Do this before your next programming project
Aimen Zairi
Aimen Zairi

Posted on • Originally published at zairiaimen.com

Do this before your next programming project

We’ve all been there, you started to code your next million dollar idea and then you find yourself needing to add functionalities you haven’t thought of, classes that might not have been needed and even working with the wrong database for this project needs.

That’s a very big problem that not only beginners face but even moderately experienced developers struggle with. That problem is skipping the analysis and conception phase of a project.

Though planning a project may seem like a daunting task at first but having a guideline to follow is so much better than just blindly coding and hoping that the project comes out like the idea you have planned in mind.
What To Do ?

Plan your projects ahead, it is simple right ?, maybe.

The best way of doing it is writing an SRS ( Software Requirement Specification ) Document.

Writing that document is a world of its own but I’ll borrow many elements from it.

We’ll be using UML a lot so if you don’t know it already, it is really necessary for you as a developer if you want to work on big projects. I’m not going to talk about each diagram in detail but you can find some very good explanations of it in YouTube.

Step 00 : Have an idea

You may already have one, but if you don’t then start searching for a problem that you face in your everyday life.

This maybe something small that you don’t notice or something big that you think you can’t fix.

Anyway once you find that problem think how you can fix it using programming.

Small things like repeating certain commands when creating a new project, so what you do is you create a terminal command of your own that creates the project in a programming language that you choose and executes all the other commands automatically.

Or having a hard time remembering passwords, so you can create a tool that saves your passwords locally … etc.

Ideas are always there you just have to find them.

Step 01 : Analysis

What do you want your project to do ?.

Write down the list of people you think are going to use your app/software/project and the list of actions that they can do in it.

After that make a “Use-case Diagram“. it is objectively easier to read a diagram than reading a bunch of text.

Use Case Diagram

The next step is to do a use-case description where you fill in the details like the sequence that must happen when the use wants to do this action, the requirements for it and everything in between.

Use Case Description

And as i said before reading a diagram is better than reading a bunch of text and that’s where the sequence diagram comes in, but we will talk about it later as it involves database models and controllers.

So now that you know what your program will do, you have to know what the data will look like so think about the classes that might exist in your system and put them in a class diagram.

This diagram will help us later when we need to know what tables to have in our database.

Class Diagram

Now that our analysis step is finished with creating the Use-case and class diagram we jump to our second step The conception phase.

Step 02 : Conception

In this phase you go into a little more detail about the functions of your system, in this step we plan the “Code” aspect of our project.

Use-case description don’t explain how the system works internally and that’s where sequence diagram comes into play. Firstly it is a diagram so it’s “easier” to understand and explains how the components of our system interact with each other.

Sequence Diagram

Using this diagram each case will make the coding part way easier knowing what components we need and what elements to use for each step.

Now that we have our most important diagrams we’ll turn the class diagram into what i call a “Database Diagram” that can be easily implemented in your project.

With All these done, you can finally jump to the final step and that is implementation.

PS : In this step you could also make UI Prototypes of how your website will function, but that's out of my scope as I really suck at design.

Step 03 : Implementation

Though if you have written an SRS before you know that we skipped quite a lot of things, but our goal here is not to write an SRS but for us to get our next side project to the finish line like all our other side projects (sarcasm).

Step 04 : Supporting Your Fellow Developers

I will be doing a video about this with animation and stuff so be ready :
My YouTube Channel
My Personal Blog Where You Can Read this First

I Really want to see what you think i should cover as I'm lacking ideas but definitely not in motivation to help others.

Thanks For Reading.

Top comments (7)

Collapse
 
jonrandy profile image
Jon Randy 🎖️ • Edited

Why not just make things for fun? A project doesn't have to be useful, a project doesn't have to make money, a project doesn't have a point, a project doesn't have to solve a problem.

Build things because you want to build them.
Build things because you can.
Build things to satisfy your curiosity.
Build things to make art.
Build things organically - don't plan them at all - be creative.

My most enjoyable projects - that I often revisit - are ones that are basically toys... and toys are fun!

This is my latest project. I didn't plan it at all, it was purely driven by curiosity - I just dived in and started playing with ideas. It might be useful to some people, it might not - I don't really care because I enjoyed building it and I find it interesting.

Don't take programming so seriously 😃

Also, believe me when I say that an SRS, UML, all this stuff... it isn't really necessary. I've been a professional developer for 25+ years and have never written an SRS, or used UML. If I have seen an SRS for a project, it's normally something well intentioned that gets written up-front, but 99% of the time ends up languishing somewhere - forgotten about, unused, and unread.

Collapse
 
zairiaimendev profile image
Aimen Zairi

Thank you so much, i actually forgot the most important thing in all of this and that's having fun. Though for that i know that people won't be doing all of these steps. As i specifically mentioned this is if you are serious about a side project or want to make a really big one. Anyway thanks again for the reminder. Fun is truly what keeps me programming but i still find the steps i mentioned as entertaining personally. When i can't think clearly or when i can't explain things by words i always go back and draw diagrams.

Collapse
 
ztrolly profile image
Breno Lopes do Carmo

I am a beginner and really appreciate your post, the way you explain is quite good and anyone can understand. Also, the post remembers me a lot of the SCRUM method, but way more simple to understand for beginners.

Remember, be awesome

Collapse
 
zairiaimendev profile image
Aimen Zairi

First thanks for the motivating comment, i'm kind of a beginner myself so i always try to share the knowledge i obtained in the simplest way possible . Also it is true, though agile development (scrum) is a bit more interesting than what i talked about it is better for big projects.

Collapse
 
zairiaimendev profile image
Aimen Zairi • Edited

Just a note for readers, I'm not really an expert at these things.
I'm sharing this because i noticed that a lot of beginner programmers struggle with this issue as most of them may be self-taught so planning isn't something that they "plan" to learn.
Edit : don't forget to have fun. It is way more important.

Collapse
 
naemazam profile image
Naem Azam

Well said .

Collapse
 
bdiakhaby profile image
DIAKHABY

I appreciate your post, it’s welpful in many situations not only programming