Ask HN: Is web development still a viable career choice?

292 points by jessmc ↗ HN
Hello HNers,

I am an aspiring web developer. I have been self learning for around six months and still have not found a solid path to follow. Six months sounds like a lot but realistically it has been a few solid weeks of learning since it is a side hobby that I hope will turn into my career.

Is the Web Dev job market in a good enough state that I should risk more time and money?

Thanks for any advice…

245 comments

[ 9.8 ms ] story [ 249 ms ] thread
Yes of course. Define web dev tho. It's a broad field. There are plenty of gigs out there if you focus on JavaScript and it's frameworks, python, go, Ruby or node.

Python, go, c# and Java can open 'enterprise' doors for you.

Curious about Go in enterprise web development, have any widely established companies gone full in on Go? Like migrated from Java or other stacks. I'm mostly a C# / Python web developer at my current job, and I'm diving into Go. Might even start suggesting it for future projects to see if it gets approved once I feel reasonably proficient in Go that is.
Recently a headhunter told me a couple of large companies have switched departments entirely to Go, in my area, but only hire people who "are really into Go", meaning lots of experience and knowledge. The companies, iirc, were Monsanto (now Bayer) and Mastercard.
Go still seems pretty niche here. Even the companies you mention are still mostly using Java, but I do know of teams using Go on certain projects at those places.
(comment deleted)
By not taking the formal degree path, you've chosen the harder option but it's not impossible! Look to startups and freelance work until you build up a track record and preferably a portfolio.
Yup. People hire people who can solve problems that create business value. Web development is and will continue to be a huge source of business value.
While the terms are interchangeable I would focus your efforts on becoming a Software Engineer (with a specialization in Front End).

I say this in an era of bootcamp grads, online micro degrees Udemy courses etc. where you can now study and 'become a web developer in 3 months etc.'.

It's true, you likely can learn enough about Javascript / frameworks / etc to build web applications in that period of time, but your overall knowledge and ability to draw inferences between web dev and other areas of CS will be severely lacking.

This isn't to poo-poo your path (I myself am a bootcamp grad), more hindsight as part of my journey.

What you are doing now is what most would likely call a 'top-down' path. Build some applications, work on some projects, learn one language all for the sake of building a portfolio. This is great! But it is only a piece of the puzzle. I would highly suggest you sprinkle in some 'bottom-up' learning as well (taking an algorithms class, or something fundamental to CS) and trying to draw the connections between what you are learning in the two domains.

I know that was a bit of rambling so to more directly answer your questions and concerns:

Q: "I have been self-learning for around six months and still have not found a solid path to follow." A: It is likely that self-learning is not cutting it for you. It sounds to me like you need structure. This could take the form of a bootcamp or micro degree or something more involved (slower) and academic... like a bachelors degree with projects mixed in. All have their advantages and disadvantages. At a high level:

- A good bootcamp will require you to be there in person, with fellow students who are on the same path. You will have structured learning and so will meander less. You will leave a good bootcamp having gotten out what you put in (ie if you slacked off they will not hold your hand) but may land a job. You will have spent a good chunk of money and even if you land a job you will have to fill in a lot of gaps.

- Micro degrees (like from Udemy) same caveats as the bootcamp apply but with swings. Will likely be far cheaper, but with less support, and likely less guaranteed outcomes. I haven't looked in a while but it's rare that I find people who have landed jobs doing these programs, while I can find multiple 'good' bootcamp grads who end up at many 'top' tech companies.

- If you go the University route you will have to amp everything up to the nth degree. You will spend more time + money. The effort that you put in will also matter A LOT (ie from what I've heard some people do the bare minimum CS work to pass classes, but never do interesting projects, push for good internships etc so they graduate and can't land jobs). It, however, my belief that if done right this can be the best possible option. A lot of bootcampers severely underestimate the importance of foundational CS concepts, these will be the first people in trouble during a recession or if there is a major technology shift.

Q: "Six months sounds like a lot but realistically it has been a few solid weeks of learning..." A: Six months is not a lot of time to learn almost anything. Let alone a year, or two etc. Especially if that learning has been very undirected (it sounds like you are meandering a lot). I know you are in a rush to be gainfully employed in a new career, but you shouldn't emphasize the time you've spent so much. The best engineers I've worked with are 15+ years into their careers and still think they are idiots.

Find a more structure path for learning, and don't beat yourself up over the time you're taking to learn anything. Good learning and understanding takes time.

Q: "Is the Web Dev job market in a good enough state that I should risk more time and money?" A: Yes, the market is still quite good for anything engineering related. Frontend, Fullstack, Backend you name it. Companies need smart people who can code...

Yes it is. You can use job market pricing to work out demand surplus to make yourself feel confident you’re investing in something worthwhile .

Email in profile if you want to know more.

As a sibling commenter said, define web developer first.

I can see two viable, yet very different definitions:

1. Frontend web engineer: Versed in HTML, CSS, modern Javascript libraries such as React, Vue, Angular. This is a programming role first and foremost, better paying than #2, and what I would suggest focusing on.

2. "Classic web developer": Versed in HTML, CSS and just enough JS/jQuery. Knows the inside out of some CMS such as Wordpress. Not recommended, yet there are a TON of small companies and clients that just need a small website or ecommerce site. A friend of mine fits this role, I wouldn't define him a programmer by any stretch of the word, yet makes a living adapting Wordpress or Magento into functional websites.

I really like how you defined these roles. #1 pays more these days and startups and sf companies want actual front end engineers. But there is still a world of work out there for the classic web developer or "web designer" as we used to call them. In every town and city you have small agencies and web shops building a range of smb to mid size sites. Squarespace, wix and some wordpress plugins are chewing into this market thou.
How about "web developer who thinks heavy client-side frameworks are a bad idea"?
It's all about using the correct tool for the job.
You can think however you wish - and I agree with you - but if you want to be competitive in the modern job market as a web developer, you have to be fluent in client side frameworks.
I agree that having that tool in your toolbelt is important - it's not want the parent post was saying. He was arguing that you're either a Wordpress "not really programmer" or you're a front-end "big-framework-first" developer.

As someone who's neither I rather disagree.

I don't know any front end frameworks either. I know Javascript, Bootstrap, and HandleBarsJs for template and I have done web pages knowing only those.

But no one would ever hire me as a "front end developer" or a "full stack developer" without knowing one.

That is basically what he lists under number 2, "classic web developer".
Not necessarily, since someone would need to build the server backend for anything more complex than a static website.

As other people have noted, classifying "web developer" as "frontend web developer" is a bit restrictive.

I'd go so far as to question the experience of someone who doesn't see value in React or frameworks similar to it for web applications. There's a large contingent that advocates for bare-bones JS development, but minimalism for the sake of it is not worthwhile.

It's all patchwork on top of JavaScript, though. Another programming language like Elm, or something that compiles to WebAssembly, may be another option to consider.

> minimalism for the sake of it is not worthwhile

It is entirely possible to dislike React for being React, rather than for the fact that it's not minimalism. I have to work with React, and it's a constant source of pain for me.

What do you dislike not just about React, but categorically about that style of frontend development in general? Framework specific distaste I understand, but general philosophy wise I don't.
Minimalism for the sake of good battery life and low website latency is quite worthwhile, though.
This depends:

If you're advocating for traditional server-rendered websites (perhaps with very small bits of interactivity via JS), then you're #3: A backend developer.

If you're suggesting building a complex client-side app, just without a framework, then I reckon that this is just a variant of #1. But you'd better be a very experienced developer, or your code is going to be a complete mess. This isn't really a viable path for a new developer just starting out.

If your projects are simple enough that using a framework is a bad idea it's a waste of money to hire the #1 types.
It's this binary distinction I'm objecting to. Is the choice really "Wordpress" or "React"? There's a huge number of projects that don't fit either of these templates very well. I'd still argue that people building web "sites" (which can still be way beyond the complexity sweet spot for Wordpress) rather than web "apps" should not be building SPAs.
Define "heavy." Right now I have react, material-ui and a handful of libraries in an application with an initial load (through main entry point) under 80k gzipped, and under 300k total load (1.6mb in memory, which includes app configuration data) when you navigate through to an area with graphs. This also includes SVG manipulation and image overlays.

In terms of what is being done, I'm far more judicious with removing unnecessary libraries. I've followed up other developers removing any number of modules in favor of hand-crafting from baseline modules. Since it's JSS it includes semi-dynamic styling that is based on async loaded modules. ex: if you don't go onto a chart/graph page, you don't get those modules.

It really depends on your tooling, knowledge and what your needs are. IMHO it's far better than typical jquery + bootstrap + bootstrap extensions that many of those who look down on client-side frameworks lean towards.

You do not mention why you think number 1 would be better to focus on. There are more number 2 jobs available, depending on your location, there might only be number 2 jobs available. These jobs also require less knowledge and training and therefore can be attained more easily. I see a lot of advantages for the number 2 jobs for OP.
It is weird that you consider frontend frameworks programming but CMS frameworks might not be. You could fudge your way through a React tutorial just as much as someone could a Magento tutorial. It's the person not the tools that make you a programmer.

Magento is a fairly complex platform too. It uses lots of very formal software engineering paradigms joined together in a well thought out framework. I would consider it a bit more traditional programming than Vue or React, and if I had a general programming role to fill I would sooner hire a Magento only backend dev than a React only dev. React/Vue are very specialized frontend tools and working with themm doesn't translate all that well to general programming.

I might agree on the reality, but the market rate of pay for React programmers is considerably higher than that for Magento, whether this is fair or well advised or not.
I can't argue there. Career wise, React is a good choice. It is a really cool piece of technology too. I have been very resistant to the new hat frontend frameworks, mostly because I had a strong methodology for frontend UI already and there was no sense throwing it away. But even I put React in my toolbelt recently.
React was the first front end framework that felt "right" to me. Of course, I was a fan of templating with E4X (which never gained support outside Adobe and Mozilla).
Bit elitist - the trouble with 1 is they can produce pretty one page sites which then suck when crawled by search engines and 90% of websites out there depend on search.
It's realist. One pays better than the other.
If you're hiring #1s to build static web pages you're lightning money on fire.
If you're hiring #1s to build SPAs, when all you need is some static pages, you'd also be lighting money on fire.
#2 is still in demand and there are a ton of boutqiue-type firms that make good money by keeping some old Typo3 CMS site alive. However, from a developer perspective, you should aim for #1. It pays more and in worst case you can downgrade to #2 rather easily .
There's also a third definition: 3. Web backend developer, who knows the inside out of some framework or language such as Laravel/PHP, Django/Python, Rails/Ruby, or node/ECMAScript, and focuses on writing server-side logic for the frontend guy to consume. Also look at C# or Java if you want to get into the enterprise market.

You're not going to find this kind of developer in a run-of-the-mill WordPress shop. You probably won't find them in the latest startup that is all on the serverless bandwagon, either. But there are quite a few of backend positions in larger organizations where you might coincidentally find better pay and job security as well. Bonus points if you're well versed in security, or know how to talk to the database guys over there.

If you're trying to categorize web developers then you really need to mention back-end development as well.

3. Full-stack web developer.

4. Back-end web developer.

I consider myself a web developer (that's how I introduce myself), but my definition would be:

3. HTML, React/Vue (and related libraries like redux/vuex), CSS, SCSS, JS (including ES6+), JSON, REST, Node.js, Webpack, Babel, Python/Java/.Net/PHP/etc., SQL, Postgres/MySQL/etc. DDL/DML, Git/SVN/etc., Apache/NGINX/etc., HTTP/HTTPS, Let's Encrypt, Linux related technologies (SSH, BASH, etc.), etc.

I personally can't stand doing number 2, and I do as little of number 1 as is necessary these days, but that said...

there is a ton of room for number two still. Maybe not in the heart of Silicon Valley, but other major cities—sure. There are a ton of businesses operating using WordPress as their primary platform because it's relatively easy for non-technical or semi-technical users to wrap their heads around.

Here in Toronto there are a lot of thriving WordPress/PHP-stack shops that service those businesses so that they don't have to hire their own web team. I would never want to work with one because I personally really don't like working with that stuff. 100-foot pole sort of situation— but they're there, and they pay okay for the local market.

Web dev is a better career choice than ever. Services are developed enough that you can just connect to one another without having to custom build anything. Frameworks have become complex, creating a kind of entry barrier where dedicated developers can make good money. You can also go deeper down the optimization path if you want, building things like better compression systems or more efficient ways of pulling information.
Solving [business] problems is a viable career choice.

Web development could be solving someone's essential business problem or totally non-essential for someone else.

The key is to find the customer for whom whatever you're doing will solve essential business problem.

Quite often web development is exactly what customer needs but he won't call it this way. He won't use this wording. He won't look for web developer. He won't pay for web developer.

But if you approach customer by speaking customer's language and showing customer how you can solve his problem - the result could be way more win-win and productive.

You won't hire an expert in "connecting wooden boards with nails" but you'll more likely to hire an expert in "building houses" to build your own house.

That's an idea.

This is just bypassing OP's question. You could similarly ask if plumbing, plastering or tiling is still a viable career choice in construction, or whether one should focus on general carpentry.

You'd then try to work on projects where your construction specialty is seen to be more valuable than not, that goes to your comment. But that's an entirety different question than whether a specialty should be pursued, and if so what specialty.

E.g. in this case whether it's still a good move for a new developer to start out his career by focusing on web dev v.s. say native mobile dev, or mainframe development or whatever.

For whatever it's worth, their answer was pretty close to my immediate reaction when I saw the question. Maybe another way of phrasing the answer is that no, I don't think 'Web Dev' is a viable career option. This becomes even more true when viewed on a time scale of 10, 20, 30 years. (Tying to a specific technology brings the horizon in even further... Web Dev 20 years ago was CGI scripts, 10 years ago it was server-side rendering frameworks, these days it's SPA's...)

What I do think is that 'Web Dev' might be a viable first step within a career. It's a good way to get yourself into a spot where you're exposed to signifiant problems, and if you're lucky, it will also give you exposure to people that can help you along, as you develop your career. (But it's important to be intentional about both.)

At the very least, that's how I answer then question when asked in person... focus on the specific tech as a tool in the short-term, and then focus on effectively solving problems people care about. It's better for them, and most likely, better for your own personal career development.

(Edit: Some of this may just be my own perspective... My professional work has included everything ranging from small scale embedded programming to large scale clustered web apps and platform development. I'm grateful for never having thought of myself as a 'web dev', even though it is something I'm capable of.)

Dunno, I started out with a lot of perl-cgi, and now do mostly react/redux/material-ui on the front end... I've picked up a lot of backend stuff over the years. SQL/PostgreSQL/Firebird/DB2/Oracle/mySQL, mongo, aws, azure, rethinkdb, rabbitmq, etc... The key is to not rest and constantly be learning/growing. That includes line of business knowledge.

I love this kind of work. Writing learning software for airplane systems. Accounting and auditing systems for fortune 100. Kiosk+POS for water distribution platforms. Security software. Election services software... It's been an amazing 24 years, and I have absolutely every intention to keep learning/working until I die.

I find that a lot of people just think that "web dev" stops at the browser.

Since now the web interface is ubiquitous everything could be labelled as "web dev", but for me your examples are general "software dev".
OP did not ask if they should pursue “web dev” vs “general/other dev”. That’s an assumption you’re making. I read this as “web dev” vs “do something else entirely” and in that light, the parent response is entirely appropriate.

Tangent: “general carpentry” is not a superset of plumbing/tiling/plastering. Carpentry is its own skill related to working with wood and similar products. Maybe you meant general contracting? Although that’s still not actually a superset and you won’t find that most general contractors are licensed for plumbing and electric work.

You are making an assumption here they want to freelance or take a consulting position. There are plenty of web development positions available on teams or at agencies that find the customers for you. There is no need for someone just learning web development to go straight into consulting work. In fact, I'd highly recommend against it. You'll get the most out of working with other developers and improving your skills before you go out on your own (if you ever go out on your own).

Edit: To summarize, not every web developer needs to be an entrepreneur.

> In fact, I'd highly recommend against it. You'll get the most out of working with other developers and improving your skills before you go out on your own (if you ever go out on your own).

I often wonder at the whole "gotta be a contractor" mentality. I understand there's more money there, but I think that there's a huge value in learning to be a team player where you're building something you are actually invested in, if even for only a 1-2 year period. As a contractor, the skills you build and lessons you learn are important, but they aren't as concrete as living and dying with a particular team and a particular solution for an extended period. In addition, I feel like you are more likely to get vital mentorship at the critical early part of your career as a member of the team instead of a replaceable contractor cog.

If anything it seems that to be successful at freelancing you need to specialize even more compared to a traditional job. Otherwise, your skills would become a commodity in a market saturated with "web developers".
> Solving [business] problems is a viable career choice.

This is spot on, whether you are free-lancing or working as an employee in a big organization.

More generally, software development benefits from a large flow of money precisely because, whether directly or indirectly, it enables businesses to accomplish things in a {faster, more efficient, cheaper} way. When career planning, always remember where the money comes.

Interacting with an end-user is not a "solved problem" that has been commoditized. There are still a lot of human touch, optimizations, edge cases and performance issues that are actively being worked on and have not been formalized and standardized in ubiquitous ways for all industries. Sure framework XYZ may get you 80% there but then there are specific UX issues that you will have to delve in, and that's where the real fun begins.

Web dev is huge and probably will be for the foreseeable future - as long as businesses need custom solutions and software, it will probably be web based. Businesses will always need custom software.

But there are a lot of people doing this work. You have to compete with them. That will take a lot more work.

>Six months sounds like a lot

No, it does not. Learning new skill from scratch takes time. You're trying to master 2 new, orthogonal, in some sense contradictory skills: web development, and self-promotion (to find your place in "the job market"). Take a deep breath.

Considering how little I knew after a 4-year Bachelor's degree, 6 months of nights and weekends is insignificant.
I don't think it's directly comparable.

There's a difference, and not insignificant, between "learning everything for CS degree" vs "learning what you need to get hired as a web dev".

But I'll agree that 6 months is not that much time in the "learn new career skills and find a job" timeline. I spent around 18 months of nights/weekend practice and learning, followed by 3 months of interview prep before I found a job and that was with a big spoonful of luck.

To OP - this is a marathon, not a sprint. Get used to learning things on your own, you will be doing it for the rest of your career if you make the switch.

> Get used to learning things on your own, you will be doing it for the rest of your career if you make the switch.

Cannot second this enough. As a developer, there will always be new tools and technology. More room to grow into adjacent development. And more line of business knowledge to gain. I can't think of any other field, that has more lifetime learning involved in it.

To be fair, considering how much actual programming I did in a 3 year Bachelor's degree, 6 months of learning programming could be plenty significant.

Which isn't to say the non-programming stuff in my degree was irrelevant, but you don't need to spend 4 years full time studying to learn relevant skills for a junior web developer job, and you could easily learn them in less time outside of a degree.

My brother-in-law was doing a Master's in Chemistry. In May 2018 he knew next to nothing about CS. In November 2018, he landed a junior data scientist position at a prestigious healthcare company.

Granted, he's very smart and basically coded all day for 6 months, but I'd say it is possible for a motivated individual.

I always say that motivation and self-drive account for far more in terms of success with software development than anything else. In the end, it's the guys that figure stuff out, explore, research on their own that you want to keep around.
Think about it this way, its less about learning everything you need to know, its learning enough about learning that you can learn the minimum and then learn even more once you pass the bar.
Anecdotal data point, it took me a little over 3 years of nights and weekend learning to go from zero programming knowledge to a full-fledged coding job. That included interim positions where I was using code to solve problems (VBA, R, and SQL especially) but was not a professional coder.
It is viable that's why they are investing in browsers. Hahahha
Just because politics aren't investing in roads doesn't mean that selling cars stops being a viable business model.
Who is "they" and how did you get the impression that they are not investing in browsers?
Yes, it is. I spent 8 months studying web development and I am now one year and a half in on my first software development job. I can see clearly tons of opportunities in the future.

My 8 months of studying were full-time studying (freeCodeCamp and plenty of small projects). 6-8 hours every weekday.

Not sure what you mean about "solid path", but you have to have focus.

edit: these are my tips for becoming a frontend web developer, which was my path.

First, learn the essentials of CSS - don't aim to be a CSS wizard because that won't help you get your first job on good jobs (the ones that are not on agencies where your sole job is to transform photoshop images in HTML).

The most basic and true advice is to focus on learning Javascript properly and deeply. Read books (EloquentJS for starters is a good one), read documentation, watch videos (Fun Fun Functions youtube channel is a nice one), practice on code-on-the-browser platforms (I am a huge fan of freeCodeCamp) and create some projects of your head using Javascript only.

At least 3 (full-time) months on Javascript only. Then, move on to focus on React, because that's where all the jobs are going. And I say this being hired to work with Ember on my first job (and I enjoy Ember), but pragmatically, React is the way to go (assuming you have learned Javascript properly before).

Also, pay attention to good software development practices (The Pragmatic Programmer is a good one) that are not about language syntax (e.g. coherent indentation of your code, good variable and method naming, how to make code more readable and maintainable). Become what in the United States they call "an engineer" with certain glamour on it. You don't need to buy the hype that software engineers are a special breed of people superior to all others, but do make an effort to learn best practices, design patterns, clean code and all that.

Don't get into any tech discussions in forums, flamewars, don't take sides, etc. This early in your career you should focus and be pragmatic.

Summary: Learn the essentials of HTML+CSS. Focus first on Javascript, then on React. Create your own projects and learn what good development practices you should use on them.

I wrote a few blog posts of my learning and career change to web development, you might find them helpful: https://rodrigohgpontes.github.io/

Don't focues your education on single frameworks, take your time to learn the basics. For example:

- Don't just learn Django, learn Python

- Don't focus on React, Vue, etc. learn JavaScript

Those skills will last longer and make it easier to transition into other roles if front-end doesn't feel right for you at any point in the future.

In theory I agree. But learning something just well enough to get your foot in the door as a junior will have immediate rewards and then you can learn more deeply.
Absolutely, I agree. But don't get lazy then and really take the time to learn the basics. Aside from all the webdev focused MOOCs and courses on the internet there is plenty of stuff about Computer Science theory and whatnot available, so the opportunity is there.
I’m your prototypical computer geek - started programming in the mid 80s in middle school in Basic and assembly language, got a CS degree, bit twiddled in C and C++ for over a decade, but my experience over the last decade, makes me doubt the need of most developers to need to focus on computer science.

Most developers will never need to solve “hard problems”. They will be working on yet another software as a service CRUD app or a bespoke line of business app that will never see the light of day outside of their organization.

I’ve found studying architecture, soft skills, and my business courses (before I dropped out of graduate school) to be much more helpful in my career.

> But don't get lazy then and really take the time to learn the basics.

Here was a typical (not verbatim) exchange when I was a Front-End Architect interviewing candidates for my team back in 2012 or so:

---

Q: Tell me about your experience with JavaScript.

A: I know JavaScript because I've been working in jQuery for a year.

---

Further questions would isolate the fact that they've _only_ used jQuery. It was depressing, really.

I mentor developers to really strive to learn and understand the fundamentals precisely to stop propagating the idea that libraries and frameworks > fundamentals. Problem is, I've already started to witness history repeating itself when interviewing candidates and getting the equivalent answer above--but with "React" in its place.

If that is a comparison question to, say mobile development, a lot of people dont install apps until it becomes their mainstream. So yes, web is widely there but be warned, famous phrase "making a website" is tip of the iceberg and I seriously mean it.
Regarding getting actual work, join local meetups, talk to people that are in the business. If you can get them to talk about their work, learn from them, get better through them and get some connections, you might have a path into the business down the road. Sitting at your computer learning is not the only thing you can do to learn more about this.
I'm inclined to say yes but obviously there are many factors: where you live, where you are willing to relocating, sometimes your age, your intelligence. Do you actually like the field? I think it's a good career most often than not but it's not always easy.
I understand you, when you lack of money, it will devastate your faith. The path maybe hard, but stick to learn will worth it.
Yes, the job market is in a fine state. If you're competent, you won't have a problem.

You don't need to spend a penny (or too much time) to learn web development if you put in the effort. Mozilla Developer Network [0] is what I recommend as a learning resource. I'd advise reading the JavaScript Guide if you have previous experience; if you don't, there's stuff for beginners there to. Learning some HTML & CSS will be most helpful.

I'd advise that after you learn JavaScript, you learn React [1]. Take the tutorial. I'd recommend watching one of the React talks to explain to you what makes React useful.

I'd advise you prefer learning Node.js [2] next, and it's probably a better choice than learning PHP or Ruby for the purpose of server-side web development. Perhaps take a look at TypeScript after.

To become a good programmer, branching out is helpful. A requirement to be a good programmer is that you have some basic level of CS knowledge (there's many free ways to study CS). Learning some C/C++/C#/Java/Rust/Go is also good, but this is not a priority to getting your initial webdev jobs. This isn't necessarily going to be useful in getting a job directly, but improving as a programmer will help indirectly.

HTML & CSS mastery is a lot less important for a web developer (as opposed to a web designer) than JavaScript. You don't need to memorize everything, but you should be able to get by with Mozilla Developer Network open for reference.

Other resources to check out: Eloquent JavaScript /r/JavaScript Free Code Camp javascript.info

[0] https://developer.mozilla.org/en-US/docs/Web/JavaScript [1] https://reactjs.org/ [2] https://nodejs.org/en/

I am a web developer and I get contacted a few times a week on LinkedIn about switching jobs. I assure you, if you are a web developer you will not go job less no matter where you live unless you're doing something very wrong.
I'm an electronic engineer turned software engineer and have been doing this for decades. I am in the Midwest USA, a large city but not a high tech one.

I used to be contacted by headhunters at least once a week. Nowadays, I hear from Indeed and LinkedIn that often. I have been to their offices for interviews and assured they would find me a job quick.

While I have risen through the ranks over the years to project manager and a prolific company and, eventually, ran my own profitable company, I have never, ever been sent on an interview anywhere by any of the operations I mentioned above.

Ok yeah, I guess that is probably a common story. I have though and I would assume that is also common :)
most computer science degree takes 3 to 5 years. They are general enough so that you can pick up almost any specialty in a few months after that, but if you're starting both web dev AND computer programming, 6 months is absolutely nothing.

Remember software dev is not about assembling big pieces of codes given in a framework, it's about logic / control flow, data structure, architecture. Once you understand all that, you don't consider yourself a "web dev" or a "mobile app dev" anymore, but just a software developper.

Yes. There was a story on the front page also, just a couple of days ago

Start with a Website, Not a Mobile App https://news.ycombinator.com/item?id=18824993

Did you read that article? They actually say when to NOT do a website first.

I found their web-first arguments mostly unconvincing. And kinda hand-wavy on certain points. Two relevant points, rapid MVP development and instant updating of your app I have to agree with. But the idea that desktop software pricing translates to people being willing to pay more for a website is a crock. People think websites should be free. It’s not just users who think that. I have to educate my clients why their business app that needs a login, data storage and access controls is not “just a website” and why they have to pay me significantly more to make it happen.

Software development is and will be a good career choice for the foreseeable future (until software starts writing itself, which is not likely to happen any time soon). Web development is just a facet of it. If you spend time understanding fundamentals of software development you will not have wasted your time.

Two more interesting questions you should be asking yourself are: 1. Do you love writing sofware, and 2. Are you good at it?

If the answer is yes to both then you're on the right track. If not, you could have a problem down the road.