19 comments

[ 2.8 ms ] story [ 55.3 ms ] thread
I got out of web dev awhile ago and I have a CS degree. It's mostly mashed-together frameworks now. All of the CS type work is already done for you and after a certain point, it isn't challenging anymore, just tedious and mind-numbing. I suppose this happens at some point when an industry starts to mature. Technical expertise required becomes less and less over time.

Designers also took over the front-end industry with the likes of things like ember.js and turned it into a fashion show with zealotry sprinkled in.

Trying to disagree with someone in the community that supports these frameworks ends in an endless flame war.

I used to think like this but I leveled up and now my job is a lot of talking to people, planning things, helping, and just being present to help the org. My satisfaction with the job has gotten a lot better.
As a non-tech, a little tale: I had to study chaotic attractors in Uni Maths (I don't know why, I was a Chemistry major) in the late 80s. It was horrible, dry, loads of equations and not an image in sight. Fast forward to now and there are Mandelbrot websites! A picture is worth a thousand equations/lines of code.
Two reasons why you probably had to study those:

1. Chaos Theory was all the rage in the 80s. My dynamical systems prof said “you couldn’t go to a cocktail party without talking about it.” Clearly I’ve been going to the wrong cocktail parties. That’s also why you see it pop up in fictional works like Jurassic Park from that era.

2. Chaos gives rise to all sorts of chemistry relevant phenomena that can be modeled via statistical mechanics. The most obvious is thermodynamics but that’s because I’m not a chemist. I know people study chemical reactions from a stat mech perspective, and a lot of people doing stat mech are in the chemistry department. How you get the randomness in stat mech is by approximating a high-dimensional chaotic system with a low-dimensional one to render a problem tractable. In doing so, you lose the Markov property of the dynamics (your rates of change don’t just depend on the current state of the system but all previous states). Non-Markovian systems are very complicated, so the non-Markovian part of the dynamics gets replaced by random noise.

Totally wrong, don't take advice on life from professors unless you want to be one
The problem with statements like these is that the term 'CS' has become so wide as to be almost meaningless. It is perfectly possible to get a 'CS' degree by taking a lot of courses focusing on software design, software project management and UX and interaction design, all of which would be very useful as a web developer.

You can also get a 'CS' degree by taking a lot of math heavy theory course, or hardware and compiler courses, which would be much less useful when working as a web developer.

The advice I would give is that if you know you want to do web development and you want to get a CS degree, you're best served to keep your end goal in mind when choosing what courses (or even school) you decided to go for.

(comment deleted)
> get a 'CS' degree by taking a lot of courses focusing on software design, software project management and UX and interaction design, all of which would be very useful as a web developer.

Not part of the CS curriculum. As electives, sure.

At my university, these classes are all part of the CS program.
What country are you in? Historically for the various standards bodies (ACM comes to mind) that make US undergrad curriculum recommendations, the classes you list would have been electives. Maybe a current CS prof can weigh in on this.
They may be part of the course set, but they're probably not required or pathway classes.

I know, for the UCs at least, you would need to do some solid Java or C++ classwork, along with algorithms/data structures and machine language, at minimum. Unless things have changed drastically in the past few years, there's no way you're getting a CS degree at one of those universities coasting exclusively on UX, project management, interactivity theory, etc; those are electives to broaden your knowledgebase or specialize.

Edit - for instance, this is UCLA's core courseload for a CS BS:

https://catalog.registrar.ucla.edu/major/2022/computerscienc...

All of the aforementioned are required, even for a project management focus.

If

doing CS = learning all the intricacies of how modern software works under the hood in college

and

web development = writing common patterns with a few modifications

then yes, the prof is right. Modern web dev is mostly passing json around while using common patterns in frameworks like React. My cousin with zero college education was able to get an 80k a year job doing web dev after spending a year doing free bootcamps online and working a few open source projects.

In terms of formal definitions, a Computer Scientist is to a Programmer in the same way that a Mechanical Engineer is to a Mechanic.

In that regard, you would never ask a Mechanical Engineer to change your oil or your spark plugs in the same way you would never ask a Mechanic to design a new high-performance engine from scratch.

Software development is much the same. Computer Scientists (frequently also called Software Engineers) Are concerned with the _mathematical accuracy and precision_ of the software, whereas Programmers are concerned with the _usability and functionality_ of the software. In that regard, they are broadly analogous to my metaphor.

As a web developer, you are a Programmer. Your job is to make functional and usable software that meets requirements. While you can also dive into the structural and philosophical rigour of the code itself, that is not your job. Software Engineers have already trod this path by creating frameworks and patterns and broadly-applicable software development guidelines for you to leverage.

Many places of higher education, however, do make the unfortunate and highly intentional step of muddying the waters and bringing pretty much everything computer-related under the umbrella of “CS”, when most of it is definitely _not_ “CS”. They do so for marketing and income purposes, and in doing so, do a disservice to the industry.

I heard similar to "A computer is to computer science as a telescope is to astronomy". Dijkstra?
More interesting than the original statement is how many people seem to have a chip of their shoulder/take the statement as a personal insult.

The professor is correct in that the majority of Web developers could get by without much theoretical/academic background (and anecdotally, do get by without using those skills/knowledge much)

Maybe there's an industry-wide Dunning-Kruger effect?

If the quality of interns I get every year is anything to go by most College CS programs are still stuck in the 2000s era of web development. We usually get one or two that never heard of git, and it's rare that any of them know what a container is. They can tell me how to use tables to format a page though! Regardless, I know it's due to a lot of reasons, mainly that some of our local colleges are basically extended training programs for the nearby defense contractor, and they don't have an interest in web developers.
I disagree, you are future-proofing yourself as the software development industry has no relatively fixed career-path. What you are using today is very likely to evolve you need to be highly educated to adapt successfully.

As we know from Moore's Law, new tech will emerge and it would most likely be based on existing tech you should have learned from school.

You are going to be just as well-paid as a networking, hardware or general software engineer and it will look good on your CV.

Also this forum is littered with << after all these years in tech i feel like i know nothing >> career existential angst. So learning that stuff in school would avoid that issue.

Stay in school kids. ;)

I've stopped calling myself webdev because people seem to have a specific idea of that job. Like a mix of a wordpress pro and a nodejs junkie.

In reality web is just a platform I like to write software for. Not making my software less complex. Don't let yourself get confused with these phrases, just do what feels right

I wonder if those who routinely get pissed about the ongoing replacement of JavaScript with high level languages compiled into WebAssembly understand that this sentiment originates precisely from the fact that JavaScript code is typically (not always) one big fat hack.

But the internet and the web is fantastically important. It deserves the full power of higher level languages written by people who care about code correctness, type safety, security, and all of the things expected in a non-web application. The prof clearly doesn't get that. Unfortunately he has a lot of company.