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?
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.
However, there are a lot of areas where knowing linear algebra will help you enormously. Many people who don't know linear algebra often don't see the problem because they will never choose a solution that will require it. They often don't know enough about it to realise that a solution exists and is potentially better than the solution they are reaching for.
Similarly, I can't tell you the number of times I've seen abject failures because the people involved did not understand statistics. In fact, if you only choose one math related area to learn about as a programmer, I highly recommend choosing statistics (which will unfortunately require calculus to understand well). Again, people who do not understand statistics often fail without realising that they are failing -- because they don't understand the statistics ;-)
I can make a similar remark for combinatorics and a variety of other mathematical disciplines. For a very cool job I once had to map animations onto a non-euclidean surface. Sure, I don't have to think much about math in my every day work wrestling with a legacy Rails system but I'm not sure I would want to define my entire career as doing that.
I would recommend that any programmer who wants to be a good programmer and to work in a variety of interesting fields to study math. Universities hardly have a monopoly on math. There are many good books and many internet resources to help you. You don't have to do it, but it will help you if you do.
I'm not trying to shame bootcamp grads or make any judgements about their skills if that's what you're implying. I think the free market is free to decide what they're willing to pay and we should treat it as such and not be upset if someone with a few months of experience with programming lands a job making more than we do.
My point was that your fiercest competition is with yourself. And CS is a valid career path with a lot of interesting options if you stick it out for the long race.
I think the bigger question is, with programming being made more common to the public (aka being taught in elementary school), will the supply/demand ratio that makes US development a six figure job go away with the influx of "new would-be coders"?
Democratization of computing will lead to greater stratification of programming jobs. The "Excel Programmer" won't exist being supplanted by the "Office Drone" whereas the "Distributed Systems Engineer" (or whatever) will keep on going.
Programming may become a lot like maths in that it’s mainly used by other disciplines to get things done. Learning something other than programming itself will always be an asset.
The standard pedagogy is algebra then calculus by the end of HS. For me it was learning to program computers by way of making video games that solidified my understanding of HS level geometry, trig, and calculus. That was so long ago though that I don't really have any recommendations for current courses or books to go that route. I would recommend learning enough Javascript or something to get a canvas up in your browser and start making boxes move around, accelerate, rotate, follow your mouse, etc. It doesn't have to be anything sophisticated but it can teach you a lot.
If you're eager and enjoy a challenge I'd say my one regret was not learning how to construct my own proofs until much later on. Learning how to apply maths to solve problems is a lot of fun but learning how to think abstractly and make your own arguments is much more satisfying. There's a great book that doesn't require too much more than HS level math to understand which starts to make this connection called, Introduction To Graph Theory [0] and it's one of my all-time favorites.
[0] https://www.amazon.com/Introduction-Graph-Theory-Dover-Mathe...
Would you say the same thing when you would be another field of work; like medicine maybe?
We're not like doctors. There is no capital-P professional guild setting the bar for practitioners of software engineering. There are engineering guilds that recognize software development as a discipline that will accredit you if you meet their requirements and pay their dues. However it's often not mandatory for you to be accredited in order to practice software engineering. And it's not required that a company developing software employ a professional software engineer in order to conduct business. So hardly anyone seeks out accreditation.
In a free market you get companies like Google that need a large volume of people trained with vocational skills to churn out code in the various frameworks and tools. Doesn't bother me any.
I like to work on problems that are interesting and make the world a better place. You can't always do that at a Google or Netflix.
You're treating this like monetary value is the only motivator for people. Let's pick on medicine; a general practitioner consistently makes less money, but they tend to have greater, more regular contact with their patients, which may be a strong motivator for them over becoming a surgeon for more money. And to boot, the surgeon is more specialized, so they have simultaneously learned less than the Gen Practitioner, but more specificity within their selected specialization. This is similar to boot camps, that provide a very narrow skillset that give someone the best chance of getting hired into that very narrow position type; where as, someone like the OP and I are happy with our broader knowledge that gives us different benefits.
And probably most importantly, what do I care that someone else has optimized their job path for monetary gain. I could assign 5 minute increments to worrying about each person and still not make it through all the idiots that are employed in the tech industry in my lifetime.
But in terms of 'jealousy' for those who earn more? Quite the opposite. There are plenty of companies I'd rather top myself than work for.
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.
Did you ever do blue collar work as well as software engineering? Because I have no idea in which version of this world physical labor is preferable over a chill 9-5 desk job that typically comes with a higher salary. Unless free medical issues is your thing, then physical labor is absolutely the way to go.
I did hear some horror stories of programming jobs in Spain where someone got unlucky with their employers, maybe this is based on one or two of such stories or experiences? I'm sure there are also good workplaces in blue collar, even if they're few and far between, you might have gotten unlucky in software development and lucky in blue collar.
I'm honestly wondering if your comment is part of an experiment with whether a thoughtful-sounding but incorrect comment, starting with a disclaimer like "unpopular opinion" to make it sound like an opinion rather than a statement, can be accepted by the community as correct.
Your mind is a thing in itself and the social environment matters much more than whether you get to sit.
I am quite happily to do weeks of home repairs, soldering. Electronics assembly, etc. Ofcourse thats not hard physical labour, but neither is most blue collar work.
I personally switched out of software not too long ago and could not agree more about how much time I enjoy not thinking about work or my career and instead spending it on my personal projects and my family and friends.
Obviously I make a lot less money and I have the luxury of not having a family to support, but I certainly would say that the day-to-day life of my blue collar job is significantly better, for me, than my previous software job.
Much of the visa fraud is probably large companies that have a regular amount of visa hires in the first place. A mid-size company that has zero H-1Bs is not likely to have resume fraudsters through that channel.
This post paints every business as some sort of vicious meat grinder and the reality just isn't true. You have to avoid bad companies just like with every other field.
Even if you are expendable and get let go from a single company, it's not a death knell for your career. Explain the situation, and that it wasn't a good fit, and try to highlight other strengths during the interview.
I can tell you this, there were some recurring themes at those places:
- Injuries
- Work never stops, no mater what weather
- People in their 30s getting college degrees because that's the only way to get promoted in a company, unless your manager just happens to kneel over in the near future.
- Constant stress of getting contracts. Blue-collar work can be extremely seasonal.
- Did I say injuries? Yeah. Stress injuries will start popping up sooner or later. I don't know a single electrician or plumber that hasn't had some type of injury related to their working positions (shoulders, neck, arms,etc.)
Probably the most physically dangerous part of a programming job is getting there (car crashes etc).
Where did you get that data?
> everyone [is] highly expendable
even the best of the best? Anyone, in any industry, who fails to adjust to The Market, will be expended, because their production value drops below break-even. Toys "R" Us went bankrupt because parents can be riding the elevator, sitting on the john... and buy the exact toy their child wants...
Your opinion is wrong. Programming gigs, especially at the giant tech companies, are way, way easier than blue collar work. Blue collar work, especially skilled trade work, is a fine career option, but not because it's easy.
Both types of work can be exhausting, it's just that one is mentally exhausting and the other is physically exhausting.
> 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.
This is all but objectively false for journeyman level. As the new guy on site you better believe you aren't taking it easy. Hauling shingles, hauling siding, digging ditches, doing whatever the older guys don't/physically can't do anymore. Wanna know why they can't do it anymore? Because that's what they spent their 20s doing.
Sure when you get home you're not thinking about your trade, most of the time, but it's not like you're free and clear. You didn't just spend 8 hours sitting in a chair thinking about problems. You just spent 8 hours on your feet doing work. Now after work you're covered in dirty/sweat/paint/etc. Gotta clean up before you can relax. Granted you don't have to study the new JS framework in vogue, but then again neither do I. Though on the flip side my job doesn't leave me worn out physically and unable to enjoy free time.
>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.
I... what? Are you suggesting knowledge work is somehow easier to teach to people than a trade? That the tens of thousands of home-repair, car repair, plumbing, siding, painting, etc, etc videos for blue collar work don't exist? That somehow these are inaccessible to the aforementioned 'unwashed masses'?
> There was a HN post a while back where some guy was begging to pay for a code job. What does that tell you?
That there was an outlier?
> 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.
This is literally the "they're taking our jobs" line with different vocabulary. And based on what OP says about their credentials most blue collar work wouldn't take them due to over qualification.
> 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.
Whee dog whistles. I hate everything about this post.
Untill you turn 50 and your body and joints turn to dust.
I had a few blue collar job before tech, offices are terrible places but industry environments have their big downsides.
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.
When cuneiform was invented the things to be written down were tax records, business transactions, beer recipes, legal codes, poems for various gods, lists of military spoils, multiplication tables, customer service complaints, teachers griping about their students being lazy, and students griping about their teachers being hardasses. e.g. https://en.wikipedia.org/wiki/Complaint_tablet_to_Ea-nasir https://books.google.com/books?id=Nvgz3NOuo5EC&pg=PA230&lpg=...
This right here. I was in awe when I realized that software engineering affects all industries. Even farmers, it might not be necessary, but it can make a huge difference.
Also I too have been coding for a long time because I love programming. The way I see it, if I ever tire of it, I can switch careers. I'd still code regardless of who pays me to do what.
As a software developer by day, farmer by night, I'm not sure there is much overlap. Some of the problem solving skills I learned on the farm have made me a better programmer, I expect, but I don't see much advantage in building software for my farm. Anything you can dream of is available commercially at a fraction of the cost it would take to build it yourself. As the saying goes, technology is developed in the military, adopted by agriculture, and then exposed to the rest of the world.
That said, the story is quite different for my new side venture in a consumer market, however. I could easily turn development into a full time job in that industry. There is a lot lacking in what already exists.
What is it that computer science professors are doing?
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.
Anyhow, OP doesn't sound like someone who's into CS for all the wrong reasons. I personally wouldn't get focused on FAANG as the next step, but if they're already going to an elite university, resume building with FAANG seems reasonable enough.
Above all, having a real interest in what you're doing is one of the greatest multipliers to your efforts... and your enjoyment.
Though I do wonder what do I (as an SF dev) offer that an offshore contractor making 1/5th as much doesn't? Or heck never mind offshore, somebody outside one of the big tech centers (like where I first worked after graduating). The future of engineering always seems to be remote, but here we still are.
But you're right, the .com crash totally washed out a lot of the "HTML Programmers" and their ilk, people who couldn't pass FizzBuzz but got hired because they knew buzzwords and the hiring teams didn't know any better and were desperate. I like to think today's FAANG interviews are good enough to at least not repeat those mistakes.
Besides, I'll probably always worry I'm not worth my salary on some level (impostor syndrome, yay) - it's hard to come to an objective conclusion on this, anyway.
Let's take one particular example with linear algebra. With linear algebra you can understand Fourier transforms better (and why they work - roughly: your target function gets projected to a set of sine/cosine functions), with linear algebra you can grasp the backbone of neural network's aka the back-propagation algorithm, with linear algebra you can understand various transformations needed in computer graphics, with linear algebra you can better understand quantum computing/programming, ...
Linear algebra is just one fundamental subject that every math freshman needs to grasp as many consecutive courses require a good grasp of linear algebra.
Tl;tr: you cannot go wrong with studying mathematics.
Yours truly, A CS undergrad
Instead graduate in 3 years, get a master's
For example, where I work, aero/mech engineers-cum-developers command a huge premium. My partner has a medical background and no programming experience, but is a very productive programmer for her team because she understands deeply what needs to be done. Her stuff isn't scalable past N>3, but it does the job she needs and was developed for a fraction of the cost from a professional dev team.
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.
This. Outside of FAANG(-alikes) and some finance software work, the real money remains on the business side. Managing others. Presenting & selling ideas. Communicating. Knowing some computer shit is a big bonus but isn't what'll get you the big bucks. It'll usually get you the medium bucks, though, before topping out, which ain't the worst.
You'll also need that to go independent (start a business, start a consultancy, high-end freelancing) which is a third way (pure Tech in a handful of businesses; tech + people skills anywhere else; be your own employer) to make real money doing this stuff.
Can confirm. I make medium bucks. The way the economics work, it made more sense for me to make medium bucks remotely in a cheap CoL area than it did to try and get big bucks in a major city.
You'll have to work your ass off, but if money is what you're after, starting your own business (or businesses), consulting, and high end freelance work are incredible places for this.
A fourth may be pure finance (M&A, PE, hedge funds). People in that business long enough and high enough on the chain make VERY good money.
To reiterate, software is not all about writing software. There's usually an immense amount of buy-in you'll need from other people, not limited to other software engineers.
All while simultaneously trying to navigate budgets and legacy systems. Even if you're pretty heads down, you'll still see the outward effects of these things.
All these things are necessary though, as the system within which the software operates becomes increasingly complex over time, it becomes necessary to engage with many different people in a multitude of roles and capacities.
Programming also has the unique benefit of allowing you the freedom to build your own business with almost zero capital. Even if that business only earns you $500 a month, nothing is stopping you from building 5 more.
Complicating that though is very often its hard to muster energy after working 11 hour days 6 days a week depending on the job.
https://www.amazon.com/Death-March-Developers-Surviving-Impo...
I'd say the demand for programmers is higher than ever and pay is definitely higher overall. 20 years ago $150k was a good salary for a programmer, now it's more like $350k.
That’s $50k and $150k for those of us who don’t live in SV.
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.
I feel like internships are a good way to learn if you haven't already been coding in the real world or on the subject matter and a good resume item, but if you have a good resume already and coding experience there are much better alternatives.
It really depends on where you are and how seriously they take their interns. I've seen interns accomplish a fair amount in 3 months where I work (Mozilla). As a concrete example, we had an intern propose and implement a new devtools feature that lets you see what your site design looks like to users with various visual impairments.
Still depending on where you are and what you have already done, some things that one can learn from an internship that one might not encounter otherwise during college:
* Working with a large codebase.
* Working with a distributed team.
* Code reviews, both as the recipient and actually doing them yourself.
* Dealing with large existing suites and writing your own tests, then dealing with the intermittent failures.
* Finding out what various people in the industry are working on.
* Finding out what jobs actually look like in practice on a day-to-day basis.
It's possible to pick some of these up via various open-source project involvement, of course, even without doing an internship.
As a personal anecdote, during the one internship I did I learned a lot about the concept of "just because it's a spec doesn't mean you should implement it", ended up fixing a ship-stopping bug for the product I was working on, made some friendships that continue until today (nearly 20 years later), learned some hard lessons about the failures of corporate IT provisioning in a large corporation, plus some of the things I listed above.
1. You get experience working with important concepts that exist in production like proper git usage, technologies like Kubernetes and Docker, managing differnt build flavors on the client, unit tests, how to review other peoples code professionally, etc
2. You learn the soft skills part about building software. More often than not, software is a team effort and learning how to navigate different peoples egos and personalities and trying to get your ideas across are very important. Even if you're the best coder in the world, if you can't get your ideas across, it doesn't matter
3. 3 months is actually a lot of time to get meaningful work done. Even full-time employees will have feature development that takes around 3-4 months from ideation to shipping (in high velocity companies). As an undergrad, you have 3 summers and I would consider at least allocationg 1 of those summers to an internship to see how you like it
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.
I had a friend in the 90s tell me the entire workforce in the US was shifting to management. Everything will be outsourced and people here will just manage everything. This was an MIS major drinking the business school koolaid. I thought it was rather arrogant to think China or India could build anything under the sun but wouldn't be able to manage people and run a business...
20 years later many the companies that followed such thinking are gone or having problems.
I had a recruiter for programming jobs tell me at a job fair about 15 years ago that programming was essentially over in my country, in just a few years everything would be outsourced, and only software architect positions would be left. Turns out that people are bad at predicting the future.
Similarly, the OP might have posted essentially the same question 20 years ago, minus the FAANG reference (Microsoft and IBM back then, maybe?). The answers are the same as back then: Nobody can predict the future, but so far we have failed to automate/compete ourselves out of well-paying jobs even though people have always claimed that that's only five years in the future.
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).
Very few companies are engineering driven, some are product driven, some a finance driven, some are sales driven, and the respective department will have more clout than engineering.
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.
It's an albatross around Microsoft's neck, but every time they update Windows, they keep around the runtime DLLs - because so many businesses have software written internally and otherwise that can't migrate to something else.
If you know VB6 - and you are confident in migration to another platform, or willing to maintain old code (maybe while migrating) - you'll likely have work long into the future.
The most likely migration path would be from VB6 to VB.NET or to C# - staying on the Windows platform. Another option would be migration to GAMBAS or Mono (aka .NET for *nix).
Those feeling adventurous might try Python with QT, or some other GUI framework; at some point, it might be better just to examine and understand the core logic and flow - then convert it all over to a web-accessible system (of whatever choice you want).
I imagine that in time we'll see some kind of VB6 to WASM compiler or something, if someone hasn't already taken a stab at it. What we won't see, though, is Microsoft open-sourcing VB6 or anything like that. They've said they want to, but due to the various licenses used in the development of the language (and components) - it's virtually impossible for them to do it.
I coded in VB (3-6) for well over a decade, but it's been forever since I last touched it. That said, I'll always have a soft-spot for BASIC (having grown up on a version of Microsoft BASIC on the TRS-80 Color Computer line) - so I could probably pick up where I left off once I rebooted the VS compiler/IDE, without too much trouble.
I expect that might be where my career turns to as I get older (currently 46 and working in SPA Javascript/NodeJS apps).
But, you'd have to be a certain kind of person. And, if you are, that is totally cool. Most programmers I encounter thirst for the New Thing.
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.
And the great thing about FAANG is that it's only easier to get in as you gain more experience. You're not screwed if you don't get in as a new grad or junior.
To stay in the upper income-bracket, you'll also need to be where the money is. And I'm sure you can count on one hand all the areas where you'll get a mid six-figure salary.
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.
I am surrounded by talented people over 40, none of whom had problems finding a decently paying job.
I am aware that there's some level of survivor bias here, bad or mediocre developers have dropped along the way.
To be fair those developers tend to work anyway in places that pays less and on not top-of-the-line products.
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.
I went to a small no-name school for my engineering degree, where people didn't give two sh!ts about prestige or band names. Most of my class-mates ended up with above-normal paying jobs in small companies, and the rest at big multinational companies.
Then I got my MBA at a top school, and the culture was completely different. The majority seemed to be driven go-getters, viewing the job market / their careers as go big or go home.
They usually follow the safe bets, and flavor of the decade - which right now happens to be tech.
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...
And as for everything else... lots of industries need good problem solvers that are in the CS field. I'm going to be getting a Masters in Geoinformatics because it interests me, and it just happens to be a more niche field than others. I think this will help me in the long term as well.
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)
I'm a student too similar to op with 1.5 years left to graduate, yesterday I got shivers waiting for my appointment with my advisor. Phone call within seconds of phone call, the receptionist was getting calls about students wanting to change majors into cs.
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).
these are the companies to avoid in my experience
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.
Except the principal you earn from your FANG job can then be used to purchase income generating assets (equities that produce dividends, real estate, etc.)
It’s not uncommon to save $50-100k+ per year which can then be put to work making money for you. This is still one of the few industries where if you start working at 22, you can achieve financial independence by 35-40 years old with fairly high probability.
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.
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.
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)
And I saw a lot of the same in the mid 80s, when I started in college. I remember talking to one of my classmates, who originally wanted to be a Phys. Ed. teacher, contracted a back injury, and decided that there was good money in CS.
If you're passionate about CS and dedicated to acquiring and maintaining skills, I think there will be a good career in it for a long time.
Out of curiosity, what would have been your plan B? Off the top of my head, I can't think of any profession that would obviously guarantee more long term stability.
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.
I think you are overemphasizing the importance of technical skills in the context of starting a business. Marketing and management skills are far more important. I have seen people with zero technical skills start successful tech businesses by means of their business acumen. They hire contractors to do the tech work.
On the other hand, there are exceptionally talented engineers who spend a year or two developing a successful product, yet the product gains minimal traction and they end up working for the type of individual that I mentioned above.
Am I good at SE? No. But I went from terrible to average in a period of 4 years and am now earning 6 figures. All without side projects or unpaid learning.
There are very few jobs that are very stable in the modern economy. If you want a long term stable job, become a professional plumber or other technical service house-call. Steady demand, technology is not going to reduce needs for plumbing, not an attractive market so there's not that much growth.
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.
Where and how do you find these kind of jobs? Anyone I know who works in this kind of non-tech company hates it because it's a cost center and they get all the negative side of our profession (no budget for anything, outdated/poor tools, unreasonable expectations and deadlines, and no respect from the rest of the org overall)
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.
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.
Why do you assume this?
There will always be more work to automate and more products to build. As processes become more complicated, you need engineers to support the systems they run on. Nothing manages itself.
We're limited in what we can do right now due to the (relatively) small number of software engineers available to throw at problems.
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.
I'm in in the middle of a career-transition effort myself. I'm a ChemEng & do fine financially so the motivation is not money-based. Honestly though, the faster I can switch the better.
I completed a Graduation CS Foundations program (5 courses at Master's level university credit) and now I'm starting a Master's CS program.
I originally explored bootcamps but my impression (purely online based, no friends in the industry) was that it could be hit or miss and all were not created equal. Plus, the cost seemed high compared to other options. The online research leaned a bit more to the doom & gloom side but I figured reality was closer to neutral.
At this point though, I'm exploring all options to make the move as soon as possible so curious if a bootcamp might help speed up the process. The MS program will take 2-3 years since I will be working full-time in my current position (which I plan to complete regardless). I'd really prefer that my after-work efforts be more closely tied to my day job as I continue with such a workload the next couple years (not to mention the synergistic benefits).
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
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.
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.
That may be true for workers, but I heard the management version: "Shit always floats to the top..."
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.
can you dilate more please? is it because the industry saturation ?
This was in 1998 for me, and at that age I didn't know how to push back on my parents. Good 'ol Asian parents didn't know anything out of the big 3 (Doctor, Lawyer, [Licensed] Engineer). Still going to therapy for that.
I am now in a software engineering job as a TL but I'd say I'm about 8 years behind in my SWE career, after soujourns in a microbiology lab, food manufacturing, retail inventory planning, and then product management in retail, and then to engineering. To be fair, this might still be the case as the dot-com implosion happened just before I graduated from college.
I have amazing, varied experience as both an IC and people manager, but I don't have the ticket known as a CS degree. I'm thankful for the path I've taken but eventually I will have to make a jump to a "real" tech company, and I can't say that I don't have some apprehension about my lack of formal CS training, as well as age.
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.
From my experience, I'd guess that the percentage of "good" programmers is probably maybe 30% at most (and that's probably being generous). If so, that would mean 7 or 8 million "good" developers out there. At least two orders of magnitude lower than your claim.
"According to a study by EDC, as of 2018, there are 23 million software developers worldwide. This population is expected to grow to 27.7 million by 2023."
Source: https://www.c-sharpcorner.com/article/how-many-software-deve...
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.
I'm completely baffled as to where all of today's workers in their 20's, 30's and 40's, almost none of whom have any programming skills whatsoever, are going to learn programming skills in this "soon" timeframe.
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.
What? No. This is actively harmful advice.
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.
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).
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.
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.
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.
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.
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.
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.
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?
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)
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 :).
Hopefully you'll give yourself permission to worry about something other than corporate behemoths before you graduate.
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.
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.