Six months after learning how to code: Advice to those thinking about learning it as well.

Six months ago, I began a coding bootcamp through Flatiron School as a software engineer. When I began, I had no experience at all, struggling to understand the concepts presented, let alone complete the labs assigned. I found that steadily, the concepts began to stick, and I was able to begin applying them in ways other than initially specified. I felt I was actually learning for the first time in years!
Fast forward to the first major project of the course, a single page web-app using only vanilla Javascript. My intention was to tackle something relatively simple, and in doing so, allowing me to play with the concepts I had learned so far. I made a mini-game in which you were able to select a Pokemon (or have one randomly selected for you), and battle against a computer player. The way the winner was determined was simple, whoever had the heavier Pokemon won. Before even beginning the project, it felt like something I was confident I could accomplish, comparing two numbers in javascript is extremely easy. However, things turned for the better. Instead of leaving the win criteria the same, I decided to take a stab at trying to include Pokemon type into the logic. For anyone who is familiar with Pokemon, each one has a type, which is strong or weak to other types (all based on the same logic as the games). Using arrays and the .includes array method, I was able to properly integrate ‘type-check’ into the battle logic. As an example, if Pikachu (an electric type) battled against Blastoise (a heavy water type), Pikachu used to lose simply because it weighed less. Now, Blastoise would lose since water is weak to electric. I had effectively changed the entire mini-game to be just that, rather than some fancy Pokemon scale. I felt I could really make what I wanted.
My second project was another chance to see if I had really picked up the next big skill from the course, React. I felt way less confident than I had when starting my first project. I chose yet again to do something familiar, you could even say more than familiar, as I chose to expand my first project. I made a more complex Pokemon app, including a Pokedex, a race mini-game, as well as the same battle mini-game as the first project. In addition, I made a favoriting system as well, that was used in each mini-game to select one of your favorites to use as your Pokemon. It all came together quite well, moreover, since I was simply expanding out on my previous idea, I was able to focus more on the React portion of work rather than coming up with an entirely new idea as well. Without a doubt, the two Pokemon projects I did to begin my project process, with Pokemon being quite familiar to me, made those real learning opportunities, allowing me to stretch and even redefine how I used certain methods or ideas Flatiron introduced me to.
For my next project, I was unsure of what to do. I had many ideas but the one that stuck was some hybrid of Candy Land and Mario Party. You would select your character, as well as the cpu characters. Then, one by one move around the board after rolling a six-sided die, trying to be the first to reach the castle at the end of the road. I am still quite proud of what I achieved with this project. Before beginning the in’s and out’s of coding it all, I had an idea of how to get the pieces to move around the board, without the need for using animations. I thought it could be a clever workaround (as my animation knowledge was and still is quite limited). As I laid the foundations for the project, I kept feeling anxious that my idea would not work, and that I would inevitably be stuck with a whole game laid out, and no moving pieces. To my surprise, it worked! Albeit not exactly how I initially intended, however it worked nonetheless. With some help from an instructor, We were successfully able to get the pieces moving around the board with the use of asynchronous promise objects. I had a big takeaway from this project, believe in your thoughts and ideas. I was so close to calling it off on the whole thing simply because I was unsure if my idea would work. Seeing it through and giving it a real shot is how I was able to create this project in full, exactly to the letter in terms of how it worked.
At last, after all my hard work, I had reached the final capstone project of the course. My goal was to create something that could show off the culmination of my learning from the past four months. I designed another simple mini-game, with many more features tagged along. In short, you began with an amount of money, with a simple goal, get more money. You achieved this through shopping in a store for ingredients, and using those ingredients to cook dishes, which in turn you can sell for more money! Although I did not foresee many issues with this setup, there were many. Initially the backend I created did not function as intended, delaying my progress right from the start. With each step forward, came a new unpredictable issue. Through troubleshooting, and getting a little help from other students and my instructor, we were able to sort each issue one at a time. This may have been one of the most important learning experiences I have had so far. Even though I thought there would be no big hurdles to climb for this project, there were many more than the others that came before it. Always remember to try solving one at a time, and eventually, you will have solved each and every problem you come across.
The projects I worked on during my time at Flatiron have taught me so many important things about software engineering. From the planning to implementation, I am, now more than ever, confident in my abilities to design web applications however I would like. Through the effortlessly functioning components or the roadblock errors that halt us in our tacks, there is always a solution, you just have to find it.