
Ask HN: Self-taught webdev with lots of free time. What should I learn? - thatcodingdude
Hey HN,<p>I&#x27;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&#x27;m getting a bit bored of building web CRUDs and feel like I&#x27;m not learning much anymore.<p>I&#x27;m thinking it&#x27;d be better to specialize more, but I&#x27;m unsure which direction to go. I&#x27;m actually selling myself as a full-stack web developer, knowing JS&#x2F;react&#x2F;vueJS, PHP&#x2F;Laravel, bit of design, server management etc.<p>If possible I&#x27;d like a job that can be fully remote or at most 1 day on site, which probably excludes security and high level stuff.<p>I have lots of time to learn so I&#x27;m open to any advice even if it&#x27;s just to git gud and read SICP.<p>tl;dr webdev having done every type of CRUD under the sun - what do now<p>Thanks for your input !
======
jameslk
Web performance

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](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.

~~~
jakub_g
I'm working as a webperf guy as a staff. I find the work interesting (although
sometimes frustrating), but I'm not sure how many companies want to have full-
time perf people onsite. As you mentioned, It's mostly consulting type of work
now as far as I can tell (so might not be suitable to everyone), but maybe
this will evolve or is already evolving (I've been only approached once for
webperf onsite position on LinkedIn in last year, by Atlassian, but maybe
because my profile is not that well LinkedIn-optimized).

Anyway, if someone's interested, you can start by reading articles from:

[https://hpbn.co/](https://hpbn.co/)

[https://web.dev/learn/](https://web.dev/learn/)

[https://developer.mozilla.org/en-
US/docs/Learn/Performance](https://developer.mozilla.org/en-
US/docs/Learn/Performance)

[https://calendar.perfplanet.com/](https://calendar.perfplanet.com/)

[https://csswizardry.com/](https://csswizardry.com/)

[https://phabricator.wikimedia.org/phame/blog/view/7/](https://phabricator.wikimedia.org/phame/blog/view/7/)

And some of my own content:

[https://calendar.perfplanet.com/2018/getting-started-with-
we...](https://calendar.perfplanet.com/2018/getting-started-with-web-
performance-2019-beginners-guide/)

[https://jakub.gieryluk.net/slides/rivieradev/](https://jakub.gieryluk.net/slides/rivieradev/)

~~~
A_Venom_Roll
This looks really interesting to gain some basic and intermediate knowledge in
this field, thanks a lot.

------
_benj
I'm a self-taught webdev too and I would strongly recommend learning SQL, not
just `SELECT * ...` but really learning it!

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!

~~~
bszupnick
Any specific resources to recommend?

~~~
_benj
The postgresql documentation is actually a pretty good start (and finish!).

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...

~~~
cpursley
Using postgrest and combining postgres triggers with Elixir listeners, you can
then do callback like actions on the data: [https://blog.lelonek.me/listen-
and-notify-postgresql-command...](https://blog.lelonek.me/listen-and-notify-
postgresql-commands-in-elixir-187c49597851)

Or do similar using Hasura's Event system but with webhooks.

[https://3factor.app](https://3factor.app)

------
nicoburns
Honestly, in terms of employment you don't need to learn anything at all. Your
skillset (which is quite similar to mine) is _highly_ in demand. What you'll
probably find is that you can specialise in any of the areas you already have
skills in simply by advertising yourself differently.

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.

~~~
thatcodingdude
By "The Rust Book", do you mean "The Rust Programming Language" ?

~~~
nicoburns
Yes indeed. The free online version (which has the same content as the printed
version) is available here: [https://doc.rust-
lang.org/book/](https://doc.rust-lang.org/book/)

~~~
thatcodingdude
Thanks. Rust has been recommended a bit in this thread so I'll check it out.

Out of curiosity, what's the appeal of learning Rust ? What kind of projects
do you use it for ?

I find that I can solve mostly everything with a blend of PHP/JS, but I also
never escaped web CRUDy stuff, and PHP is very well suited for these.

~~~
eatmygodetia
It's a general-purpose programming language, so it can be used for most
projects. Most problems can be solved with most languages, sure, but rust is
fast and "safe", so people flock to it.

It has some nice features. Personally I never found myself besotted with it,
in fact I rather dislike it and suggest ada instead. But rust is much more
likely to get you a job.

~~~
paledot
Not sure about employability, at least here. A few months ago I searched for
Rust job postings in Montreal (a decent-sized tech hub), and the only three
results were Morgan Stanley accepting Rust as a "C++ or similar" language, and
two listings for professional aircraft painters.

Still playing with it for funsies, though.

~~~
eatmygodetia
Maybe not. As I say, I don't use it, but perhaps I'm not so immune to the hype
of it as I thought.

------
haspok
How about getting back to the basics? You know, taking some maths classes, CS
fundamentals, algorithms, data structures, that kind of stuff. It is timeless,
and if you are self-taught, I can guarantee you that you have massive holes in
your knowledge.

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.

~~~
qorrect
> and if you are self-taught, I can guarantee you that you have massive holes
> in your knowledge

Just curious, why is being self taught a guarantee for having massive holes ?
Can you give some likely examples ?

~~~
tonyarkles
I don’t know if it’s guaranteed, but here’s my perspective (as someone with 2
BScs and an MSc, who also self teaches a ton of stuff):

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).

~~~
conductr
Well said. I can relate to this as self taught. I don’t work in the SE field
though so I feel no need to learn the silly whiteboard interview puzzles. It’s
never been a hindrance to making my ideas come to life.

~~~
tonyarkles
Heh, the closest I've come to "silly whiteboard interview puzzles" was back in
undergrad competing in the ACM Programming Competition stuff. Our team made it
to regionals a few times, but we never really took it all that seriously.

------
gitgud
Have you considered open-source development? [1]

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.

[1] [https://i.imgur.com/qr7Sr8B.png](https://i.imgur.com/qr7Sr8B.png)

~~~
thatcodingdude
I'm far from being good enough to contribute to open-source projects
unfortunately. I can make lots of things work but I don't know enough advanced
patterns and low-level stuff to contribute in a meaningful and maintainable
way.

~~~
joshribakoff
What better way to learn then?

~~~
iaml
This. I think it's pretty good practice to check out what's going on under the
hood in libraries you use, or plan to. Sometimes you find interesting
libraries or techiques, things you could improve and in rare instances that
you need to stop using it...

------
nicwest
I found that learning and writing some Clojure and Go made me think better
about the code I was writing in my main language (python).

I enjoyed working through Clojure for the brave and true:
[https://www.braveclojure.com/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](https://tour.golang.org/welcome/1)

~~~
jcheng
I can imagine the impact Clojure had; learning about Lisp had a big impact on
my programming journey.

What was it about Go that made your Python code better, though?

~~~
nicwest
Go helped me learn about designing good interfaces, and how to write tests
using dependency injection rather than just patching stuff out.

------
webreac
It seems you are good at building web CRUDs, but complains it is boring. It is
boring because it is repetitive. Create a web CRUD builder. Computers are
there to cope with repetitive tasks. You can put your expertise in the
builder. You will continue to earn money by selling web CRUDs, but you should
take your art to a higher level. Repetitive tasks are an opportunity to
increase abstraction (like in SICP) and write smart programs. Try to find your
ikigai.

~~~
iaml
To expand on that, if what you are doing is simple crud, it might be possible
to completely ditch the backend and use
[https://hasura.io/](https://hasura.io/) and talk to it directly using
graphql. It can also generate typescript definitions which is another
suggestion I was going to make. Using it made some parts of js more obvious
and gave me a lot of confidence working with it.

------
beaner
You could take some time to familiarize yourself with Docker and how to deploy
a full-stack application as a set of "microservices" that talk to each other.
It's really helpful for getting closer to understanding infrastructure,
scaling, and deployment.

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.

~~~
SwiftyBug
This is definitely what I would do if I had lots of free time!

------
mesaframe
I read this book. [https://www.amazon.com/Designing-Data-Intensive-
Applications...](https://www.amazon.com/Designing-Data-Intensive-Applications-
Reliable-Maintainable/dp/1449373321)

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.

~~~
ifarhanp
i'm a mobile application developer aspiring to learn backend. will this be a
good read for me if i have negligible experience on server side of things?

~~~
nwsm
You would definitely benefit from doing general backend side projects and
reading before reading this book. I don't think you'll have enough context for
it otherwise.

However, the book is definitely relevant to mobile applications. The backends
for all the most popular apps are built with systems described in it.

~~~
ifarhanp
thanks for the suggestion.

------
semicolonandson
I'm not sure if this scratches an itch for you, but I would learn more about
business via the route of launching a small side-hustle. By having skin in the
game, you'll learn a lot about product trade-offs, marketing, selling, etc.

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-...](https://www.semicolonandsons.com/episode/Bird's-Eye-View-of-a-
Profitable-Web-App)

------
alexdowad
Suggestion: Dig in to the very bottom of your computing stack and get a
working knowledge of your CPU, bootloader, OS kernel, system libraries, etc.

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.

~~~
thatcodingdude
Do you recommend any books / courses that could help give me some sort of
curriculum around this knowledge ?

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/](http://pages.cs.wisc.edu/~remzi/OSTEP/)
maybe ?

~~~
fossuser
I really loved this book: [https://www.amazon.com/Code-Language-Computer-
Hardware-Softw...](https://www.amazon.com/Code-Language-Computer-Hardware-
Software/dp/0735611319)

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.

~~~
alexdowad
This is a far better idea than "Operating Systems: Three Easy Pieces" as
suggested by the OP.

------
brian_herman
You could learn python/machine learning.

[https://www.coursera.org/learn/machine-
learning](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!

[https://www.youtube.com/channel/UC0rqucBdTuFTjJiefW5t-IQ](https://www.youtube.com/channel/UC0rqucBdTuFTjJiefW5t-IQ)

~~~
langitbiru
I second this. With Webdev + Machine Learning skills, you could build
interesting products.

I give you an example from my life. I build PredictSalary
([https://predictsalary.com](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.

------
dominotw
I'll suggest something different,

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.

------
a_imho
Entrepreneurship? Getting more technical has a diminishing ROI after 10 years.

Or something completely orthogonal to computing. Something you enjoy. For fun.

~~~
qorrect
> Entrepreneurship? Getting more technical has a diminishing ROI after 10
> years.

Does anyone do anything just for the hell of it anymore, or is it all driven
by money?

~~~
sushshshsh
I'm driven by money because everything is getting more and more expensive :)

------
qzw
Learn C. Then maybe one of the newer systems languages like rust, zig, D, nim,
etc. If you’re bored with CRUD, there’s a whole other (bigger) world to
explore when you get a little closer to the metal. It’s tremendously
empowering and fun as hell to get you’re hands dirty a bit, so to speak.
You’ll also become a better and more employable programmer as a nice side
effect.

~~~
thatcodingdude
C or C++ ? Thought about it, at the very least it would make me a bit more
well-rounded.

~~~
speedgoose
You should learn C. Life is too short to struggle with C++ now that we have
better alternatives such as Rust.

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.

~~~
lenkite
Modern C++ is fairly easy to learn. At-least easier than either Rust or C.

~~~
XCSme
I personally don't think this is true. I worked a lot with C++ before and I'm
still confused by the syntax and logic behind some concepts like (just
randomly selecting some links from the dynamic memory group).

[https://en.cppreference.com/w/cpp/types/remove_extent](https://en.cppreference.com/w/cpp/types/remove_extent)
[https://en.cppreference.com/w/cpp/memory/shared_ptr](https://en.cppreference.com/w/cpp/memory/shared_ptr)
[https://en.cppreference.com/w/cpp/memory/polymorphic_allocat...](https://en.cppreference.com/w/cpp/memory/polymorphic_allocator)

I think the basics that are similar to other languages (data types, basic
pointers, basic references, classes and OOP) are indeed easy to learn as they
are basically the same in most programming languages, but the more specific
memory management and weird syntax around some standard libraries make it
harder to learn, use and read. Let's be hoest, correct C++ code usually looks
ugly and verbose.

~~~
lenkite
shared_ptr is fairly understandable at-least from an application developers
usage point of view.

std::remove_extent is only used for template metaprogramming and generally in
linear algebra libraries. polymorphic_allocator is an expert facility.

Apart from shared_ptr, the other two are for very specialised purposes -
99.9999% of all C++ code ever written will never have them. But if you need
them, you can leverage them.

I came from high level languages (JS/Java) and I found modern C++ pretty good
- wow I can code native!. I found writing in plain C very difficult and
laborious. I found Rust conceptually far more difficult than C++. Also you
can't take your traditional data structures and write them in Rust. You have
to do it the special Rust way, which makes it a plain when you are just trying
to follow the code/pseudocode in a paper.

Admittedly, the Rust compiler catches pretty much _everything_ you do wrong.
But I code C++ with all warnings treated as errors along with static code
analysers and they catch all my mistakes too.

------
krzepah
Try functtional programming using ramda.js to step up your js skills; try
putting up a prom & grafana stack for monitoring, try using something like
django & drf for your APIs (django is somewhat a large web dev market & is
really solid, DRF will make you go lighting speed on your dev, it will also
step up your permissions programming skills) ; work up to 100% coverage with
unit tests and then write e2e tests that reflects the specs, ElasticSearch is
a valuable tool to know as well (for logging or be it to use it as a search
engine for one of your projects) - get 100% score on web.dev, do not use any
css template and actually master it (all that flux / grid system is still a
mess for me) (use variables etc..., maybe even scss or sass to be able to loop
and whatnot) ; the list could be lot longer but one thing i learnt is that
iterating on architecture is a lot more beneficial than spitting out features

~~~
krzepah
Oh and if by any chance you are not efficient with linux & docker do it !!!!!!

------
melvinroest
Hey,

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.

~~~
52-6F-62
Seems like something in signup is broken. Every code I get back fails.

edit: Scratch that. Took about 5 or 6 codes to finally work for some reason.

------
bashwizard
Get into security, specifically web app security pentesting.

You'll thank me later.

~~~
thatcodingdude
This and the servers/linux stuff is the most interesting part of my job. I do
have my doubts about being able to get into it since I suppose you really have
to master low level dev (which I don't) and I don't think I can get a job as
self-taught in this field.

~~~
bashwizard
Why not try it out by start messing around with it and get a feel for it? But
to answer your question: no, you don't. You already have more than enough
prerequisites for an easier transition.

[https://pentesterlab.com](https://pentesterlab.com)

[https://portswigger.net/web-security](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.

~~~
thatcodingdude
Neat, thanks for the advice. Pentesting got a spot on mr. learning list's wild
ride.

------
luckylion
If you're not already well-versed: get familiar with Google Analytics, Google
Tag Manager, Funnels, a/b Testing etc. It's cool to know other tools as well,
but privacy concerns or not, GA + GTM are the default. They're largely
underused, but my experience is that clients love it when you can set it up
for them, especially in combination with Adsense/Adwords to optimize their
campaigns.

------
phenkdo
Why not try something very different outside of programming? Such as learning
to play an instrument, a foreign language, Jiu Jitsu etc. In the long run,
such offbeat pursuits have a multiplier effect.

~~~
eagsalazar2
I learned Banjo a few years ago while freelancing. The trick is to hang it
right next to your desk. You'll play it way more and keep playing it as a nice
break (vs watching youtube videos).

------
onyb
Learn web3.js and build dapps. You already have most of the requisite skills
under your belt.

~~~
newsbinator
I haven't encountered any dapps yet that are useful in day-to-day life.

Are there any popular or important ones you could recommend?

~~~
beaner
Compound, dYdX, crypto kitties, uniswap, Dai, Lightning network, Augur...

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.

------
Tepix
How is your knowledge of regular expressions?

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

~~~
thatcodingdude
I love them and went through
[https://regexcrossword.com/](https://regexcrossword.com/) for fun, they're
great tools.

I have no idea how they work under the hood though !

~~~
geocrasher
Knowing how they work under the hood will help you to write better expressions
that perform well and don't waste performance.

------
maitredusoi
Best way is to build your product. A real world product. There only you will
be able to confront upon the wall of Reality .... Even the lightest simplest
product is the best tool to really learn, as you confront, think, invent, try
and errors everything.

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.

------
erdos4d
Please learn how to actually make money off web development and let me know
how you do it. I've noticed a huge disconnect between what people think a web
dev can/should make and what I've been able to get from it.

~~~
chrischattin
100% self-taught here. I change $150/hr for full stack Rails work and none of
my clients have batted an eye at that. I’m thinking about raising my rates,
actually.

If you know what you’re doing, I can assure you, making money is not going to
be one if your problems.

~~~
erdos4d
Wow, I must be a complete idiot with this stuff because I can't get people to
give me even 150 bucks for a full website right now. How do you actually get
these 150/hr clients? Please don't tell me I need to work in Silicon Valley
for some years and get the "contacts", cause I don't want to live in the US
anymore. Tell you what, here's my site:
[https://www.andeswebdesign.com](https://www.andeswebdesign.com), if you like
it, just send me all your work and I'll do the whole site for you for an hour
of your pay. I also have a PhD in computational and applied mathematics if you
want to put some real deal data science pipeline in it! I've never made a cent
off of that PhD either, so maybe you're the guy who breaks it all open for me.

~~~
6DM
I think your contact form is broken, or I just sent you like 8 messages trying
this in a few different browsers.

~~~
erdos4d
I don't doubt it, we just redid everything last night. Please give it a shot
later, I'll go fix it.

EDIT: it's redeploying right now. Please send me a email at erdos4d at gmail
if you are actually trying to get in touch with me for business and not just
testing the form. Thanks.

------
pabe
Try to get maximum Google Lighthouse scores. Get into functional programming
and useful patterns (e.g. state machines). Try a TDD side project and get a
feeling about test coverage. Maybe develop a view about next gen tools /
compilers like SvelteJs. There aren't too many people who're able to write a
well structured and maintainable, secure high performance web app with a high
test coverage.

Career cheat: If well known open source projects merge your code, that's worth
a lot!!111

------
spanhandler
Mobile or desktop dev (not Electron or React Native). See how the other half
lives.

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.

~~~
munna77
Any specific resources you recommmend for learning react

~~~
spanhandler
Well I wrote _not_ React Native for mobile dev, but I'm the wrong person to
ask in any case. I learn best by starting a project with something I'm totally
unfamiliar with and just... going. In fact I find learning other ways almost
intolerably dull and am unable to stay focused, when it comes to computer
stuff (other topics, I don't have that problem). So from _my_ perspective, the
answer to "how best do I learn this computer thing?" is going to be "just
start a project—ideally one that pays" about 95% of the time. Or pick a
simple-enough-looking but not-dead project in the tech on GitHub and start
contributing.

I gather other people like reading docs (OK, that's alright) or tech books
(ugh) or watching videos (double ugh) or listening to podcasts (triple ugh) to
learn computer things. I almost never do most of that (aside from consulting
docs), _especially_ not when first approaching something. I am, therefore,
just about the worst person to ask about resources for learning any computer
thing.

My only suggestions other than that would be to use Create React App, because
the alternative is the sheer cosmic horror or a complex JavaScript build, and
that goes at least _double_ if you're doing React Native rather than browser-
targeted React, and to start a React project with TypeScript because without
it JavaScript is kinda miserable, and there's little reason not to.

------
fendy3002
Beside SQL which is strongly recommended, it's good for you to know static
typings, java and c# comes to mind (haven't tried go, anyone can recommend it
or other suitable)

~~~
brlewis
TypeScript is the obvious choice for an experienced webdev. It's worth
spending extensive time on to get good. Learn generics and advanced types to
the point of not needing to look things up.

~~~
fendy3002
I need to mention that though TS is good, it's static typing is optional so op
may find it different with java or csharp

~~~
brlewis
Setting noImplicitAny should be adequate to address that. Java is getting type
inference soon too.

------
codeafin
Great time to read some books if you haven't already.

\- Mythical Man-Month

\- Design Patterns

\- Code Complete

------
dimitrios1
Try writing an operating system in rust [https://os.phil-
opp.com/](https://os.phil-opp.com/)

------
ktpsns
Besides all kind of data science/machine learning, what about learning the
"greybeard" mastering of Unix servers? This will connect a lot of old-grown
idioms (think about daemons, classical TCP services, etc.) and get you a lot
of knowledge in networking (which has connections to event-based networking
and thus asyncio, greenlets and all that).

~~~
thatcodingdude
That's probably the most interesting part of my job ! Making some small
scripts, managing the build step, servers etc.

Although I'm not sure you can get this kind of job as a self-taught dev with
no degree/certifications.

~~~
rexreed
Absolutely you can. Just build up some real experience. Some certifications
help as well. Just be careful the ones you spend time and money on.

------
halfmatthalfcat
DevOps, SRE, CloudOps. Things are starting to trend where full stack jobs
requires knowing how to build (usually with containers) and deploy (usually
into a PaaS) your application.

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.

~~~
rexreed
Based on his responses elsewhere here, it looks like Ops / Admin oriented
things would be his groove.

~~~
thatcodingdude
Indeed, that's what I took away from reading the answers !

This thread has been a great help, I'm thankful for each response.

------
Joeri
If you haven’t done any functional programming I can recommend this course:

[https://www.coursera.org/learn/progfun1](https://www.coursera.org/learn/progfun1)

The techniques you learn there will transfer to javascript and make you a
better web developer.

------
thatcodingdude
Thanks for all the great answers, they all helped me think about what I wanted
to go for.

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 !

------
dgb23
Hi fellow self-taught web-dev with (almost) a decade of experience.

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

~~~
thatcodingdude
Nice, that's really interesting ! How did you touch so many different
languages, was it only on personal side-projects or did you learn on the job ?

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.

~~~
dgb23
> How did you touch so many different languages, was it only on personal side-
> projects or did you learn on the job ?

Mostly in my free time yes. But I've also written tools I use in my job now.
With Clojure I've written a data integration/migration tool that I use
directly in the REPL. In Rust a small automation tool that fetches some APIs
and puts the data into a PDF (because the document has to be printed and
signed by hand).

> 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.

I get the feeling but it is _completely_ the other way around. You get a
better understanding of languages and programming in general and many concepts
are language agnostic. The next you thing you learn gets easier because you
know what questions to ask.

Learning Clojure helped me write better JS, you can even compile it to JS and
integrate it into a JS application as well.

Rust teaches me to write better imperative code. Allocation and lifetimes for
example are language agnostic concepts once you see behind the abstractions.
Also with WASM you get to use Rust from other languages like JS and even PHP.

Tips/opinion:

\- I don't learn a new language that doesn't challenge me in some qualitative
new way. For example if you know Java, there is no point in learning C# in
depth except you are looking for a specific job. You can almost always
directly translate Java concepts to C# concepts and be fine.

\- I prefer learning a new language that also lets you do a thing you couldn't
do before. For example tapping into a new runtime/community/mindset. Or doing
things way faster, or dynamic. Or interacting with a set of libraries that
have a different reach.

\- Languages itself are not the most important thing. It is what they carry
around that is interesting and useful.

\- I also prefer learning languages that have some useful interoperability
with the ones I already use. The ones I mentioned above are in this category.
Another big one would be C. Not a strict rule though.

\- As I mentioned: SQL and Regex are probably the most important languages to
learn and get a deeper understanding of as a web-dev.

------
karmakaze
A different perspective on the server-side of things might be useful. Could
either go lighter like Firebase, or thicker like Rails/Ruby, Django/Python,
Phoenix/Elixir, or Yii/PHP. They have more structure and let you tune things
differently.

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.

------
rexreed
What are your goals in life?

~~~
thatcodingdude
Job-wise I'd love to find something more technical and less business/project
oriented. I find myself not really caring about the end product but I love
focusing on how things work.

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.

~~~
bsaul
Ever tried following the « from nand to tetris » curriculum ?

I knew a few people (including myself) who dream of taking a few months off
just to complete that course.

~~~
thatcodingdude
Funny you should mention it, I'm 3 chapters deep in nand to tetris on
coursera. It's a great course.

------
breytex
I'd expand on one of your best skills you already have. The "stack" gets more
and more complicated so "full stack" will stop to be a thing in the future.

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...)

~~~
thatcodingdude
Build / Deploy / Scaling is the most interesting part of my job right now, so
it makes sense to focus on this part. Thanks !

------
thedangler
Please Contact Me! I have lots of mini projects that need done, you will be
contributing to open source projects that will help expand my service
offerings. You can reach me through my profile.

Thanks!

~~~
pknerd
I couldn't find some contact or email.

------
mooneater
I'm surprised by a lot of the suggestions (learn C?). I mean sure, everything
is interesting, but what is the goal here.

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

~~~
thatcodingdude
Well, my post was kinda generic and more exploratory so I appreciate every
answer.

I've read every post and realized I'd like to focus on back-end, specifically
server management / devops / security.

------
sneeuwpopsneeuw
Project Euler is also always nice to learn more things about math.

------
RemingtonLak
No shortage of great suggestions here. Lotsa knowledge pouring in!

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.

------
JanVanRyswyck
Learn about Test-Driven Development and Software Design. Or learn about
Software Design and Test-Driven Development. You'll learn that they are both
ends of the same stick.

------
Zealotux
I'd suggest having a look at IoT, chances are you already have the skill set
to work with IoT and the demand will only grow in the following years.

------
pauletienney
I was in the same situation. I have done CRUDs for years and finally got
longer projects (2 years). I am now facing much more techy problems :
recommandation engine, OCR, search engine, simple geographical functions, etc.

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.

------
bionhoward
Auth and API Security. Lots of apps fall apart when time comes to add login
and data persistence!

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

------
conradfr
Do you often use asynchronous tasks? If not you could use RabbitMQ or Redis
(etc) and try to use queues, workers, or pub/sub. Maybe tying that to a
websocket.

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.

------
zamalek
> specialize more

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.

------
dcminter
There's another thread at the moment about touch typing. I think that's only
'meh' useful. Instead, how about spending time on getting all the hotkey
combos of your favourite IDE or editor into your muscle memory?

If it has a presentation mode, then also learning how to use any of the
features of that would be a nice plus.

------
roberthahn
You have all the skills needed to succeed in a technical level. Maybe look
into expanding your expertise in sales, marketing, or running a business.

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.

------
vonwoodson
Web assembly is going to change everything. Rust compiles to web assembly,
maybe start there with single page apps as a start.

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.

------
sohamsankaran
Starting an independent project or two in an area you haven't played in before
might be both fun and useful. I have a somewhat long list of ideas I don't
have the time to do if you're looking for inspiration -- feel free to email me
if you want 'em (soham at soh dot am).

------
kamban
You can consider building SaaS product around your expertise , for eg you can
sell APIs. But ofcourse doing market research is another domain. But if you
start with an audience, and their problem, you might hit it off. ROI is
exponential with a successful SaaS product.

------
mstipetic
I'm a bit biased since I run a Kubernetes training platform, but even basic
Kubernetes knowledge will allow you to deploy all sorts of architectures with
a few YAML files without having to patch several external services together

------
peteypao
Security. It's an in demand field right now, and I just don't see how it will
become irrelevant in any time in the future.

React, Angular, etc will all be passe in a few years. Don't base your career
on fleeting technologies.

------
sneeuwpopsneeuw
I quit webdev after 3 years and I'm now trying more and more thing in the
gaming world. Mostly cpp and opengl. Emscripten(was) and WebGL are very nice
to make shiny doodles. So maybe try one of those. Or make simple art with css.

~~~
thatcodingdude
Were you able to get a job or freelance gigs in the gaming field ?

~~~
sneeuwpopsneeuw
I'm still studying Computing science right now and will start with a master in
Game Technology next year. But it is really hard to get a job or do freelance
work in the gaming field so no not yet but hopefully soon TM.

------
tibbon
Rust, Terraform, Kubernetes - or at least, that’s my focus and bet for the
future

------
eagsalazar2
React Native if you don't already know that. Also UX and Product Management.
Then just launch some little thing to real users. It will be a thrill ride.

Of course I'm projecting what interests me but that's my advice.

------
juliend2
I think you should take a look at Flutter for mobile dev.

[https://flutter.dev/](https://flutter.dev/) would be a good starting point if
that sounds interesting to you.

------
baq
learn sql. no matter what else you do, sql will be with you sooner or later.

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.

------
jakub_g
I'm asking myself the same question. WebAssembly (WASM) looks like something
that might have some potential for the future, but adoption will be probably
slow/limited.

------
thiago_fm
Learn Kubernetes and/or learn a programming language that has a hot market and
static types like Kotlin(if you into more webdev) or Rust(if you into systems
programming).

------
bitwize
SICP is a great thing to pursue. Pick an area of interest outside webdev and
pursue it. Try learning about systems or low-level programming. The field is
vast.

------
nicexe
System orchestration (docker/kubernetes/aws/...)

This falls a bit under dev-ops and sysadmin but it would unlock your brain to
think in different ways.

------
qubex
Discrete Mathematics

------
xgenecloud
Try XgeneCloud :
[https://github.com/xgenecloud/xgenecloud](https://github.com/xgenecloud/xgenecloud)
\- its free & open source.

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)

------
thedangler
Contact me! I have work that needs to be done. You will contribute to open
source projects and will help my company expand its services.

------
slowwriter
I’m also a mostly self-taught freelance webdev, and recently I’ve been
learning about Rust which I’ve found to be very interesting.

~~~
thatcodingdude
What kind of projects are you taking on with Rust ?

~~~
frequentnapper
not op, but there was a post today about how to build single page apps using
Rust on the front page: [http://www.sheshbabu.com/posts/rust-wasm-yew-single-
page-app...](http://www.sheshbabu.com/posts/rust-wasm-yew-single-page-
application/)

~~~
slowwriter
I read that one too with great interest. I’m still only learning and reading,
though. I’m hoping someday I’ll be able to use Rust in some professional
capacity, but for now it’s just to have fun and play with something new.

~~~
frequentnapper
Same here. I started going through the excellent guide a few weeks ago.

------
kfk
I think containers, orchestration, nomad. Apps in the cloud decouple storage,
security. The real “app” is an ephemeral container

------
blasrodri
What about WASM?

------
bed99
I started Computer Science last week. Math is awesome, learning Calculus
slowly. A decade after normal people do.

~~~
thatcodingdude
How's it going ?

I'll be starting as well, feels like I'm too late to the party. Won't stop me
though.

------
catmistake
Very few webdevs know it, but they should all learn it, with a gun to their
head if necessary: restraint.

------
aarreedd
Get a Laracasts subscription. They have courses on lots of web dev topics. Not
just Laravel/php.

------
ykevinator
Update your skills, php is hard to market, learn python or rails, that would
have high roi

~~~
thatcodingdude
PHP is used a lot in France where I'm based, so that probably differs a bit
from the US market.

~~~
Nextgrid
However, the market will eventually change and it's better to be prepared.
Plus with PHP being the mainstream I wouldn't be surprised if you could make
better $$$ by going after the (still) relatively niche technologies.

------
greenie_beans
i love these ask HNs...they are always full of such good resources i never
knew i needed

~~~
thatcodingdude
Yeah, I never expected so many good answers.

------
x87678r
Artistic side - color wheels, photography, design, typography.

------
m4tthumphrey
Where are you based?

~~~
thatcodingdude
I'm based in France.

------
satisfaction
algorithms and data structures, prepare for interviews at larger companies
that follow more traditional CS interview practices.

------
j45
Rust, WASM, Vue, Hasura, API Integration

------
ChefboyOG
TL;DR: There's probably not an obvious, "learn this and you'll increase your
job prospects" technology for you at this point. But, you can also decide to
learn almost anything, and because of your years of experience, open up a ton
of new doors.

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.

~~~
jcaguilar
This is a great reply. Reminds me of this post "How to Become the Best in the
World at Something": [https://forge.medium.com/how-to-become-the-best-in-the-
world...](https://forge.medium.com/how-to-become-the-best-in-the-world-at-
something-f1b658f93428)

------
bluedino
Puff up your LinkedIn, Github, etc

------
classics2
Soft skills.

~~~
oropolo
Under the broad heading of soft skills you could learn how to spell and become
a better writer. Most technical people aren't good communicators so taking a
course in composition and storytelling would put you in better standing
compared to most.

------
downshun
Why not mentor?

~~~
ch_sm
I second that idea. You can learn a lot about your field from trying to make
people understand it.

------
tonka3000
WebAssembly

~~~
justaguyhere
any resources you can recommend?

------
probinso
learn the language `webppl`

------
rawoke083600
Svelte !

------
fspacef
play with SwiftUI!

------
snack_man
Web 3.0

~~~
thatcodingdude
But is it webscale ?

