Computer Science does not involve code, if you start coding, then it's programming and not computer science anymore. You can't compare the entire domain to a part of the domain.
Very well written post otherwise!
I've been saying for years that programming isn't a science. In fact, what we call "computer science" is a complete misnomer - it's an art.
Yet, I think I'll be expanding that explanation a bit more now, because you are absolutely correct. "Computer science" is actually a branch of mathematics involving the study of algorithms; it was founded by Ada Lovelace, and formalized as a discipline out of the math and physics department at MIT during the genesis of computing. Very few people actually study computer science.
In fact, I'd even go as far as to say that most undergraduate degrees in Computer Science [ASCS/AACS/BSCS/BACS] actually aren't computer science at all. They all touch on computer science, but they're mostly programming.
Agreed. Also don't forget about the roots in philosophy (logic) and linguistics (grammar) :-)
I was lucky enough that I studied CS at a time while it was not yet fully streamlined into a process of creating an army of specialized programmers ready to join the workforce. That was about to change though and it was noticeable at the time. Collaboration with and funding through big companies kind of diluted everything. For instance my university sacrificed a prestigious German degree for a watered down Bachelor's degree that was on the one hand internationally recognized and standardized. But on the other hand probably only worth a third of the original degree when measured against an average first year salary. Which is also of course in the best interest of big companies. Quicker education process, cheaper labor.
Personally I'm OK with gaining knowledge just for the sake of knowledge. It's often times decades (sometimes hundreds) of years later when humanity finds some practical application for crazy heady things that had no other purpose than being explored in someone's imagination at some point in time. Case in point Ada Lovelace you mention. She had no actual hardware to work with but the imagination for programming one. I think that's pretty awesome :-D
I have to admit I just read the article because I wondered how anyone could possibly think WebDev and CS are the same.
CS (or for me, coming from Germany "Informatik") comprises so many fields e.g. theoretical CS (graphs, formal languages) , technical CS (boolean algebra),... up to specialized fields like robotics, AI, computer networks and so on, that IMHO there's no way to put CS and WebDev (or Software Development) on the same level.
"Web Development !== Computer Science" or "Programming !== Computer Science" ?
There are both theoretical and practical disciplines within Computer Science. It depends on your definition. If you mean Computer Science is only theory, you would be right. If you mean that web development most of the time is not as complex, and therefore not Computer Science, as say AI then you are wrong.
I can create a neural network in 3 lines of code in Python, about the same as writing an event handler for a button click. I don't have to know all the internals of a neural network to use it. It all comes down to frameworks. So does that mean only frameworks are Computer Science worthy?
"When's the last time you really had to do complex math in web development?" When was the last time you had to do complex math in anything? Last I did complex math was in animation code, but the math would be the same no matter the language or platform.
Hmm I am actually not sure how to define the terms correctly. I think a better explaination is to depict the whole spectrum.
Web developments deals with business logic most of the time. You still need to concern performance but it is uncommon to worry about it. On the other hand, you focus more on delivering in a timely manner and keep your codebase maintainable over time.
Then as a backend web dev, when you progress, you will encounter issues with scaling your data store. Now you may understand a thing or two about db index, sharding, replica etc. Just enough to roll out your application. Maybe You have heard of raft concensus, blockchain, machine learning, all the fancy stuffs that you treat as blackbox and build your app on top of it. When shit happens, you struggle to figure out why because your blackbox is broken and you need some black magician to fix it.
One day you realize you have hit the limit. What sounds crazy before now looks remotely possible. You wonder if you can configure or even customize a piece of existing software. And you realize inside your db there are so much work with complex math and formal proof. Index is a tradeoff and you exactly know in which case it does not help and may even does more harm. You cannot just jump straight into code but have to read a whitepaper first to grasp the concept. Crazy shit like how to decompose a signal (say, image pixels) into discrete frequencies.
Finally you desire to make your own new database with some new design to fit a specific use case. Nobody has that idea before nor such problem is so new that people havent studied it yet.
Where do you draw a line to separate a web programmer, an engineer and a computer scientist? You can probably tell now. The last phase is what we call of research nature and is academically most demanding, the work has to be original and fundamental. Yet the one who earn the best salary are those who practice what in the 2nd last phase. They apply the latest research work to solve the most complex business problems.
I was feeling lost for a while because I was expecting programming course like web dev in my CS degree. When I earned it I felt like I didn't deserve it because I didn't know any frameworks, most recent web dev trends, advanced SQL statements and what not. I wish I had read this post back then.
THANK YOU. I get rather bothered by the way people use "web development", computer science" and "software development" interchangeably. They are all related (to one degree or another), but each have unique meanings, and confusing them can lead to real-world problems.
The company that I work for, Tallyfy.com, just hired an intern who is a CS major from the top university in the area. He wants to get into web software product management but did not even know about HTTP or JSON. These did not take terribly long for him to understand due to his education and the beauty of YouTube, but I was surprised that none of his classes taught him what we would consider basics despite being in his last year of school.
I do not have a computer related degree and am largely self-taught, so this makes me wonder about a few things:
Is this typically the experience of CS grads? And if so, what have other CS grads done to bridge the gap?
What have other web tech companies done to help new CS grads get up to speed quickly?
I study Computer Engineering and even though it's technically not CS, I understand what you're saying about your CS intern.
This is what actually scares me when I'll get my degree, because even though I know how to program in C/C++, JS, PHP and Java, we didn't really applied any of that stuff to real-world problems.
I had a small 60-hours course for web development that focused more on the good and bad practices of the craft (we used PHP 5.7, JS 1.6 and DOM handling.. like, "innerHtml" was a no-no). Funny enough, with that course you wouldn't know what a web API is or even how the internet works. The scope was to build a small website with basic client/server interactions using vanilla old-school languages.
Most of the stuff I know I learned it here or trying stuff by myself.
I have friends that are taking a degree in "pure" CS and they don't have a single course on web development, but instead focus on algorithms efficiency, hardcore C and Java programming, architectures and programming languages theory using CAML and other weird stuff that even I don't really understand (the main difference with my degree is that we have more hardware-based knowledge, digital electronics and stuff like that).
Hope this answered your question.
A well written post and was happy to see someone take this up.
Once again, well written.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.