Hacker News new | ask | show | jobs
by braindouche 2295 days ago
Can't speak for the OP, but my background is exactly the same, self-taught web dev, started in 2007, worked for myself for a decade (no college degree, either). I understand where he's coming from. I'm also now a senior front-end engineer at a fortune 500 company, so I figured out how to transcend as a programmer.

As a self-taught, self-employed coder, I can tell you that you can get extraordinarily far without knowing a single fundamental. Just having a willingness to dig in and tinker will put you miles ahead of what most people are willing and able to do, and you can absolutely build a career out of a can-do attitude and google. Over time, however, what seems to end up happening is that many people in this situation (myself included) learn systems without learning technologies.

At my place of employ, we distinguish between Application Developers and Software Developers, and I think that's a thing a lot of large companies do. Both are valuable, but they're fundamentally different. You can have a very advanced Sitecore Application Developer who writes Sitecore code all day, but if you hand him an IDE and ask him to write up a CRUD, he'll flounder, whereas a software engineer can more or less invent something new on the fly from scratch, but isn't going to be particularly fluent in any given third-party system.

I think, overall, these long-term self-taught web developers hit a wall like they do because they're really application devs and not software engineers. Sometimes, it's actual apps (I'm looking at you, WordPress and Drupal), and sometimes it's libraries or frameworks like jQuery and Bootstrap. I certainly did. It's basically the same sort of fluency one often finds in bootcamp grads, just with much more practice.

I managed to get over the hump by basically starting over after 10 years, relearning the basic fundamentals of browser development and really mastering development with vanilla html, css and javascript, learning the fundamentals of node, local automation, and just enough computer science to be dangerous. With that, I took those skills and started working for other people again, as a developer on a team. I can't tell you how valuable it's been to simply have other human developers to compare myself to. This is what I learned:

1: There are a lot more shitty developers with CS degrees out there than I realized. However mediocre I may be, there are loads of my peers out there being just as bad.

2: You'll advance faster than your peers once you enter industry. Junior developers can usually program, but senior devs use old age and treachery to get shit done. You've done the hard part already by gaining experience -- now you just have to catch up with technology.

3: You'll find the software engineers around you are generally more specialized than you are. People who work for themselves for a long time get very good at doing everything all the time and learning new things quickly because clients are needy and think you're good with computers. This is a superpower. This is what tech leads are made out of.

I mean, look, I couldn't re-implement quicksort of you put a gun to my head, I've never written my own compiler, and my networking fundamentals are complete shite. But I can negotiate for the resources my team needs, I can bash a misbehaving legacy codebase in a language I don't know into submission fast, I can sniff out an overengineered solution at 30 paces, I can architect a front end, I can delete code at a furious pace, and I can sit on juniors until they start making simple solutions instead of elegant ones.

I'm 40. I've been doing this for 14 years, and I'm exactly where I should be in my career. That's enough for me.