"Just two years ago I made the decision to change the course of my career and attend Ironhack Bootcamp to become a software engineer." shares Emily Chen. By Emily Chen, Software Engineer, Truss
Just two years ago I made the decision to change the course of my career and attend Ironhack Bootcamp to become a software engineer. After four years of working in the tech industry as a QA Engineer, becoming a coder felt like an inevitability. I was ready for the challenge, and fortunate that my experience provided me with an arsenal of skills that would help me succeed at bootcamp.
Many of my colleagues were not so lucky. Despite the hours they had already spent studying, the majority seemed technically underprepared for the coursework. Many were lacking basic computer skills and as a result, struggled to keep up with the intense pace of the class. I ended up spending a significant portion of my time teaching and coaching other students, and it got me thinking about what our program could have done differently to better prepare incoming students. What skills can students learn at home with relative ease so that, during their program, they can focus on developing the skills where bootcamps provide the most value?
Since graduating from Ironhack and joining Truss, I've had the opportunity to interview and speak with many bootcamp grads. I've also been approached by friends and acquaintances for advice. I've found that many people going to bootcamps are looking for advice on how to prepare but don't have access to people in the field.
I put together this guide in hopes that it will help others begin their journey with the tools they need to succeed. You may notice this guide is strongly biased towards Mac owners. You'll find your journey significantly easier if you use one because the majority of developer resources that are useful for beginners are written by and for Mac users.
1. Touch Typing
It’s easy to forget that some people still go through life hunting and pecking at keys, but about half of my colleagues at Ironhack had not mastered the basic skill of touch typing. Typing speed won’t necessarily make you a better engineer but it will reduce brainpower required to type, enable you to take better notes and keep up, and save you from the irritation of your colleagues when they pair program with you. This is absolutely crucial when working at the intense pace of a coding bootcamp.
If you are not in the 60+ wpm club, it is not too late to improve your typing skills. There are plenty of resources online such as Keybr or you can sign up for a class from an organization like Keytime. I’m actually a veteran of the “Learn to Touch Type in an Hour” class that Keytime used to offer through my university and found it shockingly effective.
2. Keyboard Shortcuts
Most people know the keyboard shortcuts for copy and paste but experienced engineers use keyboard shortcuts for almost everything a layperson would use a mouse for. The rewards are speed, efficiency, and decreased stress on your wrists. Master ⌘+Spacebar, ⌘+Tab, and then look up how to remap ⌘+Q so you no longer kill your apps by accident.
Start with memorizing basic OS shortcuts and then move on to your text editor and/or IDE. This list from iMore is a good place to start. For training wheels, you can install the Mac app Cheatsheet which will display relevant keyboard shortcuts with a long⌘ keypress. ShortcutFoo is another good option for training up on your shortcuts.
3. Shell/Command Line
Back in the days of MS-DOS, we told computers what we wanted them to do by typing words at the DOS prompt. As it turns out, software engineers never fully left those days behind. If you’ve never launched Terminal on your Mac before, don’t let your first day of class be your first time. Start moving files around, renaming them, and launching them from the command line. Read up on PATH and set up your dotfiles (system configuration files). Learn just enough Vim that you don’t panic the first time it pops up for a commit message. The goal is to feel comfortable working from the command line by the time your course starts.
A good place to get started is Codecademy’s free intro course, or you can dive a little deeper with Learn Code The Hard Way’s crash course. Once you’ve got the basics down, I’d recommend spending some time learning about dotfiles and customizing your terminal. Start with frontend architect Lars Kappert’s post about dotfiles and then read my colleague Breanne’s neat little blog post for an introduction to PATH.
There are tons of examples out there for customizing your prompt, but to get started you can check out my configuration on Github. It adds color and useful information about your active Github repo. It’s a great exercise to gain understanding of your dotfiles and could save you from going down the rabbit hole when you should be studying. You can even have a little fun with it and add some emoji to your prompt.
As we’ve on-boarded new bootcamp grads at Truss, one of the big surprises was how long it took to get them comfortable with Git. It’s a topic that is generally covered in class, but practice is limited to making new repos, committing code, and pushing. The challenge comes when you have to collaborate with other people on the same project. If a junior was unlucky enough to hit a Git roadblock and there were no senior engineers in the office, they would end up stuck for hours trying to untangle the mess.
You don’t necessarily need to become a Git master before classes start, but the more exposure you get now, the less trouble you’ll have down the road. You should understand cloning, forking, merging, and rebasing. Our cofounder Jen wrote up a blog post about Truss' Git workflow, which can provide a bit of insight to real world Git usage.
Once you’re comfortable with the basics I highly recommend finding someone to collaborate with on a Git repo. You don’t even have to write code; just create a text file. Write a few lines of a story and check it into a repo. Create branches that each add to and embellish the story and have your partner do the same. Take turns causing problems for each other, fixing the conflicts, creating pull requests, and merging your code in master.
5. HTML & CSS
This one was submitted by one of my Truss colleagues, who graduated from Galvanize. Your bootcamp is not likely to spend much time teaching you the basics of HTML and CSS, but you can’t build a website without those tools. Luckily HTML and CSS are comparatively easy to learn on your own. Learn the basics of HTML and CSS as well as positioning and grid layouts. Build a basic static website about yourself from scratch.
If you are ready for something a little more advanced, poke around on CodePen to see hundreds of creative examples that illustrate the power of good CSS. Play around with them to get an idea of how they work. Read the fantastic article about Medium’s styleguide that was published by one of their engineers. And if you are one of the rare folk who are genuinely excited by CSS, definitely check out Lea Verou’s mind-blowing book, CSS Secrets.
6. Developer Tools
Browser developer tools aren’t particularly difficult to learn, but they have many features. The challenge for me has been to remember the existence of tools when I actually need them. Too often I’ve spent significant time investigating an issue only to discover that the information I needed was just a ⌥+⌘+J away! You don’t have to spend too much time here now, but CodeSchool’s Discover Devtools course is a great place to dip your toes in.
In addition to checking off the above, there are lots of other activities you can engage in that will help you be successful. Find some reputable blogs and start reading about your language of choice. Browse some projects on Github and try your hand at reading other people’s code. It’s okay if you don’t understand it yet - the exposure will help you grasp just a little bit more each time. Just do your best without overworking yourself. The goal is to front-load what learning you can so you will have more brain capacity for the incoming deluge of information.
I strongly believe that learning to code is much more achievable than most people realize, but only for those willing to put in the hours of hard work. Attending a coding bootcamp is an investment in your future and requires commensurate effort. The quality of your bootcamp education is just one piece of the puzzle; ultimately your success is tied in with your adaptability and determination. Taking this leap is a big commitment and you owe it to yourself to take it as seriously as possible. So do some soul-searching and set yourself up for success. Good luck!