I'm a self-taught webdev with 10 years xp. I have lots of free time right now with a bit less freelance projects coming in, and I'm getting a bit bored of building web CRUDs and feel like I'm not learning much anymore.
I'm thinking it'd be better to specialize more, but I'm unsure which direction to go. I'm actually selling myself as a full-stack web developer, knowing JS/react/vueJS, PHP/Laravel, bit of design, server management etc.
If possible I'd like a job that can be fully remote or at most 1 day on site, which probably excludes security and high level stuff.
I have lots of time to learn so I'm open to any advice even if it's just to git gud and read SICP.
tl;dr webdev having done every type of CRUD under the sun - what do now
Thanks for your input !
I've been digging into postgreSQL and in quite a few applications it's possible to greatly reduce the complexity of the backend by receiving exactly the data you need from the DB. It is so much so that in cases you can even "get rid" of the backend completely (yes, no writing controllers and endpoint, etc.) by using a tool like postgREST (postgres to REST) or Hasura (postgres to graphQL)
Best of luck on your search!
I've been using Gremlin for crud ops in my apps. I recommend these two resources on Gremlin:
It only makes sense if you're absolutely sure you'll never need to extend or change the interaction between front-end and back-end.
Think just about schema migrations on the database. If you change your schema, you have to change your front-end. Maybe that's okay for the time, but that can get out of hand pretty quickly.
On the other hand, with a service layer, you could completely decouple that dependency on the front-end, by providing the front-end an interface (the service layer / API). The migrations on the database layer don't affect the front-end whatsoever, because the front-end communicates with the interface. You can change the underlying implementation without changing the front-end's interaction with the interface.
http://best-practice-software-engineering.ifs.tuwien.ac.at/p...
With views you can maintain backwards compatibility despite migrations happening. No need to change your front-end.
Check this section of the PostgREST docs for more details:
http://postgrest.org/en/v7.0.0/schema_structure.html#schema-...
I like learning by doing something so I took an old side project and I'm making it on PostgreSQL with PostgREST in front of it. It is crazy all the things that the DB can do! Triggers after an actions happens, virtual columns, JWT Tokens, Unit Testing...
Learn by watching short videos and practicing: Mastery with SQL (paid course, $49) - https://www.masterywithsql.com/
It completely changed how I use SQL. Before reading it, I had about a decade of experience with SQL. I didn't really understand the theory underneath. I also didn't understand how to write SQL in a way that adheres to the theory.
You can think of this book as being the closest we have to "SQL: The Good Parts".
Consider getting a used Jeep in stock form, and get the shop manual. Methodically go through all of the maintenance items. Then start some easy mods, like a block heater. Good life skills.
However the more I work remotely the more I find that not to be the case.
Also, might sound off topic, but learning a new language (not programming, human) could be an amazing step forward, in ways you cannot even imagine now.
I recently discovered that it is possible to learn Latin by listening to it. I struggle getting through written material so I had given up on my dream of learning Latin, until I found out there's audiobooks [0] and even YouTube channels where people speak it! [1]
[0]: Lingua Latina per se illustrata by Hans Ørberg, also available in audio -- this one's entirely in Latin, yet I could understand the first few chapters very well just from knowing English and some Spanish
[1]: Luke Ranieri on YouTube https://youtu.be/j7hd799IznU
He also has Skype lessons and conversations, super cool!
That's cool, and very interesting. As you alluded to, you're basically learning proto-Romance.
However, as you likely know, people should not expect to be able to read classical Latin based on that knowledge. They should be able to read many medieval Latin works (including many notable scientific works!), but forget Cicero, Ovid, or Tacitus. Those will require significant additional study.
Just curious, why is being self taught a guarantee for having massive holes ? Can you give some likely examples ?
My personal drive for self-teaching generally stems from either a specific problem I’m trying to solve on a project or a desire to dig deep into something “cool” I’ve come across.
In the first case, I’m tugging on the strings that seem most likely to get me to the solution to the problem I’m trying to solve. There’s a bit of backtracking here and there as I choose dead end paths, but it’s usually a depth first traversal. I’m not trying to learn all of a field, I’m just looking at what I need to know to move past the hurdle I’ve encountered.
In the second case, the goal is different but the process is pretty similar. When I’m learning for fun there is usually a bit more breadth, since I’m not trying to solve a specific problem in the immediate future, but I’m also probably not building a robust implementation of anything. I’ll usually end up with a decent surface level understanding of a topic; this is useful in that, if I encounter a related problem in my work, I’ve got at least the concept in my mental toolbox already and can do a deep dive more easily.
Over time I’ve built up a pretty wide and deep understanding of a lot of things as I’ve built them, but I am also fully aware there a ton of gaps (and have a big topic list that I occasionally visit during a slow period).
- Pointers and understanding how operating systems address/access memory at a low level.
- Hashing (This one may seem a little insulting but I have seen otherwise good developers confuse hashing with encrypting and it seems like an easy mistake to make if you haven't worked specifically with either concept)
- Binary math, logic, and encoding.
- The OSI model.
- Parallel programming, the program counter, and how operating systems execute/switch programs.
I would not count these as "massive" holes and it is also likely that these concepts would be discovered by a self-taught developer especially if she has looked for material from college-level CS courses.
None of this stuff is necessary to make great software but having this knowledge can help make other things easier to learn or understand. It's like the difference between knowing how to use common git commands and understanding how trees of objects are used to form a chain of commits.
I would not say "massive holes", as that would somewhat imply that this knowledge would be actually required, even though it's usually the optional, nice-to-have knowledge that you are getting from an actual CS degree.
You can still create whatever you imagine even if you are self-taught, but going through university would make it a lot more likely that you understand better the tools that you are using (algorithms, microprocessors, logic gates, electricity, quantum effects, etc.) so you will better know how to use them and what their limitations are.
But as a person who may be really new to the subject of development and computer science I think it's obvious that without a lot of research and prep ahead of time you might start with a book or topic and keep moving forward, but you may not be exposed to all of the same things (some probably really useful, some are likely bullshit) that you'd get in a more structured learning environment.
This is an underappreciated field that lends to plenty of consulting. As the web becomes more complex, with heavy frontend code, third party services, and demanding amounts of images and videos, it's requiring a deeper understanding about networking and browsers to keep the web performant. Compounding the problem is the growing number of users who use mobile devices to browse the web, which have larger constraints on network and hardware than desktop users.
Additionally, web performance speaks to businesses because a "slow" website can impact your bottom line. There's lots of case studies about this: https://wpostats.com. For large companies with heavily-trafficked websites, this is critical as you're losing potential users/customers as a %.
Google has slowly been making it a bigger objective for websites to focus on SEO-wise, especially with their latest push around "web vitals." Therefore it's becoming a higher priority for marketing departments as well.
Web performance is not sexy and requires a lot of patience around analyzing websites to figure out why they're slow and coming up with specific optimizations for them. This is not like building websites. It's more like debugging. And it requires a pretty deep understanding of how websites load and run in browsers. Provided these things, I think that's partially why it's given so little attention and why so many websites perform terribly. If you're not deterred by these factors, there's a lot of businesses that could use this specialized expertise.
Anyway, if someone's interested, you can start by reading articles from:
https://developer.mozilla.org/en-US/docs/Learn/Performance
https://calendar.perfplanet.com/
https://phabricator.wikimedia.org/phame/blog/view/7/
And some of my own content:
https://calendar.perfplanet.com/2018/getting-started-with-we...
Is this something you're seeing a lot of demand for? If so are people actively searching it out or this just a consulting/who-you-know sort of thing?
Also any business with embeddable products and SDKs. No one is happy to make their page heavier with a script they don't own. Fintech comes to mind. Analytics companies too.
Anything with complex dashboards. Anything tailored to power users - CRMs, help desk software.
Figure out your pitch too - your job may save server costs (and increase development costs but maybe don't mention that), optimize response time of employees, increase productivity, or retain shoppers.
All that said - I worked on lots of interesting stuff during that time and it was the most enjoyable technical work of my career.
The work's consistent and perfectly suited to remote, the engineering teams I'm working with are great and consistently in need of not only the what and why, but the _how_, and monitoring the progress is pretty fulfilling work, to be honest.
Some of the best work I've had in a very long career. I frankly love it.
With googles page speed insights / lighthouse gaining popularity (mainly just because its google and not much else), there is definitely opportunity to focus on just improving those results and be paid very well.
the load/onload/document complete event is very mature with studies correlating conversion rate. I don’t believe googles “web vitals” have been tied to any meaningful business metrics... yet.Also web performance don't mean front end only. Most of db driven sites don't even have basic indexing done.
All the languages and libraries you've listed are open-source projects started by someone like yourself.
> "having done every type of CRUD under the sun - what do now"
You have a lot of experience developing CRUD, why not build something that alleviates the pain of CRUDdy development. What annoys you? What sucks and could be done better?
Anyway, just a thought. Good luck to whatever you do.
There isn't a level you need to be to contribute - it may feel like that because on higher profile projects most of the low hanging fruit has already been addressed.
Beyond that, there's a skill you learn here - practice communicating professionally (sometime people are submitting issues when they are extremely frustrated), concisely, and clearly (sometimes you need to speak highly technically, other times speaking with a management voice is needed)
In the same vein, there's plenty of poorly documented READMEs and wikis, other areas you can contribute, and skills that are very important.
Strong communication and writing skills can level you up over better developers.
(I'm a self taught developer from the late 90s)
One example, I recently contributed to chokidar - something that is used by webpack, VS code, etc - fixing a bug that prevented network path access, and all it took was a conditional statement to handle the edge case: https://github.com/paulmillr/chokidar/pull/1025
Most great projects that have advanced patterns evolved from simple toy projects. They only became advanced with the collaboration and help from internet strangers ;)
Most open-source projects need communication attention more than programming work.
You will do a great helping giving attention to an opensource project.
- working on open source helps the community generally
- it's a good way to advertise your skills as a developer
- if you need to learn more stuff in order to contribute effectively, well, that tells you what you need to learn!
https://www.fossjobs.net/ https://github.com/fossjobs/fossjobs/wiki/resources
However, it's always good to learn more. I have a couple of suggestions:
1. Rust. The Rust book is an excellent introduction to lower-level programming languages, and also to more functional patterns. I went into it from a primarily JS/PHP, and it's been a wonderfully refreshing experience. And it's also been an excellent way to level-up my programming experience.
2. Embedded programming. Get yourself an Arduino or an ESP32, and make something that connects to the physical world. Lot's of fun. You can technically combined this with Rust, but I'd recommend sticking to C/C++ for embedded work (at least at first) because it's much better supported.
3. AWS / Kubernetes / Cloud computing. Managing large amounts of infrastructure on these platforms is an art unto itself. And it's worth learning if it's something you have an interest in. I'm not usually a "training" kind of guy, but I'd recommend doing some kind of course / using structured learning materials for this. Because there's so much tribal knowledge that needs to be acquired.
With a PHP background such as yours, I'd very strongly suggest Go over Rust. You'll pick up Go very easily (far faster than Rust, which has a high learning curve), Go jobs pay as well as Rust, it's in high demand, and it's going to remain in high demand for a long time. Most people can become productive in Go the first week they start learning it. Go lends itself to a webdev orientation far better than Rust; Rust is very weak in the webdev arena, you'll be endlessly frustrated by that fact.
My background is 25 or so years of webdev experience, with an early background in Java, Perl, ColdFusion and I've been using PHP since 2005 or thereabouts (I use it for CRUD work). Over time I added Python and then Go. I was able to be productive in Go immediately, and you'll find similar stories all over the Web. It's mostly a delight to learn.
I've also been handling nearly every aspect of the backend infrastructure for two decades now (servers, cache, security, database, etc), and Go is also very nice to deploy. It's dead simple and lightning fast for most things.
One side note, if you don't have much experience building APIs, I would put some focus there in tandem with Go. Being good at building and deploying APIs is a valuable skillset to have. I regularly use Go for such services and it performs like a champ.
Here they come! Right on cue.
"ESP32 Tutorial using MicroPython - Let's Get Started!" https://www.youtube.com/watch?v=QopRAwUP5ds
A ESP32 mounted on a breakout board is super easy to pickup and run with-- https://www.adafruit.com/product/4172
You can also ignore the people who ignore the complexity of web apps. Classic C programs are very often much simpler than full web apps IMHO.
Undefined Behaviour: Stuff like this - https://twitter.com/jfbastien/status/1280709082626666498
You'll thank me later.
https://portswigger.net/web-security
Have fun!
Edit: I'm completely self-taught and I've been working in the field for a few years. No dev or even IT background prior to getting into network pentesting and web app pentesting.
Good security firms are the last ones to gatekeep over a degree or other paper.
Also, teams with SRE expertise most likely use modern tech because SRE itself is a rather new way of managing infrastructure. So you'll probably be able to get your hands dirty with lots of cool tech.
While anecdoctally speaking, I know people who switched from senior dev positions at two of the FAANG companies to smaller security companies and basically doubled their income and making north of $500k/year.
I enjoyed working through Clojure for the brave and true: https://www.braveclojure.com/clojure-for-the-brave-and-true/
and the go tour is probably the best introduction I've ever had to a language: https://tour.golang.org/welcome/1
What was it about Go that made your Python code better, though?
You can work through SICP to help learn Clojure/LISP at the fundamentals level, and then expand out to more practical use cases with the recommendations above.
Or something completely orthogonal to computing. Something you enjoy. For fun.
Does anyone do anything just for the hell of it anymore, or is it all driven by money?
And it was really enlightening. I would heavily recommend it. It starts off by teaching different types of implementations of different parts of DBMS. Then goes on to teaching about how distributed systems deal with various problems.
However, the book is definitely relevant to mobile applications. The backends for all the most popular apps are built with systems described in it.
Earlier this year, I read a few chapters of the book, and it was really abstract to me, so I stopped reading it.
On a whim, I had two developers teach me SQL and relational database theory. I spent a few weeks creating a few databases and connecting them to the front end to mimic real life application, before picking up the book again and the book made way more sense.
The book is great but not what you seem to be looking for.
Along the way, you will want to try: - Using a debugger to step through simple programs at the machine level and see what happens to the registers, stack, etc - Using tracing tools like strace (for Linux) to see what syscalls various programs issue (this is after you learn what syscalls are and how your OS handles them) - Playing some old-school hacking wargames like vortex, utumno, etc. These are fun and really make you learn the low-level details of how your OS loads binaries, memory layout of processes, etc.
Most developers don't know this level of the stack, and when you are the one guy on the team who does, it's a bit like having superpowers.
I unfortunately don't know what I don't know, so I'd need a bit of guidance to learn efficiently. Something like http://pages.cs.wisc.edu/~remzi/OSTEP/ maybe ?
Which goes from bits on up without shying away from circuit diagrams. It's also really well written and you can read it from start to finish.
It puts it in a historical context too which makes it fun to read.
Once you read that, they'll be fewer unknown unknowns.
Spending a few days to learn them well² is really worth it.
--
² it's also worthwhile to know how they are working under the hood if you want to write high-performance regular expressions
I have no idea how they work under the hood though !
The Book: http://regex.info/book.html
I bought an older edition for a lower price, got through 7 or 8 chapters, and never touched it again- and I STILL gained huge amounts of knowledge and am much better at regex than I ever thought I'd be.
Highly recommended!
https://www.coursera.org/learn/machine-learning
There are a bunch of guides like the coursera course I mentioned and on youtube there is the official tensorflow channel also!
I give you an example from my life. I build PredictSalary (https://predictsalary.com), a browser extension to predict salary range from job opportunities which don't disclose salary range.
A browser extension is basically a bunch of JS files injected to web pages. If you know webdev (frontend), you are set to build a browser extension. All you need to learn are machine learning and deep learning. You don't need to dive deep (unless you want to). In my case, basically I just use basic regression to predict salary range.
Last year I had a lot of fun playing with GPT-2 on Google Colab (you can run it yourself on a decent GPU tho). My friend and I were trying to generate the funniest possible output to make each other laugh -- as an aside, this might be the only category where GPT-2 beats GPT-3 hands down :)
Python is also a joy in its own right. xkcd said about Python "programming is fun again!" and that has certainly been my experience.
Let's meet up online and play hackthebox.eu together for a bit. My idea is to simply pick a live box and hack it together. You can pick the difficulty. I've done 6 years of CS degree programs (1 bachelor, 2 masters), 1.5 years of software engineering experience and done security courses (network security, hardware security and reverse engineering) as extracurricular subjects.
Anyone who feels up for the challenge, my email is in my profile.
edit: Scratch that. Took about 5 or 6 codes to finally work for some reason.
I'm not affiliated with it.
Are there any popular or important ones you could recommend?
These are mostly financial apps. Compound for example provides the ability to earn decent interest rates (currently ~2-6%) in a time of 0.1% at banks. That's definitely important for people taking it seriously and using it to grow real savings. It's not a joke or a toy, it's used for real investments.
Lightning is helping Bitcoin become more usable. dYdX, uniswap, and dai are important infrastructure for the crypto economy. Cryptokitties is a game that is not important but is popular. Augur gives insight about the future.
If you know what you’re doing, I can assure you, making money is not going to be one if your problems.
1. Are you an agency or a solo developer? If it's just you or you and a friend or two, you might get a better response building up your personal brand rather than representing yourself as an agency.
2. I can't judge your technical chops, but I can see that you have room to grow in UI design. I like this youtube channel: https://www.youtube.com/user/DesignCourse, but there are tons of design resources available.
3. You might need to focus more on sales. Is there a small business you like that doesn't have an online store? Call them, email them, go visit them in person- try to make a sale. You could offer the work in exchange for products at first- once they are happily selling online, they will tell other business owners, and you can get more referrals and raise your prices.
Last I checked Apple TV recommends a markup+JavaScript development process for standard TV streaming applications. It's not a web environment, but it should feel pretty familiar. Easy transition, knock out a demo app and you could start pulling contracts for that, maybe. Dunno how hot that market is.
I'd second others with leveling up with SQL. Maybe also dig into esoteric or advanced uses of HTTP daemon software, Redis, et c.
Since we have no formal education we need/want to constantly learn new things in our free time. This is both fun and can be very impactful.
Learning for us is a habit, or even kind of an obsession, but we should always look at topics with a pragmatic eye too.
All of the things I list here helped me do a better job (qualitatively) in some way or another. This is an incomplete list but hopefully you find something useful in here.
In the past:
- SICP => fell in love with Lisp and started to "get" what programming is about. Hard to explain.
- canvas, SVG => out of necessity at the time, pushed me down a rabbit hole of linear algebra. If you touch GUIs then a solid understanding of these concepts is multiplying your productivity and ability.
- Go, programming language => first I didn't have a use-case for it. Glad I learned it because it sparked a strong interest in learning languages. Every next language was incrementally easier to learn.
- theoretical computer science, algorithms and data structures => these concepts are typically taught in CS/IT courses. They are incredibly powerful, important and timeless. Some of the most practical and powerful concepts for web-dev: complexity analysis, graph data structures, FSMs.
In the more recent past:
- Clojure => I have a strong appreciation for data-driven, functional programming and REPL driven development now. These concepts fit very well into web-dev.
- SQL in depth => especially temporal data-modeling. I started asking questions like: Can I do this in pure SQL instead? The result is a much higher appreciation for the language and a more productive approach for both backend design and programming.
- Regex in depth => a nice data-driven approach to handling strings, ubiquitous and practical.
- writing a compiler => this blew my mind. everything is a compiler...
Currently:
- Rust (and WASM) => I wrote a little automation tool with it so far and hope/expect that the language will become empowering even in web-dev.
On the horizon:
- Julia => I hope to dive deeper into math and linear algebra specifically in a practical way, also I assume that some data-science (specifically analysis) concepts help me to develop better solutions and broaden my horizon. I my goal is to use Julia as a vehicle for this.
- WebRTC, video/audio streaming
- WebGL => I want to dive deeper into graphics programming
I'm afraid learning too many different languages just for fun would be detrimental on my main "job" language, like I'd forget the main patterns. But probably not.
If you are already good in react, learn more libraries / frameworks in that ecosystem and increase your day rate. You are a frontend architect now.
I'd start with things like nextjs, Gatsby or Redux saga.
You could also go into the devops side of Frontend. Learn the different approaches of deploying / scaling a Frontend with server-side rendering (vercel, digital Ocean, docker...)
I'm also a self-taught engineer (well, I've done course work now, but only years after starting in the field).
If I'm reading this right, I think you're in a position where there's not an obvious next thing to study, as you've more or less become an expert in CRUD applications.
I think a lot of developers hit this point, especially us self-taught types. When you're making your way in the industry, it's really easy to notice the in-demand skills/technologies that you don't have, and to add them to your toolkit one at a time. It's a nice, linear progression. Then, you reach a point where that approach doesn't work anymore. If you're a 10+ year developer who knows React and Vue and is strong with vanilla JS, adding Angular to your toolbox won't raise your salary or your skills—you could probably pick it up on the fly if you really needed to.
I think at this point, you need a paradigm shift away from "what is the market pulling me to do" and "what do I want to do." It sounds like you want to stay an IC, so that means it's going probably going to be purely technical—so what technology do you find interesting?
For me it was machine learning, and then hardware-level stuff. That's what lead me to take university classes and study higher math/more fundamental CS. There wasn't an obvious pull in that direction from the market—none of my bosses offered me a raise if I became an ML engineer—but I liked it, and because I had years of experience already, becoming proficient in the field opened up an entire new world of opportunities in terms of career and personal life. I wasn't a new grad who studied ML. I was a career developer who'd built businesses, who now had a background in ML. You could apply this same logic to any new field you study, it doesn't even have to be technical. If you got really into design, you'd be a designer with 10 years of development experience. If you got really into sales, a salesperson with 10 years of dev experience is a hot prospect at any company that sells to engineers (in other words, some of the most valuable companies on Earth).
If you want to stay in web development and level up there, I'd recommend following the advice of many on this post. Pick a part of the stack you find interesting, and dig a thousand layers down. Even better, if you find something you think could be done better than the standard tooling does it, build something there.
I do intend on staying technical for as long as I can.
I'll have to pick something around servers, UNIX, security and performance since those are actually the (seldom used and surely not deep enough) parts of my job I enjoy the most.
You could familiarize yourself with some crypto things like running a Bitcoin node and maybe Lightning (Bitcoin's layer 2), and then figuring out how to deploy it or build a website that uses your node to accept payments for you or on behalf of others.
You could start a side project that uses both, such as a blogging platform that lets users publish articles that can be unlocked with a crypto payment rather than a subscription or credit cards. You could use both containers and Lightning to do it and learn both at the same time.
Although I'm not sure you can get this kind of job as a self-taught dev with no degree/certifications.
How do you manage a build pipeline, how do you provision appliances in a cloud provider, how do you monitor your applications if shit goes wrong, etc.
I've often been the only one enjoying debugging since it's more of a brain teaser than a business/product focus. Also the build/deploy part of dev interests me a lot.
Also gotta get to a scratch golf handicap, but that's outside scope.
There are many paths, I suspect you could use more exploration to know which ones appeal to you.
From my pov: - general backend people are a dime a dozen, deep front end expertise is harder to find. if you already have front end skills, adding deeper design/UX skills to that would take you to another level completely - on the backend, python unlocks a giant data / ML ecosystem, plus django
I've read every post and realized I'd like to focus on back-end, specifically server management / devops / security.
Thanks!
I'll be starting as well, feels like I'm too late to the party. Won't stop me though.
In the best case, you get a profitable side hustle going for yourself (and increase your financial independence). Worst case, you go to your next programming job with a ton of extra skills and insights that have excellent commercial value in the workplace.
I recorded a few videos showing the big picture of my first side hustle (code + marketing) and these might make it concrete and real for you: https://www.semicolonandsons.com/episode/Bird's-Eye-View-of-...
leetcode.com
seriously. it will give you a lot of confidence with algorithms and DS. You'll be able to look under the hood of many webdev/data frameworks.
hey it might even give a higher paying gig ;) , but don't worry about that.
Languages have no meaning if there are not tested in real space. I lost a lot of karma here because of discussion on PHP (I am a ruby guy). But at the end you can keep and relie on PHP, because until you don't see yourselve flaws, then those flaws doesn't really exist. And only then you choose your language that will correct problem the right way ;)
After your product is done, show it to us here, return to HN and expose your vision, and receive rewards and critics at the same time.
Career cheat: If well known open source projects merge your code, that's worth a lot!!111
- Mythical Man-Month
- Design Patterns
- Code Complete
https://www.coursera.org/learn/progfun1
The techniques you learn there will transfer to javascript and make you a better web developer.
I'll be focusing on linux admin / devops / security and brush up on the parts I've missed (computer science basics / SQL / C...)
I welcome every course / book / resource advice !
Certainly being exposed to working in a functional style with immutable data can benefit your thinking even when using common languages. I prefer the static type-inference flavors, e.g. F#, OCaml, or Haskell which is a bit more of a stretch. SICP/Scheme is great or even playing around with Clojure.
So I'm there with you although not quite as extensive.
May I suggestion: mobile app? I'm just now trying to get into PWA using vue. I have quite few mobile ideas and trying to pick your fav child is hard ;-) But using a bit of Biz Intel, research is pointing me to certain direction.
Also why not make it side hustle? Check out indiehackers.com (I have no affiliation). Great motivation and inspiration.
It is much more fun, also much more complicated.
My first take would be to learn ElasticSearch, to get a new superpower (it is how it felt to me) and compliment your CRUD expertise. My 2 cents.
Also, Jupyter Notebook is really cool, and it would be awesome to have Web Assembly versions that work in the browser. Colab is a nice UX, Binder, Thebelab, all steps in the right direction. Feels like notebook computing with WASM is under explored key infra for AI
If you want to expand from PHP you can look up Go or Python. If you want to try something very different and fun but with less prospect for a job try Elixir.
You can also update your skill to the new Vue3.
If it has a presentation mode, then also learning how to use any of the features of that would be a nice plus.
With how rapidly the web changes, I would consider specialization a wart on your resume. Web developers have to be generalists. I'd keep doing what you are doing: learning new things.
I'd learn some other back-end language. C#, Java and Rust come to mind. You're very strongly tied to the scripting/dynamic ecosystem.
If that doesn’t float your boat then I suggest getting into woodworking with hand tools.
My point is that you don’t need to spend all your time focused on tech skill development - you might burn out on it.
Smart contracts. Writing a smart contract is pretty easy. They use web front ends to work. Bringing quality UX/UI to crypto may be a skill that’ll open doors for you.
React, Angular, etc will all be passe in a few years. Don't base your career on fleeting technologies.
Of course I'm projecting what interests me but that's my advice.
https://flutter.dev/ would be a good starting point if that sounds interesting to you.
read your favorite DBMS manual end to end. this could amount to thousands of pages; each one is well worth it.
watch leslie lamport's TLA+ videos.
This falls a bit under dev-ops and sysadmin but it would unlock your brain to think in different ways.
With XgeneCloud,
* You can generate REST/GraphQL APIs instantly on any database (MySQL, PG, MSSQL, SQLite)
* And deploy entire backend into a single Serverless function! (AWS Lambda, GCP CLoud fn, Azure Function Compute)
* Has a built in GUI tool for Database design and API debugging as well.
Idea is you get to pass the boring bits (CRUD et al) and invest time into business parts of application.
(Disclaimer : Im the creator)