The ongoing chronicles of a guy and his trusty lap cat learning to write code in this crazy world.
My wife had a few friends who were considering switching careers and possibly learning to code. Since I made the transition myself in 2017 she asked if I had any insight for them. This article will be an attempt to tell the story of how I did it.
One friend of hers in particular asked three questions that kind of got the wheels turning for me, so I think that's a great place to start. First, some
Today I work as a Golang developer at https://www.secureworks.com/. Just a few years ago I was waiting tables in Los Angeles and hating my job about as much as a person who isn't working in the coal mines has a right to hate their job.
Let me say that I was not a computer guy. I wasn't computer illiterate, but I definitely wasn't the kid who locked himself in his room hacking into the FBI. My father was a computer consultant so we always had a computer as far back as I can remember, but that was about it. I never ever considered I'd be doing what I am now.
I wanted to be a musician, but being a starving artist in your 30's is a lot less romantic than it might be for someone in their 20's. I gave it all I had, I'll never say 'if only...', but I was ready for another chapter. Not having a college degree or any marketable skills I was at a loss for what I'd do. I figured I'd end up being a miserable restaurant manager who would drink himself into oblivion shift after shift. That was when my childhood best friend told me he had started to teach himself coding and I should think about it too. We are so alike he and I, and the fact that he was enjoying it was all the convincing it took. It was also around that time I met my wife who did something called "frontend development" which meant absolutely nothing to me, but she said it had to do with coding, and I thought, hmm, I'm getting a sign here.
I gave it a reluctant try at first, I still had one foot on the side of not wanting to stop chasing my music dreams, so it took me a few months to really commit. But once I did I was hooked.
First, let me say I think the easiest way to get into the field right now is to learn web development. It gets you in the door, and if you're like myself and find you're much more interested in how the site works rather than what the buttons on the screen look like, you can always transfer over to what is called backend development. Frontend development will get you a job, you'll learn to program, and from there the only limit is how far you want to take it.
The short answer is nowhere. I taught myself using books and the internet. I strongly considered going to a coding boot camp (they do such a good job of making themselves sound indispensable), but I decided I wouldn't go that route.
The friend I mentioned earlier had taught himself, convinced me it was entirely possible, so even when I got completely frustrated and felt like it would never click for me, I stuck it out. I was sure he was/is a secret genius and that I'd never be able to do it, but you don't have to be a genius, I promise.
He gave me one fantastic piece of advice that you should, without a doubt, 100% take and thank me you did. Learn JavaScript. Not just a little. Learn the living heck out of it.
JavaScript started its life as the programming language of the web, but it has grown so far beyond that it's not funny. I write servers and intense data processing back ends, microservices, the whole nine yards in JavaScript. If you learn to write it well you will have an immensely easier time in your career from day one. Please for the love of god trust what I'm saying and learn the heck out of it. Learn the trivia bits of it, stuff that you'll only get asked about in interviews. If you learn the language that well, it'll make learning any other much more simple.
You probably don't know anything about computer programming, any of the fundamentals of computer science, and I didn't either. Leaning JavaScript will teach you that stuff along the way, so if the time comes you need to learn another language you'll have built a solid foundation of understanding already that it won't nearly be as challenging as it might otherwise be.
That's a point it took me a little while to realize. I'd have these freak out moments, many many of them, when I wondered if I was wasting my time. Was I learning the right things, should I go back to school? I had constant anxiety about it. It dawned on me one day though that I am learning those things. By writing JavaScript I was learning about variables, functions, control structures, all the things that apply to any programming language.
The simple fact is you can get a job in a very short amount of time with very little experience if you know JavaScript well. If you have never programmed before, and you start with Java, or C++, or some other language like that it might be harder. Java developers tend to have picked it up during their CS degree, and that's some tough competition to jump into at the very start of your career. In no time though, armed with an understanding of JavaScript and a willingness to learn, you'll be out-coding those folks, no joke.
I started with a book I'd highly recommend if you were like me and had never written a line of code in your life:
Head First HTML and CSS: A Learner's Guide to Creating Standards-Based Web Pages
This book taught me how to make a very rudimentary webpage, and the basics of 2 of the main languages of the web, HTML and CSS. You can't get a job in web development unless you know the basics of this stuff and trust me, it's not that bad. This book might seem corny, and it is for sure, but they do such a fantastic job of building a foundation. I can't recommend it enough.
Head First JavaScript Programming: A Brain-Friendly Guide
This book will teach you the third piece of web development, JavaScript. It's what makes a website interactive. It's also found on servers, microservices, robotics, embedded systems. It's taking over the world. It was designed to be somewhat simple to just get going with, but it's a great, flexible language. Again, I can't emphasize this enough, unless you want to just be a designer you have to know this. The better you do the more money you'll make, the less stressed you'll feel, the happier you'll be in this field. I promise.
It isn't a huge language either. That book will provide great fundamentals. No one source is enough though. I'd find I'd run into things in this book that just didn't make sense to me, so I'd look somewhere else, then circle back a month later and lo and behold, whatever I was struggling with would make a lot more sense.
This was the next major place I went to learn, I did it about the time I was halfway through the JavaScript book above. It's a pay course, but highly worth it. You'd pay a lot more for a coding boot camp trust me. Plunk your card down and don't think twice. They have many learning tracks. I did some of the CSS/HTML ones and most of the JavaScript. They do a fantastic job and their material is well presented and well-thought-out. If they don't have the most up-to-the-minute courses it's because they put a ton of effort into making what they do have as high of quality as possible.
Frontend development moves fast. You're always going to hear about some new hot library (don't worry, it took me 6+ months to know what the heck a "library" was). You will never be able to keep up and stay on the bleeding edge, so learn the principles that don't change. Writing good, maintainable, readable code is a lifelong pursuit (as long as computers don't program themselves), so really focus hard on that. If you get that stuff down, picking up a new library when you have to won't be that bad. This doesn't mean you can bury your head in the sand and not pay any attention (when the time comes), but you don't have to feel frantic.
This is definitely more of an intermediate site, again a pay site but stop it, you can afford it, invest in yourself. This is the site I really think that got me my first job.
I could go on, and if you ask me for more I'll happily add them. I want to tell you to learn the basics, take some courses on this site, and after a few months, maybe 6, see if something really has been piquing your interest. Maybe it's design, the way a site looks. Maybe you're like me, and you love the logic puzzles of figuring out how all this stuff fits together. Decide and don't be afraid to follow your muse. All learning will be good.
Man I had this question CONSTANTLY when I was learning. How could you not. The answer is, ready for it...it depends!
Seriously, it took me about a year. That was a year of living with my mom, not paying rent, working a restaurant gig 4 days a week and spending 10-12 hours a day coding, and 3-6 when I had to work. I was a maniac. You might not be able to go that hard, and it isn't necessary. Like anything, the harder you go the faster you'll get there, but there's no point if you totally burn yourself out. I really enjoyed what I was learning and felt like I had finally found what I was meant to be doing. Please don't think that means I found it easy, and you should too. This stuff is HARD. It's crazy hard.
I read a great quote in a book on cycling once, "it never gets easier, you just get faster". I don't know if that's 100% the case in coding, the more you do it the easier the mundane stuff gets, but every day at work I'm surrounded by people who have been doing this stuff for a decade plus, and we still have to go to the whiteboard to draw everything out. And guess what, the next day we all say, wait, how does it work again?
Computer systems are hard, and they're getting more and more complex. Maybe 40 years ago you could have an entire program in your head, but that's never ever going to happen now, except for the most trivial of programs. Try to understand the big picture as much as you can, but you'll never get all of it. No one will.
So my answer is it will take at least a year unless you're a savant. If you can't devote all the time in the world like I had the luxury of doing it will take you longer. Try to enjoy the journey. If you're one of those people that gets a nice dopamine kick when you figure something out, something clicks, or you finally get that button to work, you're going to love this job.
I would have built more things. More stupid projects. Do that. Build dumb stuff, all the time. The times I learned the most was when I was building something. I got it in my head to try to make a calculator. Do you have any idea how hard that is beyond the basic 1 + 1 stuff? I never got it perfect, but I learned so much. So make a calculator. Make a todo list. Make a blog. Make a button that when you click it says "hi". Just make some stuff, and put it on your github (a public open source code repository). You'll need to have stuff to show your employers. Put the projects you make in your courses up there. Put everything and anything you do up there. Seriously nothing is too dumb.
No one's going to look at every line of code you write, but they will see you're active, and in your interview you can point to things you worked on, challenges you faced, and how you overcame them. Without any experience in the field this is critical.
Well, it all was helpful because it got me a job. I realized early on in my career though that I don't love front end development, so I definitely don't use those skills as much right now, but I'm thankful that they got me my first job. I use JavaScript everyday though.
An addendum to the above: While I realized early on I don't love working on the interface of a website, it helped me enormously. I have gotten the complement more than once from the UI developers I work with that I do things in such a way that it makes their job easier for them, and that's because for a while I had their job. It's like a guitar player that studied drums for a bit: that person is going to have a better understanding of what the drummer does, and they'll be able to communicate better with the drummer.
When I was young I liked cars, but I didn't have anyone in my life that knew about them. I bought hot rod magazine and read it cover to cover even though I didn't understand a word, and magically through osmosis I picked up a lot. I took the same approach with programming. Podcasts are very prevalent, and I'd listen to them voraciously. I had less than zero ideas what they were even saying at the start, but most importantly I got the buzzwords of the day, and oh man is this industry into their buzzwords. You need to be able to sound like you know what you're talking about sometimes, so listening to those podcasts you hear how professionals talk about code, and that's a great skill.
I also read a blog about impostor syndrome. Everyone in this field thinks the person sitting next to them is light years more qualified. I see it in everyone around me, myself included. I got clued into this early on though, and decided I wasn't going to let that dictate my trajectory. I have already seen how negatively it impacts people I work with. I'm further in my career in a short time than some really bright people I've met just because I've decided I'm not going to fall into that trap.
Hear this:
It is not your job to decide you are or are not qualified for a role. It's the job of the team hiring you. You're job is to study hard and show up on time. They'll decide if you're a good fit or not. Under no circumstances though are you to decide for them that you're too under qualified, too new, too whatever. Smile, make eye contact, try your best, and you'll get the job. If not that exact one, you'll get one that's an even better fit.