On January 27, 2020 I started attending FlatIron, a 15 week software engineering program. It was a wild, exhausting, and crazy experience and, on May 8th, 2020, I graduated! I thought I would take a moment to talk a bit about what my experience was like for those interested in maybe attending a boot camp in the future, and at the end I wanted to give some base tips to those wanting to learn to code (formally taught or not).
-Ruby - Introduction to Ruby, object oriented programming and you!
-Ruby on Rails - More Ruby, and learning how to talk to your server through a framework. Make a website like it's the 90s!
-Final Project - "3 weeks" to do anything you want with the knowledge you have learned so far. Really 2 with project pitching and presentation prep.
with each of the first 4 mods following the same loose schedule:
-Weeks 1/2 : Introduction, education and practice of coding skills/techniques
-Mid/End Week 2: Coding challenge to test your knowledge of the material
-Week 3: Paired Project week
-Friday week 3: Project Showcase
I did my bootcamp in person (until the quarantine hit) because I know myself to learn best in a community, and one of the more nerve-wracking things about starting bootcamp is not knowing what to expect in the standard day to day schooling. Here is an idea of what a day would be like:
9:00AM : School "starts" 9:15AM : Morning Roll Call 9:30AM : Morning standup - Morning standup is a routine where, before getting started on the day, students stand and talk to their table about what they accomplished the day before, what they plan to accomplish today, what mental or physical blockers may prevent that accomplishment, and how they plan to address those blockers. It's a nice thought exercise to get the day started! 10/11AM: (mandatory) Morning lecture - Usually an hour long, it covered the topics we were learning for the day and/pr reviewed the previous days topics. 3:30PM : (optional) Mid-day Madness - Unfortunately with the quarantine these happened less, but they were fun mini-lectures where instructors would have problems for us to work, introduce fun (but un-neccesary) aspects of coding, answers questions or do coding exercises. These were a lot of fun. 5:30PM : End of Day - Students gather and talk about their day, usually highlighting one key thing they learned/were proud of, and any issues they overcame. 6:00PM : Class is done!
You'll notice a lot of the day is empty or unscheduled. While it's true there were intermittent meetings or guest lectures (Career guidance, resume building, in field experience, etc) a vast majority of the day was "free time" that we worked on a series of labs and readmes. At our school it was common to have a few lessons that were informative and basic background, one or two interactive labs that walked you through a concept, and then series of labs to expand your knowledge by giving you more complex tasks and challenges. At Flatiron they have a series of tests that you run your code against regularly that helps guide you in your quest for knowledge, but a vast majority of your learning comes from trial and error and constant internet searches. As a software engineer you can expect at least 50% of your time spent reading documentation or searching forums for ways to address issues, so be prepared to hone your Google-Fu.
Every Mod had a code challenge, designed to test our knowledge and application of the broad foundational subject material we learned over the preview two weeks (or so). They were timed, usually about and hour and a half, and the entire class did them together in one of the larger conference rooms. Looking back now, they are fairly basic applications of coding for each concept, but I was thankful for Flatiron's policy on allowing 1 retake of each code challenge as I failed all but the one initially. This brings me to one of my biggest takeaways from my experience...
It is extremely easy to get overwhelmed by the extreme amount of knowledge you are presented at a bootcamp, and it is practically impossible to retain all of it...even if you could, technology changes so quickly that you will have to learn something else new in a few more years at most! My recommendations for focusing on learning any coding are the follows:
Everyone is geared towards absorbing information differently. I almost have to make or do something with my hands for it to retain mentally, so pure reading or lectures are actually pretty ineffective of a learning tool for me, but my wife is the exact opposite. On top of that, every type of information will probably need it's own nuance and uniqueness to make it fit you best. Figure out what helps make learning programming most effective for you and stick with it! I have gotten used to using draw.io for planning project outlines, and Mind Node for brainstorming, and I do a lot of code along videos when learning new methods.
If you stick with programming long enough, you will pretty much have to learn more than one language eventually. Every coding language has it's pros and cons, and I am neither educated enough nor brave enough to debate with any software engineer what the "best" language is...but almost every language has a lot of common base elements. As you learn more languages you will actually pick up on the ways that most languages are different more than trying to figure out what they have in common, so don't feel bad about having to look up syntax or rules or what certain functions do. Those will come more familiar with time!
Regardless of how you learn, but especially if it's self taught or self guided, you will have a whole gaggle of resources you find online. Start early on getting a decent system of bookmarks to help organize the various sites you see and want to go back to. I have a Ruby folder, a Github folder, and Authentications folder...just anything that makes sense to you so that you can file away resources to find easier next time.
You also need to learn to fail gracefully. Nobody programs perfect code 100% of the time, and the joy (and challenge) of coding is the puzzle that needs to be solved to get it to work. Sometimes it's your own error you can fix, and sometimes it's something in a system or a file you are dependant on for your program to work. An error doesn't mean it's broken or that you are dumb/wrong/can't do this. An error is just the next stop on the path to functional code. Get used to errors. Love them, despise them, dread them...they will be with you forever once you get in tech.
Lastly, find a community! There are huge collections of people who are learning these skills, and a wealth of supportive individuals who will happily help you out. That being said, like every industry there are plenty of "gatekeepers" who will try to shame you or judge you on your lack of knowledge...just remember to keep your own positivity up and that being a good team member and empathetic/passionate person is just as desirable for employment as a skillset like coding, and it's a lot easier to learn to code!
Good luck y'all, and happy coding!