The importance of scoping in programming
Published: 2023-12-19 16:15:54

   Scoping in programming is probably one of the hardest things to do because how can you scope a project without being too overly ambitious? Or what if you scope a project that doesn't have enough to show and now your adding features that might not make a lot of sense? 

# <u>My struggles with scoping </u> 
  
  I am currently at Flatiron Bootcamp for software engineering and for your final project/product, you have about 3 weeks to design something your proud of and something that shows all the skills you have learned during your very quick 3 months, the only requirement was to implement one new technology that you haven't learned. I started off great since I already knew what I wanted to make, A restaurant training app that helps small restaurants train any new front-of-house staff while also keeping everyone on the same page by providing food and beverage descriptions. Sounds easy enough right? well, when I scoped this project out I didn't put into the equation how long it would take me to figure out which technologies to use and how to use them resulting in a very frustrating two weeks. 

## <u> The technologies I Employed</u>
   During my time at flatiron, I learned React for frontend, python for backend, flask for the web framework, and SQLite3 for data management. Some pretty solid technologies to make a decent version one product. So what do I end up doing? out of all of these, I only planned to use React and some form of SQL. Bad idea, for my data management I wanted to use Postgresql, for my web framework I chose Django for its many features, mostly for its authentication features that are already built in. For some reason, Postgresql was not playing nice with me and my Windows laptop, luckily I had a Mac mini at home that I could travel with but this is already a week in of trying to get Postgresql to work. ultimately I decided to not even bother using Postgresql and just stick to Sqlite3, Now I had to learn Django and its authentication process which I later realized shouldn't have been my main focus, my focus should have been just making a functional website no matter if it had authentication or not but I already was too deep into that I just had to finish. Now I am finally seeing a bright light at the end of the tunnel of this development hell that I had to go through to learn a valuable lesson, stick to what you know and make little but impactful improvements along the way, and just never give up on the vision even if you have some sleepless nights.

##<u> What would I do differently? </u>

1. Start small and focus on the core functionality of the product instead of trying to create a fully-featured app. In this case, I should have just started by creating and displaying training material.

2. Stick to more of what you already know in terms of technology and later on maybe transfer over once you are happy with your version one. 

3. Break down the project into smaller tasks and estimate how long it will take, it's easier to estimate small tasks and completing these small tasks will keep the motivation and consistency you need to get to the finish line. 

4. Manage your time to your advantage, it's amazing how fast time goes by while coding, to the point where you lose track of it. 

5. You will always face challenges in development, It's how fast you can adapt to them and take action that will determine your success. 

6. Learning to fail is an art, we all fail and if your not failing from time to time then your not growing. Sometimes the journey is more rewarding then the end result.