I've been coding for half my life, out of pure interest for the building things and never got into it for the money. CS career being obviously a good choice and every smart kid I know majoring in it, mostly for the cash, honestly makes me worried about the future of the field in terms of whether it'll still be a good career in the future. I think smart people will do good work, just for the wrong reasons ($) and this might impact the field negatively. In 5 years maybe things will still be okay, but if the trend continues for 10 years? Will CS become unsustainable hours like working in the quantitive funds or unsustainable competition and workload like in medicine, or both?
PG has said something along the lines of "if everyone thinks something is a good idea, it's probably a bad idea" and Peter Thiel's competition theory where profits get competed away if everyone's doing the same thing are two ideas I think most about.
What does HN think?
Pursue computer science but challenge yourself with it. Don't waste these years just getting by. Double major in something that will help you work with artificial intelligence, if you want to do something practical, but double majoring in something such as philosophy could help you develop skills that you'll use for the rest of your life.
Summer internships can help you gain perspective about what you may want to do after graduation. A lot of people change employers, and some even change careers, within the first four years after university so anticipate change.
I imagine when cuneiform was first invented, there was a group of people who were the first writers and they probably worried that it would get saturated. How can we all be writers? There are only so many things to write down: recipes, shopping lists, the kings desires, and heroic tales. What are the rest of us going to do?
But of course writing is just a way of expressing and recording. Writing becomes an essential skill for law (and law itself is hundreds of professions), or science, or "business" (which is a catch all).
Even within CS, I don't consider "machine learning", for instance, to be a single field. Whether you are using machine learning to apply astrology to the financial markets, or using it to diagnose diseases, makes a huge difference to your career.
CS is a skill, but your career will involve other things: a specific set of problems, a specific set of attempted solutions, a network of people who might help you, brands you will want to be associated with, and half a dozen other things.
I've been programming for most of my life. I've poured hours into learning 6502, BASIC, 8086, C, C++, Perl, Python, Javascript, Common Lisp, Haskell... to say nothing of physics, linear algebra, geometry, graphics, logic, type theory, abstract algebra, category theory, information theory, databases, networking, compilers, operating systems, interactive theorem provers, distributed systems, etc. I've never even been to university or college and I've been doing this for nearly twenty years professionally.
Do it because you like it, because it means something to you. Keep being you and doing what you think is important and useful.
Ultimately, you are gaining skills that will benefit you whatever you get up to next. Just the simple fact that you know a bit about how computers work will put you ahead in just about any white collar job, since pretty much all those jobs have people staring at a computer all day. This is a lot more than can be said for most majors.
If you do decide to be a coder, there's lots of stuff to do. There's no walk of life that's far away from software these days.
If you're there for sheer joy, my guess is you'll find something you like and where someone values your contribution. I wouldn't worry so much about FAANG internships, the exagerrated focus on that seems to be something that's bled from finance internships, where it is indeed important.
That said, I don't know what else is a good career now. Perhaps primary care physician. I understand there is a shortage of them, but it's also the least paid medical profession. On the other hand, in the future few people may be able to afford most specialists. I already avoid going to them due to high copays.
Generally it seems like the US employment situation is getting less stable over time. But I admit my outlook is rather pessimistic.
As someone who went to community college and public university, and has worked at FAANG companies, I think your perspective is heavily influenced by your current environment. In elite schools there is a heavy selection bias for the type of classmates you describe.
If you're trying to maximize income, you should focus on understanding finance/business and building soft skills. You're probably over the threshold of how much you need to know about computers. Maybe get some training on how to work better with others, or how to negotiate effectively. In other words, soft skills are going to be the value you have over your peers that have been cramming CS for the last 4 years.
> I've been coding for half my life, out of pure interest for the building things and never got into it for the money.
The reality of working in tech is probably similar to what you've already experienced: Lots of people working with computers, but most know less about what's going on than you do. I was kind of shocked by this when I started working, but now I realize it's because most people don't need to care about how their tools work to do their job.
I had the same thoughts back in the late 90's and early 00's. Everytime I told someone I was interested in CS, they thought it was because of the money. While working on the major many people told me my job was going to go overseas and that the future was in managing developers. In fact, during my first internship, my boss thought that way and said in the future programming would be done by low paid individuals overseas or that programs would be generated by computers from flow diagrams (which she liked creating).
Things turned out differently and the field has grown and only become more lucrative. I only see the number of jobs for CS majors growing, and I actually wonder if there will be enough good programmers to fill them. Not everyone can write code, and I still run into developers who can barely code. If you're good at coding, you can go far.
Additionally, I really enjoy programming. It's fun and rewarding to solve problems and to build things that people use. If you're good at coding, I wouldn't worry about the future, I see it being very bright.
Now, this state of affairs won't last forever. Eventually the market will level out. But I would guess we have at least another 5-10 years until that happens, and when it does happen, it won't mean the field crashes. It'll just settle into a more realistic state. Jobs that are "easy if you can understand code at all" will be the hardest hit. You might not get paid 6 figures to throw together simple web pages any more. Jobs that are intrinsically hard will be fine.
So my plan is to stay ahead of the tide. To push myself, get good at my craft, and get into a sub-field that's hard instead of resting on the current boom. Then, when things shift, hopefully my value will speak for itself.
In summary: yes, things right now are too good to be true. But that doesn't mean the whole field is a bubble. CS is very necessary in our world (and increasingly so) and there are lots of very hard problems out there to solve, it's just that there are even more easy problems.
Edit: Here's a source I found on Google (I don't know the source firsthand, but it seems credible enough at first glance) https://www.daxx.com/blog/development-trends/software-engine...
This gives you years of valuable experience and insights your colleagues won't have as they switch in from finance.
> CS career being obviously a good choice and every smart kid I know majoring in it, mostly for the cash, honestly makes me worried about the future of the field in terms of whether it'll still be a good career in the future.
It's been this way for ages. What the folks switching in don't realize is those folks won't get hired at a FAANG because people like you have a decade of experience on them, and there's only so many spots. So long as there's more folks like you than spots the rest is noise.
> I think smart people will do good work, just for the wrong reasons ($) and this might impact the field negatively.
Only if they get hired :) Once you're aboard you get to help shape who makes it in after you. If this is something you're passionate about, get involved in recruiting and hiring. Bring in the folks with non-traditional backgrounds who are amazing, and leave the switchers aside.
> In 5 years maybe things will still be okay, but if the trend continues for 10 years? Will CS become unsustainable hours like working in the quantitive funds or unsustainable competition and workload like in medicine, or both?
It already is. It's been like this forever, and will likely remain like this anywhere competitive, and at every start-up. Work-life balance is lip-service at most companies certainly as you level up (exponentially more so the smaller the company).
IMO blue collar work is a better option because it's easier work and more stable, and lets you have a life outside work. In software the hours are increasing to no real benefit, and free time is burnt just keeping with the times. The evolution of tools, best practices and high availability of quality knowledge has made it trivial to spin up new hires which makes everyone highly expendable; not to mention that there are now millions of unwashed masses happy to accept lower wages just for their chance.
There was a HN post a while back where some guy was begging to pay for a code job. What does that tell you? Software workers are also now pitted against a global market with outsourcing and programs like H-1B which has raised the bar by increasing the pool of highly educated candidates and people who commit resume fraud. They're likely also more willing to work long hours for less pay just to be in the US. Software wages have also stagnated for ten years.
1) You can be a big fish in a big pond with other big fish (eg FAANG). Or you can be a big fish in a pond with small fish (think like a regional grocery chain). Try both to see which makes you happier. There are tradeoffs in both cases.
2) Your boss and the people you work with (ie your local context) is often a much stronger determinant of your happiness than what company banner you're under or your specific title.
3) Try looking at things outside of tech/engineering orgs for places where tech applications would create value. A good friend works in supply chain optimization with a CS background. He tells me that basic automation and data analysis on CSVs larger than what Excel can open is seen as wizardry. He's in great standing in the org and is seen as invaluable.
This worked - I can't quite remember the numbers, but probably the entering class was 2/3rds the size it would've been otherwise.
And clearly, it was going to be a terrible idea to graduate in Computer Science in 1992, so who can blame them? The field had clearly hit its peak by 1987... (this was in Switzerland, on a 4.5 year degree program)
As for unsustainable competition like medicine, what do you think the needlessly ridiculous hurdles are for interviews (whiteboarding, regurgitating interview specific algorithmic questions that most people don't need to deal with outside of their CS courses, in vogue requirements that don't necessarily match job duties, etc). And, medicine is a bad comparison, due to it being in the realm of forced scarcity; enrollment caps for medical practitioner programs create a bottleneck in the pipeline that hurts the system (so those only motivated by money don't even make it through regularly - you at least need the study skills and interest to push through the hours needed to get past the various gates in the programs).
Just from my experience: Dev Ops for most companies doesn't need K8 clusters, running Docker instances, on your cloud host of choice, autobuilding through a cloud CI that has autohooks into your company's private GIT repos; no, they just need something, __anything__ that will provide them good enough uptime to keep their current customers and to gain new ones; and sometimes all they need is someone with a bit of domain knowledge that has strong computer skills so that their marketing department isn't also their IT department. Data Science for most companies isn't the newest deep learning algorithms but simple ANOVA, linear regressions, and decision trees to gain basic insights that they haven't had the resources to explore yet; and most of the time that's going to be on Finance, Accounting, and HR data (since your intake and output in dollars is the big quantifier for most decisions).
Lastly, both PG and Thiel's thesis statements in these blogs are more about leading edge creators, not Bob the junior software engineer at Widget Corp; and doesn't apply to even most of the people on HN (no matter how much each of us thinks it does).
If I were to do it all again, I'd do something that produces more passive income. You can make a lot of money working for FAANG, but you are going to be working hard and for long hours. It's not an easy job, and it's fairly pointless to have money if you work away all your best years. Programming is a service industry, and real money comes from owning things, not from doing things, because things you own make you money even when you're not doing anything. Sure, you can go off and create an app that creates some passive income but it's a crapshoot whether you'll actually be profitable.
They aren't making more land, and everybody needs somewhere to live. Real estate requires little education, the legwork is mostly looking at places with people. It's not a glamorous job but it gives you the time to do what you want with your life.
Certainly some people come for the money and stay for the experience. My best advice for internship applications is try to have some interesting project on your resume --- preferably one of the things you've been working on outside of class, but mention interesting class projects if you can speak to the whole thing. And get the interview basics down -- clean clothes, appropriate clothes (ask recruiter/scheduler what people wear to work and match the fancier end), arrive 10-15 minutes early, try to be relaxed, etc. For video or phone interviews, if you can find a quiet place with no distractions, that's best. It helps to do practice interviews, which could be for local companies you might rather not interview.
You didn't ask for interview advice, but I just mention it because I've interviewed some intern candidates, and it's always unfortunate when the candidate seems very unprepared or having a bad day, but may have been a good fit.
CS is not just work at Google, Facebook, Twitter and San Francisco software unicorn startups.
CS is universal fundamentals of computation, algorithms, data structures that can be applied in multiple areas.
With a CS degree you can work in biochemistry(simulation), genetics (bioinformatics), mechanical engineering(finite element analysis, modeling), Hollywood visual effects (simulation, graphics), medicine (scanning software, visualization), Oil & Gas exploration (data analysis, visualization), semiconductor engineering (algorithms, design automation, simulators), automation (computer vision and machine learning).
CS is not going anywhere - it is fundamental to modern technology.
Otherwise, rather than worrying about whether you are in the right major, think in terms of "what kind of problems do I want to work on in life?" If you can answer that, you'll be on the right path. And, if you think the kinds of problems you want to work on don't involve technology or aren't solved by technology, then either switch majors or add a second major that augments the skills you need for the problems you want to work on.
My advice to you: don't worry about it.
Do not underestimate the competitive advantage you have if you are passionate about software development. The people that are chasing the money clock out at 5. There's nothing wrong with that, but they aren't trying to teach themselves Haskell on a Friday night just for fun. You will work harder than those people, not because you're scared, but because you love the work. And that experience will lead to career success. It doesn't happen overnight, but skilled and passionate people do bubble up on the food chain (assholes do too, but such is life).
The best piece of advice I can give is that at the end of the day, do what you feel is best for you personally and don't pay attention to what your peers are doing. The programming landscape is LARGE.
I work at a bank and the business guys are finally coding. They’re using VS Code, Python, Jupyter Notebooks, React, and JS. I doubt they’ll get into Hadoop Spark or Java.
Their depth of knowledge will never be as deep as a CS major, but it’s a good pause to think of a field to specialize in where you will be utilizing CS to solve things.
If you're still an undergrad you could also think about some of the adjacent fields where having CS knowledge is a benefit. These include (applied) math, physics, economics and biology.
I majored in physics, but if I could do it all again I'd probably study equal amounts of math, economics and CS.
What you are asking and describing is happening right now. In some places around the world the industry is already an unsustainable shit-show, which offers zero financial incentive to a CS undergrad. Some such countries are Japan, Germany and Hungary.
The working hours are extremely long!!! You have to work 60 hours or more most of the time, but managers will try to sell it as a big plus (like, look you can go to all these flashy conferences and you can have kicker table + free buffet, you just have to work hard in exchange) even in face of concrete evidence that the industry in large is to the detriment of your well-being mentally and physically. This management technique is also called stick and carrot.
Also there is real age discrimination. Especially in startups. So it's really difficult to get work-life balance if your life does not revolve around the actual business that your company is doing.
If you can put up with all this shit, and you can save enough money let's say in 10 years so that you can quit, then it might be a good idea to pursue this kind of "career". But again, what kind of career is that sets it's goal as quitting in a reasonably short time.
Salary-wise your payment is gonna be slightly higher then let's say a simple journalist, accountant or let's say an average salesman, but not that great, and because of the long unpaid overtime you will basically get a quite low amortized salary.
The good times: the passionate rose above the income-chasers because there was a lot of mediocrity
The bad times: So many people washed out and probably haven't come back. The passionate had less competition.
The anti-fragility of it all: When the economy turns bad, companies look to software to optimize costs. (not exactly the same thing, but I was hired on as a contractor for a logistics company while they were in the middle of Chapter 13)
My suggestion is to become excellent at CS, get an internship, then specialize in a fascinating area of forward-looking work (don't study COBOL. :) ).
also if you love coding, keep on keeping on. if you wind up making average income, that's ok.
Since you are passionate about programming you'll probably be miserable in many other fields, say, medicine. So you have to include CS in your future. But maybe you could minor in something else?
When I was in school we had an actual doctor come to our class since he needed IT knowledge to manage an IT grant their hospital was taking.
In many ways IT / CS knowledge is worth more if you do it on top of the actual job. Very few people like this.
I think a good career is one where people come to you. You have to be very skilled or popular for companies to come rushing to you when a system crashed or something. Otoh, people will rush to a doctor or mechanic or attorney, etc. Accounting is also very logical and companies need good accountants.
There's probably not a better path to a comfortable middle-class lifestyle. Just stay out of the Bay area; there's tons of jobs in second and third tier cities with reasonable cost-of-living that will pay you a hundred grand after a few years.
As others have said, CS gives you a framework for analysis and problem solving. That framework can be applied to almost any other problem in life.
However, if you don't get into a FANG, it's not the end of the world. You might still be able to find another job at another software company if you're lucky. As the years go on, it'll be harder to get job due to the rapidly increasing supply of engineers.
The US has not hit peak SE demand yet, so don't worry, those days are still far away from now.
Oh and don't worry about wrong reasons. I know I'll get downvoted for this because it's politically incorrect, but: Working for $$ is the primary reason for work. If you didn't need to make money, then you don't need a job, you could just program on your own time whatever you wanted and have a hell of alot more fun than working as a SE.
Beyond the competition, a skilled person in CS is much easier to differentiate. In the same thread though, being able to build any company you think of in your garage for peanuts means you can do the most good or work on the most interesting things you can imagine at cost. It's much much harder to have massive impact without a CS background if you haven't had huge success already.
In the meantime don't throw the baby out with the bathwater. The bottom line is technical knowledge is power in today's world. You can take CS and pivot into any career you want, and if all you want to do is build cool stuff, well, it's never been easier!
I got an Information Systems major just after the .com crash. I did it because I liked it. The major had gone from 100+ to just 8 in my graduating class.
If it's not obvious, the industry has recovered since then.
At least, every smart kid in your bubble. You did mention you've been programming for a long time.
I know that my friends are mostly gotten through that "career": first programming forums, a nerdy open source game, then through doing IT studies and friends of friends, now through work and hacker spaces. Trends that I see and opinions that I think are generally held, are probably just happening in my bubble. I would expect that your "ever smart kid does this already" is also quite biased.
I mean, sure, if you are (or are trying to pretend) that you are wealthy enough that you don't need to work for a living, I mean, that's great... I'd love to be in that position, and I understand that for some jobs, you've gotta pretend like you are when you aren't. but note that to those of us who aren't, uh, "financially secure," it comes off as bragging in a particularly insensitive way if you pull it off and we believe you are rich, or insincere if we know you have a car payment. I mean, sure if you only work with other people who are super rich, it's different, but be aware that you are usually in mixed company.
I personally think that seeing genuine joy about being wealthy is nicer to see than this "oh, money means nothing" - I mean, I want to be rich too, of course, and I can understand that you enjoy your fancy new car or whatever; that's not insulting me, even if I can't afford the car. But saying that there's something wrong with picking a career for the money is insulting me and everyone else who doesn't have a large trust fund.
1. A lot of those people you're studying with may never finish, may transfer to other areas, find a job in a different field or gravitate to management or business side of things if they are money driven. The ones who truly enjoy it will keep doing it. 2. There is an enormous amount of software yet to write, whole industries, systems and governments have yet to be digitized. We will need both really clever engineers and rank and file programmers to get us there. 3. There is a large (and growing) amount of legacy software already written, we need more and more developers to maintain and keep it running. 4. Software is currently pretty clunky and inefficient and has a long way to go in comparison to other areas of engineering and with hardware topping out we need CS grads to make our software more efficient. 5. CS is a massive field with all kinds of interesting areas and as others mention programming is seeping into other industries making a CS education pretty versatile choice and basis for an education.
If everyone is aiming for FAANGS look elsewhere, use your time at uni to explore niches that interest you and focus your time there.
As for you question, people are very bad in forecasting. Rather than following the answers on HN on this question try to invent more in exploring yourself- working on different domains, meet new people from different countries and fields, contribute to open-source, run startup and etc.The more information you obtain about the environment the better you can adjust your policy to maximize the reward. I don’t believe that on the horizon on 5-10 years there would be a dramatic drop in demand for CS degree professional. Consider the tech companies’ R&D investment and the VC investment deep-tech startups we need professionals to meet these expectations.
Moreover I think many students are attracted by non-linear professional growth of IT-specialist. Hardly in any other area you can find 25-years old C-level professional. That makes IT career very attractive from both risk and return.
You sound like you love computing. That’s fantastic, because you love something that also happens to be a viable career choice. Even if there is a serious downtown in the market (which will be painful) it’s like there won’t be a continuing need for programmers, and it sounds like you are/will be a good one with excellent credentials. The start of your career might be less remunerative than you’d like, but I find it unlikely you wouldn’t be able to establish a career in computing at all.
That being said if there is another path that truly interests you consider a double major or minor. I was about to pick up a 2nd major in Poli Sci with only 3 extra classes and a whole lot of creative accounting of my other credits. I did it because I was interested in it, and because all the coolest people I know also had multiple majors. As I reluctantly enter what can only be considered a mid-career stage with increasing non-technical responsibilities , I find myself reflecting a surprising amount on the lessons I learned in that second major. It’s proven surprisingly valuable to me.
The quality of life you have as a junior programmer depends hugely, hugely, on the company you work for. So does the amount of money you are likely to pull in. The two are not necessarily inversely proportional. Interview wisely.
Fresh graduates typically have a disadvantage in having little concept of what it takes to get things out the door in a supportable manner, and they will heroically throw themselves into projects they have hilariously underestimated. If you end up working unsustainable hours, there's a good chance you backed yourself into it. Find people and places that can help you avoid those traps early on.
CS as it is taught bears little resemblance to most of the technical work done in Silicon Valley. It also probably has little resemblance to the passion projects you did as a kid. It is not necessary to be a CS major to become a software engineer, no matter what the recruiters think. But, for the most part, it doesn't hurt, and you probably start out with a broader foundation than a non-CS major typically will.
As a programmer, your job is to reify thought-stuff. This gives you an extraordinary flexibility to push your career in a direction you want. Heck, you might find yourself practically switching careers every few years, or you might decide to stick in one area and specialize. Either way, there's plenty of places to turn in CS if you wish to avoid following the herd.
You will hear folks wring their hands about whether their jobs might be automated away in a few years, or whether the economy will hold, or whether the demand for CS jobs is really a myth perpetrated by FAANG to pay below-market wages to suckers, etc. etc. etc. The world has a thousand ways to make you question your worth, and you will probably hear most of them at one point or another.
When I entered the industry a little book had recently come out called "The Decline and Fall of the American Programmer." It predicted that "the American programmer is about to share the fate of the dodo bird." Yet here we are, decades on, just as likely to bang through projects like bucking broncos as ever, but managing to turn out some fine work along the way.
Don't believe everything you read.
And if you wonder whether you make the big paycheck? Do not do that to yourself. Move somewhere where that is not important (and find the right partner for it).
Maybe fellow posters have even better examples than me.
Doing something you hate, even if it pays well, becomes a drag real quick. Before you know it, you're hitting up your network, trying to get _something_ more interesting.
I think most people will hit a point in their mid/late 20s, where they think hard and long "Is this what I want to do for the rest of my life?".
For someone who's genuinely, deeply good at it, who can think and debug and design from the network consensus protocol to the CPU cache line, there will always be work. Even within hot companies populated from elite schools, these people are few and far between.
Right now, computing behaves both like a trade and like a profession depending on the lens you use. You just so happen to be able to get a job based on tech stack at the moment (like a trade), I believe the trade aspects of it will go away as tooling becomes more sophisticated (10+ years), leaving the profession bit.
I believe this is already happening; the distribution of compensation has become far more bimodal in the US since I started in 2009. I often meet tech professionals not living in sf/ba that don't even believe me when I say a 200k/yr+ comp package for a non-executive is possible.
Either way, in computing at the moment, there's no licensing or regulatory body, and the obligatory cartel that manages it, so it's hard to predict the specifics around what the profession piece will look like in 10 years. I'll attempt it, if you excuse the conceit.
I suspect as tooling matures, the industry will decompose into larger numbers of smaller firms, in which a smaller number of people will be needed to create and maintain more and more specialized applications. The differentiating factor in comp and career growth will be business domain knowledge, as opposed to deep knowledge of particular technologies. It's already the case, for example, that firms don't have to field an ops team of 5+ just to get a good deploy process going.
The idea that I can get handed a fairly comprehensible spec and just write code all day may go away but computing as a career won't.
A lot of my friends from that bootcamp without CS degree already have good careers as engineering managers, senior staff software engineers at startups, or regular engineers (around junior and mid level) at Facebook/Google, some of them are content enough and stop improving, some of them are still improving. Meanwhile I still failed the interviews. (For some reason I have a history with many rejections. I got rejections 9 times from programming bootcamps and admitted into one, that changed my life. I also got rejected twice from a programming bootcamp that was known for "anyone can get in").
I didn't regret a thing. I'm glad I studied CS. (Disclaimer: I had 2 other unrelated degrees: Industrial Engineering and Biblical Theology, this is my 3rd career change). For now, even though I already graduated and worked at a decent paying job, I just started to revisit compiler and want to study all in about it.
In my opinion, tech field moves really fast, even a hardcore techies will have hard time and regularly experienced burnouts due to the fast nature of the field (cough cough, frontend dev and devops). But as long as you have passion, you can still be the last persons standing. It will last you a long time. I think people with passions will go above and beyond of what is expected from the regular job to practice his/her craft, and the world can't get enough of people like that.
As long as it is fun, would you mind? I don't mind. If CS pay only half of what it pays right now, I would still do it.
As it pertains to programming as a career, it's important to understand whether you are looking for a job or a calling. Do you want to work to live, or live to work? Do you want to make decent money without becoming consumed by it, or do you want to do something for a living that you also find deeply fulfilling?
For example, most government forms require you to fill out physical paper and send it in. There are thousands of agencies across the US, each with hundreds of forms for different processes. Just upgrading those to be more accessible and less error prone is going to take over a decade and thousands of hours of developer time. It's not glamorous work, but it will help a lot of people
Now I work as a remote programmer for a Geoinformatics company. My masters will be in Geoinformatics because I found that I like maps and that cool mapping tech that uses different kinds of sensors and stuff.
It sounds like your friends, who got into it for the money, may be the kind that burn out and not get into it later on in life. If what you say is true, you're more passionate about it and will continue to code even in the bad times.
Use it as a platform to find problems you want to solve, and use your knowledge to solve those problems.
CS has _always_ involved unsustainable hours. The trick is to get good enough so that you don't have to do that. Maybe go into a more niche field (like what I'm doing)
Try personally pinging the people you respect the most -- send an email to Paul Graham, Peter Thiel, creators your respect. You'll be surprised with two things: first, they'll respond, and second, their responses will surprise you.
This is a public forum -- it's going to be hard for you to separate signal from noise.
That of course doesn’t mean the jobs will be as well paying as they are now, but I am not worried about lack of opportunities, barring a major recession.
The industry survived. It will also survive a new batch of people getting into it for money. Of course a larger supply of labour may depress salaries somewhat in a free market, but I don't think salaries are really a free market; it's more about who has enough power to leverage a higher salary.
In any case, there's plenty of new stuff to be done with computers, and I think someone doing it for the love of it has a bigger chance of finding those things than people looking for the well-trodden, well-paying path.
That was in 2004. Looking back, these concerns were ridiculous and had I not listened to these people, I would probably have had a much quicker career progression (I ended up learning to code, not that well, on the job as an important skill set for my work as an actuary).
Personally, I think there is a lot more work to be done in the computer software field. Although there is competition, if you have strong knowledge and work ethic this field would put you in a great position to succeed in a wide range of industries.
Best of luck.
In the grand scheme of things, that degree just opens a few extra doors early in your career. It's still up to you, and your personal drive to succeed, to get anywhere past that.
You have passion, and that is a massive advantage. Stoke the fire.
In undergrad, the crowning achievements you can get are mainly the internships, especially at FAANG companies. Don’t worry about it too much. If it really is about the code and the work, just keep doing what you like doing. Computer science isn’t going to go away any time soon, and if it is, academics will be the last to let it go.
My guess is that the job market is going to stay good to programmers and IT for some time. I think there are lots of people with money trying to build, improve, and plug together bits of software right now.
I also think that a lot of people will drop out of the profession during and after university. Most people find programming really boring and/or frustrating.
Still, it would be interesting to have some evidence on all of this.
When you want to target big and unsexy companies, just to have a nice resume, a degree is the right way to go. If you plan to be an entrepreneur, founding a business or freelance, it's mostly useless and I don't believe it will change in the next 5-10y as it was that way the last 20y.
Todays trends are to work less with better money and better work life balance, not the opposite. If you encounter the difference, run as fast as you can :).
It’s okay that some people haven’t been coding since they were 8. It’s alright that they choose to have hobbies outside of work that don’t involve coding. It’s also okay that they are getting into CS to make money.
Programming has turned into a very lucrative career. Yes some people might be getting into it for “all the wrong reasons”, but it’s a job. Mercenary or missionary, both have value.
If you’re concerned about your viability in the marketplace, you shouldn’t be. The cream always rises to the top, it’s just a matter of time.
Hopefully you'll give yourself permission to worry about something other than corporate behemoths before you graduate.
In 10-20 years? Maybe
In 50-100 years? Probably not
There's a lot of investment opportunity right now so the industry is white hot.
When new investments dry up, there's still a lot of profitable companies with big moats, not to mention smaller players that have wanted more engineers but have been priced out of it, so things will be okay but maybe without salaries as insane.
In the long run there will always be some jobs but things will probably slow down a lot as big players will want to collect their rent and cut costs (read: jobs) to increase stock values.
Banging on a keyboard can be great, fulfilling fun when you get to decide what's worth doing. OTOH, I heard that many experienced university glassblowers make more money than the full professors. If/When you get tired of coding, that second major might be the escape tunnel. Even if it costs you an extra semester or two.
Swim in your own lane. In demand majors rise and fall but your passion can last a life time.
Note that this is not the situation in CS, everyone thinks CS is a good career but luckily for us not a lot of them can actually try it out.
CS is tough, your average next door manicurist can't take a short evening course and become a successful developer. Even smart doctors, accountants or lawyers are not guaranteed to be decent developers or even survive the basic education.
But you're a natural so you don’t need to worry about where the crowd is surging. They’re not relevant
Personally I’m of the opinion that the “sweet spot” of business automation and application development has passed.
What’s left is boring, dystopian, or political.
- Optimizing delivery of ads and selling crap.
- AI to fulfil the above.
- Developer tools treadmill to make new ways of fulfilling the above.
On top of this, with the careerist switchers has come the BS corporate politics at a higher degree, and it’s slowly turning me off this vocation.
Side note: CS is the second highest ROI I’ve had for tools. The highest is clear communication due to its ability to be such a multiplier on everything else I do.
I agree with the other comments: programming is no longer a good career to make money, but it’s become an essential requirement of many overlapping professions.
I charge $100 / hr. There are people on upwork who are much better than me that charge $20 / hr. The market forces will quickly play out.
Learning technical matters early in life if easier than learning them later. Engineering, math, CS should be done early. It's a great foundation and structure for learning into the future.
Also, CS is a bridge to automation. Our world will become increasingly automated. People with the right skills to automate will be at the forefront of this wave.
I would focus more on what specialization you want to pursue rather than worry about CS being viable. After a few years your degree begins to matter a whole lot less.
You have a leg up.
It's a skillset that opens you up to a lot of possibilities
stick with it. that there is money is CS is icing on your cake. so many folks have to do something NOT their passion because there is no money in their passion and they weren't born with silver spoon.
BUT only get a degree in things that interest you, a CS degree for someone not interested in computers, would make one horrible career.
CS is a foundation. When you understand how the languages themselves are built you can figure out any of them. The fundamentals don't change often.
It’s far more important what you make of your education once you have it.. and not what your education makes of you.
Mmh no, people in quantitative funds do not work long hours. Much less than SV tech
You're not in college for getting certified in a particular "major". You are there to develop a strong (broad) foundation of understanding and skills, on top of which you can (in the future) paste domain-specific knowledge to rapidly level-up and acquire skills.
IMHO, concentrating on CS to the exclusion of all else (eg: as an undergraduate major) is too limiting, too early in one's development. Computers happen to be a very "artificial" system with arcane rules, and an understanding of computers tends to be less generalizable than an understanding of natural systems -- both physical systems (science/engineering) and human systems (humanities). The more mathematical aspects of CS are definitely generalizable (to the extent that computation is basically applied math!), but IMHO CS as a field has not developed enough to make that link obvious -- let alone teach it to undergrads. Also, when you have a hammer, everything looks like a nail -- we are currently infatuated with "CS". That should (likely) relax to a more reasonable state in ~10 years. (eg: there is absolutely no reason for "machine learning" or "artificial intelligence" to be considered a sub-field of CS, other than the fact that incidentally it happens to be implemented on computers. Breakthrough ideas in ML will likely come from other fields.)
Computers are definitely a fantastic tool, and offer great leverage, if and only if you have developed a refined "taste" of problems worth tackling, things worth building, and visions worth pursuing. You will likely not acquire that taste by just studying CS.
A little pondering will make one realize how it is quite impossible for every "major" to have the same number of "credits" worth of knowledge -- and exactly enough to fill up 4 years of requirements. The corollary is that not all course credits are equally valuable. If you want the best value for your time in college, try to pick the most challenging/foundational/important courses in a field, and then, instead of spending too much time on the relative "fluff" in the same field, go find equally foundational courses in an adjacent field. The easier stuff can be tacked on top later with little effort. That way, you are uniquely well-placed to make interesting connections, and are better prepared to respond optimally to a changing environment. (See: https://dilbertblog.typepad.com/the_dilbert_blog/2007/07/car...) The analogy in the context of investing would be: it is crazy try betting on a single company over the long run (~50+ years); better to bet on a broader portfolio.
If you are looking for a very concrete suggestion, one way to operationalize that advice: in addition to programming/CS, learn a bunch of math, a bunch of at least one of the hard sciences (Physics/Chemistry/Biology), and the basics of engineering / systems modeling (linear system theory, control theory, signal processing, etc.). IMHO, the humanities can wait till one is older/wiser -- it can be learned easily enough outside university, and is probably wasted on 20 year olds without enough life experience. Nothing wrong with the minimum humanities requirements -- pick something you find interesting and try to get the flavor rather than getting bogged down with the details. All that was just individual learning. If you can work on collaborative projects, and learn to work well with others and lead when necessary, it will serve you well in life (that is a rare and extremely valuable skill).
Needless to say, this is not the path to a 4.0 GPA, or the highest paying internship/first-job, etc. but you get out what you put in, so if you work sincerely, you'll be fine in the long run. See https://thezvi.wordpress.com/2017/08/26/play-in-hard-mode/
Nobody knows the answer to this question. In the '80s and '90s, programming tools got better and better and we all thought that we'd have some rational case tool type deal that managers would voice activate and make software without programmers, or, if programmers were still needed, they'd be regular joes making regular joe money. And that looked realistic. as a teen in the mid '90s, home computers were super common and a bunch of people at my (not very good) high school did basic programming. None of us thought this was the road to dentist money. (but then, most of us would have been pretty happy with manufacturing money. Expectations were low.)
In the aughts, this idea fell away, and now in the teens, it's nigh unthinkable; big companies throw a lot of money at the best computer people they can find, and these people then code in editors that look primitive compared to the IDEs of the late '90s. I strongly suspect we'll see some swing back towards more reliance on tools and less reliance on genius in the coming decades, just 'cause I expect things to cycle that way. I personally think there's something to genius? but... I also think that things won't always be as good for us as they are now. Perhaps it is because I started my first programming job in '97, but I expect business cycle swings to be extreme and temporary. The business cycle goes up and the business cycle goes down.
If you had my opportunities (i.e. no college) I'd say that CS was almost certainly your best bet; go deep, go hard, ignore everything else and get yourself a job while the getting was good. learn breadth later. But if you are the sort who got into an elite school, well, you have a lot more opportunities, most of which I probably don't entirely understand (and that I'm certainly not qualified to evaluate)
I would bet all the money I can borrow on the continued importance of computers... but my personal bet? my personal bet is that in the future it will be more like literacy. Sure, sure you need to be able to tell computers what to do. but you also need to know a thing so you know what to tell them to do. Tools will continue to evolve. There will be lots of spaces for people who can understand both what we are trying to get the computer to do (be that business, medicine, whatever) and how to tell the computer how to do it.
My own advice to you is to get some breadth. I mean, if you can, get that FAANG internship; working at a top-tier company has huge differences in pay and prestige from working at a second or third tier company. Do that now while it's hot, if you can. (this is general advice I'd give to young me: don't be so afraid of super hot trends, they are fun, and super remunerative!)
It took me two decades (more if you count the IT work I did in high school) to get to a top-tier company, and it is a huge difference. If you can do that out of college? you will have a huge leg up financially. (and in terms of choices as to what you can do next)
All that said, you have a lot more opportunities than I did. You'll be fine. Enjoy it. Learn stuff. meet interesting people. Leave college with a full rolodex (or linkedin or whatever) and call (or email or however you kids communicate) every now and then. friends are great on a bunch of levels.
If you already know programming and you're confident in your ability to continue self-teaching, I'd suggest you actually do a different route. MBA, Finance, Accounting, Medicine, Chemistry, Physics, etc. e.g. A good programmer who has a strong understanding of finance will do significantly better in FinTech than the programmer who has spent 4 years practicing CS theory.
If you want to make a real difference, learn a specific field and then use your technical skills to help them solve problems in ways they never imagined possible.
Soon everyone in every role/industry will have rudimentary programming skills and use them on top of safe platforms that don’t needtremendous specialization. It’ll stop being a differentiator and it’ll be more like a basic qualification.
The best career is the one that gives you joy and fulfillment. If CS is what floats your boat then it’s the right choice for you.
Go for career that pays much more but you must drag yourself from bed to go to the office every morning and you are set up for a life of misery - no matter how much money you make.