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.
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.
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.
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.
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)
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.
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.
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.
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.
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.
Well said .
I appreciate your post, it’s welpful in many situations not only programming