I was a self-taught programmer for about a decade before I went back for my degree. Mostly to satisfy my own curiosity rather than to help my career.
I was rather shocked by the amount of gaps I uncovered in my understanding. Sure there were some boring classes, but developing an understanding of the whole system from the logic gate up was hugely beneficial. Being forced to work through the details of operating systems, compilers, automata, and algorithms, as well as the history, theory, and formal structures of all the major families of programming languages, gave me very nice framework to build on over the years. Even studying the academic side of software engineering was more useful than I thought it would be.
I also learned a lot more than I would have had I done my degree when I was 18. If it were more practical, I'd recommend everyone take a few years working as an apprentice programmer before immersing yourself in the theory.
There's nothing magical about a degree. You can learn everything I did by reading, watching youtube videos, and practicing. But I never would have, and I clearly didn't in nearly 10 years of working at it. Having access to professors, TAs, and a peer group studying the exact same thing you are is a huge force multiplier. The tight feedback loop kept my understanding from straying off course and let me build accurate mental models much quicker than I could on my own.
I've known many engineers who were smarter and probably better programmers than me who didn't have CS degrees. The best engineer at my current company doesn't have a CS degree, but I'm almost completely certain that if he had a stronger theoretical background, that he'd be even better.
I took this path. Unfortunately I couldn’t get myself into programming and ended in IT. I’m pretty decent and now I’m boxed in IT because I have no “real” experience developing software, but I have a great deal of IT experience. So I’m being offered management positions in IT when what I want is entry level dev lol!
I totally agree with having a different perspective when studying vs when I was 18. I see professors as other adults and not as “the guy I’m afraid of/I want to please/I hate”. I see school as something I chose and not something that life just put in front of me.
However I wish I could find that apprenticeship programming position you mention. I have enough savings to take a pay cut and dedicate myself fully. I feel like now that I’m more mature, if someone were to put me under their wing I’d take off rather quickly, but I haven’t found that yet.
Did you get a masters or bachelors? I don’t have a CS degree but I do have a BS in Information Systems due to the lack of an SE degree at my school. CS never really interested me, I wanted the to learn Web dev and IS started me down that path. Post graduation the IS degree went into the Business school.
Anyway the school I went to absorbed a smaller technical school with a Masters in Software engineering that I’m debating on getting. One prereq I’d have to take is Algorithms and Data structures and that’s a gap I’d like to fill.
Debating on Masters in SE or join an IT Consulting firm and build off the self solutions for customers. I really like building web service apis.
I also have half of a Master's from Georgia Tech, but I was only talking about undergrad above. I've been too busy to finish (married, baby, building a house, and a new job in the same year), but I can definitely recommend the online program.
> Anyway the school I went to absorbed a smaller technical school with a Masters in Software engineering that I’m debating on getting. One prereq I’d have to take is Algorithms and Data structures and that’s a gap I’d like to fill.
Seeing some unrelated degree or a "weak" version of a CS/Engineering one (now at a business school) and a cash cow masters[0] is a red flag on a resume.
Self-taught programmer checking in, 40+ years and still going strong. I have worked all over the globe, and there are still millions of people using software I've developed over the decades - creative stuff, life-protecting stuff, educational and infrastructure stuff, apps, games, music tools, and more.
When I got into computers, my local schools were years behind and playing catchup with the industry, which was simply moving far too fast for academic life.
I had a choice of learning stuff that was already archaic in school, or getting out into the industry and developing new technology that would eventually make its way back to the hallowed halls of academia. So, I accepted an apprenticeship-style position as a lowly junior, and I worked my ass off to become as competent as the rest.
A key factor in my success, 40+ years going strong and still loving the industry, has been to always keep an eye on the horizon - new technology approaches at near light speed (metaphorically), and all it takes is for someone to say "okay, I'll try to be productive with that", actually use it productively, and it becomes a new standard.
The one thing that has always dug me out of the pickle has been to keep my focus on the user. Computerization is nothing without the user. If you can think like a user and create technology that a user would adopt, you can be a great developer.
The other key thing is, don't get distracted by your peers. Even if they have a PhD in computer science, a little elbow grease and dedication to the task can prove ones mettle above and beyond the paper-indoctrinated. The compiler doesn't care about your qualifications, and neither does the user - learn to develop with a proper quality-centric workflow, and no PhD will be able to keep up with you.
Also self taught, again no degree. To be honest I didn't even particularly compensate for it, it's not like I decided instead to put a large focus into open source projects or anything to fill out my CV. I just started programming as a kid, entered the workforce, and figured out I could be paid to do that and here I am.
Only ever been an issue once, and even then, I was more so the one taking issue than them (had a gruelling interview only to find out at the end they hadn't read my CV by asking about O Notation and saying "you must have used it at university at some point"). They said it wasn't a problem for them, but yeh, I wasn't too happy about it (and that might've showed a bit more than I wanted).
The downside of this relaxed approach is that I know very little of theory, and I only know about something if its something I've needed to know for a task or project. That can be an issue, but nothing too bad yet to concern me
I sometimes wonder if getting hired as a self-taught programmer is only possible in the US. Because their software industry has so much money. And perhaps cultural difference. It seems everywhere else requires you to have the relevant degree. To get your first job at least.
Another self-taught programmer from Germany with no formal education to speak off, here. Job ads often pretend to require relevant degrees but companies will absolutely hire people without them. The "If this description doesn't fit you perfectly you should still apply" phrase they often put at the end of their ads isn't always just marketing speech.
I'm also a self-taught programmer and I'm from Poland. I think it might be harder to get your first job without a degree in europe but it's definitely possible. There is one more difference that I think is relevant to this – in general university is free in europe so it's "easier" to expect that people will have a degree. But it's not a dealbraker.
I'm self-taught, and got hired in the UK. The stepping stone was an internship at a small company, who then took me on full-time.
I stayed at the first company for 3.5 years. During that time i also spent enough time on the then-young Stack Overflow to get 30-40k reputation. I have a solid degree in a technical but unrelated field. And i'd like to think i'm actually a decent programmer, and that this comes across in interviews. All that added up to make it pretty easy to get the next job in the normal way.
If a company is worth working for, they won’t be hung up on a candidate having a specific degree if they can show equivalent experience and aptitude, through OSS or similar. In the UK this is common as well as the US at least.
I’ve hired CS grads and they need at least a year to learn how things actually work in practice rather than what they’ve been taught. Often this involves taking the simpler path rather than the more complicated one that immediately occurs to them. This is fine, BTW.
Self taught from UK with social science degree that I barely achieved.
I learned by trying to build a few different things and hacking them together until it worked.
I had many late nights of watching youtube videos and reading tutorials to try to understand more complex stuff. I remember seriously questioning if I'd ever get better.
8 years later and I'm a Senior Software Engineer in an incredible team at an exciting company. It's possible!
If you are ever on the hiring side of the fence, you will have a better understanding of what people are looking for. Companies generally have a stock way of describing the qualifications for programmers, but what they actually want is someone who can do the work and make them money. When you apply for a job, that is what you want to get across.
Maybe if demand were low for programmers, degrees would matter a lot. It is a way to weed out people if you have too many applicants. But demand is high, and supply (from what I understand) is relatively low. So work on selling yourself. I imagine people's github profiles mean more than a degree does these days.
But please note: I am an American former programmer, so take what I write with a grain of salt.
I'm in Germany and self-taught and have had multiple job offerings. I guess it helps if you freelance, you can prove your skills without needing any credentials to be considered. Nobody has ever asked me whether I have a degree.
Self-taught, in NZ. Admittedly, it was hard getting the first interview, I did have to network and hustle a bit. A lot of people who believed that people without degrees write "unstructured code". And no, they wouldn't look at my code I had on a CD to see what they thought of my structuring. This was long before Github...
Self-taught, but I have not studied that much. Working in Japan and surprised that things seem work out well despite my initial lack of knowledge.
I think there are more possibilities than we imagine and sometimes we simply cannot find those possibilities or we do not know that they exist.
I feel like even though I have a degree in “Computing”, I am still a self taught programmer. I learnt programming before my degree, on the side of it, and then afterwards. A degree isn’t a software engineering training course.
I had wonderful teachers, I've spent countless hours with K&R, Friedman, Abelson & Sussman and many others.
Of course it was a distinctly one way street of communication, but fortunately my questions could almost always be answered by a closer examination of the previous pages.
I was rather shocked by the amount of gaps I uncovered in my understanding. Sure there were some boring classes, but developing an understanding of the whole system from the logic gate up was hugely beneficial. Being forced to work through the details of operating systems, compilers, automata, and algorithms, as well as the history, theory, and formal structures of all the major families of programming languages, gave me very nice framework to build on over the years. Even studying the academic side of software engineering was more useful than I thought it would be.
I also learned a lot more than I would have had I done my degree when I was 18. If it were more practical, I'd recommend everyone take a few years working as an apprentice programmer before immersing yourself in the theory.
There's nothing magical about a degree. You can learn everything I did by reading, watching youtube videos, and practicing. But I never would have, and I clearly didn't in nearly 10 years of working at it. Having access to professors, TAs, and a peer group studying the exact same thing you are is a huge force multiplier. The tight feedback loop kept my understanding from straying off course and let me build accurate mental models much quicker than I could on my own.
I've known many engineers who were smarter and probably better programmers than me who didn't have CS degrees. The best engineer at my current company doesn't have a CS degree, but I'm almost completely certain that if he had a stronger theoretical background, that he'd be even better.
I totally agree with having a different perspective when studying vs when I was 18. I see professors as other adults and not as “the guy I’m afraid of/I want to please/I hate”. I see school as something I chose and not something that life just put in front of me.
However I wish I could find that apprenticeship programming position you mention. I have enough savings to take a pay cut and dedicate myself fully. I feel like now that I’m more mature, if someone were to put me under their wing I’d take off rather quickly, but I haven’t found that yet.
Anyway the school I went to absorbed a smaller technical school with a Masters in Software engineering that I’m debating on getting. One prereq I’d have to take is Algorithms and Data structures and that’s a gap I’d like to fill.
Debating on Masters in SE or join an IT Consulting firm and build off the self solutions for customers. I really like building web service apis.
I also have half of a Master's from Georgia Tech, but I was only talking about undergrad above. I've been too busy to finish (married, baby, building a house, and a new job in the same year), but I can definitely recommend the online program.
Seeing some unrelated degree or a "weak" version of a CS/Engineering one (now at a business school) and a cash cow masters[0] is a red flag on a resume.
[0] https://ozwrites.com/masters/
My advice to anyone that's struggling to land a job is to build a clone of a popular product from start to finish and to open-source it.
Then include that as part of your portfolio of work.
It does not have to be completely functional. Pick a product that people use daily: Chat apps, calendars, music players, etc.
"It's X-product, but in Y-tech."
You will learn, you will prove that you can ship, and you'll have something to start a conversation.
When I got into computers, my local schools were years behind and playing catchup with the industry, which was simply moving far too fast for academic life.
I had a choice of learning stuff that was already archaic in school, or getting out into the industry and developing new technology that would eventually make its way back to the hallowed halls of academia. So, I accepted an apprenticeship-style position as a lowly junior, and I worked my ass off to become as competent as the rest.
A key factor in my success, 40+ years going strong and still loving the industry, has been to always keep an eye on the horizon - new technology approaches at near light speed (metaphorically), and all it takes is for someone to say "okay, I'll try to be productive with that", actually use it productively, and it becomes a new standard.
The one thing that has always dug me out of the pickle has been to keep my focus on the user. Computerization is nothing without the user. If you can think like a user and create technology that a user would adopt, you can be a great developer.
The other key thing is, don't get distracted by your peers. Even if they have a PhD in computer science, a little elbow grease and dedication to the task can prove ones mettle above and beyond the paper-indoctrinated. The compiler doesn't care about your qualifications, and neither does the user - learn to develop with a proper quality-centric workflow, and no PhD will be able to keep up with you.
Only ever been an issue once, and even then, I was more so the one taking issue than them (had a gruelling interview only to find out at the end they hadn't read my CV by asking about O Notation and saying "you must have used it at university at some point"). They said it wasn't a problem for them, but yeh, I wasn't too happy about it (and that might've showed a bit more than I wanted).
The downside of this relaxed approach is that I know very little of theory, and I only know about something if its something I've needed to know for a task or project. That can be an issue, but nothing too bad yet to concern me
No one ever asked me about my degree. They were all interested in what I can do for them.
Judging by other comments this is pretty much the norm. All you need is passion and time.
I have emphasized my ability to ship. I have never gone to a potential employee and said "hey trust me, I can do it even though I don't have proof."
Rather: "Here is the work I've already done, and I can do the same for you, or better."
I stayed at the first company for 3.5 years. During that time i also spent enough time on the then-young Stack Overflow to get 30-40k reputation. I have a solid degree in a technical but unrelated field. And i'd like to think i'm actually a decent programmer, and that this comes across in interviews. All that added up to make it pretty easy to get the next job in the normal way.
I’ve hired CS grads and they need at least a year to learn how things actually work in practice rather than what they’ve been taught. Often this involves taking the simpler path rather than the more complicated one that immediately occurs to them. This is fine, BTW.
I learned by trying to build a few different things and hacking them together until it worked.
I had many late nights of watching youtube videos and reading tutorials to try to understand more complex stuff. I remember seriously questioning if I'd ever get better.
8 years later and I'm a Senior Software Engineer in an incredible team at an exciting company. It's possible!
Maybe if demand were low for programmers, degrees would matter a lot. It is a way to weed out people if you have too many applicants. But demand is high, and supply (from what I understand) is relatively low. So work on selling yourself. I imagine people's github profiles mean more than a degree does these days.
But please note: I am an American former programmer, so take what I write with a grain of salt.
Deleted Comment
Deleted Comment
Of course it was a distinctly one way street of communication, but fortunately my questions could almost always be answered by a closer examination of the previous pages.