Ask HN: Is college even worth it if you're worth your salt as a programmer?
Let say you're consistently getting offers at mid-high sized startups and a few "mainstream" companies. Or if you have a few indie projects that generate you some side income. Is there any point in going to college at all? Do you know what second normal form is? Do you know what the three basic functions that form all mu-recursive functions are? Can you write an A* search from memory? Do you know what is stored during a context switch? Are you worth your salt as a programmer? Tech is booming. I know someone who went to a bootcamp for a few months and is working as a programmer right now. A college diploma doesn't matter now. It matters in years like 2000-2002 after your company goes bust and you're looking for work, or if your division does massive layoffs in 2008 and you're looking for work. If you're going to go to school and take it seriously, the earlier you do it, the more it pays off. The easier it is to do as well - you don't want to be married at 37 with two kids and decide that you really need more than a high school diploma. Then you're juggling a full-time job, college and a family. If you want to be worth your salt as a programmer you're going to have to sit down and study databases, operating systems, calculus, theory of computation, computer graphics, algorithms, data structures and so forth any how, so why not do it while studying CS at school? When kids ask me, I tell them if you can go, go, if you're going to take it seriously. If they have financial issues or whatever I tell them to not take a full course load. One night class a week at the local public college is affordable (with Pell grants, loans etc.) and doable by most people. I agree that University is worth going to. But not for any of the reasons you mention. I've had a very successful career in this industry not being able to do any of the things you ask in your first paragraph. Sure, I've taught Normalization to new devs (without needing to recite the actual forms), but I find that Google is pretty good at memorizing algorithms, and it did in fact have A* ready to go every time I've done pathfinding. It probably still will when this kid needs it. University, in my mind, is for two things: It gets your brain shifted into "Engineer Mode" (or painfully informs you that you are not capable of thinking that way), and it teaches you how to be an adult. The actual algorithms and interview trick questions that a CS degree give you aren't very useful at all in the real world, and I'd actually go as far as to recommend getting your degree in Mechanical or Electrical Engineering instead, so you can focus more on mindset and preparedness. You'll find it easier later to forget the trivia about Brunell Hardness and Eigenvectors when they're far removed from your actual field. And you won't be that annoying guy in every meeting talking about Big O notation instead of actually solving the issue at hand. But yeah, go to school if you have the chance. The big offers will still be there in four years. You'll have many of the experiences that you'll spend the next 50 years reminiscing about. And you'll come away with a whole pile of other benefits that you never expected. (And some trivia to get you through your first job interview that you can then safely forget forever). > interview trick questions that a CS degree give you aren't very useful at all in the real world Usually trick questions aren't the one that you expect in real world, because they're trick questions. Nevertheless, it's very easy to consider a question being tricky, while it might be just a good check of your understanding of a given technique or algorithm. > And you won't be that annoying guy in every meeting talking about Big O notation instead of actually solving the issue at hand. Talking Big O is the very exact thing that you should discuss before solving (coding) the issue. It's only annoying if you do that instead. Please, do not underestimate this. I don't think University shifts you into "engineer" mode at all, you learn that when you go and do it for real in "industry". And not by doing indie projects or realistically at small start-ups. See patio11's comments re what he learned in Japan. University is about enquiry and learning to think critically. It doesn't matter if you never use the specific constructs they cover but you do come out with a much more flexible mindset. The other thing is that the OP might actually become a really talented academic and have the potential to do great things in the field. "it teaches you how to be an adult" I do think this gets overplayed, I'm sure you developed considerably over that period of your life, but so will anybody else of a similar age who moves away from home. I think that the first paragraph should be like this: Do you understand, why we're using second normal form? Do you understand why all mu-recursive functions can be formed from those three basic functions? Do you understand, why A* works? Do you know, why we're storing those things during a context switch? Are you worth your salt as a programmer? Really good comment. I would also add that even if you are a developer now that does not limit your college option to just CS. You can pick an other major so that you are diversified in skills. Your question strikes me, because you've framed 'college' and 'programming' in terms of their potential, or lack, of monetary benefits. That's an entirely fair way of framing this decision, but not the only one. I would suggest, if you are as capable a programmer as you claim, that you have the unique opportunity to enjoy many benefits of the college experience, without the burden of debt or delayed employment/advancement that your peers will face. It really depends on what you think you can gain from an educational environment. For my part, I recently left a career to return to school. I'm getting a graduate degree after a 10-year gap from my undergrad, and even though I'm working a job at the same time, it's inspiring to be in an academic environment again. Some assignments are tedious, but to share a cafe or a bar with other students who are working through intellectual questions is an experience that is difficult to monetize, and nearly impossible to expect outside the university. There is a reason it is called an 'academic bubble', but while many say that scorn, I am inspired by the space that bubble creates. I would suggest that, if you're a capable programmer, then don't go to college to learn to program. Study topics that seem foreign/difficult to you, revel in the leisure time to discuss ideas with your peers, and rise to the challenges set by professors. The academy is intended to be a space for self inquiry and growth. If that is something you value, then try to find a college that feels right to grow with. If nothing else, try applying. As a general rule, you should avoid closing doors on opportunities that don't exist. If you get accepted to an institution, then you have a right to decline it, but rejecting it without applying is hubris. College is good. Study computer science and learn well algorithms and everything underlying that machine in front of you. Also have a nice experience, make lots of friends and connections because later in life you'll need them. The kind of connection you make with people you've worked with are different from people you've studied with for 4+ years, no matter what. And also keep studying stuff by yourself. Man, I miss the good old days when I knew everything. Sure it is. I know a lot of good programmers that have created some awesome and reasonably complex data driven websites, but the minute we discuss byte order, bit manipulation or discuss using an algorithm for data manipulation instead of brute force they kinda glass over. That isn't saying everyone has to know low level details, but frankly, if you are writing code I think you should have a fundamental understanding of how the device you are coding for works and how you can make the best out of it. Just going to college and getting a CS degree won't guarantee you get those fundamentals, but you are far more likely to get a solid base at a good school then not. Also, like others have pointed out, nothing says you have to get a CS degree. You could get a degree in any subject and apply your skills and knowledge of programming to a whole new area. The younger you are too, the more benefit you get from the networking of college, the social and dynamic skills and the problem resolution capabilities. Would going and getting a CS degree get you more money, probably not if you have at least 3+ years of experience. Also, plenty of companies always say they want a degree but when you apply with experience they seem to drop it. Even the government jobs that say a degree is absolutely required, I have had a number of friends get those jobs with no degree, although there have been a few hoops for them to jump through. Probably not, or rather your development experience will be more valuable. It may be a barrier in 5-10 years, but you can worry about the problem then. The main thing is to be continually learning and maintaining a network. If you aren't going to do that, go to college. I was in your position in the last dot com boom around 1999. I started working, mainly because I didn't like school/studying anyway. For me it was the right decision and I was lucky to be able to work on some really cool stuff right from the start. However, it is not something I often recommend doing. Going to college will make your life easier in the sense that you have a socially accepted piece of paper that shows you have put in the time/effort. For most companies that are hiring, that is what they want to see. If you go the DIY route, you will have to work harder and/or prove yourself more (or maybe I just had a bad case of impostor syndrome). The really cool projects on your CV will help people "forget" you don't have a college diploma. If you have the character and tenacity to find your way regardless of the situation, you don't need to go to college. If you're not certain, or if you miss out on college for working on some quite straight-forward CRUD apps (instead of seriously cool CV building projects), then go to college. Couple points:
1) if you think there's nothing for you to learn at any decent quality University, you're vastly overestimating your own abilities.
2) taking time to focus 100% on your personal development, whether intellectual or otherwise, in a socially acceptable setting is a rare opportunity. College is essentially that.
3) there is value in being surrounded by like minded young people who have not settled for mediocrity yet. All that said, whether there is a point depends on your own goals and whether you think you can achieve the above benefits outside of a college setting. On a purely financial basis, college almost surely does not make sense. Maybe, maybe not. I think that in any case the 'stuff' (Algorithms, Databases, Operating System Internals, etc) they teach in college is intrinsically interesting. (Or perhaps not.) In any case it is also extraordinarily useful when you're doing something new and can't rely on the work of other people who already knew it. The thing is, the more time you spend learning 'junk food' topics like frameworks and API's the faster you're going to have to walk the treadmill to stay relevant. The more theory you know the slower you go out of date. Read more textbooks and fewer blog posts. Why not do both? Negotiate a part-time role with the mainstream company, work around your class schedule. The boss surely wouldn't want to feel guilty that he kept you from completing a degree. College value can be difficult to calculate. A good campus environment can expose you to some wonderfully random, useful people and ideas found nowhere else. The Steve Jobs calligraphy story is a classic example> http://www.leemunroe.com/steve-jobs-calligraphy/ If you want to learn more about computer science, you can also study on your own. I disliked college because the major I chose just got me lost and in the end, I ended up learning programming just by doing it. Like this other guy says, financially it just does not make any sense. You could also end up with really bad professors who teach you squat whereas you could just pick up a high-quality textbook. You chose the major and then didn't succeed with it. What does that have to do with college? College is not a guarantee for success and if someone told you otherwise and you believed them then I have a nice bridge to sell you. College is a path like any other. You have to walk that path and make the most of the journey. That said, there was an article on HN a few months ago showing a strong correlation between having a college degree and earning more over a lifetime. I kind of like this irresponsible advice:
https://www.youtube.com/watch?v=yafAqdtEofY You don't know what to do, and most people here don't, and the best we can do is speculate one way or the other - but so can you!. Gas is cheap, and terrorism and the middle-east problems are back with a vengeance, but things are cyclical so that means gas will be expensive again? And your easy come easy go job will really be gone (based on the cycle I guess) when shit hits the fan? Maybe not? Maybe the world has improved, and we won't throw out decent people who have work experience, but maybe things will get so rough that we'll have to stamp a "no-degree" tattoo on your for-head when the time comes. This is a complicated question, I see why you asked it. It depends. Can you go to a prestigious institution without going into massive debt? Then do it, very few exceptions: https://medium.com/@opirmusic/why-software-developers-should... If you have to go into a good amount of debt or the institution is not particularly prestigious, and you already have plenty of skill/experience/connections, I'd spend time considering what exactly you expect to get out of it. Absolutely. As long as you go and study something you don't already know. A competent programmer who is also a domain expert in some field will always be in a better position than someone who is just a competent programmer. If you can always find a job and have side projects to fall back on, I don't see the point. However, if you imagine yourself taking a shot at climbing the corporate ladder at a huge company, a degree is absolutely essential. I also have a side project that would be able to support me, but I do attend college. In my opinion, having that piece of paper (provided you don't go into massive debt for it) is much better than not having it. College will open your mind. It will expose you to areas of programming other than the typical industry job. It will provide you a holistic treatment of topics that you would only pick up piecemeal in the industry. The contextual knowledge you gain will enable you to pick up things quicker and have an overall richer understanding of how things work. Yes. Besides programming, you can learn more things in the college, such as physics, arts, maths, finance, social skills, etc. Though they may not bring you money immediately like programming, you will benefit from them. And you can meet many people from other states and countries. College is one of the happiest periods of my life (though I was very poor). If you already love programming then go learn electronics and hardware design. Yes. Unless you are a savant you won't get hired without a degree. If you are really 'getting offers at mid-high sized startups and a few "mainstream" companies' then you might just be one. This is demonstrably incorrect. That's not to say OP should definitely not go to college, but plenty of developers succeed without a degree. You do not need to be a savant, you just need to learn enough on your own that you are a net plus to a business in their eyes. In particular, Google explicitly does not have a requirement for a college degree. I also know from experience that Microsoft doesn't either. I don't know long-division and I make six figures. Don't believe the hype. More like: don't believe the hype on this website that is stuck in a Silicon Valley and Venture Capitalist mindset.