I’d like to start my path in the tech field because I’ve seen it’s a lot more rewarding financially and also the teams seem to be friendlier than the non tech ones where they basically eat you alive in corporate.
I’m leaned more towards AI advancements but I’m not so sure which career will help me more in that case. I’m open to suggestions
In: Engineering
It’s similar to the difference between a scientist and an engineer in any discipline, not just computer science. A scientist develops theories, designs experiments, comes up with new concepts. An engineer applies the theories and concepts to build new things.
In the case of computer science, a scientist comes up with new algorithms often based on esoteric mathematics (cryptography is one example), new technology for circuitry, new interfaces and ergonomic ways of interacting with machines. Software engineers take those things to craft software applications that can be sold and used.
I’ve always explained it like this:
A Computer Scientist thinks about data and algorithms.
A software/IT engineer thinks about tools and technology.
As a computer scientist that works in infosec, I very frequently encounter software engineers that have a better understanding of some specific stack (i.e. tools/tech) but have literally zero understanding of the fundamentals; which can lead to some absolutely catastrophic failures, particularly at scale. I will also share as a Bell Labs alumnus that everyone that I know that really “moved the needle” in terms of the industry was a computer scientist.
To make an analogy using the bridge metaphor shared here; if you design something at a large scale with a very thorough understanding of the fundamentals something like this can happen -> https://www.youtube.com/watch?v=j-zczJXSxnw
Computer scientists spend their days thinking about imaginary computers that *could* exist, and using mathematics and theory to figure out what those computers, *if* they existed, can and can’t do. Their research today informs how tomorrow’s computers will be designed.
Software engineers are the ones that are tasked with taking computers that we already have right now and making them do things. Their concern is primarily delivering a usable product that solves real world problems, rather than dabbling in the hypothetical.
There’s a lot of overlap. A software engineer would benefit from having formal CS training, as it would help them write better, more performant software. And computer scientists almost certainly know how to write programs that help them solve problems. The main distinction is in the focus: computer science is research, software engineering is building a product.
In college, I wanted to be a software engineer. I wanted to make things, not research things. But my university didn’t offer that curriculum; they only had a computer science curriculum. Clueless, I took it. It taught me most of what I needed to know to write software. But I missed out on a lot of the business-y, organizational parts of software engineering. The parts that involve the human element of writing code for a company for pay. I did eventually make it out into the profession I wanted, but I had to pick up many of those skills on the job.
If you are at a similar crossroads to where I was at, my advice to you would be this: Obviously pick the course that best matches what you want to do, but if you’re not sure, CS is probably the *least wrong*. You’ll easier be able to pivot out of a CS path into a SE path than the other way.
Kinda unrelated, and this is from someone who does research at a university for AI/ML; if you are going to swap into tech, you should understand that AI Advancements are one of the highest levels of computer science you could go to. Lots of the guys in that field have PhD in Math or CS.
So unless you are planning to go get your Masters or PhD, don’t decide on Software vs CS with the long term goal of working in AI.
I am a computer scientist. I write a program for me to use in research (this can be lots of things). If other people use it, thats a great plus, but they generally dont. And its a good thing they dont. I have ~5 projects I have worked on and used for research. Only 1 of them is stable enough I would be comfortable handing it to the average computer programmer and saying “Here, use this, it solves your problem.” Only 2 of the projects have a GUI (and neither of those are stable).
Basically, the final product isnt the code, its the research you can do the code with. Any hacked together code you can come up with that does the research is just fine.
A software engineer on the other hand writes programs intended for thousands of laypeople to use. It has to look nice, be user friendly, not crash or corrupt data (at least not very often). It has to be scalable to more users, and it has to be maintainable. There has to be a way to track bugs and allocate jobs to a large team.
Basically, the final product is the product and the support for the product. If the code isnt maintainable and stable, and usable by an average person, its not valuable for SE.
Latest Answers