24 ms·
No CS Degree – Interviews with self-taught developers
- mattmar96 7y agoThere's clearly strong feelings in this thread. Whether or not a degree is necessary, I think we can say there's two groups: - People who went to university, going through significant effort for their degree, and want to defend that choice - People who _didnt_ go to school, perhaps suffering from a touch of imposter syndrome, who want to hide their insecurity I'm a 20yr old "self-taught" dev. I'm considering going back to school this year. But its a tough choice. Things are going very well for me in the professional world so far. I was in a CS undergrad program for a year but didn't feel like I was learning as well as I was on my own, to be honest. What I think I can say with confidence is theres not much point in arguing about this. If you want to go then go. If not, don't. Why do we have to prescribe a gospel on this? Let people decide what they want to do. Part of why "self-taught" devs like myself often suffer from insecurity is people shouting the absolute necessity of a degree. I don't see it.
- deleted 7y ago[deleted]
- mywittyname 7y agoI went to school for CS after 10 years as a self-taught profession dev. The main value I derived from it was the experience. Specifically, learning how to meet new people. Being a shy person by nature, I forced myself to make two new friends in every class, and it worked really, really well and it's something that I probably could not replicate outside of a similar environment. Additionally, I legitimately enjoyed the coursework and learning about high(ish)-level math, art, and engineering that I may otherwise not have. It also gave me free time to pursue fitness and personal projects. I'm probably not a better programmer as a result. And I'm probably not wealthier either, as I failed to leverage my degree into a position in Big Tech, though as a middling developer, it does make it easier to find jobs. But I do think I'm a better, happier, healthier person, and I would do it again.
- sounds 7y agoThe parent is exactly how I feel about my degree also. I didn't go back to school, I went to uni right on the "normal" schedule. The discussion today seems to be all about the logic of it (how will you know what's in a uni degree unless you go?) That was the logic that convinced me to go. It wasn't until I graduated that I could say, with confidence, none of the classes contained anything I didn't already know. (Yes, yes, including the theory classes.) But the parent is exactly right: going to uni is a complex decision with multiple independent axes to evaluate: will you make more money over your lifetime (probably not)? Will you get that job you want (probably not, it's more down to people skills)? What will you do with your spare time while in uni (you will have some spare time)? What will you do with the opportunities to meet people? Then there's what uni you want to attend. How you plan to pay for it. Whether you want to live in a dorm, live with your parents, or go online.
- munificent 7y ago> There's clearly strong feelings in this thread. It's always like this when it comes up, which is fairly often here, and I think you're right to point this out. It's an emotionally loaded topic, which means it's a hard one to actually get useful data from. I think there's a couple of things going on here: The path someone takes to get where they are is a huge part of their identity. So when they look back on their own history, they want to feel that that path is a good, valuable one because it implies that they are valuable people. So everyone who doesn't have a degree has an incentive to feel it's not important. Likewise, everyone who has a degree wants to feel it is. The thing is, they're both right. There are many many paths and almost all of them are worthwhile human experiences. Many of them even lead to being a good software engineer. (And of those that don't, they still often lead to being a valuable human in other, often more important ways.) But the reason it's useful to write about this stuff is for people that are looking ahead and trying to choose a path. Those people want to know the odds of each path and how likely it is to work out for them. Unfortunately, a long list of anecdotes is really hard to synthesize into that. It's like trying to figure out where to eat dinner when every single restaurant review is five stars. I don't have good data either, but if you're trying to pick your path, I would think about your personality and how that's likely to interact with your choice: Not going to school gives you more freedom to explore your interests and choose a unique, idiosyncratic path. If you are driven and focused, you can get farther down a road than most others will because you have the freedom to focus on areas where you are passionate. If you want to stand out, it's easier to do so this way. At the same time, if you aren't self-directed and passionate, you can end up meandering and going nowhere. No one will tell you what to do and it's easy to end up doing nothing, or just dabbling a little in a million things. All of the onus to create structure and discipline is on you. School will give you a structured environment to learn in. It gives you a curriculum crafted by experts so you will be introduced to topics in a reasonable order and you'll be shown things you might not have realized are important. You'll also absorb much of the culture and tribal knowledge of the field. However, this is skewed towards academia, and if your goal is ultimately industry, this may not be pure win. Personally, I think going to school is generally a good, safe bet. You'll learn a lot, have a good experience, and meet a lot of people. You'll take a bunch of non-CS classes that will round you out as a human. Even though I dropped out, I got a ton out of my limited college experience, mostly not related to programming. Not getting a degree is a higher variance path. You may blaze a trail and end up somewhere exciting and unique. You could be the next Bill Gates or Steve Jobs. Or you could end up flipping burgers, or underpaid because you're at a company that values degrees.
- Pete-Codes 7y agoI'm learning to code at the moment (Python this summer after learning the basics.) I kept talking to developers online to find out about their backgrounds as I don't have a CS degree. I figured as I was already asking people how they learned to code I might as well write up some proper interviews and share them with other people. This way I can scratch my own itch and stay motivated as well as sharing motivation with other people. You can check out my traffic/revenue at my open page which I have started from day one instead of waiting until big numbers www.nocsdegree.com/open
- codingdave 7y agoI'll be interested to see what variety of stories and individuals you interview. I know learning to code today is far different than it was 25 years ago. It would be cool to see the stories on a timeline once you have more.
- Pete-Codes 7y agoThanks! I will be making sure to interviews a range of people doing different things with code so it stays interesting.
- balabaster 7y agoThanks for this. I began programming when I was 8 on a Sinclair ZX Spectrum 48K from books I liberated from my Mom back in 1983. I grew up as the internet was just becoming a thing, communicating with other would be developers and hackers on IRC channels. I still haven't lost the bug. I'd like to say my CS degree studies were useful, but they were hopelessly inadequate and so constrained and tedious as to kill any further interest in formal education. I ended up dropping out and continued to learn informally and build a successful career over the next 23 years. It's inspiring to read about developers who are also informally educated. It brings a sense that people like us are more common than we think and that we're really not alone. They're also finding great success despite the prevailing wisdom that you can't make it without a degree. People like that are proof that you can.
- 7y ago
- homie 7y agoI wonder when (if ever) we’ll reach peak “You don’t need a CS degree to be a developer” rhetoric
- itsmemattchung 7y agoI think its pretty well known that you can work as a successful developer without a CS degree. However , as someone who is currently working through a masters in CS (after working in software the last decade), I would say that CS courses (some, not all) provide invaluable foundation that would be difficult to obtain (of course you can self study CS). Sure — you don’t need to know how the OS works to write a web app that rakes in cash . But there’s something beautiful about peeling back the layers of abstraction : you gain an appreciation of how things work underneath the hood.
- whatshisface 7y agoYou can "peel back the layers of abstraction" without a CS degree, all it takes is time and (admittedly rare) dedication. Webservers, operating systems and books on theoretical CS are all out there, you just have to be interested.
- learc83 7y agoIt's possible to learn most things through self-study. But the vast majority of people will only learn the parts that they find fun and interesting. They generally won't wrestle with the tough sections in a systemic fashion, the way you are forced to in a decent CS program. For most people (even most professional developers) the only practical way to gain the equivalent knowledge you'd get with a CS degree, is by getting a CS degree. I worked for years as a self taught professional developer before going back btw, and I've hired/interviewed many boot camp graduates, self taught programmers, and degree holders.
- ssully 7y agoLike whatshisface said above, quality self-study is rare. As you point out, people will learn what is fun/interesting, but I will also add that they will just learn what they need to get whatever job done. I have a friend who does webdev (mostly Wordpress, some Drupal) who did not have go through a CS program, though he took a few web dev classes in college. He goes good work, but he has a very loose grasp on fundamentals. He showed me a side project he was doing (a web based clicker game) and after looking at the code, I suggested he try adding some classes to reduce his code reuse. After explaining the basics (and some quick research on how classes work in Javascript), it kind of blew his mind. He never used classes before in his code because he just had no reference point.
- motivated_gear 7y agoI really appreciate this as a self taught dev with a full time full stack job. I worked my ass off for 3 years, taking online courses, building product after product for people to actually use and ultimately landing a well paying and satisfying job. Things like this make imposter syndrome a little less nagging in my every day life.
- Pete-Codes 7y agoThat's awesome! Honestly, I have interviewed tonnes of people already that are doing great with no degree. A friend of mine just got a job after taking a few months out to learn from scratch with Udemy, etc
- motivated_gear 7y agoAmazing! :D
- hirundo 7y agoI'm 39 years into a coding career with no CS degree. But as a compulsive auto-didact (probably a common syndrome among HN readers) it hasn't been a barrier. Self-learning is a continual, daily requirement for coders. If you can continue your education as needed for this job you probably also have the skills and interest to learn from scratch. I studied the same books and did the same exercises as my brother the CS major and do feel that my training would be incomplete without that. But I don't feel disadvantaged by not doing that within a class structure. The main thing I lack is access to government jobs, which routinely require credentials I don't have. But I've probably had a more diverse and satisfying career as a big fish in small private sector ponds. Not everyone can learn coding without externally imposed structure. But those who can't probably have an ongoing problem in keeping up with the state of the art.
- blymphony 7y agoNot even government jobs are out of reach for you. I work as a federal employee without any college degree doing web development with React/Node/AWS.
- C4stor 7y agoThat would heavily depend on the (unspecified) country.
- blymphony 7y agoThat is true, since the commenter never specified. I work for the U.S. government.
- tudelo 7y agoI think it's possible but when bidding for contracts I think it matters. When I worked at a smaller company that worked government contracts my lead was always telling me I should work on getting a masters as it looks more attractive.
- dwags 7y ago
- ggm 7y agoRecursion and Abstraction, like love and herpes, are a form of disease which once caught cannot be lost, but can be shed, and so spread. Your brain is wired to look for both opportunistically, in any problem. What a CS degree does, is teach you how to apply the infection. Some CS degrees are like innoculation against them and you come out with a degree, but no grasp of the fundamentals. Others, you learn so much you become a vector of the disease.
- deleted 7y ago[deleted]
- vegiraghav 7y agorecursion overrated imo.
- ggm 7y agoiteration gets repetitive.
- commandlinefan 7y agorecursion is full of itself, though.
- berbec 7y agoiteration gets more repetitive.
- pmiller2 7y ago> recursion is overrated imo Right up until the point where you have to traverse a nested data structure.
- aitchnyu 7y agoRecursive algorithms are a natural fit for recursive data structures. Recursive Fibonacci is contrived. </cliche>
- 7y ago
- crims0n 7y agoWhile we are on the subject, if you are looking to self learn CS can anybody comment on the quality of this program? https://github.com/ossu/computer-science https://github.com/ossu/computer-science
- Kaveren 7y agofringe opinion. video courses in non-visual topics are a complete waste of time, made because the masses can't read and are lazy. there is a corresponding book better than the course available for everything listed. good books will have good exercises and solutions available. video courses just won't teach as much. very easy to find best book available for each subject. even going partway through a book will offer more. can skip topics, look at syllabuses for classes offered in higher education that use said book if you want to know what to skip (many syllabuses available online). for example, instead of taking the operating systems class you can simply actually read either of the two books suggested by this very page.
- rezeroed 7y agoFirstly, depends on the university - not all degrees are equal. I did most of a degree after working in the industry for seven years, and having programmed on and off since the zx81 - the degree was pointless. Only one course was interesting, AI, and the only time I've ever used that knowledge is tinkering at home.
- balabaster 7y agoI think for anyone that started programming in the early days of home computers like the ZX81, C64 and BBC Micro, except for the fundamentals, most CS courses seemed to be completely useless. I cannot honestly say anything I learned in my course was useful compared to pursuing my own interests.
- convolvatron 7y agoI missed undergrad, and managed to weasel my way into graduate school after 15 years as a programmer. ultimately research isn't for me, but I found basic CS theory both interesting and useful in my later life. certainly agree that the systems and programming coursework wasn't particularly useful.
- commandlinefan 7y ago> not all degrees are equal Hm - maybe not, but why is that, exactly? I don’t think that anybody believes that if you admit an otherwise stupid person to Harvard, they would become intelligent through the instruction they’d receive there. Instead, the degree and the institution are a signal - this person had to have been smart in the first place to get in, so you can assume that they’re going to do smart things for your business.
- bungie4 7y agoIf I had a gray beard... 30+ years as working dev. I've never taken a 'computer class' while in school, although I've taken some instruction while working. Entirely self-taught. I do this because I like it. Back in the day, I never played video games, I taught myself, and wrote, code. To this day, I don't play video games. It's been my experience that hiring degreed CS graduates may not be the best course. Theirs a big difference between being 'book-smart' and real world smart. I tend to give preference to guys who write code for fun over those who are in it for the money. Case in point, we just brought on a high-school student who is about to start his comp-sci degree. He has written code for years for fun. He's just rocking it. I'm sure he'll be invited back each summer until his degree is complete and will likely be offered continued employment after.
- Pete-Codes 7y agoThat's cool! Extra inspiration for myself as well. I think it's good to bust the myth you have to love video games, or start coding aged 4 etc.
- pmiller2 7y agoIf that works for you, then great, but you’re locking yourself out of an entire world of software professionals who only code for work. I suspect those who don’t code outside work outnumber those who do.
- gnode 7y ago> [...] outnumber those who do. If their understanding that amateurs make for better hires than professionals is correct, then amateurs being the minority makes an even stronger case for filtering.
- jhall1468 7y agoI agree 100%. I used to code all the time, prior to my CS degree, in High School, etc. But now I'm a professional programmer. I don't code outside of work, because coding is what I already do 4-6 hours a day. Now that it's my job, I've taken to other hobbies (and raising a family). I love what I do, but I don't live for it.
- cj 7y agoI'm an engineer. No CS degree. I coded for fun on various side projects from 2006-2012. I didn't consider myself very good. I worked at a couple startups from 2012-2013. During that time, I became very proficient in Coffeescript and a couple popular frontend frameworks. I was very productive in terms of pumping out lines of code (that somehow resulted in a working product). However, I didn't know how to write a for loop. If you had asked me what "for...in" was, I wouldn't have had a clue. And forget about asking me how setTimeout has to do with the call stack. The problem with being self taught, at least in my experience, is that you end up being very strong in whatever areas it is that interests you, and whatever areas of CS are relevant to the projects you're working on day-to-day. In 2013, I began to realize my (glaring) deficiencies as a programmer. That was the point when I started spending all my free time doing online CS courses. They helped a lot with filling in the knowledge gaps that I didn't even know I had. The main reason I'm posting this is to give a shoutout to Project Euler. Project Euler (https://projecteuler.net/ https://projecteuler.net/) is an amazing way to test yourself (and learn) CS concepts. If you've done a coding bootcamp and want to do a "gut check" to see how much you learned (or how much you have left to learn), I'd highly recommend Project Euler. (I'm happy to say that in 2019, I can write for loops all day long...)
- ska 7y ago> The problem with being self taught, at least in my experience, is that you end up being very strong in whatever areas it is that interests you This is absolutely key. One of the main advantages of a solid undergraduate curriculum is that it forces you to work your way through things that are important, but don't interest you as much. And this path is designed and supported by people with a much better broad view of the field than you have. Now, you'll still always gain knowledge faster in the areas that interest you most, but if you only indulge this approach you will have significant gaps. One thing I always recommend to people self-studying (when they ask) is to find someone you trust who really knows the area and ask them for recommended courses/books. Then follow that advice. To some degree MOOCs etc. try and do this for you by designing course progressions, but there are limitations and constraints there that can have you spinning your wheel. Being disciplined about both breadth and depth in a new subject is difficult. One of the underlying themes of a post-graduate degree, particularly a PhD, is to give you tools to do this for yourself repeatedly. It's not impossible to gain these skills properly with little or no formal education, but it is quite difficult.
- Pete-Codes 7y agoSo I'm a noob with Ghost: if anyone wants to subscribe to the Friday newsletter you can here: https://mailchi.mp/67e1bf258afa/nocsdegree https://mailchi.mp/67e1bf258afa/nocsdegree By the way, my site does use HTTPS and for analytics, Simple Analytics so no cookies.
- typon 7y agoI think the biggest difference between successful devs and unsuccessful ones is the hunger for constant learning and improvement. You can lack that hunger if you have a CS degree or not. I've observed this at my company and others I've worked for as an almost constant.
- neop1x 7y agoyes, completely agree with this. To be successful, it has to be your hobby and you have to be hungry to know more and improve. It is also required anyway because CS and technologies changes rapidly. For example it is not common to write UI apps in Tcl anymore. :) but it is now more common to use LXC and Docker instead of virtual machines and shared library versioning hedeaches.
- deleted 7y ago[deleted]
- craigsmansion 7y ago"This 22 year old self-taught PHP developer earns $15k a month and lives in an Austrian farmhouse" I mean, f*cking seriously? Yeah, that's harsh, but such a headline's an insult to those with a CS degree and serious self-taught developers alike. To those who made this stay on the front page: given you're competent, you already make the same or more money as those with a CS degree, even if you might know less about the fundamentals, get over it! Upvoting cruft like this isn't going to vindicate your choice.
- MichaelApproved 7y ago1) You're allowed to curse on the internet. HN doesn't have a content filter. Saying "f*cking" reduces the impact the curse is supposed to have. If you feel it's appropriate to curse then just fucking do it. 2) Not everyone does well in a formal school environment. This site shows people that self-taught can still earn good money. 3) Even if a CS degree would increase the Austrian's earnings, how much would it increase it by? Would it offset the cost of the education? Would it offset the wages earned during the years he was in school? 4) People don't always upvote something to the front page because they agree with it. Sometimes people do it to encourage discussion around a topic.
- craigsmansion 7y agoregarding 2 and 3. My complaint isn't about having or not having a CS degree, I didn't even get that far. It's about the Taboola-like quality of the headline. They're an insult to one's intelligence. If I want to be insulted on the Internet, I'd go elsewhere.
- tiborsaas 7y agoWhich part is insulting? That he's young? That he's writing PHP or he makes a shitload of money? I'm envious, I admit it, but I don't find it insulting.
- jhall1468 7y agoRegarding 2, I'd like to point out this is both 100% true and somewhat misleading. You certainly can be successful with no degree, but I think anyone without one will tell you it's a significantly more difficult path than a CS grad takes. If you are driven enough to pass some of the most difficult interviews in the industry, I'd argue you probably could have done well in a formal school environment, since the interviews are largely borrowed from it.
- cmrdporcupine 7y agoI have no CS degree, and I've been in the industry in various forms since the mid-90s, software developer full time since about 2001 or so. I have no CS degree because I just did not have the math grades to get entrance to university. I've been working at Google as software engineer for 7.5 years now. I guess you could say this is success, but I would not recommend this path; even after 20 years, there's hiring managers or recruiters that won't look at me, and coworkers whose behavior changes when they find out. Impostor syndrome can be an issue. At my age with family mortgage kids, it's too late and pointless to go back and re-do all the HS math etc. I'd need to get into a CS program. But I do wish I'd done this. It took me a long time to elbow my way to where I am now.
- khendron 7y ago> there's hiring managers or recruiters that won't look at me, and coworkers whose behavior changes when they find out. I am very surprised to hear you say this. My background appears to be similar to yours (no CS degree, programming full-time since the mid-90s), and although I did see some resistance in job interviews for about the first 5 years of my career, once I had enough experience under my belt nobody cared what my education was. I've never encountered the type of elitism you describe. Maybe it's a Google thing?
- cmrdporcupine 7y agoIt might be a Canadian thing, too.
- dentemple 7y agoI've had a similar experience to other poster, but relative to tech stack. I learned .NET and Javascript early in my career. Every single job interview I had at a .NET shop brought up my lack of a college degree as a possible barrier to "handling" or being "good enough" for the position (their words). Not a single one of these companies invited me back for another interview. Never had the same problem with JS, and now I happily work as senior-level engineer (using Python and Javascript) while encouraging other more junior engineers to take up and pursue the JS ecosystem. U.S. East Coast.
- AngeloAnolin 7y agoNot sure if you would consider a two year associate degree in computer technologies as a CS degree because pretty much what I recall from my studies, we were working on understanding the computer parts and components, doing some typing (data entry exercises) and understanding what software and productivity suites are. We did embark on some nifty console programming and writing batch files, but never fully immersing into the bits and pieces of what makes up software (algorithms, binary, lists, etc). I work professionally as a software developer for quite a while, and what I have seen in the industry is that you gain more merit when you are able to ship product(s) that people will use (or perhaps automate a process that was previously done in a manual manner). Yes, you can get past the initial gates of hiring qualifications (such as having a CS degree certificate) as well as the coding tests that lots of companies use as a gauge to test your technical capabilities. But no amount of CS degree or certificate would be enough to patch for example when you are dealing with real world software issues.
- jimmaswell 7y agoThe value of college to me was mainly the degree and an internship that resulted in a good reference. Nobody in practice seems to care about personal or volunteer projects unless it's maybe contributing to Mozilla or something. Degree is necessary to be interviewed by 99.99% of openings.
- bluedino 7y agoBetween the requirements of a degree and silly things like "10 years experience with X" for a CRUD develeoper, I have a hard time getting through HR when applying for jobs. If I can get to a technical manager or another developer, we can talk shop and show code and I'm good. Just remember it comes down to who you know or who you can meet, you might as well have worked at Burger King by the way some of the filters work.
- derekp7 7y agoI sometimes feel like I have a leg up based on when I learned computers (self taught mid 80's to early 90's). At that time, everything was more low level, and there were fewer, yet higher quality books on the market. So I started off with W. Richard Stephens, K&R, Pike, Sedgewick, and others that you either had to really get it, or you wouldn't get anything. Not that this was the best way to learn, but you knew coming out of it what you learned.
- commandlinefan 7y agoI have a CS degree (in fact, I have both a BS and a Master's degree in CS) - I'm still "self taught" in the sense that I learned to program the same way you did, by reading Stevens, K&R, Knuth, etc. outside of my coursework. Don't get me wrong - I learned a lot of interesting stuff: I never would have learned calculus if it hadn't been a degree requirement, and it helps to understand a lot of AI, but learning to program is sort of a "side effect" of academic computer science.
- arethuza 7y agoThat was similar to my experience on a CS course - you were expected to do a lot of development, but nobody really specifically taught you about it and you were expected to pick that up by yourself as you went along.
- scj 7y agoIn this field, you're always going to have to learn things on your own... The trivial example is new technologies that weren't available when you were in university.
- mtberatwork 7y agoThat's how my CS program was (late 90s) as well. You were expected to be somewhat proficient already in C/C++ programming going into the major. Much of the program was mathematics courses. It was brutal. They eventually saw the high drop out rate and re-configured the major. I envy the kids who get to go through the major now. The courses look much more interesting and it's comprised of more actual software engineering coursework.
- tibbon 7y agoI grew up surrounded by computers, but took relatively few classes. I took AP Computer Science in high school, but had to teach myself the “B” part of the class because the other students couldn’t keep up and our AB class just reverted to just the A portion but that was too easy for me. I also took an “honor programming in C” class from the same teacher, but it was essentially just two hours a day for me to program silly games using some Borland graphics library. I spent a lot more time being familiar with networking at the time really, and despite the CS parts seeming easy, anything web related outside of HTML was a mystery to me. I did music for college and the only programming I did was in csound and max/msp. Long story short, music doesn’t pay much. I just started reading and doing programming. I got gigs almost immediately for solving simple data problems for people (extract these CSV files into this format and pull down web data, etc). Fortunately I had companies where they were happy for me to take on whatever programming I felt comfortable with, despite being in a non-dev role originally there. 12 years later, I’m damn good at this. It helps that I can generally just read a book and absorb it. I’ve read books on CS, but haven’t taken any more CS classes outside watching some MIT course 6 videos. I did take some machine learning classes at MIT over IAP and those were fun. One weird thing, I’ve never taken beyond pre-calculus, but the linear algebra stuff in most ML things isn’t that hard for me. Maybe I’m just lucky? I’m a total hack at math, but can understand concepts quickly still and apply them in code. One weird quirk was that I had to learn that not everyone can learn like I can. I taught for a few years at General Assembly and learned immediately that most people don’t like being throw in the deep end, or being told to read something and apply it the next day. They need smaller and better defined problems to build confidence. Only 5% of student actually enjoy things on hard mode. That’s ok- it’s just different than me. Like, at work right now I’m probably going to need to do some Go work. I’ve never used Go outside the first 10 project ruler problems. But- I don’t mind telling them that sure, I can do some work in Go. It’s just code, and if I sit down for 8 hours I can get decent with the language. The only things I’ve encountered so far that felt were “hard” were Haskell, and anything with shaders and modern 3D programming. I’ll figure them out eventually. TouchDesigner has also been tricky, but it’s mostly that their documentation is scattered (so much in videos) and the ui/workflow is non-obvious. I should write a book on it.
- sergiotapia 7y agoMake peace with this fact: you can most definitely build businesses and add value to any organization. But you won't be able to optimize Twitch's video codec or any other very low level, uber-specific, high impact code. Business need both types in this world. No shame in that, but don't lie to yourself into thinking that you can do _both_ with no CS degree. You can't.
- sus_007 7y agoSo you're saying a highly motivated individual with an access to World Wide Web and physical textbooks can't teach him/herself to optimize "Twitch's video codec" or any low-level problems on their own ?
- sergiotapia 7y agoEverything is against you. You probably won't.
- BubbleBill420 7y agoCongrats. You are the HN idiot of the day!
- setpatchaddress 7y agoNonsense. You can absolutely teach yourself to optimize low-level code if that's what you want to do. The amazing thing about today's world is that all of the incredible resources available for learning just about anything in science and engineering to anyone who has the time to consume them. And you can work on open source projects to build your native skills. The difficult part for you will be obtaining an interview. Because all of the other candidates will have CS degrees, and increasing numbers of them will have graduate degrees. You are at a disadvantage.
- langitbiru 7y agoThe other difficult part is to put aside time and money. I mean the information is most likely free but you still need food. Food is not free. Then you have to work so you can buy food. If you work, you will have less time to study by yourself. In this sense, UBI is a godsend. But of course, we assume all actors are rational and self-disciplined.
- notus 7y agoI'm confused how you accomplished anything without some type of looping abstraction. If you understand one of them most of the rest are fairly intuitive except looping with recursion. It just seems bizarre that you were working somewhere and being productive without knowing what a for loop was.
- argd678 7y agoIt sounds a bit like an ad for the site he mentions, I’m not sure how you can miss for loops.
- jshowa3 7y agoI just find these odd. Does anyone struggle with this stuff? They just make it all look so easy. I for one struggle quite a bit with coding, design, theory, and other aspects. I just don't get how so many people think coding is as easy as "reading a book" or "doing a tutorial".
- deleted 7y ago[deleted]
- zcrackerz 7y agoWell, you're literally writing step-by-step instructions that a computer will faithfully perform without deviation. Once you understand how a computer works and how to talk to it, it should be as easy as having a conversation. I don't think this is easy, but when you've been doing it for years and years, it feels that way.
- jshowa3 7y agoComputers don't even operate solely step by step anymore. They often operate asynchronously, through interrupts, or compute things in parallel across multiple threads. Maybe if you're programming something simple, it will be "step by step". But most programs are not this simple.
- gnode 7y ago"Coding" is as meaningless a term as "writing". Much in the same way you can leverage basic writing skills to achieve entrepreneurial success, you can do so with coding skills. A literary academic may still consider writing to be a substantial exercise, probably more so than the untaught.
- jshowa3 7y agoThat's because the academic knows not to produce low quality content. The untaught often does not. I'm still reeling from having to maintain spaghetti code that some untaughts have churned out in my career.
- arvinsim 7y agoHonestly, as someone who laboured in a CS degree and work as an employee for 10+ years, I feel frustrated that I feel stuck. It feels like that the reason that I am still working in mediocre jobs is because I don't know how to generate ideas. Or how to make prototypes using design tools. Or how to go about as an entrepreneur. It's both inspiring and deflating at the same time to people, especially young people, succeed in things that I have dreamed about when I was young.
- tambourine_man 7y agoHeadline cutoff on iPhone SE: https://imgur.com/a/6RGJQQ1 https://imgur.com/a/6RGJQQ1
- chrshawkes 7y agoI'm a self-taught Senior Engineer doing this professionally for the past 10 years. I've never taken a single course in Computer Science and dropped out of business school to start my own. Amazingly, some of my work has been used by universities, 20 million have watched my Programming YouTube channel and 50k+ have signed up for my online courses. Most companies don't have a hardline requirement for having a degree anymore, but if they do, even for management, I'll do my best to avoid them. Last thing, I started coding at 28.
- deleted 7y ago[deleted]
- ElijahLynn 7y agoLove this site, so much hope and possibility in these interviews!
- Pete-Codes 7y agoThank you! Next email comes out on Friday. If you subscribe of course :)
- boblebricoleur 7y agoSince these articles seem to be putting a cash value on the word "success" (or at the very least an instagram buzz value), I would point that IMHO, most of this success comes from people skill. You can have a degree or not, even bad developpers can hop from one job to another, making more and more money in the process, given they're good enough to manipulate the recruiters/clients into hiring them. Making money does not mean your product is good,useful or well-designed. It means you're a good salesman. Congratulations, you're making money by manipulating someone into giving you their money. Awesome ! Thanks for playing, please leave. I guess the point of the website is to encourage people without a CS degree to learn programming. That's great. The disctinction beetween CS graduates and non-graduates seems to be very unfruitful IMHO so encouraging people to pick up a computer is cool. What I would sugget is to stop promoting sensationnal stories like the kid that is making 15k$ a month. This is purely manipulative and dishonest. This kind of journalism is plain wrong. Even if the number are true (which I highly doubt) encouraging kids to drop out of high school to study CS on their own is wrong. Getting a degree is the best chance you have to becoming good at it. You can still be creative this way. More, maybe encouraging good engineering (or craftmanship whatever you want to call it) instead of instagram buzz and money would make tomorrow's software a little less frustrating to use and a little less bloated. I would love to see a story, just once, with the title "this guy made a beautiful piece of software, and it's awesome"
- Pete-Codes 7y agoRead more of the articles then: Anne-Laure made a wellness plugin. Steph won an Inclusion prize for calculating how many women contribute on Product Hunt. Harry Dry made a funny dating site for Kanye West fans.
- jshowa3 7y agoAgree 100%. Not to mention, having a degree opens up a lot of opportunities in case you ever want to leave the field. Many people get sick of coding after doing it a while due to its highly repetitive nature. Having a degree essentially gives you a pass to enter a myriad of fields that still require one.
- 7y ago
- randall 7y agoMuch like CJ (upthread) I'm a completely self-taught developer. I started building apps to scratch my own itch, and eventually found out the only way to accomplish what I wanted at a larger scale was to build a company. Last year we sold to Facebook, and I continue to develop software as well as manage a team working on our vision. I'm writing mostly to hopefully let others know you can be self taught and be super impactful. I've dealt with a lot in my life, and our ride wasn't smooth sailing -- https://twitter.com/randallb/status/1110669172487286784 https://twitter.com/randallb/status/1110669172487286784 But regardless, now I build things that are high quality and fun.
- duckqlz 7y agoEven with a degree the learning process NEVER stops. Most important imo for new developers (self taught or otherwise) is to learn from multiple disciplines. CS without math and statistics is basically mindless data entry. Adding in high level concepts like category theory not only improves you as a coder but deepens your overall understanding of concepts that will allow you to excel in any language or atmosphere. While I think that a lot can be gained from a formal education there are other options provided someone is willing to put in the work. I have done work before getting my degrees and work after and in the end what sets coders and engineers apart is their “portfolio” which is generally a display of their side interests and their willingness to keep learning.
- oneplane 7y agoIt's fun when people assume a CS Degree means you are a developer. Practically all development is self-taught, a CS degree is only handy for those moments where you dig into some abstract theory, which in most development jobs hardly ever happens. You mostly spend (or waste) time on tools, frameworks and interaction (both with humans and other systems). Lots of common development is rather mundane compared to all the beautiful theory behind it. Which is not automatically bad, but also doesn't require a CS Degree to get going.
- jhall1468 7y agoCS is more than abstract theory. It gives you a foundation that you otherwise are unlikely to get. Self-taught means learning things useful for your existing job or things you find interesting. I'm work almost exclusively on the frontend, but my CS degree gave me enough foundation that I'm fairly familiar with compilers (I wrote one in college for a required course). I don't necessarily enjoy writing compilers. But the fact remains that I can write a compiler. I can program in C or C++. I do understand pointers. None of this may hold any real value, but I wouldn't be able to do any of them if not for the degree.
- neilv 7y ago> But the fact remains that I can write a compiler. I can program in C or C++. I do understand pointers. None of this may hold any real value, but I wouldn't be able to do any of them if not for the degree. I liked your initial point, but the argument weakens... People absolutely have learned all the above things (and very well), on their own, outside of a CS degree, and I bet you could've.
- jhall1468 7y agoI wasn't advocating that people don't. There are absolutely vastly better compiler programmers than I am that have never taken a formal class. My point was that I wouldn't have learned it because I don't enjoy it. And sometimes, professionally, we get to do stuff that isn't fun. The nature of being self-taught is heavily biasing the things that interest you. College forces you outside of the box. Outside of the box happens to be those things for me, but they'll be other things for other people. Sorry if that point wasn't clear.
- sremani 7y ago"Only autodidacts are free." - Taleb. Every one will have knowledge gaps, the skills for CS degree and real world programming will have some overlap, but there is whole lot of distinction in both.
- hi41 7y agoI am trying to transition from C programming on Tandem(also called HP/Nonstop) to Java and web technologies. The main reason I want to move out of Tandem is that there are only few companies having that system and jobs are few. I have basic Java knowledge but don't have any experience developing for web. The new jobs posting all talk about lot of skill set - Struts, Spring. When I got a job interview I got unrelated things like Solr. Each of these frameworks seems to be massive. How do I proceed to level up to the current technologies? Your help is much appreciated.
- arendtio 7y agoSwitching from C to Java with Spring/Struts shouldn't be that hard, because you are still on the safe side (the server). The real fun with web technologies starts when you are in the browser. So if you have no prior experience with the web-technologies, I would recommend you to learn a bit of HTML/CSS/JS until you are familiar with them (build a simple, plain HTML page, add some CSS to change the layout, throw in some JS to load some content asynchronously and maybe add some JS buttons to make the page interactive via JS (e.g. change the content when pressing a button)). Nothing too fancy, just make should you know what every language looks like and which language to use for what use-case. Next, you should find out which Java Framework you really need to learn. When I learned Struts 2 a couple of years ago, I remember that it was considered outdated already. And then start doing the tutorials of the frameworks, followed by building something you want to build with those technologies (start small and keep adding stuff). At least that is the path of the self-taught developer.
- hi41 7y agoThank you
- QuickToBan 7y agoWhy does this title presuppose that people with CS degrees can't also be self-taught? A degree is a piece of paper that employers need; it has little to do with learning anything useful.
- erikpukinskis 7y agoBecause you’re not self taught if you have a degeee. You can still teach your things, but as soon as you submit to formal training you are no longer “self taught”. That’s what self taught means.
- stellalo 7y agoAre CS degrees supposed to teach how to code?
- bdcravens 7y agoYou write code to demonstrate what you're learning, but you don't learn any one language in depth enough to be productive from day 1 at any new job.
- EnderMB 7y agoI have a CS degree, and while I agree with the general idea that you don't need a CS degree to be a successful programmer I'd say the biggest barrier to entry is in the start of your career - both getting a job and keeping that job. I've worked with loads of self-taught developers, mostly from tech/coding bootcamps, and I've seen a lot of people burn themselves out due to a number of factors: 1. Bootcamps are hard, but suddenly these developers find themselves in a harder environment where 12 weeks of coding experience might not be enough to get them out of a problem. 2. Bootcamps cost a lot of time/money, without the option for a student loan, so many people put themselves into debt to switch careers, and that added pressure is a lot for people - especially when they've been sold a lucrative career and find that a company has hired them because they are cheap. The CS knowledge aspect is largely irrelevant, because many developers can get by quite happily without ever using a linked list or priority queue, or knowing anything about quicksort, merge sort, etc. For most projects where you need to merge k sorted arrays, concatenating them and running the standard language sort function is good enough. IMO, the problem has never been one of skill, because many industries have developed skills on-the-job or with time spent in industry. Where a CS degree comes in handy is in giving a student a structured approach to learning over a respectable amount of time, and offering a step above the entry-level barrier of entry.
- jtdev 7y agoI’m a programmer who studied information technology (with a number of programming courses, but zero true CS coursework) first at community college and then at a budget brand state college. I’m now a senior developer/engineer and frequently work on projects alongside CS graduates from prestigious schools who seem incapable of completing even the most simple coding tasks - this is the case nearly 100% of the time in my experience with these CS grads. That said, I’m sure there are many such graduates that are more than capable, but a persons degree and where it’s from doesn't seem to indicate much other than socioeconomic background.
- tracer4201 7y agoI work in big tech. I know lots of folks who fall into your camp. Anecdotally from interviewing and working with other software engineers, site reliability engineers, software development engineers, and <insert whatever your company calls it here>, how prestigious your undergrad institution was reflects little to none in your ability to solve real world problems. It does help open doors though, as every FAANG I’ve worked at heavily recruits from these schools.
- jhall1468 7y agoMost people that graduate with CS degrees took a few actual programming classes. The majority of the rest is a the same well-rounded classwork you took (English, History, etc) and a lot of theory and mixed-theory/applications classes like AI, Operating Systems, Compilers etc. The practical real-world applications of those classes aren't 1:1 with their first job. I'm a frontend engineer and took 0 classes that are even remotely relevant to my day to day work. That said, foundation adds value. I can speak a common language with other engineers, including those that are completely different than my specialty. To suggest a persons degree is meaningless is just as nonsensical as saying being self-taught is meaningless. I've also worked with both prestigious graduates that can't program and self-taught brilliant programmers. However, they are exceptions to the rule. The only thing that doesn't indicate much is anecdata, which both of us have now provided. As an aside, your attitude towards entry-level programmers is likely similar to the attitude of senior programmers when you were entry-level. "Simple" is relative. You were undoubtedly a considerably worse programmer when you graduated as well, assuming your current title was earned through merit. Perspective.
- b_tterc_p 7y agoI’m self taught and do data science for work and game dev for hobby. Functional programming has seemed much easier to pick up without formal teaching than object oriented. The latter appears to have many more unknown unknowns. e.g. in game dev I did not know that static methods and objects existed, so I built a bunch of dictionaries in an instance of a single use class to store some data for a game. It works, but its garbage. But hey, all things are discoverable eventually, and I would argue going through the experience of why things are nice before learning they exist has some merit to it. I don’t blame companies which require credentials though. Hiring is hard, especially hiring many people at once.
- samrosea 7y agoI'm self taught but went to CMU (not for cs) so employers don't care
- api 7y agoI fall into this category. I have no CS degree. I'm the author of numerous things with the best known probably being the ZeroTier network virtualization engine. I got my first programming exposure when I was 5 or 6 on a Commodore VIC-20. By 10 or so I was doing 6502 machine language on a Commodore 64. I went from there. I have a BS degree in biology. I studied that because I wanted to study something new, but more importantly because I was interested in AI. I always thought (and still think) the best way to learn about intelligence is to study the only existing examples of intelligent systems. These are found in biology. The University of Cincinnati let me do a little bit of a "design my own major" thing so I designed one in "organic intelligence" with classes in genomics, evolution, neuroscience, and ecology. Those are the four scales at which intelligence is found in nature. I work in computers now (founder of ZeroTier) but still follow AI and biology avidly and would like to return to some of those areas of study someday. I also find that my study of biology deeply influenced me as an engineer and the types of systems I design.
- bdcravens 7y agoNo degree here, but it was a unique time in the industry. Long story condensed: I grew up dirt poor. Went to college. Got my first computer that could get on the Internet (1998). Wasted time online, missed classes, lost financial aid. Ended up going to work for local ISP doing tech support. Quickly moved into web work, and then development. (mostly ColdFusion) This was late 1999, when things were booming and everyone was hiring. I took a 6 month contract - low on the contracting end of things, but great money for me. Next job was in HR department attached to the airline industry, which was a good job even when the "dot com crash" was occurring. That job ended do to effect of 9/11 on stock prices, but by then I already had a couple of years of work experience under my belt and was on my way. Today: director of technology for a small company (fancy way of saying I'm the lead developer and lead architect) What was true for me then is true for many developers today: some are very cut out for this. Looking back, I've always been a programmer; it wasn't a trade someone told me to go to because of the income. That's why I think some bootcampers succeed, and some fail: truth be told, this industry isn't for everyone (alas, I saw many leave the industry in the early 2000s who went on to do accounting or management or car sales or whatever they're a better fit for). Those same students, and myself, would also succeed with a CS degree. I think the lack of one is a matter of circumstance, not a formula for success or failure. I will say that there are certain jobs I'm not necessarily equipped for due to some missing foundational information. Those situations are the examples that everyone goes to, but the reality is, the world is bigger than SF and FAANG. (And even at the FAANG's there's plenty of Python, Ruby, and JavaScript slingers... the only time they may have used their CS degree was to get past the ego-stroking whiteboard interview)
- tptacek 7y ago25 years in. No CS, just 1 semester of LAS at UIC. Apart from the obvious stuff, have worked on distributed systems and routing protocols, operating system kernels, and compilers. I feel like having to start my career in C probably helped me a bit.
- docker_up 7y agoI work with a twenty-something year old right now. He graduated from high school. Had his own non-tech company for a while after high school. Decided he wanted to go into coding. One of the best damn coders I've worked with in 25 years. Gives the toughest, most consistent code reviews. He's the type of programmer you can build a startup around. In another comment a few days ago, I mentioned a 10x engineer I knew. Graduated from high school. Went into the military. Came out and coded. He is the best coder I've worked with. College education is not necessary to be a successful programmer. You do need to have some predisposition to coding, but you definitely don't need a degree.
- pmarreck 7y agoWhat languages do they use?
- hutzlibu 7y agoDoes that matter? They probably use the right language to get the job done. Depends of the area of their work.
- snoman 7y ago> Does that matter? Yes. While the evidence provided is anecdotal (that is to say: outliers exist in successfully learning anything outside of a formal education), there are languages designed to be more friendly and more fun for newcomers (Ruby, for example) while others are designed to be translate more directly to the instructions a machine might execute. More anecdotal evidence indicating that one language might facilitate informal learning better might be interesting or helpful.
- pmarreck 7y agoSee my answer to the same question (except posed in a far more hostile manner) here: https://news.ycombinator.com/item?id=20511025 https://news.ycombinator.com/item?id=20511025
- Consultant32452 7y ago
- metalrain 7y agoWhile I don't have CS degree, I studied 3 years for BS and got some ideas and associations that I can explore more when needed. Not quite 20:80, but maybe like 50:80.
- edpichler 7y agoI am very glad for having studied software engineering at university. I believe it's more productive to learn when we have guidance, colleagues and a proper environment.
- kitchenkarma 7y agoTypically CS degree means that you can finish something regardless if it makes sense or not. That skill is in demand in large corporations that require people to follow stupid processes and complete tasks that don't reflect on what are the actual needs. Of course there are good CS degrees, but these are not as common as one thinks. The purpose of universities was to gather knowledge and pass it on where it was not possible otherwise to do so. These days people have open access to all kind of knowledge and universities are not as much important as they were. If company lists CS degree as a job requirement, that for me is a good indication of a place I don't want to work in.
- pryelluw 7y agoCant subscribe to newsletter on android/firefox with ublock origin Please add a no js form to subscribe
- jboy55 7y agoI'm a 40ish FAANG Manager without a CS degree. I would point out that while I agree that it is possible to have a great development career without a CS degree, I wouldn't recommend doing it this way if you have a choice. So, if you are contemplating dropping out or skipping doing a CS degree and going right into the industry, you are going to face obstacles and bias throughout your career that having the CS degree will mitigate. No one second guesses a CS degree, but a good chunk of CS grads (your future coworkers and hiring managers) will second guess a self-taught education.
- travbrack 7y agoWhat about a degree from a school that has a bit of a 'degree mill' reputation - https://www.wgu.edu/online-it-degrees/computer-science.html https://www.wgu.edu/online-it-degrees/computer-science.html - pretend that's someone's only choice.
- fucknuggetz 7y agoI'm a CS major at the moment. I learn some of the most interesting shit that I would never have thought to teach my self. Data structures, discrete math, and theory of computation come to mind. Learning about how grammar and linguistics are so heavily tied into CS has been eye opening and has helped me understand so much more about what's going on in a computer. I never would've learned that on my own. Sure, probably don't need that to get a job as a developer. But, having a CS degree != being a developer in the first place. I get that they can go hand in hand but it's just not the same.
- legohead 7y agoNo degree here. Started programming when I was 14 on MUDs. I actually went to college for CS, quit, went back 6 years later, and quit just shy of my BS. I need 9 or so hours. I moved to another state and didn't want to go through the transfer process and probably end up taking repeat classes... I'm at the ceiling pay-grade wise now, and burnt out, but that's another issue :) The moral of the story is, you can progress really well in this field if you can prove yourself. Experience > Education
- hutzlibu 7y agoIt is luckily easy to prove what you can in IT, as you can just show own succesful projects. But at least in germany here, you will still have a hard time getting the same pay, no matter the actual skills, as they are very often bound to formal education.
- wiineeth 7y agoIt's so hard to get a job in India without a degree. i'm trying from 2 years and i'm still not employed
- viach 7y agoThe knowledge earned with CS degree is priceless on tech interviews - where else can you be asked what red-black trees are and O(x) notation for hash map. When you hired it's different, just get this damn Hibernate mapping working)
- inson 7y agoInteresting. I am starting to teach my siblings to code (they are with non-cs degree) and don't know where to start. Do you guys have any thoughts about this?
- deleted 7y ago[deleted]
- arendtio 7y agoI am sure there are people who disagree, but if someone really wants to learn about 'Coding and Computers', my choice would be Go. Let me explain: When I learned to program, QBasic was the first language I had contact with. I could make the computer beep but never achieved anything useful. Next, I learned HTML and was very happy about creating something. In school, I learned a little bit about Delphi and while GUI programming was cool, I preferred doing things on the web. A little time, later I came across PHP and was finally able to create real websites. So I coded a few projects with PHP and had my first struggles with arrays and the likes. Finally, I arrived at the stage where I wanted to learn a real programming language. So I learned C. C was great. I mean, it was also very complex, but finally, I had control over every bit. At that point, I started a CS degree and learned about pure languages like Smalltalk (Object Orientation) and Scheme (Functional Programming). Those languages were beautiful but felt like a step back in terms of practicality. When the JS frameworks poped-up I learned to use a few of them too and still use some of them today and while JS is a great language to create results, it doesn't feel to me like a language that teaches you how to write good code. Along the way, I encountered other languages like Java, C++, Python, Rust and those are certainly not bad languages, but I wouldn't recommend them for beginners. What makes Go so special, in my opinion, is that it reduces the complexity of C while not taking away its purism. It comes with all the tools you need (except a text editor) and encourages to write good code. Finally, it has good support for building web applications so finding a good use-case shouldn't be that hard. After all, good use-cases motivate students ;-) I am well aware, that one could certainly argue for every programming language to be the perfect candidate, so please remember that this is a personal opinion.
- inson 7y ago
- ricardo_ramirez 7y agoI have worked with some people that are self-taught that ended up being incredibly good. However, I still bias myself a bit to people coming from a CS background because of other non-knowledge related reasons. Examples. They are more ok with doing 'not fun' stuff, because they have suffered doing a bunch of homework. At work, maybe a percentage of the job is fun, and some things you need to power through. Tuning logs, painfully stepping through the code for the 110th time to find the erratic bug, or boring documentation, also part of the job. They are less inclined to just copy-paste a solution that you found on StackOverflow and more agreeable to go into the R&D mode of finding the right algorithm. This can be a blessing and a curse. People that have been through several years of education are more inclined to follow a schedule. We are very relaxed at Silicon Valley and yes some people do their best work from home, but sometimes you just have to be here. College helps form some of these habits. Last, a degree comes with a lot of soft skills that Universities just throw in sometimes. Communication skills, the ability to summarize properly, grammar and spelling .. not required for a coder but definitely useful for someone that wants to grow into a career into software, eventually you need to interact with Product Managers, Business, Customers, and those unrelated-to-the-job skills start becoming very handy.
- sydd 7y agoI don't buy into the argument that you need to have a degree because getting one is tedious. There are plenty of places in life that will teach you this lesson. I work at a coding school, we have lots of students that did things that make a university look like a joyride. Try doing a tech support job for years 10+ hours a day, now that is tedious.
- jdcro 7y agoIs this something that necessarily needs to come from a university? All of the things you mentioned seem like skills one would pick up in an entry-level job. Is there something about a job that makes it easier to never develop these habits?
- ozim 7y agoIn my opinion CS degree gets bonus when hiring because it weeds out people that are not interested. With 160 people in same year as me starting it ended up with 90 people getting bachelors, and maybe 60 masters. Then out off all that graduated maybe 30 went into software dev, others went into testing and support roles, maybe even into other stuff not CS related. If you are starting career, how are you going to convince someone that it is not passing fad for you, that after 6 months you would say "ok I am done, I am bored with it". There is no way to show people how much time you invested in your self study. It is not about what you know, it is about other people getting to know so they can hire you.
- rvz 7y ago> There is no way to show people how much time you invested in your self study. It is not about what you know, it is about other people getting to know so they can hire you. Your point still holds true in this industry when you get as much as 300+ candidates applying for 1 graduate job. As much as I hate it, unfortunately some companies would hire internal candidates than external ones even if they were highly qualified, because they are highly networked within the company. Having just a CS degree in 2019 is not enough to market youself as a better candidate. It is meerly seen as a minimum expectation from larger companies.
- xwdv 7y agoNo CS degree is fine when you’re doing trivial programming work that doesn’t really matter, such as application frontends. But could you imagine riding in a plane or using critical infrastructure services programmed by people with absolutely no computer science degree to their name? Not a chance. Like getting surgery from a butcher.
- dentemple 7y agoPeople who get jobs without a degree don't invalidate the people who do get a degree. Or that there are use-cases where a degree is necessary.
- mls-pl 7y agoPeople with CS degree have more theoretical knowledge, for sure. But people without it, self taught, have more practical knowledge, cause they simply done things instead of learning about them. Decide yourself, which is better.
- username90 7y agoI don't think that many self taught developers have any practical knowledge related to avionics control systems, there is only so much you can do on your own.
- rightbyte 7y agoEhmm ... do you think all airplane programmers are CS graduates? They are not. At least not at SAAB. Actually, very few are CS. Most are mechanic, electric and fluid engineers. In at least Sweden's machine industry programming is just something you learn in your engineering role by osmosis and revulations from God, and typically one to three 7 week courses at university. Volvo Cars, Volvo Trucks, Scania, SAAB etc.
- jpindar 7y agoLuckily, the planes keep flying and the infrastructure keeps working whether you can imagine using them or not.
- kabdib 7y ago40 years writing software for a living, dropped out of college after 3 years. I'd taken all the CS that I could, and took graduate level courses my last year because I had run out of other interesting classes. That final year of school just didn't look important compared to getting my dream job at the time (writing games for Atari). No real regrets, though I had (and still have) a sense of inferiority that drives me to study. Last year I threw out many boxes full of papers that I've read over the years (they're mostly available online now). I have bookcases and bookcases of CS-related material. I've read Knuth, etc. (okay, still going through Vol 4...). My only regrets are not getting a better math background (a decent calculus-based probability and statistics course would have helped). I took linear algebra in school, but didn't really get it until I started doing graphics and then I needed much more than my college course provided anyway. Tried going back to school a couple of times. Work always got the better of me. Finally I realized that the degree just wasn't important to myself or my employers, and that I wouldn't learn anything anyway. Lack of a degree has never been a problem when finding a job (except once, and I actually felt pretty good about that one . . . maybe I'll tell the story some day). I think the key to long-term success (whether you have a degree or not) is continuing self-education. I try to keep up by reading papers and digging into promising new tech. The industry is bigger and moving faster these days, so you have to pick and choose what to stay current on. It's a good idea to branch out anyway (if you read ten papers on storage, networking or graphics, read a couple on something unrelated, like AI or queuing theory or dig into biology or astrophysics -- stretch your head). Helps to do different types of projects, too. I plan to work until I drop; I feel fantastically lucky to have found a career that I enjoy this much. My father-in-law retired from writing code at age 75, I think I can go longer.
- spsrich2 7y agoOne of the top devs I ever worked with, I hired him, his previous job was a fitness instructor. He had left school at 16. Had done some programming on his home computer, and wanted to be a programmer for a living. I was blown away by his methodical approach to a simple problem I gave him. Less than year later he was running his own team that had people in it that had been to some of the top universities in the UK, like Brunel, and they all respected him. He'd completely taken control of that project. That was all using VB6. 20 years on he's now a leading C++ expert. Degrees don't mean anything imho.
- w8rbt 7y agoI wrote a lot of software before I ever took a CS class in college. The only things you'll get from a CS degree are the ability to prove problems are NP-Complete, learn how to do Dynamic Programming, reductions from one problem to another, Linear Programming, Graph Theory, and a bunch of other math tricks (random hashing, fast modular exponentiation, The Gauss multiplication trick, etc.). You don't need any of that to write a Chrome Extension. If you need software to scale to hundreds of millions of users, then you probably need people who have CS degrees to think about your hard problems and how best to optimize them and which ones have no polynomial time solutions for all inputs (problems to be avoided or worked around somehow). I can do RSA by hand (on small messages), quickly tell (with only pencil and paper) what 2^1027 mod 3 is and do Euclid and Extended Euclid by hand to find multiplicative inverses (in one pass). But I can write code that runs pretty well, too, and I can do that with or without a CS degree. So can most people.
- mncolinlee 7y agoI have no CS degree, but at the time I was in college, CS programs seemed embarrassingly poor compared to today. I took a few, elective CS courses and did CS research back then and remember numerous graduate students trying to cheat off of the undergraduate English major. I'll say this. There's advantages starting both ways. By starting from a CS background, you're likely to get a formal education into concepts and terminology that might seem boring otherwise. By starting from a non-CS background, you begin with the most important skill a programmer requires-- the ability and passion to teach yourself new technologies and concepts. Any developer who begins with a CS background can learn to be self-taught. Any developer who begins without a CS degree can learn algorithms and advanced concepts.
- happythen 7y agoThere is no such thing as self-taught, (doesn't even make sense). No one opens a computer, figures out how the processor takes instructions and invents their own language. If you went to college, you listened, you studied, and you practiced. If you did't go to college, you studied, you practiced, and you had to have found someone who will answer your questions. It's hard for everyone to enter the industry, especially now, college or not. It's not about how smart you are, or your identity, or your environment. It's how bad you want it, how hard you'll work for it, and if someone is willing to help you. As software engineers, degrees or not, focus on that last part. Be there for someone learning, studying or just trying to figure it out. Feels great to see a finished product. Feels even better to teach someone how to fish, (code for money). I wouldn't be here if it wasn't for people along the way, giving pointers, telling me where to look, telling me what not to do. I was a gawd dang line cook. Be that helpful person.
- rsuelzer 7y agoI have no CS degree. I see a lot of these comments poo-pooing the skills of people who taught themselves to program. From my experience, some of the best developers I have worked with do not have CS degrees. I have given many interviews where candidates could explain what an abstract class is, but then when it came time to actually write code they could not even build something that compiled, or their code was really messy and unorganized because they had no concept of maintainable code since they have never had to do anything other than academic exercises where style apparently is unimportant. It's like they memorized some books and definitions but never actually had to build anything. The developers that didn't have a formal background in CS almost always did poorly on the technical questions, but I found about half the time it was simply a lack of knowing the terminology. She might not know what a monad is, even though she implemented in her own code. I have always been into computers, but didn't really consider it as a career until I got a job that required me to do a lot of data entry, so I started teaching myself how to automate things. I turned a 40 hour per week data entry job into a single button click on Monday. This meant I had a bunch of free to time to develop my skills and work on additional programs that would help our organization. I fell in love with programming. I eventually interviewed for a position but failed the technical questions miserably, I didn't understand a lot of the terminology like "linked list", "adapter patern" or what "bubble sort" was. So, after that I got a book just about programming interviews, and realized I had actually implemented most of the practical things in that book, I just didn't know the technical name for it. After I read that book I interviewed at another location and was immediately hired. The only difference was that I took maybe a week to learn some terms.
- thanatropism 7y agoIf you really find someone who reinvented monads independently, don't hog them. Send them to graduate school, they're of another class entirely.
- kqr 7y agoI like to think of it as there being two aspects to software engineering: there's the abstraction side, and then there's the craft side. CS graduates tend to be heavily weighted toward the abstraction side, and weak at the craft. Self-taught ones are weighted the other way around.
- nevi-me 7y agoI'm turning 30 this year, a professional accountant and started out as a hobbyist, but work in data engineering consultancy as middle management, leading efforts into getting our team to adopt Rust of all languages. I've found being willing to learn more to help me out, my breadth of knowledge is good enough that in many languages and concepts, I can hold my own against CS graduates. I think knowing what you don't know is important, because you get incentivized to expand your knowledge. I'm currently studying Maths and Stats, because they're a good base for data science, and where I want to go in my life out of corporate. The value that I bring to the table is no longer fluency in about 7 languages and a skill to learn more quickly (I've done obscure things like reverse engineering 'complex' accounting rules written in COBOL). What I bring to the table is the ability to solve problems using my financial expertise and technology. So if anyone's reading this, don't be intimidated by "coding". I see writing software as a natural extension of what's on my mind, using what I understand technology to enable me. So, stretch your mind, it's a very powerful thing. Have faith in yourself, and do great like the people on No CS Degree
- tracker1 7y agoIn the very early days (60's-80's) when the needs for programming outweighed the supply... Most programmers were being cross trained from other professional disciplines, such as accounting.
- modahepsi 7y agoI am mechanical engineer and still working as a mechanical engineer. I started to coding when i was 16yo.(now 31)I still yo contunie to side projects. I am not succesfull in side project(due to ideas)
- methodover 7y agoI have a religious studies degree. I wonder if it’s prepared me better than a CS degree for the actual work I do. What did I learn with my RELS degree? Hermeneutics— understanding ancient texts written by lots of different authors in their original historical contexts, often which has been deeply redacted over time. Anyone who’s worked on any production code can see the benefit of being trained in that kind of thinking. The classes I took on theology and philosophy helped train my brain to organize ideas. I had no trouble understanding object oriented programming — Plato would’ve loved it too, I think. Classes on ethics have come in handy too. Oh and just, we did a TON of writing in college. Lots and lots of writing, lots of research papers. I had to learn something new, read all about it, and put together a document carefully explaining the idea, with lots of evidence and citations. That skill has come in SUPER handy for everything from bug reports to API clients, to customer-facing documentation, to internal memorandums.
- asdfman123 7y ago"understanding ancient texts written by lots of different authors in their original historical contexts, often which has been deeply redacted over time" That's brilliant and obviously useful for software engineers. Don't forget that you've probably also studied holy wars in considerable depth, too.
- module0000 7y ago> Don't forget that you've probably also studied holy wars in considerable depth, too. This prepared him/her to understand the great conflict of vim and emacs users no doubt.
- lowercased 7y agotabs v spaces may be an even greater conflict.
- sureste 7y agoStill ongoing with no end in sight
- markbnj 7y agoHow many working developers actually have CS degrees? When I began a long time ago it was quite rare. In fact most of my peers had liberal arts degrees. I definitely meet more CS grads among younger devs now, as well as EEs and SEs, but I wonder what the actual breakdown is these days.
- fapjacks 7y agoI'm self-taught, but the thing about being self-taught is that I enjoy learning. Not like whatever some random person says "I enjoy learning" in a job interview, but actually enjoy it such that I've taught myself proficiency in a few different fields. One of the things I decided early on was that I didn't like the thing that is always implied when people say "self-taught" and so over the years I've procured the services of 300-400-level and postgrad tutors of the fields I'm interested in (CS, math, and molecular bio) to help "fill in the holes". It's admittedly a bit weird approaching someone to tutor you without actually being enrolled somewhere, and of course you need to be located near a university, but this has been so helpful for me that I highly recommend this to any of my fellow autodidacts. If you do a little shopping, you can find amazing tutors that won't cost very much at all (and I dunno if it's normal to tip tutors, but I'm a big tipper in general and this has always paid big dividends).
- whytaka 7y agoI had been a graphic:web designer since I was 14 years old. I taught myself Photoshop and Dreamweaver and became proficient with creating layouts with frames, tables, and of course eventually css. I graduated from college with a degree in Philosophy where I was focused on logical systems. I recall one of my favorite professors being intrigued to know whether I could program and disappointed when I confessed that I only did the design side of web development. I of course had a strong interest in code, having gone through interactive online python tutorials but I wasn’t able to make a the leap into becoming a developer. The wall, I realized, was my lack of knowledge in the unix command line. Once I learned about bash, ssh, and setting up basic web servers, my learning skyrocketed. With a background in logical systems, I was able to grasp the model of computing very rapidly. While I cannot claim to be advanced in algorithms or data structures, I feel comfortable being able to develop solutions that work.
- asdfman123 7y agoWith your background picking up algorithms and data structures shouldn't be hard. It's just a matter of studying them like anything else. (I program and my degree is in science.)
- whytaka 7y agoThanks! I hope so too. My current learning material is “Designing Data-Intensive Applications” which seems to involve some data structures. On algorithms, I think being able to use the work of others is already very empowering. Perhaps one day I’ll get into it deep.
- cr0sh 7y agoI'm a mostly self-taught CSE with no CS degree, with well over 25 years of professional experience. I feel that not having the degree has stunted me in some ways, but has also gave me a bit more freedom in others, because I could explore areas for solutions without realizing "how things are done". That can be both a good and a bad thing. Lately, I've been exploring other areas of CS which have always interested me, even as a child with my first computer, namely that of "machine learning". Where I have found I fall down in that area is in understanding the deeper level math concepts. I know these aren't really required to come up with solutions to problems using the existing toolsets for machine learning (as long as one can understand the math and concepts at those levels, which is arguably simpler) - but not having that understanding (or only a partial understanding) makes me frustrated that I can't understand exactly what is going on inside "the black boxes". For instance, I (mostly) understand how MSE and backprop works in a neural network. I also understand why and when to use RELU vs sigmoid (or some other activation function). But could I derive any of that from first principles? Not at my current level of understanding (all those damn rules of calculus - which I don't understand). In many cases, though, I don't need to - I can treat them as a black box. But I don't like it. I do intend to fix this someday. Of course - this subject - machine learning - has over the years led me down interesting and surprising paths (long before I started really studying it as a subject, in 2011, when I took the "ML Class" and "AI Class" MOOCs). Things more philosophical in nature, but all seemingly related in some manner, at least to my mind: * Chaos theory * Network theory * Emergence and Complexity * Theory of Mind * Various topics in neuroscience * Various topics and ideas in psychology * Etc ...with "Etc" encompassing robotics, engineering, electronics, ethics, history, religion - and all the interactions and branches and spaghetti in between. So much of that I wish I could have a more formal grounding in; I also wish I could speak with (and have the language to speak with) those who have this knowledge and grounding. I know that to be an impossibility, even if I were 20-30 years younger. It astonishes me that many don't see how much CS in general touches and interacts (and both informs and is informed by) with all those topics and more. I see this, even if I don't understand it completely, and sometimes wonder or suspect that maybe I am wrong at some level? Maybe the lack of a formal education in all of those subjects has caused me to see things which aren't there...? Alternatively, it could be that by not having such an education, I am - like before - not "constrained in a bubble" so that I don't see those things? I am not saying I am special in this regard - I have read and spoke with others who have similar ideas to one extent or another, and in many cases their understandings have informed mine. I'm just not sure if I should focus narrowly at this point in my life at 46 years of age, or go more broadly; both are fascinating paths for me. From what I have seen and read, it seems like the "broad path" would be more immersion in studying philosophy, perhaps with a greater focus on the philosophy of mind and/or consciousness. At the same time, I like to think about and focus on the idea (and fantasize of solving it - fat chance) of the "wrongness" of backprop - and whether another solution exists for neural network learning that is more biomemetic? ...and at this point, I'm rambling - so I'll shut up.
- cvaidya1986 7y agoBrilliant! Congrats on shipping such a marvelous project!
- drinchev 7y agoI also have no CS degree, I have a law degree though. I could say that "development" is like lego construction - yeah you can do that with a very specific preparation, but nobody actually stops you from reading the F manual ( RTFM ) and do it on your own. However I think that people loving the job are better than the ones that were learning for it, so no wonders sites like this exists. And in any case I wouldn't go to a self-taught doctor, so something will probably change in the future.
- OscarDC 7y agoThere's a specific case in France, where most developpers I know don't have a proper "CS degree" but have a more generalist "engineering diploma". I can even speak for myself. I didn't learn to code at school much , did some bash and C here and there but that was not the point of my study. We mostly had math, physics and electronic-oriented courses and more precisely in my case a lot of telecommunication courses. Still, for a first programming job, engineers (as in those with an engineering school diploma) are often preferred to people with a CS degree, which did a lot more programming that we did. I would guess that it mostly has to do with the reputation of both the schools and the students from there. When it comes to STEM, engineering school is seen as much more prestigious than studying in a university. Young people with higher grades wishing to make a career in programming more often than not tend to choose the former over the latter - even if it means less focused courses. And yet having said all that, I wouldn't say that french developpers are worse in any way than developpers from other places. Even if most of us learn to truly program at our first job. I'm not at all saying that a CS degree has no point, but as long as you have the minimum knowledge about the field when starting, it's very efficient to learn on the job the specificities.
- jandrewrogers 7y agoThere are some interesting exceptional cases where a CS degree can be a disadvantage for developing advanced software applications, though you still need to know CS. For example, the conceptual framework for reasoning about distributed systems provided by chemical engineering is superior to the traditional CS version when applied to software systems, and more mature. This has been a persistent advantage over the course of my career designing scalable software. And it is much easier for a chemical engineer to learn computer science than the other way around. I've come across a few other examples of this in computer science, particularly as it relates to complex systems design and behavior, and not just in relation to chemical engineering. Extremely complex real-world systems as a model are relatively new to CS but have highly evolved solutions in other disciplines out of necessity. There is still much value to be had in learning CS from an unorthodox perspective.
- seisvelas 7y agoI'm a dev with no formal education of any kind, but self taught math and CS. I think it helped me a lot to be exploring the concepts out of a passion for understanding and seeking truth, rather than doing homework I don't understand or care about.
- taway555 7y agoi'm self taught without a CS degree. I filled in many of the gaps by studying for technical interviews. I can rattle off every type of data structure, every type of classical algorithm (even the inefficient ones for historical reasons), write HLDs and LLDs and sequence diagrams and component diagrams, and can work my way through almost every problem on those leetcode type sites (if given enough time). can i write a compiler or a lexical parser or am I versed in distributed computing and/or other highly specialized technical areas? not off the top of my head, but give me a few days/weeks and I know I'll be able to.
- Demiurge 7y agoIt's interesting that not having a degree is equated to being self taught developer. What if you chose to take all CS major courses but nothing else? University degrees are supposed to give you generic background on many subjects, on which you can specialize later, not to set you up as a "developer". This is why it is even called computer "Science" and not "dev ops certification".
- 40acres 7y agoI'm listening to the excellent BBC podcast 13 Minutes to the Moon about the Apollo program, can you guess how many CS degrees worked on programming the Apollo Guidance Computer? In my opinion, software is more of an art and design discipline than other types of engineering. The traditional notions of what constitutes an engineer do not apply as much to software. This is clear in the fact that we have no formal certification.
- dboreham 7y agoI've been doing this stuff professionally since 1982 including some stints at what might be called a fairly high level (household name companies in silicon valley). For all the people I've met/worked with, where I ended up hearing their education background, I'm absolutely sure no more than 20% had CS degrees. I also feel like there is a correlation between the extremely good people I've encountered, and _not_ having a CS degree. That said, most folks did have some sort of science-related degree. People with no higher education aren't unknown, but quite rare ime. People with higher education only in non-science fields have also been quite rare. I haven't run into many shit hot coder history majors, frankly, but those I have encountered were so smart I'm certain they could have aced any degree they took the time to study for. Last thought: architecture, design and coding seem more akin to creative endeavors such as writing a novel or play, making movies, that don't seem to be easy to "teach". e.g. nobody is marveling that J.K. Rowling doesn't have an English Literature degree (French, to save you checking..) and nobody is seriously trying to "teach" folks to write the Harry Potter series. Disclosure: EEE major
- godelski 7y ago> I also feel like there is a correlation between the extremely good people I've encountered, and _not_ having a CS degree. I'm willing to bet there's some selection bias here. If you got a job and don't have a cs degree it's probably because you're so good you don't need a degree. The skills outweigh the lack of a degree, which means higher risk. The piece of paper sets the bar lower because there's more trust and thus lower risk. As someone getting a graduate CS degree and coming from a different degree I notice that there's definitely Swiss Cheese knowledge. I got here because I could code (half my peers can't in their first year of graduate school. This surprised me a lot!). But on the theoretical side they have less Swiss Cheese knowledge than I do. It's a weird dynamic.
- kamfc 7y agoShit. What about NO DEGREE in general?
- xivzgrev 7y agoCame for interviews with self taught people who are now full time developers. Found interviews with self taught people who hacked together websites and built businesses. Admirable but misleading. Suggested title: “No CS Degree required - interviews with entrepreneurs who learned to hack code”
- glangdale 7y agoAnother one of these articles. For novelty, I'm expecting to see an article about the novel idea of there being successful developers who do have CS degrees. It can happen! The site seems to lean pretty heavily on contradicting the remarkable idea that you might need a CS degree to slap together a website and write some lines of PHP. But that being said, there's a lot of evidence that some people who don't have CS degrees can do great programming and even great CS, and a lot of evidence that some people with CS degrees can't code their way out of a wet paper bag. I'm not sure why everyone feels the need to run around with their dresses over their heads every time this comes up; although it does provide a good venue for people to indulge in the harmless pleasure of praising oneself on HN.
- flor1s 7y agoIn my opinion, 1. You can be highly educated in a subject without getting a formal degree. 2. A CS degree is not a programmer/developer degree. CS is to programming as art is to drawing. 3. Having knowledge of CS might mean you can more easier adopt to a variety of roles (front-end, back-end, systems programming) but comes at a cost that you probably have less practical skills than someone who is specialized in this (because of self-education/going to a trade school/learning on the job). I have a bachelor in informatics, master in CS and PhD in informatics (technically informatics is not CS, but there's a lot of overlap), but I would say I gained most programming/development knowledge through internships and working on personal projects.
- bvivek77 7y agoMetoo#
- lincpa 7y agoI'm a Financial Analyst, CPA, CIA, CTA, Statistician, Expert System Developer, Using Clojure, R, core.logic, PostgreSQL, etc. All professional knowledge is self-learning. The founder of The Pure Function Pipeline Data Flow. [The Pure Function Pipeline Data Flow](https://github.com/linpengcheng/PurefunctionPipelineDataflow https://github.com/linpengcheng/PurefunctionPipelineDataflow)
- lincpa 7y agoAs a member of the very creative `self-taught developers`, I was surprised to find that I was downvoted. Why is that? :-)
- xthestreams 7y agoThe most important thing that my CS degree taught me is to recognize that I know nothing.
- rozhok 7y agoCan we have an interviews with people who failed to self-taught themselves to developers? We know about a lot of examples of successful people who dropped college, but what about those people who dropped college and achieved nothing?
- stillbourne 7y agoI just quit my old job after 10 year at the company 6 of which I was an App Dev for. I applied for several jobs did three interviews for Sr. Dev positions and received 2 offers. After I received each offer I expressed that my highest level of education was a GED, each time it was stated that is not a problem. I don't even have an education portion in my resume. It's been a non-issue so far.