No. Zero. Days. My Roadmap from Javascript noob to Full Stack Developer in 12 Months

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

In the last 12 months, I went from Hello World in Javascript, to deploying fullstack webapps, to getting a freelance job, to interviewing at top tech firms including Google, and receiving multiple six-figure offers as a professional software engineer. This is my story.

Pre 2017

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.

January

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.

February

By February I had blown past FCC’s Front End Development Certificate, from learning Javascript basics to making a Tic Tac Toe game. A lot of people complete it and want some sort of clap on the back. But I knew that that was merely the easiest part of Free Code Camp. Going by the Gitter chat at least 2/3 of campers never get past the Frontend Cert and I was determined to not have this just be another thing I started but didn’t finish. I kept going.

In case I just lost some of you right there, here are some circumstantial facts as to why you might be having a tougher time than I did. I was not completely new to HTML/CSS, having briefly dabbled as a kid in the 90’s. Enough to put up a crappy Geocities site and then never look at it again. All I knew about Javascript was “it wasn’t a real language” based on my 20 years-out-of-date impression of it. I had picked up some coding experience on the job in VBA, Haskell, and Python, but it was all amateurish cobbling together of copied and pasted snippets from docs and StackOverflow. But it was still something.

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.

Anyway, the big step up from everything pre React to learning React is Webpack/Babel setup and the need to create a compiled/transpiled bundle of Javascript from JSX/ES6. People will tell you you don’t need to learn that to learn React. That’s technically true and that’s the worst kind of true. Nobody told me this and I fumbled around for days. On the other hand they could also go overboard and tell you too much, like in this viral article How it feels to learn Javascript in 2016. That’s true, too.

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.

March

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.

The other thing about building “real” apps in Javascript is that soon enough you run into some WTF’s of Javascript (immortalized by Gary Bernhardt here) and, less facetiously, things that don’t seem to work like you think they should work, particularly anything to do with the this keyword. You spend DAYS asking basic stuff on stackoverflow not knowing if your problem is a React problem or a Javascript problem. People can’t help you because you can’t ask your question right. When you learn that Javascript was designed in 10 days and is prone to randomly throw unhelpful undefined is not a function errors you might be tempted to conclude it isn’t a real language and just give up.

Or.

Or you could realize that people dumber than you build massively successful webapps despite these limitations. You could realized that maybe, just maybe, they skimmed over some details when you first learned Javascript, just to get you going. You could conclude that You Don’t Know JS and go over your basic Javascript material AGAIN with new eyes, looking for the stuff that trips you up. Book too dense for you? Sign up for Frontend Masters and have Kyle personally explain to you what you still don’t get about Javascript. Yes, again, it’s tens of dollars and you can cancel after a month. If you don’t value your time enough to afford that, you’re doing this wrong. Kyle Simpson isn’t the only advanced Javascript teacher out there. There’s Marijn Haverbeke, Wes Bos, and way more at Egghead.io and Pluralsight. Which is the best? Who knows. Who cares? They’re all “good enough” or I wouldn’t have mentioned them. Pick one, see if it works. If it doesn’t, keep going.

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.

April

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:

stuck
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’t it. not the most inspiring writing. Also notice I mentioned CodeWars. On those days that you dont even have an hour to do your FreeCodeCamp stuff you can turn to site like CodeWars and CodeCombat to do a little 10-15 minute Javascript exercise. No Zero Days.

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.

May

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.

Nothing.

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.

June

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.


FAQs

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!!!

68 Likes

Thanks for sharing and congrats… looks like lots of great links too… will thoroughly enjoy this read (which for now I’ve only skimmed)

:smiley:

2 Likes

Whoa! Congratulation on your successes!

You have definetely put in work and grit to get to where you are. I will bookmark for future reading.

Thanks for sharing.:+1:

1 Like

Thank you for this. I am in a very similar boat in your early stages, not liking what I do and wanting something different. The blog idea is a great one and i applaud your zero day policy. Will take a look at github and see. Would you also be open to PM’s on git/FCC for some general guideline questions down the road!

And most of all congrats

1 Like

I’m impressed by your commitment to programming, there were so many days where I just got stuck with learning and had to resort to just copying code without really understanding. I was still doing stuff but I would not consider those days as being helpful to my progress at all. Right now I think I’m at a point where I might have a chance of getting a junior web developer job but thing is I’m willing to find work anywhere except for my home country. afaik, work permit’s a bitch and usually companies do not sponsor work visa for junior developers. My options right now are probably internship (takes a while to arrange), free lancing (hard to start, no experience) or bootcamp (cost money, slow learning), do you have any advice on what my best option is with regards to progressing in my learning?

1 Like

Your reasoning for not divulging your salary is actually against the law. Your employer cannot prohibit you from saying what your salary is nor retaliate if you do. Companies try to keep salaries secret and have created a stigma from doing so since it keeps salaries low. If your only source for salaries is from the person paying you they have a great incentive to keep you in the dark. Your greatest negotiating power is knowing what your peers make. So people, never be afraid to disclose your salary. The more information you and your coworkers have can only help you.

7 Likes

sure! happy to answer qtns

hey! have you finished freecodecamp? i assume you have. if you can afford it, I really recommend a reputable bootcamp. as long as you can keep yourself afloat, your time is more valuable than your money, which you will make back anyway when you land a job.

1 Like

i appreciate that you feel so strongly about it and i care about the information asymmetry too. I just differ with you on WHAT information is important for the target audience of my post, which is people who are looking for a month by month roadmap to learn javascript to get a job for 2018.

i have disclosed it elsewhere and i can also say glassdoor is accurate (in fact a little low). i just dont want my number to take all the attention of the story like it did for haseeb qureshi. not my goal. hope u can respect that.

I’m currently finishing up the pinterest clone but I’ve skipped the data visualization section, should I complete that before going to a bootcamp / finding a job?

Thanks for your post! I find it very inspiring as I keep having bits of a “funk” myself and it really helps that my story is very similar to your’s as well! Currently I am working on becoming a better developer, but my job takes 90% of my time and energy, and even though I’m lucky enough for it to be a development job (mostly backend Java), it doesn’t feel like the place for me.
After taking an in person bootcamp as well I was able to get a job, but I was just excited to have an offer, and the more I learn here, the more I have no idea what I’m doing with a lot of it. Even the interns coming to work at the company I do who aren’t even finished with their computer science degree are better than I am currently, and the fact that imposter syndrome is a real daily feeling.

So I keep looking for motivation and your post definitely sparked some again. I’m going to try the no zero days method. I’ve heard of it before, and even attempted something similar with the #100DaysOfCode, but I wasn’t fully committed which was my main problem.

Anyways, rambling aside, I hope your post inspires other people as well! I’m glad you shared your story and I’m really glad that it worked out so well for you!

1 Like

personal view, yes. you must at least know react. then spend a couple days on sass/d3.

thanks! do you have particular examples where you felt imposter syndrome, and how do you deal with it?

congratulations, within a year you’ve accomplished so much.

1 Like

thank you! what are you hoping to achieve in 2018?

  1. finish all of YDKJS books
  2. CS50
  3. Programming for the Web with JavaScript
  4. finish front end cert of freecodecamp’s curriculum.

These are my plans for now. If I have time I will definitely do more. Let’s say I want to finish all these in the near future. Also I’m not trying to be negative or discouraging, but I feel that I am learning a lot slower than you as well as other freecodecampers here. (just a reminder for those who are slow learners, dont give up, control your own pace and keep learning) lol.

4 Likes

used to feel the same way about you.
the bigger the learning curve, makes it feel like you-re walking on muddy terrain, very heavy on the feet.
but it slowly gets better as you get used to the muddy terrain and get your fundamentals down

2 Likes

yup. i’m only one example. all i’m doing is sharing my story. also i spent ALL. MY. TIME. doing this. nights and weekends. took weeks off of work to do it. did the bare minimum to sprint towards the end of the frontend cert. i’m sure a lot of people won’t want to do what I did.

for what its worth, i would drop cs50. dont need it.

2 Likes

i see! thanks for the advice!

The link to the rest of your story doesn’t work for me, gives me a 404 error. Any suggestions?