> Without a CS degree, you might not be able to explain Big O notation, but you might have great interpersonal skills.
I don't like the deficiency in knowledge and skills that this implies. As a self-taught person you can learn and know everything that's covered in a CS degree. It will take time and effort, and your experience will be different compared to someone who took the traditional route (I'm not even arguing for one or the other) but the idea that self-taught people don't know computer science is kind of a silly meme.
Exactly! And it’s also true that someone with a CS degree might not be able to explain Big O notation.
CS degrees are a shorthand for a knowledge set that you really ought to know, since you were explicitly guided to acquire it, but can’t really guarantee knowledge or skills. Obviously, the inverse is also true.
And, conversely, it's entirely possible to get a CS degree but still have great interpersonal skills. I've done a CS degree. Trust me, they don't un-teach communication.
It's possible, but I sure do wish it was more common. I went to school for English and switched to software dev via self-teaching, and the contrast is quite stark to me.
I've had coworkers unable to write basic emails without someone helping them; or worse, they can't clearly explain their thought process on anything and are confused when you're unable to read their mind, verging on some kind of mind-blindness.
Of course, not everyone is this bad. But by the nature of the work, chances to practice communication skills are few and far between.
I would guesss that these coworkers probably had a deficit in their communication prior to university. Them taking a different degree wouldn't have changed it.
So, sure, there's maybe missed opportunities to practice during a CS curriculum, but there still are plenty of them (remember, 2 years of 'core' classes, that have nothing to do with CS, not to mention opportunities to talk to the professor and TAs for questions, grade corrections, and just straight up brown nosing, and that's ignoring all the group projects you're likely to have, just for the fact those invariably turn into one or two people doing the actual work, and of course it's also ignoring any other social interaction opportunities you might have on a college campus, which they're kinda known for). You just have plenty of people who -want- to be heads down over a computer going into CS; you generally don't go into nursing or psychology or similar if you're not looking to work with people.
Any software developer worth their salt should be at least capable of explaining their thought processes to a computer.
By analogy, they should be reasonably capable of explaining their thought processes to another human that understands computer languages (i.e. a fellow software dev).
To me, anyone who doesn't pass that bar shouldn't be working on software at all.
It's also curious that, on another thread about AI generated code, people are dismissing it because the AI "can't explain the code" or something.
When person A has been working on a technical problem for some time, they may have a greater awareness of the context than person B that's just heard about the problem. If A has the contextual knowledge but poor communication skills, they may forgo the high-level discussion that B needs to adequately understand the problem, or the system as a whole.
B needing that high-level discussion doesn't mean B isn't a good developer, and A being narrowly focused on implementation details doesn't mean A isn't a good developer. But they both need to be able to meet each other in the middle to be most productive.
Yes, as a non-degree owner myself, I always say its not about _not_ learning the material. Its about learning it in a different way. You absolutely still need to cover the material on your own.
I was able to understand (and explain) big O in my early teens and I'd have never
ever considered it anything special or hard. That's beyond hyperbole. As for time and effort - it's likely happening naturally, I can't think of I've put any designated efforts into the process.
Heck, I'd go even further - (that one takes effort) but the 1st and the 3rd books of TAoCP are rather accessible (no necessarily all chapters, though)
I think that those of us who put substantial effort into tech and tech-adjacent things before we were 18 are another group entirely. We cheated and put in the time before we realized this was supposed to be difficult. I also think that (depending on how old you were when you got started) those of us who started as kids got to take advantage of younger brains' neuroplasticity and that makes things seem easier.
Big O and discrete systems, for example, both make perfect sense if you've internalized how computers work on a fundamental level. And usually what trips people up about understanding computers is how alien they are/how different they are from the natural world. If you're a child, then you haven't learned enough to think computers are 'weird' so that brain block doesn't exist.
It really doesn't, but those selling those boot camps sell the dream it does it.
I did technical school before university, which are the last 3 high school years in Portugal (10 - 12, from 12), as alternative to go to the university, just in case I would fail the national admission exams.
Yet after those three years there was so much to learn, how come a 2 month bootcamp teach anything beyond basic programming knowledge.
I feel the same way. I like the idea of boot camps giving opportunities to junior Devs to break into the industry but to sell them as equivalent to a CS degree and claim 2 months leads to a 6 figure payday seems like it leads to dysfunction.
Several fields have tiered roles where bootcamps/community college programs are used to fill some of the roles. Several of these are now considered trades jobs, like electronics repair or certified nursing assistant. Depending on the regulations there might or might not be a path from community college program to an advanced role in the field without a college degree. In most of the world, you can't go from a CNA to an RN (Registered Nurse) or an MD with just experience.
> Is tech/computer science the only STEM field that had boot camps? medicine, nursing, electrical engineering, civil engineering, physics, biology, environmental science, etc.
In the US, careers in those fields requires certification and IT does not. Probably because 1) the field exploded in popularity before anyone could formalize a certification process and 2) bad developers aren’t as dangerous to society as bad surgeons, bad nuclear physicists, bad civil engineers, etc.
Also IT’s labor gap is especially extreme. I think it takes less knowledge/training to be helpful to a company when they desperately need workers with computer skills.
There are vocational nursing programs that are accelerated to just a few semesters. I think that’s about as close as it gets to a fast program that gets you to employable status.
It doesn't. However, a 2 month boot camp as a finishing school on top of other self-study and auxillary skills does.
For example, a great front end engineer I know had an art degree and a boot camp experience, combined with self study. She went to work with an agency, then moved into product engineering, and is a fantastic coder today.
I think 2 months is too short for the vast majority of people, even in addition to another degree. However, I think a dedicated degree is also not necessary.
> I think 2 months is too short for the vast majority of people, even in addition to another degree. However, I think a dedicated degree is also not necessary.
Completely agree.
I wish there was some sort of designated career path for people with clearly defined milestones.
The key difference is those fields have pretty clear and strict breakdowns of what different people will be doing.
Medicine is a great example. Nurses have 4 different levels that vary from a boot camp equivalent of training (CNA) to requiring an advanced masters degree. (advanced practice registered nurse). Doctors have specific specialities that take more or less time to earn and pay different amounts.
Electrical engineering has Electricians (and even in Electricians, you have a breakdown of apprentices, journeymen and masters) but it also has Electrical Engineers.
Biology has lab assistants and lab technicians, it also had people with Doctorates working a lab. Theres also levels of certification and training that depends on if you are doing Forensics, medicine, research et cetra.
Looking at computer science. It's all just engineers/developers. A company need something built and finds out they really needed someone with a bootcamp level of training and not the Masters Degree in Computer Science. But they have one "Software Engineer" track at their company and they pay them both the same. The guy/girl is a wizard at SQL optimization gets written up because they get moved to a team that requires them to grind out React code.
Some places do have different tracks for different types of devs, but it seems like for a lot of places they have been consolidating their roles, not creating more role diversity. The reason for that is that when your boot camp React dev finds themselves on a non happy path, they can get hard stuck and a "higher" level of dev has to intervene and help, so the company figures it makes sense to go ahead and just get the higher level of dev that can handle it when things DO come up.
Isn't that the meme about Google? That lots of their devs are just doing configuration tweaks but getting huge salaries? I would imagine Google does that so when there IS a problem those people presumably are equipped to go outside their comfort zone and be able to handle it.
Let me make sure I understood this correctly: having a CS degree will turn you into a cartoon stereotype of a technical nerd, but getting any other kind of degree in the world will enable you to be a well rounded person and still learn CS skills. Somebody should really look into the damage being done by CS diplomas.
I feel like the culture surrounding CS biases this substantially. Most people I know who got CS degrees were raised in an environment where communication and interpersonal connections were downplayed and analytical thinking was rewarded (institutions and families constantly do this). College should be the place where these students are pushed mentally and emotionally in all directions, but instead we just give them 4 years of specialized knowledge and throw them out the door. The gen ed system encourages and rewards gameification (because if you take too challenging of a class, it can harm your GPA). It's a problem that starts at the bottom and has been exasturbated by a series of perverse incentives.
> Maybe you used to be a pre-school teacher, and you'll be the go-to person for communicating the engineering team's needs to the marketing team in a way that makes sense to them.
I usually don't go in for piling onto defenseless groups of people, but having worked in marketing and development, I applaud this (likely unintended) sick burn.
I expected a "you don't need school to learn to code," and instead found a "there will still be jobs for people who can't code... my 50k on a liberal arts degree wasn't a mistake... oh please let this be true."
There is nothing wrong with choosing a different career path and it will bring different skills/knowledge to the table.
However I really dont like how this post potraits the people "having a CS degree" as the same person.
Everyone is individual and brings their own skillset..
This is just wrong. I have a degree in Psychology and went into tech in the mid 90's. I had to learn everything on my own. Is it possible? Of course it is. But the amount of stuff I had to learn on my own was incredible. It is easy to learn how to write a little React program. It is however NOT easy to learn how to write a compiler without anyone to ask when you don't understand something.
Everyone always says, "You never use that in the 'real world'" What's funny is that the people who say that are the people who don't know they should use those concepts to solve some problems. That's what the real separation is between having one and not having one. Trying to explain, say, a discreet system to someone who has never even heard of it is hard. There is so much people who haven't gone through a cs program don't know.
I hope to think this, because I'm in this camp, but people without cs degrees can be good programmers. They just have to realize that it's not "Ha ha sucker, you spent 4 years learning something I did in 12 weeks." It's "I have to spend my nights and weekends for years learning what you concentrated in on college."
+1 for this comment. I started as more of a "multi-media" guy in the 2000's and eventually out of necessity moved into the developer space. Sure, I could brute force learning things and regularly would challenge myself to sit in a chair until I could figure it out watching many sunrises on the way. The web sucked back then and resources like stack overflow were barren and mostly full of trash. I had few peers to ask questions or advice and the tiny usergroups that did exist might yield you a hint here or there. It sucked.
Then I got to work with and eventually hire people who had the CS degrees and not only did my knowledge explode, work got done way faster with higher quality. I'm sure it's a whole new ballgame with the wealth of resources out there but when you have time, space, and support to become a true practitioner it's got to be an advantage if not confidence builder.
I majored in computer science and minored in math and psychology. I have to say, I loved my psychology classes, but in no way were they a replacement for my computer science classes.
I'm in the same boat, but didn't come to tech until the mid 2000s, mostly on the operations side.
I think what I'm missing (or had to learn on my own) from not having a CS degree is all of the table stakes stuff-- the theory. Being a good programmer is not about learning the syntax of a language, its about algorithms, data structures, logic, computational complexity theory etc etc etc. Boot camps, as author endorses, teach you how to source a whole bunch of libraries you don't understand and know nothing about, save the one feature you've been taught to source it for. This makes for bad, unscalable, insecure and unmaintainable code. (disclaimer-- many libraries and frameworks are fantastic and make it possible and reasonable to write code that is maintainable, scalable and secure. There are also some languages where its really easy to string a bunch of really crappy libraries together and get something that 'works')
I'm in the position now where I am trying to enumerate all of my known unknowns and learn dive into so I can be the kind of programmer who can actually write good, performant, scalable code, more or less from the ground up.
Insinuating that there is a lack of social skills for those who majored in CS or that those doing so will seemingly stagnate in their technical knowledge (which can happen to anyone, no matter their major) just comes of as childish.
History of binary? I guess either Ada or Babbage (or both) were the first. It wasn't part of my curriculum though.
Unnecessary basics learned? It comes in handy knowing a bit about data structures, big-O and compilers when the need and situation arises. Oh yeah and normal forms and automata are fantastic.
However I agree with the authors point that having cross disciplinary skills and backgrounds will help in this field, and that those who come into it without formal training should not shy away from applying for positions that they think could fit them.
Having only a BSc in CS, I for one do not plan on getting a MSc in it as my next degree (if there will be another). Probably something involving business or design instead to deepen my knowledge in related fields.
Just over two weeks before this article, the author had written another describing their first week as a software dev where they were a 'complete newbie'.
This article comes across as rather arrogant to me. I agree that people of different backgrounds can bring new skills to the table, but the article seems to implicitly imply that people with the author's background are better at the things that really matter for a software engineering career than a CS graduate. It feels like this article is just the author trying to boost their own confidence.
This article is absurd. Imagine writing the same thing about any other profession. "If your medical staff is only medical school graduates, you don't have a strong medical staff. Add some florists and interior designer." I'd hire someone who's been in the trenches of tech for years with a relevant degree over an ex-psychologist bootcamp convert any day, all else held equal.
I posit that the ability to self-learn outside of an academic setting correlates more strongly with being a valuable member of an engineering team than academic credentials.
That reality muddies the conversation, as evidenced by the comments here: while a CS degree certainly gives you a head start, those with one but without good self-learning skills will not be valuable. On the other hand, non-CS-degree folks who get engineering jobs are independently very likely (not guaranteed, but likely) to have good self-learning skills.
So we're not really comparing apples to apples. Rather, were comparing people who probably have high aptitude for a core component (self-learning) of software engineering with people who studied CS in school. Making it through a CS degree is, at most institutions, not nearly as strong a proxy for aptitude as breaking into the field because you possess a strong ability to teach yourself things. Note that none of this implies any negative things about people with CS degrees.
If you don't have the academic background but can teach yourself things to "backfill" the missing knowledge, you can be a valuable engineer. The reverse is not true.
48 comments
[ 3.6 ms ] story [ 117 ms ] threadI don't like the deficiency in knowledge and skills that this implies. As a self-taught person you can learn and know everything that's covered in a CS degree. It will take time and effort, and your experience will be different compared to someone who took the traditional route (I'm not even arguing for one or the other) but the idea that self-taught people don't know computer science is kind of a silly meme.
CS degrees are a shorthand for a knowledge set that you really ought to know, since you were explicitly guided to acquire it, but can’t really guarantee knowledge or skills. Obviously, the inverse is also true.
I've had coworkers unable to write basic emails without someone helping them; or worse, they can't clearly explain their thought process on anything and are confused when you're unable to read their mind, verging on some kind of mind-blindness.
Of course, not everyone is this bad. But by the nature of the work, chances to practice communication skills are few and far between.
So, sure, there's maybe missed opportunities to practice during a CS curriculum, but there still are plenty of them (remember, 2 years of 'core' classes, that have nothing to do with CS, not to mention opportunities to talk to the professor and TAs for questions, grade corrections, and just straight up brown nosing, and that's ignoring all the group projects you're likely to have, just for the fact those invariably turn into one or two people doing the actual work, and of course it's also ignoring any other social interaction opportunities you might have on a college campus, which they're kinda known for). You just have plenty of people who -want- to be heads down over a computer going into CS; you generally don't go into nursing or psychology or similar if you're not looking to work with people.
By analogy, they should be reasonably capable of explaining their thought processes to another human that understands computer languages (i.e. a fellow software dev).
To me, anyone who doesn't pass that bar shouldn't be working on software at all. It's also curious that, on another thread about AI generated code, people are dismissing it because the AI "can't explain the code" or something.
B needing that high-level discussion doesn't mean B isn't a good developer, and A being narrowly focused on implementation details doesn't mean A isn't a good developer. But they both need to be able to meet each other in the middle to be most productive.
Heck, I'd go even further - (that one takes effort) but the 1st and the 3rd books of TAoCP are rather accessible (no necessarily all chapters, though)
Big O and discrete systems, for example, both make perfect sense if you've internalized how computers work on a fundamental level. And usually what trips people up about understanding computers is how alien they are/how different they are from the natural world. If you're a child, then you haven't learned enough to think computers are 'weird' so that brain block doesn't exist.
medicine, nursing, electrical engineering, civil engineering, physics, biology, environmental science, etc.
Going through a list of stem fields in my mind, I can't think of any other fields that have boot camps.
My buddy went to hairdresser school and it was longer than a lot of technology boot camps.
Just feels unusual that in the industry, a 2-month boot camp competes with a 4-year computer science degree.
I did technical school before university, which are the last 3 high school years in Portugal (10 - 12, from 12), as alternative to go to the university, just in case I would fail the national admission exams.
Yet after those three years there was so much to learn, how come a 2 month bootcamp teach anything beyond basic programming knowledge.
i have a whole bunch of friends who were sold this dream of six figure job after a short bootcamp. Almost none of them work in tech/coding now.
I like boot camps as an opportunity for Junior Devs to break in but seems like they can prey on people looking for an easy payday.
In the US, careers in those fields requires certification and IT does not. Probably because 1) the field exploded in popularity before anyone could formalize a certification process and 2) bad developers aren’t as dangerous to society as bad surgeons, bad nuclear physicists, bad civil engineers, etc.
Also IT’s labor gap is especially extreme. I think it takes less knowledge/training to be helpful to a company when they desperately need workers with computer skills.
Some countries have tried to put degree requirements for software engineers, but developers are not union-friendly or certification-advocating.
For example, a great front end engineer I know had an art degree and a boot camp experience, combined with self study. She went to work with an agency, then moved into product engineering, and is a fantastic coder today.
I think 2 months is too short for the vast majority of people, even in addition to another degree. However, I think a dedicated degree is also not necessary.
Completely agree.
I wish there was some sort of designated career path for people with clearly defined milestones.
Medicine is a great example. Nurses have 4 different levels that vary from a boot camp equivalent of training (CNA) to requiring an advanced masters degree. (advanced practice registered nurse). Doctors have specific specialities that take more or less time to earn and pay different amounts.
Electrical engineering has Electricians (and even in Electricians, you have a breakdown of apprentices, journeymen and masters) but it also has Electrical Engineers.
Biology has lab assistants and lab technicians, it also had people with Doctorates working a lab. Theres also levels of certification and training that depends on if you are doing Forensics, medicine, research et cetra.
Looking at computer science. It's all just engineers/developers. A company need something built and finds out they really needed someone with a bootcamp level of training and not the Masters Degree in Computer Science. But they have one "Software Engineer" track at their company and they pay them both the same. The guy/girl is a wizard at SQL optimization gets written up because they get moved to a team that requires them to grind out React code.
Some places do have different tracks for different types of devs, but it seems like for a lot of places they have been consolidating their roles, not creating more role diversity. The reason for that is that when your boot camp React dev finds themselves on a non happy path, they can get hard stuck and a "higher" level of dev has to intervene and help, so the company figures it makes sense to go ahead and just get the higher level of dev that can handle it when things DO come up.
Isn't that the meme about Google? That lots of their devs are just doing configuration tweaks but getting huge salaries? I would imagine Google does that so when there IS a problem those people presumably are equipped to go outside their comfort zone and be able to handle it.
I usually don't go in for piling onto defenseless groups of people, but having worked in marketing and development, I applaud this (likely unintended) sick burn.
However I really dont like how this post potraits the people "having a CS degree" as the same person. Everyone is individual and brings their own skillset..
Everyone always says, "You never use that in the 'real world'" What's funny is that the people who say that are the people who don't know they should use those concepts to solve some problems. That's what the real separation is between having one and not having one. Trying to explain, say, a discreet system to someone who has never even heard of it is hard. There is so much people who haven't gone through a cs program don't know.
I hope to think this, because I'm in this camp, but people without cs degrees can be good programmers. They just have to realize that it's not "Ha ha sucker, you spent 4 years learning something I did in 12 weeks." It's "I have to spend my nights and weekends for years learning what you concentrated in on college."
Then I got to work with and eventually hire people who had the CS degrees and not only did my knowledge explode, work got done way faster with higher quality. I'm sure it's a whole new ballgame with the wealth of resources out there but when you have time, space, and support to become a true practitioner it's got to be an advantage if not confidence builder.
You are 100% right.
> Trying to explain, say, a discreet system to someone who has never even heard of it is hard.
Well, that's because discreet systems are inconspicuous and don't stand out much. Totally normal.
History of binary? I guess either Ada or Babbage (or both) were the first. It wasn't part of my curriculum though.
Unnecessary basics learned? It comes in handy knowing a bit about data structures, big-O and compilers when the need and situation arises. Oh yeah and normal forms and automata are fantastic.
However I agree with the authors point that having cross disciplinary skills and backgrounds will help in this field, and that those who come into it without formal training should not shy away from applying for positions that they think could fit them.
Having only a BSc in CS, I for one do not plan on getting a MSc in it as my next degree (if there will be another). Probably something involving business or design instead to deepen my knowledge in related fields.
This article comes across as rather arrogant to me. I agree that people of different backgrounds can bring new skills to the table, but the article seems to implicitly imply that people with the author's background are better at the things that really matter for a software engineering career than a CS graduate. It feels like this article is just the author trying to boost their own confidence.
That reality muddies the conversation, as evidenced by the comments here: while a CS degree certainly gives you a head start, those with one but without good self-learning skills will not be valuable. On the other hand, non-CS-degree folks who get engineering jobs are independently very likely (not guaranteed, but likely) to have good self-learning skills.
So we're not really comparing apples to apples. Rather, were comparing people who probably have high aptitude for a core component (self-learning) of software engineering with people who studied CS in school. Making it through a CS degree is, at most institutions, not nearly as strong a proxy for aptitude as breaking into the field because you possess a strong ability to teach yourself things. Note that none of this implies any negative things about people with CS degrees.
If you don't have the academic background but can teach yourself things to "backfill" the missing knowledge, you can be a valuable engineer. The reverse is not true.