When I first started out on the self-learning path with the help of FCC and other resources, I really took delight in reading the success stories. While I’m not sure there is so much useful information to glean from own road to employment, I thought I would pay the community back with a bit chicken noodle soup for the soul as well as share some insights from my 6 months working on a massive single-page app. I will try to hit the points as efficiently as possible. Please forgive me in advance for not being proactive about responding to replies.
I am a Chinese-literate Westerner living in China for several years. I had no technical education in college, but was interested in software and games growing up. I previously worked in game translation, and most recently, I spent a few years doing PR/marketing for tech companies. After working at a really interesting startup, I tumbled through a couple of PR agencies before realizing the work–on the whole–was not a great match to my personality. This was January 2016, and I had just recently turned 30.
##My Learning Process
After this in March, I worked out a part-time job three days a week to keep things stable and bills paid while I spent every other day studying non-stop. Honestly, it was the most self-disciplined I’ve ever been in my life–also the most eager to learn new material. I would mix days of videos on Treehouse or Code School with practical FCC coding to keep things fresh. Some days I just spent deep-diving on a topic, reading a number of articles I had saved to get around to. In June I finished the FCC Front-end Certificate.
After FE, I decided to hop straight to the back-end to learn Node.js. Unfortunately, I got really hung up on the Node School courses and still lacked an understanding of what the back-end was all about or what Node.js was. Searching Reddit, I found a recommended Udemy course (linked below) that gave me a great conceptual understanding of Node. I realized that I was losing a lot of momentum on the back-end… I was starting to understand it, but it was not as invigorating as the front-end. By now it was July, and I was feeling the pinch to make a faster transition to a work or intern position. The good news was, I found Udemy was a great resource and affordable if you waited for the deals.
I pivoted, and thanks to campers on the forum, found a fantastic, practical, and lengthy React/Redux course on Udemy (linked below). I spent most of August/September making my way through this course, and then, I decided to design and make my own app with React/Redux and a simple Node back-end using what I had learned. My goal was to make something I could show off to prospective employers. When I finally put the finishing touches on this in October, I sent out my resume to a group of former coworkers from the startup I used to work at. Despite initial concern I was too much of a newb, I got a lot of positive feedback from these coworkers about my switch to development. I lined up three initial interviews at companies former coworkers worked at (with offers to forward my resume internally at larger companies on standby). One of these interviews led to an offer I did not delay in taking because of fit and reluctance to draw out the process. In November 2016 I started my position as front-end engineer working on a small team building the company’s new single-page app using Vue.js.
##Things I Did to Get a Job That You Can Too
Lots of my path is not so easily emulated, but here are some important things I think everyone can work on:
Deep-dive all those aspects of JS you don’t fully grasp. When you wonder why something is the way it is, look up why… Lots of interview questions I faced dealt with best practices and how to go about doing one thing or another in a framework I was familiar with. Go back and re-read articles after you have learned more and see things with fresh understanding and context.
Post on social media about your journey and progress. I didn’t blog on Medium, but I made updates on Facebook and WeChat (China’s number 1 social network), where developer friends and contacts of mine saw, commented, and encouraged me
Hang out and talk shop with other developers–friends, FCC cohorts, etc.
CONNECTIONS–regardless of what industry, connections are the best way to line up interviews and jobs. If you don’t have any, start growing your social network in person through events, coffee dates, whatever.
Don’t stop at FCC projects. Design and make your own app to put your learning to practice.
##Reflections After 6 Months Working
At the beginning, it was drinking from a firehose: trying to learn Vue.js as fast as possible (easy after React, though), getting to know our codebase, getting to know more git than I had learned in my courses, getting to learn all the shortcuts for my code editor break my mouse habit (ribbed on by coworkers), getting to learn our github issue/pull request process. General reflections as below:
Terminal + Git
I have made so many git mistakes and had to ask for help so many times. I’m finally getting the hang of it only after 6 months. I think it’s hard to practice fully without working on a team, but it’s something that should be studied (resource below).
Chrome Dev Tools
I have learned so much more about Chrome dev tools and how to navigate and use the interface to find the data being communicated, to sniff out the source of a CSS error, using debugger and console.logs to find where the bug is… It’s a fantastic resource, and great to learn all about it. Dev Tools for your framework (Vue in my case) are also invaluable in tracking data flow and hunting down the source of bugs.
Vertical Responsiveness with Flexbox & CSS in general
I thought I knew flexbox pretty well, but trying to make sure just the right div/component/container has a vertical scroll bar while various other containers maintain size or act responsively… This has been the source of lots and lots of hair-pulling and learning. Wow. CSS is STILL the source of most of those “Gahhhhhhhhhhh!” moments, but I’ve learned so much. Shout-out to Vue.js “single-file components” and their “scoped” attribute to help keep things more manageable. Also, here I’ll say get your CSS good enough to copy design images exactly to real code.
I’m a huge fan of Vue.js. You can search my other posts to read more, but single-file components (side-by-side in multiple VS Code panes preferably) is so intuitive and manageable. So simple to learn, with just enough magic to take care of those common needs. Highly recommend using it either in a simple webpage (consider trying redo your jQuery projects with it) or for a massive SPA. It’s huge in China, and I hope it will gain more traction in other places (because I enjoy using it and hope the market expands, haha).
Early on in your learning process, it is good to build skill in searching and troubleshooting yourself as much as possible before asking other for help. On the job, a teammate can’t always help you, you can’t always share your code/project to strangers on the internet, and people will look to you to fix things. There is sometimes a pang of desperation, but keep searching and keep trying things.
It’s crazy but amazing to think I made this kind of career switch, but so far I feel fantastic about it. Granted, it’s a job, so it’s not fantastic every day. Some days everything I touch comes back with bugs. Some days I am absolutely exhausted and cannot do anything but relax after work. This makes it hard to keep learning outside of daily work stuff, but here’s hoping… But more than any other job I have had, the time passes fast, and I am easily engaged. In short, it’s all great because my github is full of green, my moments of flow are regular, and I feel like I have graduated from newb to regular contributor on a 2 million lines-of-code app.
##My Learning Resources (beyond FCC)
Online Course Sites (Paid):
Eric Elliot posts (Medium)
You Don’t Know JS (Books)
…lots of articles I found Googlings concepts…
The Official Vue.js 2.0 Docs
Atlassian (Great git tutorials)
Udemy Courses (Paid):
Learn and Understand NodeJS
*Great for understanding back-end/NodeJs conceptually
The Complete React Web App Developer Course
*Great for: React, state management with Redux, need-to-know ES6, basic git, unit tests
Vue JS 2 - The Complete Guide (incl. Vuex)
*Great for a hand-held walkthrough of the Vue docs, which are already amazing, and more importantly learning Vuex, Vue-Router, and Vue-Resource (for which the docs are not as amazing).