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.
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.
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.
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.
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.
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...
[3] https://www.amazon.com/CSS-Definitive-Guide-Visual-Presentat...
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 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
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.
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.
https://www.indiehackers.com/products?minRevenue=2000 https://www.capterra.com/categories
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.)
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.
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.
Learning web dev(or programming in general) is very much like how babies learn to speak. You don’t have to learn all the alphabets, rules and grammars before you learn to speak. You can still observe what others are doing, copy it, reason about it, draw interesting patterns from it and continue your learnings from there.
Op: So go ahead, jump right in. Open your browser’s javascript console and start playing. Learn React and build small apps. Pick python and build servers. Not everything will intuitively click, but push regardless. You’ll eventually understand everything. After all, the more dots you collect, the more ways you can connect them!
I agree "Web dev" has a very long learning curve, but there is opportunity to be productive and helpful at many, many different points along that curve.
Like I said in my post, I don't really have advice to give. I don't know any short cuts to get from "I don't know anything but I'm willing to learn" to "I can convince a company to hire me full-time so I have a career". Companies have internships where they hire people who are just starting the learning curve, but that's generally unpaid (or very low-paid) and for very young future developers.
I consider myself very lucky to have taken the career path I've taken. It wasn't planned at all, and I don't know how I would have planned it.
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
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
But more important than the "tech stack" is the fundamentals, what is your background?
tl;dr it depends.
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.
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
I live in the bay area. I think my salary is average for my experience level. https://www.levels.fyi/