Computer science has always been separate from software engineering.
In my mind:
- Computer science: Theoretical. Deals with algorithms, complexity and such.
- Software engineering: Practical. Deals with whatever PM has written in Jira tickets.
Both are important in their own right.
Computer science is basically the study of software engineering, because computer engineering means hardware, which has grown into a separate discipline that computer science only touches on
Programming is writing code for the ticket, architecture is designing the system that gets written into tickets, and software development is the whole process
But all these disciplines grew faster than language, so really the titles are whatever you want them to be
Computer science is basically the study of software engineering
That’s not at all true if you ask me. Computer science is the study of data and computation, on a theoretical level. Software engineering is not theoretical at all, but very practical.
Here’s the thing…all of computer science is based on the practical, and software engineering is based on the theoretical
The data and computation being studied? We made it up. We don’t need to do it any particular way, we’re playing with ideas to interface to computers. Computers we made up too
Software engineering is using the lessons we learned by studying how others did things and how it works out in practice
We teach students computer science to make them into software engineers. You can still study how things are done as a separate career, but the two ideas are like an ouroboros. It’s a cycle of creation and analysis
all of computer science is based on the practical
I don’t understand this at all. Computer science is based on theoretical foundations that were developed way before any actual computer existed. This goes back more than 100 years.
We teach students computer science to make them into software engineers.
That’s only true if you studied a very practically-oriented education. Such educations are usually called “Software engineering” rather than “Computer Science”.
As a computer science graduate myself, my university definitely did not try to make me into a software engineer. It was very theoretical, with a clear focus on further research if that was what you wanted to pursue. You could get through the education quite okay and only ever write very little actual code. It was the maths that was the harder part to write.
I studied computer science as well and I share this sentiment.
Although I’m happy about my degree because I’ve learned many things I would otherwise miss, I also wish my degree prepared me more for the industry. There’s a disconnect between academia and the industry.
What I’m mostly concerned with is how to build software that can grow with 10ish team members. I find it hard to find good academic sources on this matter.
It’s methodology. Basically what you need is the correct amount of process - you can pick agile or scrum or whatever, and then you follow it to the amount that it makes sense. If you over-adhere to it, it slows things down to a crawl
Once you get up to 10 team members, you need to do things like feature branches, code reviews, and rigid style. You should also add in tests… At 10 you don’t have to have full coverage, but you need to be able to exercise your system enough to know when something breaks immediately
You also need ownership. You need one primary person who is the heart and soul of the code base, and they’re going to be the one who knows the whole thing and gives everyone direction. You can spin off another team at solid interface points, like an API or a plug in system, but you need one person who owns the core system and holds the code debt back
You also can add in code pipelines, enforce docstrings to generate documentation, you need diagrams so people understand how things flow through the system, etc
Ultimately, a lot of it comes down to mentorship. You have to be very hands on teaching people how the code works, and really hold their hand until they gain proficiency over an area. Then let them be secondary owners over that part of the symptom… And you have to make sure to stick them in a place where they’ll be a benefit - as you grow in numbers, it gets easier for each new person to be a drain on progress.
I’m not sure about academic sources…I dropped a lot of keywords in there that might help search, but ultimately it’s about team culture. You can’t just shove it all in at once, you have to slowly add new processes and make sure everyone is moving in the same direction
I know these concepts - after working in the industry for a while. Computer science education barely touched these topics. One professor was passionate enough to hint at test driven development, but that’s about it.
I’m a comp science web designer. Because of my dyslexia. I never could get hired as a real dev. Ai does a bit of the cleaning up I have trouble with and helps me speed up my development. I appreciate it for that. But you still need to know the code for the programs to work. There is still a need for humans. So far. But for how much longer?
But for how much longer?
How much longer will we need people who understand how things work?
Well I drive a car and I do know how it works, but I don’t need to.
One day the AI will be a powerful tool for making software, not 100% of all software, but enough to make those cheap stuffs like most websites for example, laying off lots of those people doing it today IMO.
I agree. But I mean, WordPress and SquareSpace already did that for about 98% of web traffic. It was a big part of the .Com Boom and Bust.
But we keep coming up with new stuff to build web software for, and there’s still plenty of web developer jobs. And there’s still so so many many shit websites.
Today’s AI can only remix, not do the new stuff. Maybe it’ll get good enough to tackle the novel new stuff, someday. I doubt I’ll live to see it, if it happens.
The root of my crankiness is: If we’re about to no longer need developers, I should be seeing widespread websites whose search, cart and checkout actually work correctly every time.
The snake oil salesmen are bragging that the era of carpentry has ended, from on top of a wooden stage that is falling to pieces with each step.
I would say, it can only get better, but it can really go both ways from here.
I think it depends on who you ask. Some people who “vibe code” definitely use it as a crutch for a lack of understanding. But others (often more senior) tend to use it as just a really really complex auto-complete. Mostly it generates chunks and patterns but the ideas and how those pieces connect come from the dev
I feel like not knowing what you’re doing is a critical piece of the vibe coding definition tho. If a sr developer is using AI, understands the code generated, and can manipulate it in a secure, industry standard way, then that’s just a developer.
Vibe coding is shit, and will always be shit no matter who is doing it.
Totally disagree. Your position is way too overly simplistic and naive.
An engineer only builds a bridge as strong as it needs to be, and likewise I “vibe code” things based on how few fucks I need to give.
I’m experienced and can review the output for sanity and completion. I can test it, I can rewrite it, etc.
Stop looking at vibe coding as doing the whole thing, it’s more valuable as the glue between things, or to create scripts tools that make you more efficient.
And you can vibe code entire apps that basically just work these days. You probably don’t want to maintain those apps but thats a question of lifecycle planning.
It is so much faster to vibe code an API integration and a suite of tests than I can write. It’s faster to write a functional jq or bash script.
But it’s also much much much worse at doing data viz or writing pandas code because it’s trained on 10,000 shitty medium blogs.
You really have to know what you’re doing and what the model is doing, but it is not universally trash.
And if you don’t believe me, put $20 into the Claude API and install Claude Code and ask it to build something.
I’m experienced and can review the output for sanity and completion. I can test it, I can rewrite it, etc.
You aren’t vibe coding if you refactor and test properly…
why do you guys always just move the goalposts?
“X thing isn’t real AI, because real AI sucks and I might have to concede the positive attributes of X about AI generally… [OCR, chess bots, etc.]”
“Y thing isn’t real vibe coding, because real vibing coding sucks and I might have to concede the positive attributes of Y about vibe coding…”
like… you seem like you’ve just decided these things are “bad things” in your head and just shift your definitions the moment you meet reality and see anything that might evoke cognitive dissonance about it.
Why stop there? Ouija coding takes the “science” and the “computer” out of computer science.
“yes”, “no”, and “ship” is hilarious.
People always talk about it in relation to programmers, but what about us non-programmers that have been able to code things only becuase of chatgpt?
I have some python, sysadmin, and computer security knowledge. I actually obtained the security+ cert a few years ago.
I do not work in tech anymore, and chatgpt has helped me so much, by basically coding stuff for me to do random work tasks that I was either unqualified to do or didn;t have the time to do.
I think LLM is fine for shorter scripts. As a professional programmer, it has helped me with writing simple throwaway scripts. Those circumstances are rare.
My stance is that if you think LLM help you get your job done, then use LLM. It’s just another tool to your arsenal.
I don’t trust using LLM for large long running software projects though.
What’s the largest program, in line count (wc -l will be close enough, or open the file in Notepad++ and scroll to the end), that you’ve created this way?
I just checked and it’s 278.
Funny. I dislike vibe coding because it takes away the “art”.
Implicit in these remarks is the notion that there is something undesirable about an area of human activity that is classified as an “art”; it has to be a Science before it has any real stature. On the other hand, I have been working for more than 12 years on a series of books called “The Art of Computer Programming.”
it can be both artless and scienceless
Yay! 😰
Most programming already didn’t use computer science.
Yeah, I never needed an AI to write poor, inefficient, and ineffective code. I’ve always had a tremendous personal capacity for that. Why should I give a company money to do something that I’m already good at?
lol, I feel you, but what I’m trying to say is you often don’t need to know concepts like P vs. NP for work other than an extreme baseline “is this gonna take forever if I throw more data at it?” I am not saying it’s not useful, just that for lots of work it’s not always super useful to know. Computer science as a field of study is much more mathy than a lot of fields of dev work. Then again, you’ve got other fields where it’s more important. Like I’m sure folks doing 3d graphics need to know a lot more trigonometry than I do as a backend engineer.
Surprisingly little trig, from my experience with opengl, direct3d, and vulkan. Much of the interfaces abstract that away. It helps you to understand what’s going on if you do know it, but you can go in without and be able to do fine. Most of what you interact with is angle calculations.