Notes From the Halfway Point
I’ve been studying at Launch School full-time for ten months and am nearing the end of the first front-end course. I thought it would be a good time to sit down and share some of my thoughts.
When I first started studying programming, I was full of many of the same questions that repeat themselves regularly on the Launch School Slack #general channel. How long will Launch School take? What outside resources should I use? Can I get into Capstone if I live in ‘X’ city or ‘Y’ country?
Those questions are all understandable, and the answers are pretty simple. The curriculum will take you as long as it takes you. When I started I estimated it would take me one year of full-time studies, and it looks like my pace may be a little bit slower than anticipated. The truth is that I feel like I could definitely benefit from slowing down and taking more time with each topic, but outside pressures keep the fire under my toes to keep me moving. I entered this career change coming from a non-tech background, so how long it will take you will depend on where you’re coming from. More important than an exact timeline is if this type of work appeals to you. You’re preparing yourself to do this type of work for decades. Plus or minus some months here or there is a drop in the bucket in the long run if software development is truly your calling.
What outside resources or books should you use? In my opinion none, or very few. The core curriculum is set up in a way that it guides you through important fundamental topics, keeping you away from distractions, rabbit-holes, and generally getting lost in what you don’t know and don’t need to know yet. I suggest that you take all your energy and put it into the materials they provide you, because the program is carefully curated to focus on things that build a foundational knowledge base that you can later use to learn anything you need as you need it. You will get more out of those outside resources after you finish school, and will be much better at picking out what is worth your time and what isn’t.
There are a few things I did reach out to outside resources to learn, and I have no regrets about doing them. Despite being a solid typist, I spent evenings brushing up on my precision using Typing Club and later having some fun with Type Racer. Being able to touch-type all the symbols and numbers involved with programming helps you focus on the problem and avoid wasting time with typos. Also, it’s a skill that you will be judged on if not explicitly.
In the beginning I took a few days to work through the Learn Enough tutorials on Text Editor, Command Line, Git and Regex. Launch School has its own sections on all but the first one, but I didn’t regret going through an alternative perspective on the others, as they can all be overwhelming at first. Spending time to figure out some of the very useful tools that text editors have is well worth the initial time investment in my opinion. There are a lot of things you do typing code that are unlike vanilla typing, and knowing the shortcuts to things like multi-line editing, find and replace, delete line, copy line etc… will save your fingers and considerable time. While going through the Ruby materials I regularly gave myself headaches by manually changing variable names to something more semantic, but forgetting to change that variable name somewhere else… Embrace those useful tools and you will be rewarded.
Don’t be afraid to try out new tools either. I switched from Sublime text to VSCode (free) a few months ago and have no regrets. Eventually if I ever reach sensei status I might migrate to VIM. Don’t worry if you use something else altogether, they all are capable tools. Eventually you’ll develop your own preference, but any of them will work well. I find in-editor code linters help me develop good habits through immediate feedback on my syntax. I started using Alfred to search my system and perform quick math operations. Experiment and find yourself a good note-taking app.
Take the time to navigate your code without relying on your mouse or trackpad. Go to your settings and set your keyboard to key repeat: fastest and delay until repeat: short. While watching Launch School videos or any other experienced programmer code, pay attention to their flow and try to figure out their efficiencies. Are they dragging windows all over the place or are they using multiple desktop views? How do they navigate their code? Even little things like
option + arrow key to jump the cursor by word instead of character or
cmd + arrow key to jump to a side makes a world of a difference when you do that a dozen times a minute.
As far as entry into Capstone, while the general guidelines are that they only take American students who are willing to move to NYC or Silicon Valley, they are open to other locales if the student is exceptional. The top tech companies tend to be concentrated in those two areas, so if you’re serious about aiming for the top you probably need to make your career the prime focus in your life and make a huge commitment to put everything there. As a Canadian, I’m unable to work in the U.S. so that isn’t an option for me, but I’m still aiming for Capstone.
I’ve said it before and I’ll say it again: make school friends. I credit my weekly meetup group with helping me through some of my greatest frustrations as well as helping me prepare for assessments by exposing my deficiencies. Realizing that other very intelligent students also have struggles makes your own a little bit more bearable. 40 minutes once a week isn’t too much time, and reaps immense and immeasurable benefits. Post on Slack or the forums and put yourself out there. If the reddit experience says anything about internet communities, its that most people are lurkers just waiting for someone else to speak up. Having a Slack group channel to share questions and comments at other times is also very helpful. Sometimes it feels embarrassing to ask things that you feel you should know, and while the general chat is very welcoming, it’s nice to have some more private backchannels.
I canvassed my group for their thoughts on their school experience so far, and they made some great points. While working through exercises and challenges, try your best to come to a solution without looking at the supplied one, but also don’t be afraid to look if you’re stuck. It’s a careful balance, but you can learn so much from seeing other people’s solutions. Sometimes I’ve been unable to solve the base problem, but after understanding how others approached it, been able to figure out the more difficult further exploration question. Also don’t judge yourself too harshly if other students’ or the supplied solution is more elegant or clever than your own. It’s best practice to get to a solution first, and refactor it later. “Premature optimization is the root of all evil” is something I understand better now. Judge yourself more on whether your code is readable and your variable names are semantic than if it’s a clever one-line solution. Also, get in the habit of taking the time to really understand different solutions and try to think of the tradeoffs involved with each approach. It will help you down the road. After solving a problem take a few minutes to think about what refactors you can make to your code to improve the legibility or efficiency.
Trust in the program. Because Capstone involves a job search component that the school is involved with, Launch School does a good job of making sure that the skills they teach you are the skills that top employers are looking for. There’s a feedback loop that keeps the material relevant. While the philosophy is to teach the things that don’t change, there’s a constant refinement of the course material so that it addresses the things that matter at the point it matters. Do you ever wonder why so many grads are active in the school slack channels? The school prepares you well and they are grateful for that preparation, so don’t worry too much about finding outside resources. Focus on what they teach you.
Remind yourself of how far you’ve come. One year ago code mostly looked like magic nonsense to me, and now I sometimes feel like Boris from Goldeneye. Even if you doubt yourself every other day, it’s important to appreciate the distance you’ve come so far. Read some of the really good articles from successful and inspirational former students like Sunny or Julius to see some of the struggles that they experienced and some of the ways they dealt with them. Notice the discipline they exhibit in their routines, and realize that those average Capstone salaries aren’t just handed to you, it will take an immense commitment to get that reward.
The further I go down this programming path, the more I’m aware of what I don’t know. More comfortingly, I’m not bothered by it because there are so many things that aren’t important to know. I’m still a beginner and have a long way to go to move past that, but school has been shaping me into a sophisticated beginner who is capable of learning difficult topics. An emphasis on discipline has elevated my life outside of school, and made me a happier and more confident person.
Embrace the plateau, involve yourself in the community, be unafraid of change or challenge and remember to be proud of how far you’ve come already.
All photos by Stefan Blondal using infrared film.