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.
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.
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.
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.
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).
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.