
Ask HN: Is web dev viable today? - throwawayt856
I am switching career from a low paying job to web dev. What tech stack should I be learning to start earning income to pay my bills?
======
pdpi
It's absolutely a viable career path.

To get started, you'll want to learn enough Javascript/HTML (CSS can wait)
that you understand how a frontend builds on top of the data it's getting from
the backend, and you'll want to learn enough Java/Python/Ruby/Node.js that you
can spin up a fresh "hello world" http server in a few minutes, and enough SQL
that you can back that service with a database that gives you "hello world" in
a language appropriate to the request you received.

That'll give you a "full stack" core to build upon. You'll probably want to
specialise either on frontend or backend work, but having that core competency
with both gives you more tools to understand what you're doing on whichever
one you pick.

Crucially, whatever specific languages/frameworks you pick today are unlikely
to be the same you'll be using in, say, five years time, so just look at those
as tools to get the job done, and focus on learning the fundamentals — Learn
what's fast and what's slow, what's resilient and what's brittle, etc etc.
Those are the skills that will lead you to better jobs later on.

~~~
joelbluminator
"Crucially, whatever specific languages/frameworks you pick today are unlikely
to be the same you'll be using in, say, five years time" , I think that's more
true for frameworks than for languages, and even more true for front end world
than backend. If he picks up java spring/.net he's gonna be good 15 years from
now imo. I'd even bet on Rails/Laravel and friends to still be relevant in 15
years. Can't say that about React though.

~~~
pdpi
I should've been clearer — Some part of this will be the usual tech churn, of
course, but another part of this is that you shouldn't pigeonhole yourself
into a $language developer, for whatever value of $language you chose when you
first started learning. As the OP gets into the industry and starts learning
stuff, there's a fair chance they'll end up changing their tech stack of
choice.

------
omarhaneef
Three general pieces of advice:

1\. It matters where you are geographically as to which tech stack is
hot/viable.

2\. It matters what industry you are in/coming from both for which tech stack
is used, and for how much value you can contribute.

3\. A web search (indeed, linkedin etc) for dev jobs is likely to tell you a
lot more about these two in terms of what is avaiable, what they are looking
for and so on than any generic advice you receive here.

For instance, if you have a background in trading stocks, and are in NYC, then
secure web interfaces might be a big deal. If you are have a background in
marketing and are in a big city, then single page apps might be your ticket.
If you came from Oil and Gas, in Houston, then who knows.

~~~
cactus2093
I guess I see your point, but if you're in NYC I really don't think getting
into legacy financial institution web portals is good advice. If you want to
do trading algorithms or something, sure there are those opportunities (though
you may need a background in math or some experience in finance already). If
you want to do web development, there are tons tech startups in NY as well as
many major tech company hubs (Google, Facebook, Twitter, etc) and headquarters
(Etsy, Kickstarter, etc).

A better way to think of it is probably, if you want to work at a tech startup
(which aren't easy to find in every city, so it's contingent on you being near
some type of tech hub or doing remote work), then dynamic web languages and js
frameworks are good things to learn, like ruby on rails, python/flask,
node/express, React on the frontend, etc. Small to medium sized companies can
sometimes be easier to get your foot in the door and can be less competitive
to get into than FAANG companies for instance, so this can be a good bet.

If you want to work at a bigger company (or one that is not traditionally a
tech co, perhaps because the area you live doesn't have a lot of tech
companies), then stacks like Java/Spring, C++, C#/.Net, etc. can be more
useful.

Either way, the important thing is to start somewhere. Most companies will let
you do interview problems in whatever language you're familiar with, and a lot
of companies won't require that you have experience with their exact stack as
long as you are a good programmer overall.

~~~
omarhaneef
Just to be clear on what I was trying to say: I didn't mean to use those
examples as actually concrete advice of what to pursue. Those were example of
how different things can be.

The only concrete advice was to boot up indeed.com or whatever engine, and see
what is actually out there, how much it pays, what skills they are looking for
and so on.

I am sure your examples are much closer to the state of affairs than mine
were.

------
maximp
Context: assuming you're in the US, near a major city. If you're not, my
advice probably doesn't apply.

Totally viable, but getting your first job is as much an exercise in grit and
hustle (ugh, yes, I know), and self-promotion as it is technical ability. Yes,
it is important to learn whatever tech people recommend you (HTML/CSS/JS, and
then Node + React would be my recommendation). However, it's just as important
to then build a bunch of projects and network/sell yourself to anyone that
would give you a chance. It can be hard to get your first job and get someone
to take a chance on you - but it is absolutely viable.

~~~
tracker1
To add to this... learn enough git to setup your projects in github. Setup an
organization in github as yourid-samples or yourid-learning ... that way you
can keep it out of your main user repo.

I have a dokku box (there's a market setup on DigitalOcean, would go with at
least a $10 box on DO). You can then setup all your projects on the dokku box
as you go. `git push deploy` ... bonus if you can get integrated with Github's
CI/CD pipelines.

I see a lot of example sites from those who come out of bootcamps, or on their
own learning path... the extra bit is actually having running samples. It's
easy enough to get a domain name and point *.domain at a dokku box.

The other extra points part will be to have tests with code coverage on your
projects. Frankly, a lot of code/modules that go into production don't have
this, so it's not a hard requirement, but is something that will put you ahead
of competition when starting out.

If you have no knowledge at all, I'd suggest getting started with "Head First
HTML And CSS"[1]. It's not the most in-depth, but a pretty good beginner book
for getting started. From there I would go through the "Modern JavaScript"[3]
series from O'Reilly as well as "CSS: The Definitive Guide"[3].

From there, it's a matter of what interests you. Though React, Angular or Vue
would be good next steps. Followed by backend with Node.js as well as
PostgreSQL (or MS SQL). From there, the sky is the limit.

[1] [https://www.amazon.com/Head-First-HTML-CSS-Standards-
Based-d...](https://www.amazon.com/Head-First-HTML-CSS-Standards-Based-
dp-0596159900/dp/0596159900/)

[2] [https://mjavascript.com/](https://mjavascript.com/)

[3] [https://www.amazon.com/CSS-Definitive-Guide-Visual-
Presentat...](https://www.amazon.com/CSS-Definitive-Guide-Visual-Presentation-
ebook/dp/B076HZSWTM)

------
soulnothing
My recommendation is hit dice / indeed / etc. Look at jobs in the area. See
what stacks are popular. Each locale I've worked in has it's own tech eco
sphere. So what may be popular here may not be somewhere else.

------
dreamling
As with most programming jobs the best skill you can foster is how to
research, learn and apply technologies.

The tools and popular frameworks change about every 3 years. (As a web dev
since 96 I feel qualified enough to say.)

That said, fundamentals are key. Learn/brush up on standard Javascript and CSS
before diving into the current frameworks.

ES6 Javascript has a lot to offer,
[https://www.youtube.com/watch?v=STZuv-27d9M](https://www.youtube.com/watch?v=STZuv-27d9M)
and the Grid/Flex options in CSS can allow you to create a variety of complex
layouts in a fairly quick way. [https://www.css-tricks.com](https://www.css-
tricks.com)

On top of that, it does everyone good to understand web accessibility concerns
and implement them from the start of each project (far easier than trying to
retrofit things later).

Once you have a firm handle on those things, you can better evaluate
frameworks and libraries. You may find that you won't need all the overhead
that comes with helpful libraries if you have a specific use case that
standard js/css can solve.

I spend a lot of my time reading documentation/github issues for a variety of
things (node, drupal, wordpress, hugo, frameworks, php, javascript, docker,
vagrant, bash) and parsing how that info can help me integrate the tools and
programs I use everyday.

If documentation doesn't exist, I try to create my own barebones doc with
links to info I've found and a list of questions to research later.

Web Dev, for me, has been all about solving puzzles, finding solutions, and
sometimes simply discovering the right terms to search for.

This continuous learning process can feel like I'm starting from scratch over
and over (and feeling like I know nothing each time ;) ), but lessons learned
from previous projects usually make future ones easier to learn/identify
problem areas.

It's good to embrace that uncertainty. There is so much out there to learn, no
one can know it all, but if you can learn to identify good mentors, quickly
parse documentation and apply current best practices you'll do just fine.

~~~
tracker1
Considering the big three frameworks are React (6 years), Angular (3+ years),
AngularJS (9 years, deprecated) and Vue (5+ years) .. the churn really isn't
what it once was. Yes, there are new options popping in and out, but even
hyperapp and inferno are 2yo since 1.0.

Not all things have stood still, that said the frameworks are definitely still
around, and barring a relatively few breaking changes, the past 3-5 years have
been relatively stable now. Yeah, you can do react functional components with
hooks, but the class syntax still works.

------
jakespracher
I would go so far to say web dev is still a superpower IMO. Check out how many
of these various products are web based

[https://www.indiehackers.com/products?minRevenue=2000](https://www.indiehackers.com/products?minRevenue=2000)
[https://www.capterra.com/categories](https://www.capterra.com/categories)

------
auslegung
It’s absolutely a great career with high demand. I’d start looking at
freecodecamp.com. It sounds like you’re very early in this process so you’ll
probably need to fight off decision paralysis. Just start something and keep
going. You will figure out, soon enough, what you enjoy and what you don’t.
You can do this! I’ve mentioned several people in similar situations, and it’s
very doable.

------
DougWebb
This question feels similar to "I decided to switch my career and become a
surgeon. Which organs should I focus on first so I can start earning income
right away?"

It doesn't really work that way. "Web Dev" is not a job; it's a generic name
for an industry that covers a multitude of different specific jobs, each with
their own specific (and overlapping) skill sets, and all of which are a subset
of the much larger "Software developer" industry.

I don't really have any advice here. My approach was learning to program
computers and gradually building my skills from the ages of 12 to 26,
including several paid part-time/temporary jobs towards the end. Then a friend
asked me to leave graduate school and take a programming job at his company,
to take over a project he didn't want to run. I took the slow road, and
stumbled into the career on a whim. (I'm a Mechanical Engineer and thought I'd
be building robots, with programming just being one of the tools of my job.)

~~~
herval
This analogy makes _zero_ sense. You can make a living working exclusively
with PHP, JS or RoR, for example, and the barrier of entry is nowhere near
becoming a surgeon (and getting lower every day).

Plenty of people switch careers as adults, and they can be as successful as
folks that “play with computers” since they were kids. It’s perfectly possible
to become a productive developer with very few formal training these days.

~~~
DougWebb
Exclusively? I don't believe you can have a software development career
working exclusively with PHP, JS, or RoR. That's far too limited a breadth of
knowledge. At best you might make some money on the side if that's all you
know, but no company is going to hire you as a full-time professional
developer based on just that.

I wasn't saying that learning everything you need to learn for web development
is as difficult as going through med school and becoming a surgeon. What I
meant was that there are a ton of different technologies and specialties in
web development, and you need to know what your specialty is before you can
know what technologies you'll need. There are all kinds of different surgeons
too, that specialize in particular organs. You can't just say "I want to be a
surgeon, which organ should I learn" because it depends on what kind of
surgeon you're going to be. Also, it wouldn't just be one organ because the
body is a complex system of interrelated parts, and you need to know about all
of that too if you want to be a good surgeon. Web development is like that
too; you may specialize in PHP, JS, or RoR, but there are a lot of other
related and intertwined technologies you're also going to need to know about.

------
joelbluminator
I'd actually pick up php with one of the simple frameworks like Laravel (or
even go frameworkless in the beginning). I think it's a bit more
straightforward than picking up Node. Otherwise Rails is nice for beginners as
well and has a big market in the U.S. Java/.NET aren't beginner friendly at
all.

------
saddestcatever
There are some core fundamentals you'll need that will help with any web
development route you take. Javascript, CSS (SCSS), REST APIs, etc. These are
fundamentals that you can self-teach from free code camp, and other online
resources. However for the sake of locking in a job, it's easier to come in on
a specific framework. Angular, React, Drupal, Wordpress, etc. However, as
others have mentioned in this thread, popular frameworks and the jobs that use
those can vary city by city. So it's worthwhile to find what the desired
skillsets are in your area.

------
agustif
My current stack:

Language(s) JavaScript /ES6 TypeScript (Or Go, Elixir, Python, Ruby, etc)
[insert your choice here]

Database SQL — PostgreSQL —— pg —— Postico.app — or MySQL (w/ MariaDB)

ORM TypeORM (or Sequelize)

NoSQL (can skip for now) — MongoDB — Redis — Etc..

Backend — Node — Express (or Koa) — AccountsJS (or Passport.js)

GraphQL — Modules — Apollo —— Server ——— apollo-server ——— apollo-server-
express —— Client —— Link

Frontend Ant.Design (or Material, Bootstrap) React (Or angular, or vue) \--
Hooks NextJS (or NuxtJS, etc) Gatsby TinaCMS (or PrimeCMS) Admin Bro

Mobile Expo.io (For React-native, mobile dev)

Linting ESLint/Prettier Jest

Deployment Netlify Zeit’s Now Heroku

Cloud Microsoft Azure Google Cloud Amazon AWS

SaaS Github

------
csallen
Yes, web dev is still viable and will be for a long time to come. You can't go
wrong learning the basics of front end (HTML, CSS, JavaScript), the latter of
which also gets used on the back end quite regularly nowadays.

You'll also have to get good working with the web environment (understanding
how servers and requests work, APIs, etc), with developer tools (the Terminal,
your IDE, Git, etc.), and likely some frameworks (e.g. Express on the back
end, React on the front end.)

You can make it quite far with just that.

------
bdcravens
> start earning income to pay my bills

This sounds to me like you're talking needing income soon.

If this is the case, I'll give a less popular answer: Wordpress. There are
definitely stacks that have a greater earning potential, and that are more
satisfying to our nerd sensibilities, but there's demand, a pretty easy on-
ramp, and opportunity. Even in lieu of a job, you can get pretty far just
building basic Wordpress sites with $20-40 themes from ThemeForest. You can
pick a single plugin and double down and become an expert. You can dive into
the mess of PHP and get really good at doing customizations that there aren't
pre-built plugins for. Wordpress sites tend to be slow; you could build a
consultancy doing nothing more than optimizing for speed, etc.

There's a lot of competition, but we're talking paying bills here, not
industry top-earner. I'd use Wordpress to put down a layer of stability, and
then work on leveling up.

~~~
muzani
You can make pretty good money off WordPress. It's more a numbers game. If
you're hardworking, willing to advertise and sell a little. Maybe do a couple
of sites a day.

A lot of the people who do it are quite bad at it, so it's probably not too
hard to do well in it. I almost went the route once, but landed some bigger
Android projects later.

~~~
bdcravens
I personally do not enjoy working in Wordpress, but some of the easiest money
I've made has been in Wordpress, and oftentimes is little more than putting a
few puzzle pieces together. A very good friend who is now a realtor asked me
to help him with calendar events: his client wanted to edit them, but he
didn't want to give him full wp-admin access. I was able to accomplish that
with a little bit of Googling and configuring the right plugins.

------
schneidmaster
The answer to this question depends heavily on your location. For example, I
live in Cleveland and it's dominated by .NET companies, so for someone here,
my answer to "how do I get to paying my bills" (ignoring any other factor)
would be to learn .NET. Other cities are dominated by Java, or ruby or node.js
in some cases. In any case, you'd also be well-advised to learn some basic
frontend (HTML, CSS, JavaScript) since every tech stack I mentioned needs a
frontend to go with it.

How to figure out what's popular in your city? Searching job postings can
definitely help, see what the common trends are. It also helps just to talk
with folks in your local tech scene. Google "<your city> tech slack" \-- most
major cities have a general-purpose slack team for the local tech community,
and you should have no problem finding some general information.

------
Rooster61
While picking a stack is certainly something important when looking for a
webdev job, it isn't the most important for you as an overall developer. Don't
go into it from the perspective of "Which stack should I learn?", but rather
"What are the programming skills I can learn that I can apply across multiple
stacks?".

If the skills you pick up are too focused on one stack, it makes it much
harder to transition to a new one when that stack inevitably falls out of
vogue. Study up on paradigms, not frameworks; e.g. OOP, Functional
Programming, MVC, good coding style (code readability and maintainability are
EXCEEDINGLY important), etc...

Once you have a solid platform to stand on, you will find that you can
transition these concepts from framework to framework, and only have to focus
on the syntax changes and a little bit of under the hood stuff.

------
zapperdapper
I have some recent experience of this where a friend switched into web dev
from a totally unrelated (non-computer) field. Originally she was looking at
Python/security as a path, but then changed to web dev as she was more
interested in that. Did an free Google course online, learned JavaScript and
(IIRC) a bit of React, and 9 months later was working in the industry. She did
this in her spare time on top of her day job. She's been a year in the
industry now and she has had a couple of promotions and is doing well (double
her previous salary)...

------
_verandaguy
Before offering an answer, what do you mean here by "web dev?" It's currently
a very wide field, so I'd like to know what your _current_ plan for entry is.

What's your current tech or programming background? Do you have a formal
education? It's not a big deal if you don't, but it affects how you may want
to enter the field. Have you worked on any coding projects in the past?

How much time and effort are you willing and able to commit to this career
move?

If you answer at least one or two of these, I'll be able to give you a much
more informed answer.

------
justaguyhere
I've a friend in Brazil who is making U.S level salary consulting on tools
like Zapier, Airtable, Constant contact etc. His clients ask him to set up
automations, ask him to teach them etc. If his projects need coding, he hires
others to do it for him.

What I am trying to say is - you don't necessarily have to code to make a
decent living in tech. There are other options too, especially if you are good
in interacting with people.

That said, if you enjoy coding, then by all means, do it! It is fun for sure,
at least for a while :P

------
ykevinator
Btw, you know what has a much higher chance of success than learning web dev?
Becoming a sales force configuror. There are tons of gigs for this and you
will have a much faster path to making real money. (sales force is crap but
the end users are incapable of basic config and the company avoids helping
people like the plague so this has created a huge void in the market for
slightly tech capable people).

------
Smithalicious
Look at jobs in your area to see what's in demand. PHP is king where I live
for example, there's not much else. Some places are all full stack Javascript.
In Japan Ruby is still huge.

So I'd check what's in demand and then try to use it immediately to make some
useful websites; ghat way you can build a portfolio while you learn.

------
ykevinator
Yes but you will need 2 years of classes and projects to actually make a
living at it. It's not easy money and you really have to enjoy it to make it a
career. I recommend taking some YouTube courses then if you like it, maybe a
paid curriculum. Just don't fall into the trap that it's easy.

------
abinaya_rl
If you are looking for a remote job, checkout
[https://remoteleaf.com](https://remoteleaf.com) to understand the latest jobs
posted.

You can get an idea on what are the tech stack that are actively used and
companies hiring for. Good luck with the job search.

------
westonplatter0
+1 to the advice here.

My 2 cents: learn how to quantify and record others expectations and then
compare them to (your or your team's) output. My team's work and value within
companies has been perceived as less because of mismanaged expectations.

------
Scarbutt
For a big job market, Javascript(browser/node.js), and a database (postgres).

But more important than the "tech stack" is the fundamentals, what is your
background?

------
wayneftw
Free code camp is great. You’ll learn all of the foundational skills that
you’ll need to get a job and to continue learning anything else that they
didn’t teach.

------
notus
html/css/javscript/backend language of your choice/database of your choice.
There are plenty of shops out there that kind of capitalize on people breaking
into the field and will pay them lower than industry standard for a few years
until they go off to a regular company. Below the industry standard is usually
more than what people were making before though so employees are grateful.

------
stevev
Yup it’s still viable. Just pick one. Let us know what career you’ll pick
after web dev. Gluck!

------
joshypants
React is the current biggest front end framework, with Vue growing.

------
retrac98
Yes, it’s extremely viable if you’re good at it.

------
jdauriemma
Web development is definitely a viable industry. Unfortunately there's not a
single stack that you "should" learn above all the rest - the best choice
would likely depend on your career goals. If you want to work for a team in
your region, find out what stacks are popular there - going to local meetups
might be a great way to figure out what to expect. If you want to freelance,
you might choose to begin with a kitchen sink-like framework like Wordpress or
Drupal. A lot of software development bootcamps like to start with Ruby on
Rails, which makes good sense as well.

tl;dr it depends.

------
neonhat
If web dev isn't viable, what is?

------
joshstrange
Some people here saying things like "near a major city" or "It matters where
you are geographically" and I don't know if that's really true.

I live in Lexington, KY, not exactly what springs to mind when you think of
tech or web dev but there are plenty of jobs here for that skill set.
Furthermore there is the option of remote work which really opens you up but
I'd probably suggest working in an office for the first few years at a
minimum.

Learn some combination of Javascript/Typescript, Angular/Vue/React,
NodeJS/PHP/Ruby/Java, CSS/SCSS/SASS, Bootstrap, etc. The BEST way to learn FOR
ME (and some others I've taught) is to have a goal/project. You might find
some use out of the various online courses/bootcamps but I'd start with a
simple project. It's important to not pick a project based on one of the
(extremely) tired examples like: ToDo App, Blog with posts that have authors
and comments, etc. It's fine to cut your teeth on something like this but
that's not what I'm talking about when I say "project".

It needs to be something you wish existed BUT IT CURRENTLY DOESN'T (or not in
the form you care about). Here are a couple of things I created back in/around
high school:

\- A simple music site where users can up/down vote songs and/or playlists
(this was pre-Spotify), you gave it a youtube url and it would rip the mp3
using scrapers/ffmpeg on a server. It was highly illegal when you came down to
it but a great learning experience. I got to work with Frontend
(jQuery/HTML/CSS), backend (PHP), queues (DB-based, I was young, cut me some
slack), JS bookmarklets (To click when on a YT page to grab the song), and
more.

\- A library attendance program replacement for my school. Teachers would mark
they were sending a kid to the library (normally durning study period) and
then it would pop up on the library computer and alert if the kid hadn't shown
up in a reasonable amount of time. Kids would type in their ID numbers to
sign-in/out of the library. First foray into ajax IIRC to keep the teacher-
view and the library-view in sync without page reloads.

\- Flash game site that I kept moving (or mirroring really) to different
domains to avoid the blocks. This was less of a technical challenge and more
of learning about giving people what they want and working around the existing
system. .info domains were dirt cheap especially when you bought 5 at a time
and song lyrics are easy for kids (if not everyone) to remember so I'd buy up
a bunch of .info's for $1/first-year each based on popular song lyrics/titles
and then slowly "release" them into the population as old ones got blocked. I
did make a couple hundred off ads before I went to college and let it die.

\- A voting program to be used by students for various things at the school
(Homecoming king/queen, prom king/queen, senior superlatives, etc). This
included UI to create new polls, see results, make them available to only
certain classes (Freshman/Sophomore/Junior/Senior), and login for the students
with UI to vote.

All of this is to say the best way to learn IMHO is to be forced to
essentially or "learn as you go". I had no idea how to accomplish most of
these tasks when I set out to do them, I just knew I wanted a social music
site, a flash game site, a better attendance program, a better way to vote
rather than paper and then I googled, followed tutorials, inspected other
sites I liked and cobbled together enough code to make it all work.

------
toss3raw4y
I am a newly hired backend web dev for a post-IPO tech company. I was hired to
use python and java. I have never used either of these languages before I
started this job. My total comp is about $275k/yr. Prior to this, I have about
7 years of experience with ruby and some JS.

As long as you know a programming language, you can get a job like mine. Many
companies could careless what "tech stack" you know.

edit: fix years of experience

~~~
derision
where do you live that you make 275k/yr with 5yrs experience??

~~~
stevenwoo
I remember when iOS was in single digit versions someone with one year
experience got a job with a 200K salary a year in San Francisco, I think this
was circa 2010 - (it was a long time ago). He was a self taught programmer who
had started his own company that failed.

