Hello. I’d like to ask the following to devs: What is the first step when starting a project? I’ve been working on building a calculator for the past week (you can check it out on my Github: GitHub - 2bXorNot/Calculator_project: In this project, I am working on building a calculator that does basic arithmetic. HTML, CSS, JS). I did not plan anything before jumping on VS Code. I though: how do create a button for each operator and the line of code that would do each operation. Once I had that done, I saw the most pressing shortcoming and tackled that and so on. That was my modus operandi; however, I’m sure that’s not the best way to go on about it. Here’s what seems to be reasonable to me:
Think on paper first. Try to be as granular as possible regarding the inner working’s of the system. From whatever is most simple to then adding complexity.
The process of building software is usually called “software engineering”. Like all engineering discipline, the goal is to identify and solve a problem. Where the “tool” used to solve the problem is software. Almost all projects should include some elements of software engineering, and will include some even if you don’t know what your doing.
For example, identifying what is simple and complex is part of the engineering process, as is the actual implementation/coding part.
There are multiple ways to engineer software, but there are a few general steps most projects follow.
Identify the problem - for this project, its to create something to help a user do math calculations. We don’t have to re-invent the wheel, as calculators have been around for a long time, so just the problem is already “solved” by a pre-existing solution/pattern. This identification will make a lot of the other steps pretty easy
Identify the scope of the solution - as said above, calculators have been around for a long time. However, there are different levels/types of calculators. I assume you wanted to make a basic calculator that doesn’t have to do more than the usual “pocket calculator”. So no sincos, and tan or fancy graphing features. Generally having an idea of how far your project goes can be hard, as who doesn’t want fancy features!
Identify which parts of the scope are the most important for your features, and organize them based on their priority - generally knowing whats important means you can focus on them first.
Identify risks to the project - now you can put your “coder” hat on and try to determine which parts will be hard or take the longest, or are the most risky proposals. Not all features are created equal in regards to complexity. Depending on your experience level everything could be highly risky, thats ok, knowing and understanding the risk is important for the next step.
Plan based on whats important and whats risky - Generally you actually would want to start with the riskiest important stuff first as you have more time at the start of a project than at the end, so tackling the biggest unknowns gives you the most flexibility, and gauge how the project is going earlier. This is better than taking your time with easy stuff first, and then rushing hard stuff later!
Actually start coding/implementing - this is the part where you can start actual work on doing things, learning as you go and re-iterating with the above steps over time.
Again, there are other types and approaches, but these general steps are almost always included in different forms. Ultimately it’s your project so there isn’t really a right or wrong way to do it if you’re learning. There are however lots of experienced people who’s job is to plan/consider all of this so companies/individuals create the right stuff in the shortest amount of time.