Edit from 2019: I wrote a TLDR’ed version of this on Hacker Noon here
Hello, I haven’t been very active here since finishing FCC a few months ago, but I wanted to give back to the community and share my story in hope that it might inspire others like me. My journey is far from complete but has been relatively successful and I was thinking to write it up as a Medium post to help other career changers frame what they might want to do in 2018. It will be targeted at a broader audience than just the FCC community, but I’m hoping to get some feedback from you folks in terms of important questions that I left unanswered. So please tear apart my essay and ask anything.
For full disclosure, I actually started this journey in late Nov 2016 so its a bit more than 12 months but the timesteps here still reflect reality.
What you are about to read
To some of you reading this may seem like excessive backstory, and if you feel that way skip ahead. I write this for the dozens and hundreds of other square pegs like me out there, for whom the cards just fell slightly off center and before you knew it ten years go by and they realize they are surrounded by round holes with no way out.
I was 30, and in a dead-end job. Since falling in love with finance in high school I had oriented my entire early career around it: getting a business degree and eventually a master’s, fighting my way out from an extremely poor choice of first job out of college to break into the “Front Office”, embarking on a high-flying career trading everything from bonds to currency derivatives to ultimately helping to manage millions in a global hedge fund. This was supposed to be the image of success in my profession. People at Wall Street Oasis pray nightly to have the kind of career I had. Only one problem. I wasn’t great at it (see: Peter Principle), and in the dying hedge fund industry being just average wasn’t good enough. Things came to a head when my boss announced he was leaving for a new start, essentially firing the team he used to manage. With some misplaced optimism I took a job at a finance related startup to figure things out, but it soon proved to be a dead end. I was 30, and lost.
Can you imagine spending >10yrs of your life to get to a certain place in life, only to find out it’s not for you?
I looked around in a funk, messing around with different things but never getting anywhere. If you’re reading this you don’t need to be convinced about why software engineering and in particular web development might be a worthwhile career, so all I will say is I eventually got to that conclusion. I will say Haseeb Qureshi helped.
On Jan 1 I decided I would actually finish FreeCodeCamp (FCC). I had done a bunch of research into free learning resources, including The Odin Project, Codecademy, Stanford CS50 and FreeCodeCamp. For whatever reason, even though I still had my day job, I refused to consider paid classes beyond the odd Udemy course, which meant things like Team Treehouse was out. This is of course very myopic - the value of a few tens of dollars a month versus a total career change doesn’t even compare. But when you’re just testing the waters you want it to be as low risk as possible. FreeCodeCamp simply clicked for me. I was attracted by the idea of working on real world projects for nonprofits at the end of FreeCodeCamp rainbow - but I was fully prepared to pivot to the Odin Project if it didn’t work out.
I made one other crucial decision in January. I would blog about my journey. Every day. Being a devoted Redditor I had picked up this idea from /r/nonZeroDay and it made sense. In short, you simply decide to do -something- towards your goal every single day without fail. This sounds tough, but the upside is, that -something- can be the smallest, tiniest, most inconsequential thing. Want to work out more? Decide to put on your shoes and walk into the gym and do just one push up and you’re done. You can walk out. That day will not have been a zero. You have only 36.5 thousand days in a centurylong life. Thousands are already gone. How many more are you going to let go by not doing the thing you want to do?
No. Zero Days.
The beauty of this is of course you’re probably not going to only do one push up. You showed up. You’re going to do more. That’s the NonZeroDay idea.
FreeCodeCamp encourages this with a visual representation of your daily streak with green squares for when you did things and gray squares when you didn’t. This idea was taken from Github, which is something that experienced developers grow to hate. But it was just the thing I needed. I would start my blog on github, and I would keep that thing green come hell or high water. But I was so scared of failing publicly and so scared of admitting failure in my prior career that I didn’t tell anyone. Not my colleagues, my closest friends, or my family. And so I didn’t tell people about my blog; the blog was for past me to talk to future me, for future me to judge my past me, for present me to be encouraged by past me. This little essay is made richer by having my blog to help me relive the blow by blow.
Anyway. Right after the FCC Frontend Cert is the “Data Viz” Cert (this is the old FCC syllabus, a major revamp is scheduled for 2018). In this part of the course you are supposed to learn SASS, D3, and React, but the SASS and D3 parts of the curriculum were still nonexistent back then. There were some React projects to do but no content to -teach- you React before you did them. So I turned to Udemy. Steve Grider is pretty much the king of React over there so I simply decided to start and finish his course.
Only problem is, jumping straight to Steve Grider’s course is a pretty piss poor way of learning React. It mixes ES5 and ES6 content and throws in way too much Redux complexity. I believe this is in part because Udemy doesn’t give Steve Grider any way to get quality feedback. He was simply the first credible course on the scene and Udemy has a way of snowballing newbies to whoever seems to be “the course” on the subject and all other instructors can just forget about it. Feedback from newbies isn’t worth much, because frankly they don’t know any better. Today I would recommend Wes Bos’ https://reactforbeginners.com/. Yes it’s more expensive. Get over it.
I have only one solution for all this confusion. Can you guess what it is?
No. Zero. Days.
Try A. Doesn’t work? Try B. Doesn’t work? Try C. Feel like you missed something? Try A again. Repeat. Whatever it is, I can virtually guarantee people dumber than you have done the thing you’re struggling to do. Even they figured it out somehow in the pits of their stupidity. What’s your excuse?
No. Zero. Days.
The thing about tutorials is they loooove getting you to show things on
localhost and then stop there. Deployment is usually left as an “exercise for the reader”. That’s great and all, but web developers should probably put things on the web. FCC guides you towards doing everything on CodePen for the Frontend Cert, but when you hit the other two certs you soon migrate to Cloud9 for a cloud-based IDE and hosting solution. Only problem is, all your
localhost-specific knowledge is now kaput. Again with the benefit of hindsight, I don’t know why I was having so much trouble getting things to deploy with Cloud9, but I was. Today I can recommend having a good grasp of Webpack and Babel basics before trying to deploy a React app and screaming at the wind at weird errors.
undefined is not a function errors you might be tempted to conclude it isn’t a real language and just give up.
No. Zero. Days.
The hardest challenge in FCC’s React Projects is building an entire Roguelike Dungeon Crawler game in React on Codepen. I could’ve done it on Cloud9 but I had some issues with it so Codepen it was. The difficulty was learning and applying Redux. Although you might not need Redux on small little apps like mine, you probably should practice it on small little apps before you tackle anything bigger.
I’m now 31 and I’m about to tackle the Backend Cert on a random free code exercise website no employers really give a crap about. What am I doing with my life? I press on.
Here’s a blog post from that time to give you an idea of my internal monologue:
i am dealing with severe writers block when it comes to restarting the fcc nightlife app. im not sure what this sudden lack of motivation is coming from. i have plenty of time to code and am not doing it at all.
back to codewars to punch out a couple katas.
That’s all fine and dandy but you know what? I had my first zero day. Yeah. Me, Mr. No Zero Day guy. What the hell? I just finished the FCC Frontend and Data Viz Certs! I should keep going!
Yeah, no. Backend stuff is where the rubber really meets the road. You have to learn how to set up your own server, both locally and deployed. Heroku is great for that, and tools like Cloud9, Glitch and CodeSandbox are always popping up to help tackle this problem space. You have to figure out how to link to your database (FCC prefers MongoDB, reasonable people disagree) and set up your server to create APIs that query that database, run calculations, and serve files. The more “full stack” you go, the more configuration possibilities exist and the less learning resources are available to you. This is a bad combination for a newbie. I completely hit a wall, and this even after some initial fullstack success with ClementineJS. It just wasn’t clicking.
MeteorJS saved me. A fullstack framework with opinions about everything and, more importantly, deployed without fuss? Sign me up! Even though I had caught a whiff at the time that MeteorJS might not be a thing anymore I was so desperate for anything that would work I just tried things. Along with Meteor I discovered Clever Beagle and VulcanJS and got productive with the help of all these useful fullstack webapp examples that just made sense.
I broke through all but the last two Fullstack (Backend) projects on FreeCodeCamp and the end was in sight.
And then I fell sick.
My sickness took me out for a week, and I’m not proud to admit it was a zero week. Pushing my sickness aside I power through to finally finish the Backend Cert, and thereby all the Certificates for FreeCodeCamp! Along the way I had kinda meandered into being a Meteor developer, something I wasn’t fully onboard for, but it had made my backend projects so much easier I didn’t much care.
Excited to get some real world experience I put my details in to request being paired up with to help with a nonprofit.
I didn’t hear back at all. I asked on the forums and tried pinging Quincy Larson on Twitter, and he said he would look into it.
I briefly just lost interest in web development altogether and dabbled with VR frameworks like https://aframe.io, having just gotten a HTC Vive. I learned Vue because I heard good things about it and I liked Evan You’s independence. I fell out of Meteor because it actively fought me when trying to adopt things like Vue (I don’t think this is a fair judgment to Meteor, but is how it felt at the time. Too much magic is good until it is bad.). I tried out Wordpress for my blog and some ideas for a side business. I learned about (and thankfully bought) some bitcoin (not enough, in retrospect).
Basically, bereft of structure, I faffed around for weeks. I realized FreeCodeCamp is never going to get back to me and the cake is a lie. But whatever, I had finished the FCC Frontend, Dataviz, and Backend Certs right? Employers would be lining up around the block for me!
No. I knew better. I had tasted the success of building webapps on my own, but I had only barely limped into the finish with code that was entirely not peer reviewed, with a lot of questions left unanswered. I could work every day to patch holes in my knowledge, but it would be an uphill battle from here, not downhill. It’s harder to work on the fine details of what you don’t know you don’t know, than to learn the broad strokes of what you know you don’t know.
I don’t want to give you any illusions about how I finished FreeCodeCamp in a relatively short five months. I had the “fortune” of not having any dependents or family commitments. I didn’t have much of a social life. Where I would normally be active and working for my company during nights and weekends because I was that kind of person, I cut it back to “just” a 9-5 commitment to make room for my personal progress. I took days and weeks off (I did have essentially unlimited vacation, within reason) just to move forward faster on the projects. It was straight up a second fulltime job.
Except it wasn’t. It didn’t pay, and five months and three FCC Certs later, I was still at my dead-end job and had no realistic prospect of improving my lot in life. Yes, I had discovered the famous P1xt guides that began on freecodecamp, among other exhausive resources like the OSSU self taught CS guide but I will frankly say what I don’t normally dare to say when people suggest listicles like this: Are you really going to go through all that?
These resources are great but generally tend towards overwhelming, overlapping and messy jumbles of stuff that works for different people, and depending on how deep you can go through them could take years to complete. You emerge with great general fundamentals but not necessarily anything very much to show for it. It certainly doesn’t help you look for a job. Can’t exactly list “Finished everything on the P1xt guide” on your resume. Not that resumes matter if you just work on super awesome open source projects all the time that employers take notice of you for, but I tend to set my expectations low in that regard. Guides like these are an ideal roadmap, but not a plan.
I also want to mention that I know some people also start doing basic freelancing work to build up a portfolio here, but I was unattracted by the idea of competing with a global market of experienced freelancers for close to minimum wage.
In the meantime, to keep active on my coding, I started applying my new skills to solve problems at work. I made mini internal dashboards to help our sales staff. I created analytics tools to crunch and display our data for my managers. I made marketing minisites for potential clients to play around with to get their attention.
They. LOVED. It.
My colleagues raved about my apps and used them every day at work. I even got called up by a competitor looking to hire me because of it. Me! with my shitty skills and freely gained knowledge! For noncompete reasons it wasn’t going to happen (and I doubt the competitor was 100% serious anyway and was maybe just fishing for info), but I was hooked. I felt like I was nearly there. More importantly, I realized that I should probably spend some money to really “get good”.
And so I decided I should do a bootcamp.
REST OF THE POST TOO LONG
Ok so it turns out my post is way too long for FCC forums (its like 45k characters) so I have to host this on my blog. pardon the link out: https://sw-yx.github.io/2017/12/19/fcc-blogpost-draft-2 Please have a look here for the rest of the story.
Here’s where you, dear FCC reader, come in. What questions do you have? I’ll answer and put them here.
Thank you for reading my story and I hope it helped someone out there. And THANK YOU FREECODECAMP!!!