Old man’s guide to rebranding

5 May 2020

Originally posted on dev.to

You may think that in order to land a job in the dev world without previous experience, you need knowledge and skill. Well, not only that. You also need courage and luck. And boy it takes a lot of courage to pivot your career. Especially when you're in an age when you've probably already established one, and senior developers are by average five years younger than you. Allow me to show you that not all hope is lost and how to increase your chances of getting hired.

Getting ready

Alright! Let's assume that you are confident that you want to learn to code with a not so distant goal of becoming a professional developer. What's next?

As always - the hardest part is to start. Fortunately, with the web technologies, you don’t even have to move from your couch. All that you could ever need lies at your fingertips - in the vast space called the internet. But the abundance of information is overwhelming. Tons of articles, hours of videos, and dozens of online courses should make the process easier, but frequently it’s the very opposite. Not to mention that the quality of the things you will find may and will vary. Should I take that insanely discounted course on Udemy? Should I learn from books? What about tutorials, podcasts, or boot camps? Does it contain good practices or only teach anti-patterns? Let’s get down into the nitty-gritty! (Oh, and don't make the mistake of trying to learn everything. Pick a language and stick to it!)

  • Online courses. A great choice if you don't know where to start, or you’re looking for a comprehensive curriculum from a particular field, or you enjoy being led by the hand. Usually inexpensive - you either pay per course or a monthly fee. Oh, and before paying full price on Udemy, remember that you can get up to a 90% discount now and then. As a disadvantage, you can consider that as a beginner, you might have problems with transitioning from a course to real life as described in Moving Past Tutorials.
  • Books. Things about books are that the web dev world changes insanely fast (in comparison to other technologies). So when a book gets written, edited, printed, and optionally translated, it’s suddenly not very relevant anymore. But when a book is about one of the fundamental stuff: algorithms, design patterns, etc., you can easily grab a decades-old book and still learn useful stuff (not for beginners though). I find the printed books a great source of knowledge (I also love the new book smell), but I know that others might enjoy reading PDFs from screen more. It's up to you. Oh, and I advise picking the latest edition available.
  • How-tos. The Internet is full of them, which means you need to know what to look for. Videos, articles, blog posts - you name it! It seems every subject with every possible configuration of tools was already covered by someone and posted online. It's useful if you know what you want to create, but you got stuck. You might dig through tons of them until you find the right one though. And even then there’s no guarantee that the code we shamelessly copied to our project will work. Let’s be honest. We’ve all been there at some point - 50% of the code from StackOverflow and 50% from other peoples projects.
  • Podcasts. Amazing if you’re doing mundane stuff for a couple of hours a day every day. Like daily chores or commuting to your 9-to-5. Put those headphones on and immerse. It's not easy to recite whole blocks of code, so Podcasts mostly focus on news, tooling, personal experience, etc.
  • Boot camps. I don't know much about them, but from what I read, there are good ones, and there are bad ones. They cost a ton of money, so be careful if you considering this path. As with almost everything, the best approach is to reach people who attended boot camps and ask for their recommendations. Going on a boot camp is not essential, but certainly, a good one will boost your efforts to become a programmer.
  • Live coders. I was surprised when I learned that there are a lot of people on Twitch who stream their work. Why should anyone care? Well actually watching someone code can teach you stuff which a refined tutorial can't - the given coder's approach to problem-solving. In a scripted tutorial or a course everything, even the bugs have to be implemented deliberately. It's great that the trainer wants to show us how to troubleshoot an error, but it's often acted-out (poorly) as if it was a surprise and we cannot be sure that they covered all the errors. But when there's an error in a live-stream, trust me, the struggle is real.

In the end, there are no magic beans, and you still will have to learn — a lot. To become a rockstar developer, you will have to acquire a sort of student mentality because you will have to learn until you basically retire. And don’t jump instantly into that new and trending framework everyone is talking about. Wait a while until the technology matures. You don’t want to waste your time on stuff which will not stay around for long, do you? Remember - cutting edge is not the place you want to be.

If you can't wait any longer and want to start learning NOW then I got good news for you - I put together a couple of links that can help you. You can find them in this blog post: Resources for beginner developers.

Expectations vs. Reality

Ok, now that you’ve read most of the books and watched some of the tutorials you might think the time has come to take a look at the job market and start applying. And you're right, so do it. Did you do it? Ok, now take a look at the chart below.

The above chart was taken from Why Learning to Code is So Damn Hard and in my opinion, it's the best representation of the Dunning-Kruger effect. What is it? It's a psychological phenomenon when people mistakenly assess their abilities as greater than they actually are, which means that they cannot objectively evaluate their competence or incompetence.

When I started to learn to code, it took me four weeks to get to the peak of the hand-holding honeymoon. I was convinced that the amount of HTML and CSS I learned was enough to land me a job. Right about then I applied for the first time. For me, it was a massive failure, and for that company, it was a complete waste of time. The downfall of confidence came shortly after. It was obvious that I couldn't assess my competences correctly. A little over a year has passed, and I can tell that I’m somewhere on the upswing. I eventually got hired, but the hard work is not over, in fact, the hard work has only begun. Let me present you another chart - the Dunning-Kruger-Slawinski effect which describes what happens when you finally find a job

It starts all over! The cycle never ends, and the conclusion is to remember that besides the inability to recognize one's lack of ability, humans also expect instant gratification but in real life, it’s more like small increments day by day. For now, it is easier to assume that you know nothing and that this cycle repeats itself each time your life reaches a particular milestone.

Survivor bias

Do you remember when I said that you need to start applying as soon as possible? It's because I care for you and I want you to fail. Yup, you read it right - FAIL. Failure is unavoidable in the hiring process, and sooner you realize it, the better. Failure is also free, so fail fast, as they like to say.

Who are they you may ask? They surely are not the people who author the success stories you've probably read over the internet. You know which ones I'm talking about. The ones about pivoting someone's life, taking up coding and landing a dev job in a couple of months without a CS degree. I read dozens of them, each one more impressive than the last. I'm not trying to mock anyone, and I don't have any reason not to believe them, but none of them was about someone failing and giving up.

This phenomenon has a name - survivor bias. It means that only success stories get proper visibility, and you rarely hear about someone who failed (unless you count the bulk sellouts of programming books on facebook groups for beginners that is). So if you are looking for a real-life example of someone who has been in the same spot as you are right now, then you only see a bunch of successes. Don't you think it would fair if you could also read about people who didn't make it? I believe everyone can code, but not everyone will work as a programmer. I know it sounds harsh, but I wish that boot camps wouldn't forget to mention that in their ads.

Hiring process

According to Technical Interviewing is Broken, But We Can Fix It and F*** You, I Quit — Hiring Is Broken, the whole thing is flawed in general. I wouldn’t know - I just started. But while I read those articles, I kept nodding my head at every point the authors have made. From my own experience after many failed interviews, I was left with a feeling of not being fairly assessed as a candidate.

I can only imagine that for experienced candidates, it has to be even more infuriating. It should be expected that they were already vetted while applying for previous jobs and probably already have created a successful code. But nooo… It needs to be checked yet again if you know textbooks by heart and can solve irrelevant algorithms on a whiteboard. What about other skills a successful candidate has to have like fitting in the team, identifying with the company values or delivering results on time?

But for someone with little to no experience, it does not make much of a difference - a failed interview is a failed interview. Anyway, in this crazy world, your chance to get a job grows with every application sent. Do you remember when I wrote in the beginning that luck is essential to become a dev? It took me seven months from sending out the first resume to finally accepting an offer for junior javascript developer. The whole thing is a matter of match and fit so keep on keeping on - you might get lucky next time. Below you will find the flow diagram of my job hunting efforts, and I recommend you to do one yourself.

So eventually, if you'll try long enough, you will get an offer. But before you sign anything, think about what you're doing. The temptation after a long and weary job hunt might make you accept the first offer you get, but you can still end up with a dead-end job working for less than you deserve. I’m not saying never accept the first offer, I’m just saying don’t let the initial success distort your perspective. Assess the offer cold-heartedly. Is it what you’ve wanted? Can you squeeze more from it? In the end, the person who says no to things is the person who is in control of their stuff.

Imposter syndrome

But you got the job! Congratulations! It’s only sweet, sweet work from now on. Do you feel comfortable? Not really? More of a never-ending fear of embarrassing yourself in front of your coworkers? Well, you might have the imposter syndrome. It’s that feeling when everyone seems smarter than you, and in your opinion, you faked your way here, and you're about to get exposed as a phony. The feeling is not so uncommon - I get it almost every day.

You might want to fight the impostor syndrome with acting that you know your stuff. Fake it till you make it, riiiight? I’m sorry. People in the company will see through you in a matter of days. Be honest. Don't be afraid to say I don't know. No one will fire you right away after you admit that you don’t know something. Hardly any new employee brings revenue in the first couple of months, even in a senior position.

I get through the impostor syndrome by making a list of my coding achievements and looking at it whenever I'm questioning my skills again. They can be even the smallest of things like I solved a merging conflict by myself or I made an alias for a very long command line. It helps a ton when I start to experience the symptoms of imposter syndrome yet again. Also the bunny from the tweet below has a spot on advice for you:

My way

Four words: Read, Solve, Network, Create. I got where I am because I did just that - I completely immersed in programming and did nothing more for little over a year. I'm talking of course about my free time because I still had to go to work!

Read: Read all you can as much as you can. Read at home, read on a bus, read in a line in a grocery store. It works as long as you’re reading about programming. You don't like reading? Watch a video then but remember to make it relevant and watch stuff about programming.

Solve: This means whiteboard challenges. For the time being it is a required step at almost every job interview, so if you want to pass one, you need to know how to calculate that n-th Fibonacci number.

Network: Start networking as soon as you can. Try to be in the same room as people who code. Go to meetups. Make friends who are in the same spot as you. Find people to code with. Speak with more experienced programmers. Find a mentor. Can’t find a meet up nearby? Network digitally.

Create: Learn Git as soon as you can, get yourself on GitHub and start committing to your own projects the moment you create an account. The less your GitHub timeline looks like a lousy Tetris game, the better. When job hunting if you don't have the experience, your portfolio will have to suffice, so it's good to have a couple of finished projects. They don't have to be huge or impressive in any way but contributing regularly and showing progress is very important.

Blinding Finding (because Sick Pick was taken)

Here are a bunch of useful (and free!) links I wish I knew about at the beginning of my coding journey. I really hope you will find them as helpful as I did.

  • freeCodeCamp - I owe them the most, especially at the beginning of my coding adventure. I really really recommend it to anyone who wants to code but does not know where to start. It's a great place to learn the basics and more of many web technologies.
  • 30secondsofinterviews - They have answers to almost all trick questions a recruiter can ask. Unfortunately, I only learned about this website after my first failed technical interview. Embarrassingly when I decided to bookmark it, I discovered it already was in my Bookmarks folder.
  • You Don’t Know JS - I don’t know which book about JavaScript should be your first, but I sure do know that You Don’t Know JS should be your second book (series). Kyle Simpson covers a lot of material and gets very technical very quickly; that's why I do not recommend it for beginners. It also has answers to all that trick questions from interviews, including a thorough technical substantiation.
  • Syntax.fm - A podcast from Wes Bos and Scott Tolinski. They talk about everything related to web dev and more (barbeque and dancing usually) for over 200 episodes, and it does not get dull for even a second. Best. Podcast. Ever.
  • CodeWars - Are you interested in whiteboard challenges and martial arts? Then this website is for you. For every solved algorithm (kata), you get points (kyu) which eventually gets you a belt. Just like in Karate Kid!
  • CS50 - This is a whole curriculum which in its design will teach you the basics of computer science. It's taught at Harvard, but it's also available online.

Conclusions

Hey, you're still reading! What is left for me to say is that you're about to perform the greatest stunt in your career. You may have regrets along the way, maybe cry a little (or was it only me), but that feeling of satisfaction for scoring the best job on earth is priceless. I hope that after reading this, your road to success will be much smoother.