My beginner project roadmap
Tags: beginners, mobile, help, devjournal
Published: 2022-04-20 17:26:16

I am currently in my second year, finishing up my fourth semester of computer science in college, and I've come to a realization. I (embarrassingly) don't actually have that much code under my belt. Obviously I have been learning a lot in this time, but it's been foundational knowledge, such as data structures, algorithms, hardware, and I have not put them to use yet. I have implemented Karatsuba's algorithm, but I haven't made a UI. I decided I've had enough beating around the bush building my fundamentals, and I want to make something! 
### What am I making?
There is an old adage for writers, "write what you know." Frank Herbert spent 6 years researching and studying desert ecology, and used all the knowledge he built up to write the Dune books. It was praised for its great plot and writing, and also for the world building, and how accurate it was and felt like a desert planet. Through understanding his source material, he was able to tailor his vision around it. Why am I bringing up science fiction writers from the 60's? Because for what I want to make, I believe in my made up principle, code what you know. I had ideas for web apps and mobile apps I would love to use personally, so I wanted to make them myself. However, for every idea, somebody has already done it. There are millions of websites and apps out there that already exist for everything, so what do I have to offer with my project? I boldly proclaim, they all suck. Many are outdated, awkward to use, lacking features, and don't feel intuitive. I am over exaggerating when I say all, but many websites and apps I use don't feel great, and I think I can try to do better. There's nothing better than a seamless experience, and I want to create these experiences for practical daily use programs I would use. 
#### Now what are you actually making?
Sorry for my rambling, but yes, to the point, what am I making? I have been going to the gym and lifting for a little less than a year, and one thing about lifting is that it's a good idea to write down your routine, and track your lifts and progress. Naturally once I started, I tried using some gym apps for this off the google play store, and I hated them. They felt clunky in practice, and had little things that felt like it wasn't actually made by somebody who's stepped foot in a gym. My solution? Create a gym app myself, using my experiences and knowing what I, a semi frequent lifter, would want out of it. What do I want? A clean and responsive UI, the ability to make and follow a routine, while having flexibility to not follow it to a T during a workout, and robust progress tracking.
### The roadmap
I have talked to a few friends, and senior CS students who have more experience than me, and I've come up with a roadmap on how I am going to develop this. I have three main stages, learning, making, and finishing. 
#### Learning
There is gonna be a lot I have to touch up on and learn before I make this app. First, I am learning JavaScript right now, as I plan to make this app using the React Native framework, and NodeJS. Then I am going to learn NodeJS for the backend, and React Native for the front end. These are all valuable tools that are widely used in the industry, and will allow me to make the app cross platform. I am excited about learning JavaScript as it is one of the most popular languages, and is also required for web development which I plan to learn in the near future. 
Next, I'm going to have to learn the basics of databases and SQL. This one I'm a little intimidated about as I'm going to have to create the format for my databases and be able to read from and write to them without formal knowledge. I remember somebody mentioned that databases need to be formatted in very specific ways I would learn during my database management class, which I'm not taking until next semester. There is a lot of free information on the internet, and I do hope that I am able to scrape on it to make the app functional before I do formally learn about databases.
Last, I just need to touch up on my github skills, which shouldn't take too long. I want to keep the project open sourced, to have a good backlog for myself and for potential employers to see. 
#### Making
My first step in making the app is going to be creating the databases and connecting them to be able to be read from and written to through the app, using SQL and NodeJS. Once I have the core features made here, I'm going to have to design the UI. I plan on experimenting with Figma first, and then doing it for the app in React Native. 
I'm sure there is some inaccuracies here, but this is just my general understanding of it right now, and I'm going to figure it out a bit more as I learn more how these tools work. 
#### Finishing 
Once I make the rough draft for my app, I definitely need to debug it and also user test it, with myself, and other people I know. I'm going to have to fix both user experience and technical issues. Once I am satisfied enough with the app, I can release  version 1.00. 
But development never ends! There are always going to be bugs I missed, optimizations to be made, and features to be added. This is just my proposal of everything I want the app to have at a minimum, and how much I think I could realistically do while working during the summer, which is totally subject to change. Depending on the time line of development, if I have more time than I thought I would, I'd definitely love to create online features. But that time will come when it comes.
### Concluding 
If you've made it this far, thank you!:) I am very excited going into this. I'm in a continual process of learning, and I hope doing this project will teach me a lot and make me more industry ready. I am open to any (and hoping for) criticism, and advice. This has been much lengthier than I thought it would. Hope it's been entertaining, and I definitely plan to blog like this more.