#CS #SoftwareEngineering #Programming #Education
Hey everyone! 👋 As someone without a degree in Computer Science, I’ve been pondering a few questions and would love to hear your insights:
– What do you think programmers without a degree may lack compared to those with a formal education? Is it something that could have been learned in college or through a college course?
– Where would YOU recommend someone start if they want to become a full stack programmer without going to college? 🤔
– Can individuals without a degree still be considered software engineers? I’ve noticed some negativity towards those who have pursued self-learning or bootcamps over traditional education.
I appreciate any input you all have! 🙌 Also, if anyone is willing to mentor me for 10-15 minutes a day through text or voice chat, I would be forever grateful. Let’s connect and collaborate if you’re a fellow beginner looking to grow in the field! 💡
Let’s start a conversation and help each other succeed in the world of programming! 💻 #Mentorship #Collaboration #TechCommunity
>What is something that you believe programmers without a degree lack? – Is it something they would’ve learned in college/ a college course?
lack of foundation, like how hardware works, how it interact with os, cpu, network, etc… when you know foundation and understand main concepts it’s much easier to learn new things. It’s not a guarantee that everyone with degree have that knowledge, but anyway they spent some time in college and brain remembered some things that will help in future.
Even if you’ll work in some areas that don’t need such low-level stuff, knowing how things work really help anyway.
>
Where would YOU start to become a full stack programmer? (Besides college obviously
currently you have ton of ways, like free info from freecodecamp, [roadmap.sh](http://roadmap.sh) as good list of points to follow, odin project, and many other free things that will help you.
> Do you think people without degrees in the field are still software engineers? -I say this because I see a lot of hate amongst people who did self-learning/ bootcamp over college.
yeah, they still software engineers, a lot of prejudice not without a reason, it’s because ovherwhelming majority of them have high expectations with minimum effort, from my experience of interviewing at least thousand people on junior positions. And probably it’s not only my experience.
I think both sides tend to lack perspective from the other side, this is where negativity stems from. Of course there are plenty that are great human beings and only care the job gets done, regardless of your background.
The self taught tends to look down on the degree holder b/c the degree holder “wasted 3/4 years learning useless things” and comes out being less technically competent than the self-taught. **edit: survivorship bias.**
The degree holder tends to look down on the self-taught because they most likely won’t know how to write proofs, which to be frank, is only useful in academia. You get 3/4 years of problem solving practice via coursework such as math. It’s not useless, it gets you looking into the right mindset direction. Problem with degree holders who claim their degree didn’t help them get the dev job they have, is that they fail to see tangible applications. The logic + problem solving they do is much more of a passive skill than they realize.
These are my thoughts
* self-taught lacks breadth of knowledge (ie. Foundational). If you want to be a full stack dev then you’ll become a very good full stack dev by focusing on specific full-stack technologies. This also means it’s harder to change bad habits (meaning changes with your team). You’ll be less desirable for non-full stack roles.
* Vanilla degree holders have breath of knowledge (ie foundational), and will not be very competent with any particular technology. This makes them a blank canvas. Self-taught make the argument that this is makes them less attractive, which is only partially right. Having the foundations for a variety of fields means the hiring team can mold you into whatever they want at the expense of turnaround time. This also means it’s easier to correct bad habits (meaning changes with you team). You’ll be equally desireable for a wider range of jobs.
* My recommendation. Be the college student and also the self-taught developer. College gives you an excused for the employment gap, use that gap to also follow along bootcamp syllabi and build an impressive portfolio over the course of 2–4 years. In other words, don’t be a vanilla degree holder. Specialize, not in a technology, but in a field (your case web development).
* Self-taught are still software engineers. It just got harder to break in.
I think “hate” is mainly towards bootcamps grads that only “learn” for like 3-6 months and start applying to dev positions right after, even though they are sorely lacking in the fundamentals and skills
It’s not their fault, it’s the bootcamps…but then again, if it makes money, then why not
1. A lot of them lack theory or nuance. Of course, this won’t necessarily cause issues in everything they do. It’s just a matter of knowing about more tools (i.e. data structures and algorithms, especially Suffix Arrays, Suffix Trees, KMP, Aho Corasick, BIT’s, Segment Trees, and all the fun variants of DP, Binary Search, and Flow) available to you and being more immediately aware of the general behavior of your code (such as noticing something that was supposed to only be linear instead being O(n^2 ) when implemented, etc).
2. I would start with learning each of the technologies you’ll need for a given project one step at a time while using official/reliable documentation as much as possible. It’s okay to be self-taught; just make sure to build a solid foundation!
3. Some are and some aren’t. A software engineer is able to properly break down monumental tasks into more specialized blocks and then recombine said blocks into a working product while properly working with a team, deadlines, and constraints.
They lack a degree. Also, unlike me, they have no experience in Algol-68.
/s
It is the general versus special argument
>What is something that you believe programmers without a degree lack?
I think they lack mental illnesses caused by the university. I think my Computer Engineering degree costed me my mental health. I have a psychotic disorder and I am taking Risperidone, Biperiden, and Alprazolam. Had I studied something easier than Computer Engineering, or have not gone to the university at all, I would probably still have mental health. Maybe I wouldn’t have a job, but I don’t have a job anyway.
>What is something that you believe programmers without a degree lack? – Is it something they would’ve learned in college/ a college course?
Generally, I think people who did not get a proper CS education often don’t know much about the science itself and lack a bit of perspective. I certainly did not know what CS actually was until I went to university even though I have been programming for years beforehand. You don’t usually learn the science of it at home when you want to get a programming job. They will often end up having decent programming skills and experience but computer science is a lot more than just programming and software development. Especially in more technical areas like engineering and scientific applications, they will be quickly out of their depth. The foundational base of math and domain knowledge is just not there. Degree holders from proper institutions will likely have touched everything a little bit and get a broad sense of it all, even if they usually aren’t experts in anything in particular.
Example: When you ask a pizza baker of a local pizzaria about the different brands of flour at your local store or what you do when the pizza sticks to your peal, you will likely get a more useful answer than asking a random food scientist about the difference between brand A and brand B flour. However, the food scientist will know a lot more about how to industrialize pizza production in factories, how biochemical processes can be exploited to engineer pizza ingredients that can be stored longer and produced cheaper and stuff like this, where the pizza baker will usually be out of their depth.
>Where would YOU start to become a full stack programmer? (Besides college obviously)
You actually don’t specifically learn how to be a full stack programmer in colleges. You might learn it kind of as a side effect of doing something else for a course but it’s not like you get a course that’s called ‘MERN Stack 1’ and ‘MERN stack 2’. This is why for specific technologies, someone who doesn’t have a degree but spends a lot of time tinkering with that technology can know more about this than a degree holder.
>Do you think people without degrees in the field are still software engineers?
Yes but the title itself is unregulated and meaningless in many countries, it’s not an academic title, it’s a job descriptor. There are specific countries where the term “engineer” is indeed a protected title by law and you have to be a member of a registered body or fulfill the necessary educational requirements and certifications and in those cases, you’ll often find the term ‘software developer’ instead.
>I say this because I see a lot of hate amongst people who did self-learning/ bootcamp over college.
Again, lack of perspective is a bit of a thing. Bootcamp and self-taught people often don’t really recognize what they don’t know because software development for them is basically the same thing as computer science in general. A lot of them do not know academia itself or things like CS research and will likely never touch on those things either and don’t find it important either way, but degree holders experienced those things will know when their limits are reached and generally know more about the big picture and how different things are connected and what sort of research might be going on for some areas.
However in turn, degree holders often lack practical experience with specific technologies and real-world applications. Everything you learn in your degree is incredibly general. Using the example of the pizza baker and food scientist again: You might know how to engineer your dough such that it doesn’t mould as fast while still being under budget, but that still doesn’t mean you can bake a better pizza than the dude from the pizzaria. The food scientists probably is also more likely to struggle with basic equipment and handling the pizza in the stone oven even if they can literally explain industrial ovens and band production of pizza and why those are necessary
The terms programmer and software engineer tend to be used interchangeably. However, while a programmer develops software, a software engineer develops the software development process itself. This typically requires the foundational knowledge taught in college. It’s not that a person who is self taught or completed a bootcamp isn’t capable of learning how everything works, it’s just that the knowledge isn’t required for building software so many self taught and bootcamp grads never learn.
1. Deeper knowledge -theories-, perhaps. With a degree, you learn a bit of everything before focusing on one thing. Self-taught individuals go straight to focusing on one thing. With a little side work, the gap can be closed though.
2. I’m not sure if I understood this question correctly, but perhaps when you get bored of either backend or frontend work? I started as a backend engineer and joined our team’s new front-end project because we were short on resources for front-end work. Learned the vue, js, and ts on the go, and now I consider myself a full-stack engineer.
3. If I read 10 books about medical education and gain an idea of how to treat some diseases or acquire extensive knowledge after reading those, does that make me a doctor? I have team members who are not graduates of computer engineering or software engineering, but their title is “software engineer” since essentially we all do the same work.
if you were able to study all the topics that cs majors studied, nothing, everything you study in a cs degree is available online for free, the thing a college/university gives you is structure and accountability (to some degree)
if you can structure your learning and hold yourself accountable, you’re already at the same level than going to college, I went to college cause I needed the structure, when I tried learning on my own I didn’t know where to start(and I already knew basic programming) as there were too many topics, so I went to college.
a topic I think that as someone that didn’t go to college probably didn’t look at that ended up being useful to know about is compilers, understanding how languages are made is very very useful, and it’s hard for you to naturally go ahead and learn it unless you were interested already.
so go ahead and learn compilers it’s useful af (to a similar degree operating systems) warning though it’s an adcanced topic learn the basics first
edit that is a caveat.
I’m assuming here that self taught developer learnt data structures and basic algorithms, and different approaches to problem solving like recursion. because those are more natural to learn on your own
Boot Camp programmers will likely be replaced by AI, since coding is easily automated. The benefit of a CS degree is not coding, but the ability to think in systems. A CS degree allows a computational problem to be viewed as a set of abstractions, which then can be algorithmically concretized based on the problem domain.
1.) People without degrees lack foundational knowledge for design. Most of the time, I see self taught people code missing robust design patterns, data structures, and/or algorithms. Yes, there are exceptions, but it’s definitely hard to pick up if you aren’t formally taught or not experienced enough in it. When it comes to programming there’s a skill plateau after understanding language syntax, after that is an exponential climb to learn design methodology and different tech stacks.
2.) You start with learning Syntax of a language. The goal is to learn 1 language, because the core concept of a language is mirrored across others.
3.) It’s not about the education, it’s about what you do. If all you do is patch bugs all day, I would see you as only a programmer. If you design, optimize, and implement applications, then I would consider you a software engineer. It’s kinda like the difference between a mechanic and an automotive engineer.
I’m not a student, but I’m a self taught dev and the only real difference between the two is that those with college degrees have a piece of paper that says they finished college. What you learn in college doesn’t really matter, it just shows that you have discipline to finish what you started, you’re going to relearn everything you did in college to the way your company does things anyways.
For me, I had a fascination with programming when I was young and I enjoyed doing it. If I were to start all over again, I would follow the same journey I started with back. In 2006. I really liked something and built code around that and learned by doing.
It doesn’t matter if you have a degree or not, people can hate all they want on people without degrees or boot camps. At the end of the day we both have the same job so if you wanna hate go ahead. If someone were to hate on me at work for not having a degree I’d just assign them all the shitty stories that no one wants to do until they learn to deal with it.. (I guess that’s the nice thing about being the team lead).
PS if you want some help you can message me, I’m not full stack (anymore) I primarily do Backend and infrastructure using C#, Java, cloud formation and terraform.
1. Bootcamper don’t understand the grey area where CS meets CE and how CS builds around it. It’s not an extreme everyday necessity, but the knowledge helps you reason about how low level constructs impact high-level programs and enables you to troubleshoot/design better.
2. They study languages and not paradaigms
3. They don’t study design principles / patterns adequately
The truth is that anything you can learn doing a CS degree you could also learn without a CS degree, and while CS programs have a lot in common no two of them will be the same. There are a lot of broad generalizations in this thread about what degree holders know that self taught people don’t, but there’s no way to really say with certainty what anyone is going to know regardless of whether they have a degree or not.
What is true is that foundational CS knowledge is important, and there is a large segment of developers who don’t value it much. Those without a CS degree may never learn it. Most of those people who do have a CS degree will be forced to take a few foundational classes but won’t bother retaining the knowledge and it will disappear after a year or two of working.
A CS degree from a decent program that emphasizes theory is probably the path of least resistance to building that knowledge, and any CS degree is going to be the path of least resistance when getting a job. Education is good and worthwhile but there are also reasons not everyone can go a CS degree and alternate self-taught paths are viable even if they are harder.
As someone who self taught before starting my CS masters, I guess I can say that before I would only be concerned with getting things working without caring how I got there.
Now I care how I get there and whether or not things are extensible or easy to work with, if the algorithms could be optimized to be quicker, etc.
I used to be a self taught programmer for 5 years. Decided to get my CS degree. There’s a huge difference. You learn so much more in depth details regarding the OS, programming as a whole and not just learning a language, and computer systems that is more important than you’d realize. Obviously you can learn this on your own. It’s just structured way better in college
* Job prospects mostly.
* The internet. Real answer. Out of any subject, programming tutorials and exercises are available online and for free. This was true even 15 years ago when I started. It’s more true now.
* Absolutely. The degree is really a formality. As a tutor, I honestly think people without degrees are better programmers on average. College spends a lot of time teaching theory, but it means you have way less time to actually practice programming. Many college students struggle to solve relatively simple programming exercises because of a lack of practical experience. Also, there is just a ton of outdated and bad pedagogy taught in college CS programs. E.g., you should learn C first. Learn vim. RAM is super slow. Hard Drained are super slow. MIPS, or some other archaic architecture. UML–omg, UML. Best OOP practices and other “clean code” conventions. Not using break or continue. Java 8 if you’re lucky. Why Java 8? It came out over 10 years ago. C++98; same problem. Not teaching templates, RegEx, VS Code, GitHub, x64, ARM, SIMD, or Cuda. Too much “starter code” in projects. I could go on.
Some programs obviously do much better than others, and as a tutor, I see a skewed sample, but overall, if someone is self taught, I would assume they are just a better programmer across the board. I don’t trust CS programs to teach software development.
> What is something that you believe programmers without a degree lack?
Nothing, it’s just that the median quality of someone who is self-taught is absolute garbage, and the median quality of someone with a bachelors degree from an accredited 4-year university is about what I expect. The material itself isn’t locked behind some kind of college paywall – you can download the exact same textbooks that I used, look at syllabuses from courses that I took, and do all the same projects that I did. But the odds of you *actually doing that* are very low, whereas the odds of a college graduate doing that are much higher.
There are brilliant people who are self-taught and graduates who suck, but if you just reach into the pile of resumes and come up with one from the former and one from the latter, the latter is going to be a better candidate very close to 100% of the time.
1. you can build a solution, or engineer a process that goes beyond making a specific solution. that’s the difference between just programming vs comp sci. it’s a different thought process and depth.
2. you pick a popular stack, and just read its documentation. start with very easy projects just to see if you won’t have issues compiling/environment/etc. then slowly make additions and go up the scale. aim to solve problems, and then go from there
3. absolutely. if you are hired to make code, then that is that; no one can take it away from you, no matter if its web dev or embedded systems. i do highly recommend self taught programmers to learn some comp sci however, the mathematical foundation will do wonders should they look for more opportunities.
>What is something that you believe programmers without a degree lack? – Is it something they would’ve learned in college/ a college course?
Generally speaking poor fundamental knowledge, at least at the start of their career. They can certainly learn it over the course of working in the industry but I’ve seen people with titles of mid level or even senior level developers have a lack of understanding in certain areas of tech that go beyond anything that you would teach yourself in a self taught perspective or in a bootcamp. This may limit their growth in the future if they want to pursue other areas, for example, if you’re just trying to get a job as a software developer and your self taught, in my opinion it makes more sense to build a solid foundaton with the tools and framework that are the most requested in the job, but it wouldn’t make sense to go over something like networking at a fundamental level as it rarely is something that will come up when you first start at your job. However as you grow in your career you’ll end up stumbling on problems that will be a lot harder to get through due to that lack of fundamental knowledge of where you could potentially look into , even if it isn’t something you use all the time.
Exposure to different paradigms is something that isn’t expressed enough by people that regret their CS degrees. There is value to being exposed to ideas that you may never even use, as it’s very often the case in technology that you can find some relatability to tools that you do use being inspired by ideas from other tools in other disciplines
>Where would YOU start to become a full stack programmer? (Besides college obviously)
Your saying besides college, but it cannot be emphasized enough that if you do not know where to start or what your doing, college is unironically the path of least resistance. People get bogged down over the price, but the reality is that you are being exposed to many different areas within technology that can give you a stronger perspective of what it is you want to do in the future you simply wouldn’t get going self taught. Because even your definition of full stack has different meanings depending on the person your talking too, and the realm of programming they operate, but as I said earlier it’s good to be exposed towards ideas even if you don’t ever use them in your current work flow.
Personally if it was me and I did want to go fully “Full Stack”, I’d figure out what discipline that I actually want to work in and figure out the tools that discipline uses that will provide me the largest return on investment for jobs available relative to my specific area, as the answer isn’t the same for everyone. My area for example likes developers that have C# knowledge if I want to work closer to places near me, but if I go an hour out to LA, the technology pool becomes a lot more wide for things like Python, Typescript, Java, Etc as you have a different set of companies out in that area.
Go down the rabbit hole. But go at your own pace. I have had a lot of success by allowing people to start with low code platforms like service now just to get used to things. Then when they are ready I point out that they are basically doing SQL.
From there, they start learning SQL and can start working with any database and using a bi solution like power bi to visualize their work.
Then they will kinda drift towards python themselves as they try and get more and more control and hit problems that can be solved with the usual low code tools.
And I do believe that you will eventually get to the point of wanting a deeper understanding of your program and how it runs and will need to finally change to a “real” language like c or rust and by that point you are actually going to be knee-deep in degree topics without even knowing it!
You will WANT to go to school because you will be hitting problems where that is the only place you can seek answers and you will love it because you will know the practical applications.
I think the common denominator is a desire to learn, grow, and deepen our understanding. Purely academic learners lack the friction of having an application running somewhere that people depend on so they have little feelings of why all of this can be so important. While a purely self-taught person will hit problems they simply can’t hope to solve because they will lack the foundations required to solve the problem at a satisfying level (how DO you track and improve application performance? For example)
My background is academic, and in my experience there is one thing I notice a lot between programmers with a degree vs not: in academia you often have to justify why you’re doing something a particular way and why you think x approach is better compared to y. We end up learning specific “techniques” and design patterns for specific tasks which sometimes makes it hard for us to think a bit more outside of the box. On the other side of the coin, self taught programmers are often more concerned with just getting the thing to work. That said, it’s definitely something you can look up online and learn on your own; the challenge there is filtering through all the information that often gets handed to us in academia on a plate. Personally I am trying to learn to care a bit less about how to do some things the proper way so I can just get them done or figure out if they can even be accomplished to begin with. I think each way has its pros and cons and both sides could benefit from learning from each other. Best of luck!
Graduate here and doing The Odin Project for funsies. If people are getting jobs after doing the odin project, and this is the typical knowledge base for a non-degree holder, then it is definitely just fundamental knowledge that is lacking. For a self taught it seems there’s a lot of “how” things work and not much of “why”.
It’s a double edge sword though. You get to fast-track learning real world use cases for programming and making applications but the problem is if you get stuck, you lack the fundamental knowledge to help you through a complex problem or lack insight into challenges you might face.
I think one of the big benefits of college that most people overlook is that it is generally much easier to get an internship. Usually your school will have relationships with certain companies that will look to place you in one of their internships.
Internships are quickly becoming pivotal in finding an entry-level position. My theory is that the age of self-taught programmers (at least for anything other than webdev) is on it’s way out the door.
Calling questions as ?’s is what I would expect from someone without a CS degree (I’m just kidding)
I have a CS degree and 8 years of industry experience. I’ve had excellent colleagues and peers with and without degrees and terrible ones with and without degrees.
A degree forces you to go through some general fundamentals training that you _can_ skip as a self taught engineer. I’ve met a few people I can only really describe as “wannabe” who treat learning the craft as something to approach as lazily as possible… It’s tempting to think that self taught people are that way more often, but the more I actually meet people the less I think that.
College also necessarily introduces people to the very valuable skill of putting up with complete bullshit and navigating it well. Bad teachers, hard assignments, finicky homework platforms, etc… but then again, so does working retail or food service.
You weren’t trained in OOP. You haven’t been exposed to complicated software tasks. You haven’t been exposed to all the data types. You don’t understand the importance of having a compiler.
College.
Unfortunately, yes. For the most part the people hiring you don’t know shit, just like you. So if you’re confident, that could be enough to land a job.
1. There are a few things. First, evidence that you can stick with programming for 4 years when doing tasks that may not be what you want to be doing. Its easy to stay motivated when you are always working on your own projects. It’s harder when it’s your job or your homework.
Additionally, fundimentals outside your area of interest. Things like algorithms and proofs that make you consider more carefully exactly what that Python sort call might be doing under the hood. Also topics like assembly or low level operating systems programming. You might not need to ever write a line of assembly in your life, but you probably will, at some point, run into a bug that is happening because of some wierd quirk of memory. The person who had experience writing a memory page manager is goign to have a better shot at working that bug out more quickly.
Finally contacts. If I am hiring people for a startup, I want people who know other good porgrammers. That is going to make it easier to find good programmers in the future. The person who is fully self taught probably doesn’t have a large network of connections and the only connections they will develop easily will be internal work connections. That doesn’t offer much in the way of adding the potential of innovation by connecting with other programmers or the companies they are working for.
2. Free online programs that are offered by universities. They know what they are doing and will still get you the basics.
3. Yeah, if the know what they are doing and are building software and understand at all levels what their software is doing, they are software engineers. I contrast that with someone who just programs. Both categories can be self taught and both categories can be produced by a university program. The the balace is different.