My God. I'd love to learn more about your background. How, if you've worked in web development since 2007, consider yourself a beginner?
My God. I'd love to learn more about your background. How, if you've worked in web development since 2007, consider yourself a beginner?
Even if you do.
There are several competing forces at play.
On the one hand, JavaScript is changing every year. CSS releases new features such as grid. New releases of frameworks such as Vue and Svelte are released. React launches hooks. The list goes on and on. You read the headlines about all of the new stuff, but you may not actually use the new stuff in a real project.
On the other hand, the client needs features yesterday, and there's a need to deliver new features as fast as possible with the functionality you know inside and out.
You keep using the small core of functionality you know over and over again for years. You know a small number of things very well, but you know nothing about many things you read about. There's a whole world of things that experts know that you have never used.
Maybe a lot depends on your environment? If you're at a shop with 100 developers, a few developers might spend a lot of time playing with new stuff, and teaching it to others. In a small shop, your results may vary. Not every shop has that new junkie who jumps on the newest thing, evaluates it as appropriate for this shop or not, and efficiently teaches the new stuff to others.
I try to use and learn new things, but it's time consuming. So even though I am learning new stuff all the time, I often feel closer to the beginner side than the expert side.
The default is to make the donuts every day with the tools you have. It takes effort to learn new things and use them in a real project.
I'm happy to answer any questions.
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.