DEV Community

Discussion on: Can you become a successful software developer without a CS degree? My opinion

Collapse
 
cseder profile image
Chris Sederqvist • Edited

I'll give you my own experience regarding this exact question.

Just a little Background Info

I've worked as both a systems engineer on the networking and server / hardware side, where one generally don't needing much programming knowledge, but certainly is an area where the blurry line between "scripting" and "programming" is often encountered.
I've also worked many years as a "generalist" kind of developer, where I've done everything from systems related programming in C to developing UIs in MS C#/.Net and most of the stuff between, including general MVC-style application programming in C++, Python and C#.

I've worked with teams of developers that primarily had university-level CS education as a base (as this was a requirement) and some (if not most) also had Masters Degrees in their chosen area of expertise, like database technology, application design etc, at least some sort of post-graduate / Bachelors degree specialization.

Me personally have been through the base part of the mentioned formal education for a Bachelors Degree level, in general "Information Technology" as it was called back then (maybe still is), but nothing to write home about in terms of software development and programming languages, methodologies or other concrete areas that one needs to survive as a developer today.

Now, what was I saying?

As already mentioned by others, the distinction between "Computer Scientist" and "Software Developer" is an important distinction to make early on.

I'd go so far as to say (putting on my flame-suit) that YES, you can become a brilliant developer, without doubt, even become an excellent "developer" without any formal CS education, given that you have aptitude for learning.

I've met a few through the 20 years or so in the industry that blew my mind, and they had no formal education, barely finished high-school, some didn't even bother doing that, as they were too deep into learning "the important stuff" (programming) already.

BUT I don't believe that becoming a successful "Computer Scientist", like those who makes advanced AI solutions using Machine Learning, Computer Vision, Deep Learning and those things that belong under the large AI umbrella, is possible for MOST PEOPLE. But there are a few exceptions to any rule, right?

Why do I think so? What are the exceptions?
This can be answered using ONE word: "MATH".

Unless you have spent most of the time you didn't go to college / university learning
advanced linear algebra, probability, multivariate calculus, optimization and few other topics, you'll have a hard time learning both the huge amount of math required to create solutions that uses any form of AI, in addition to all that goes into the field of good software engineering.

Also I'm a firm believer in that no correlation exists between using a framework and actually understanding the technology.

So, the one-liner is:
It depends on what you want to develop.

Collapse
 
anfibiacreativa profile image
Natalia Venditto • Edited

Thanks for sharing your in-depth opinion! My next question would be...is university education, in your opinion, the only valid source of maths/physics knowledge? Excluding the fact that it will provide it in a structured way and for sure pre-select what is relevant, offer you a professor to guide you, etc, which has already been established, I would not say so. Most of the fundaments have been public domain for millennia.

Also...what of people that have incomplete university education, so credits for those areas but no degree?

Collapse
 
cseder profile image
Chris Sederqvist

I've tried to answer some of that in other parts of this thread.
These are important things you're asking, and I'm amazed by how easy people seem to think it is to develop real world software that actually does something more than satisfy a need for entertainment.
We are becoming more and more dependent on quality software as years go by, yet, many think that getting something to run is the same as getting something that keeps running for years and is built on a solid foundation of modular components and well tested for both bugs, scalability and changes in external technology that most systems depend upon.
This IS a deep subject. Developing software is deep s*it knowledge if you want to get it right.
There IS a reason for the Masters Degrees people take in software design and software architecture.

A coder is not the same as an engineer, no more than a driver of a sports car is a mechanical engineer or even a mechanic!

Some comments have been hidden by the post's author - find out more