Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: CS, still a good career in 3-5 years?
384 points by martinesko36 on Dec 17, 2019 | hide | past | favorite | 300 comments
I am currently in an undergraduate university considered "elite" in US. CS is the most popular major. My friends have switched from finance & medicine to CS majors - for the money and because it's obviously a good idea to do so right now. All the worries my classmates have is how to get an internship at FAANG. Again not that they'll do interesting work (which is rarely the case), but for the resume item...

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 think you have no idea how privileged you are for having the opportunity to enter the market with your background and a computer science degree in three years. I interned during summers during university starting around 2000. The dot com bubble had burst before I even graduated. The party was over. Managerialism was in full force. IT Managers at what was then a Fortune-10 financial powerhouse were going on an on about how all of IT consisted of commoditised workers and the only way forward was as a manager of offshore consultants. I felt like my degree was worthless. The last ~20 years have proven those managers very, very wrong. In fact, many of those managers didn't go much further with their careers, as they were very reliant on politics, but the talented programmers and admins continued to grow in depth and breadth of in-demand expertise.

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.

It's always nice to find a reply on HN that captures so much of what you wanted to say. I came to that same perspective from a non-financial Fortune 50. After Y2K was when a very good chunk of those who got CS degrees for all the wrong reasons (didn't have the raw talent or personal interest) got weeded out. I've seen the same thing happen in other industries with a bust/boom, such as petroleum.

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.

I was basically born into CS; there was no question even from Kindergarten that I would ever go into another field. Got my first real full time job at 25, and it was mediocre, it was definitely not a FAANG paradise, and I remember we worried a lot about getting off-shored in those days. I'm really glad the thing I was naturally interested in turned out to pay so well.

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.

I look at my skills compared to the earning potential of some other trades. This is certainly not 100% accurate because it’s based on what I pay in more rural America but I like it:

Barber - 3 cuts per hour @ $20 ea = $60 / hour

Mechanic - $60-80 per hour

Lawn Care - $40 / yard up to 3-4 yards per hour = $40-$120 per hour

Steam cleaning = $150 for a couch = $150 per hour (carpets are less)

Plumbers in East Tennessee = $60 - $80 per hour

Roofers = $40-60 per hour

So when I freelance I charge $75-$125 per hour without a second thought. If my employer pays every developer on a 10 person team $120k that’s still paying less than most mechanics would charge at $60/hour and a much better return than $25/hr off shore with all the communication lag and issues and quality issues. I never worry about competing with offshore. There’s a time and a place for cheap “just get it done” help and it usually costs more in the long run in delays and rework.

I think your conclusion is correct, but some of your examples are not (typically) freelancers. the auto shop might bill you $60-80 an hour for the mechanic's time, but they're paying the person a lot less. same for the barber.

I don't worry too much about competition offshore. the timezone issue alone poses a significant barrier to highly collaborative work. I don't think the concern about domestic competition can be so easily dismissed though. starting salary for someone with a BS in computer science is considerably higher than pretty much any other undergrad degree. when you think about it, the barrier to entry is really not that high. I don't doubt that specialists and experienced engineers will continue to command high salaries, but I do wonder how long people will keep getting $80k+ straight out of college to develop CRUD apps. over time, I feel like salaries for non-interdisciplinary CS majors will have to converge to that of the other STEM majors.

You have a really distorted view of how much people doing these jobs actually take home

It's not about take-home for the individual, it's about the fact that the per-hour price point at the point of sale, even for highly-competitive services, bottoms out in the $80-100/hr range. You just can't really sustain a legitimate business on less.

Lots of freelancers set their price with their salary in mind instead of considering the several moving parts involved in running a business. It's useful to consider that all the local small businesses around you, the type of places that have already been competed down to the price floor, still need to be making around $100/hr to stay afloat.

That’s fair. I shouldn’t have compared earning potential and said something along the lines of what people pay for services in the marketplace. I was thinking in my head about comparing the cost of a developer to the cost of other things in the physical world. As noted in another comment reply these other jobs have a lot of overhead as well.

Your cheap shot that doesn’t point to data fosters similar opinions about you.

As a general rule, the jobs you listed aren't making $120k+. The ones that make that money are working long hours with poor conditions. Developers making $120k are very privileged compared to labour roles

Indeed. The overhead of a developer is a $1000 for a laptop and an internet connection.

All the other jobs I listed have a lot of overhead. I think barbers pay 200-400 / mo for their chair or a lot more if they are covering rent. Landscapers have equipment, maintenance and fuel. Steam cleaners have equipment and fuel.

Most of those workers don't own the means of production so make half or less of the charged rate with the other half going to the business owners.

A lot of those per hour jobs will involve travelling around.

In Europe my wage is lower than what you claim a barber can earn, but I do have a reliable 40 hours per week every week, paid holiday and a pension / healthcare system being taken care of.

A (second) major in mathematics is worth the effort for the simple reason that it is key to many science and engineering subjects. Math is the science of structures, patterns and abstractions. I would describe it as "abstract physics" or "abstract engineering" as it exhibits all the major abstractions utilized in engineering and the sciences. Plus, it basically never gets obsolete. Many theorems work once proven even after 1000s of years, and you can't state the same thing in regards to computer science. The things you learned in your operating systems class for example can get obsolete quick whereas a good solid math course such as in abstract algebra or linear algebra will give you something of a lifetime (and even beyond that).

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

+1 for double-majoring advice. Double-majoring can also help create more than one way of thinking and more neuro-plasticity.

I disagree with "double major".

Instead graduate in 3 years, get a master's

Having a background in a secondary science can be a huge benefit because clear understanding another domain is a lot harder to master than figuring out how to code up that understanding into a functional product.

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.

This lowly Mech. Eng. turned developer is very curious about where do you work that my background could command a huge premium.

I used to leverage my Mech. knowledge in a previous job but was severely underpaid compared to my current FAANG job.

Working on engineering software for design and manufacturing. Though, by huge premium, I mean 20-30% over the median for the area. It's still nowhere near what you make at a FAANG.

This is really good advice that I wish I had gotten while still in school.

CS isn't a career. CS is part of all careers.

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 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.

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=...

No complaints about how spoilt the younger generation was, with their fancy tablets everywhere?

> CS isn't a career. CS is part of all careers.

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.

> Even farmers, it might not be necessary, but it can make a huge difference.

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.

I'm not sure that's a saying outside of agriculture.

It was on HN that I first heard it. I'm not sure it is a saying within agriculture. We take for granted the advanced technology that we get to play with.

Advanced compared to what? Probably not microchip factories...

Do you have a link?

It seems like an interesting idea.

> I don't see much advantage in building software for my farm.

Controlled environment agriculture is heavily data driven and is a fast growing field. Same with genetically modified crops.

All agriculture is heavily data driven. It is not that you couldn't put your skills to use, in theory, but it is not economically viable to do so as there are businesses who have full-time employees doing it better and cheaper. In order to stay competitive with other farmers you have to turn to the third-party providers, not hack it yourself.

To make such a thing economically viable you'd have to find a problem space that is either unexplored or unique to your business. Both are unlikely to begin with – everything you can think of has already been done – but in the odd chance you do have something in the former case, you really need to dedicate all your time to it in order to make it a commercial success. That pretty much means giving up farming. The latter case doesn't really come up either as farming is a commodity business. There is no benefit in finding differentiation in almost all cases. If you really have a good idea unique to your business, your neighbour is still going to want to copy you, which brings us back to the first case.

A vertically integrated farming company is going to beat collections of farms with cobbled together technology. We are not yet at that end state.

That said, the commenter who said that farmers can make use of computerization did not say that they would employ engineers directly, and I see several other commenters falling victim to that narrow interpretation.

Maybe genetic algorithms could help you optimize correlated questions you might need answering.

And if that's the case, someone has already thought of it and I can simply buy their product at a fraction of the cost that would require me to implement the same. Not only that, but it will be higher quality too as they have staff working on it day in, day out, while I've only got time here and there, between farm work, to work on it. There is no economic incentive for me to build it myself. It would be a net drain on my business to try.

I know from working in other industries that there is often a business advantage to building custom tools. I don't see it in farming. Being a commodity business, the businesses are pretty much carbon copies of each other. There is no real advantage in differentiating yourself with specialized tools like there is in non-commodity businesses.

If you really, honestly, feel like you've found a novel idea that could help your farm business, you'd be better to quit farming and focus on building a tool that you can sell to all farmers. But it remains, if you can think of it, it is almost already guaranteed to exist. Agriculture is fiercely competitive.

You are falling victim to the everything has already been invented line of thinking. There are plenty of things still needed for agriculture. Some of them just require thinking about turning the industry on it's head.

For example no one likes Round-Up, people are not big fans of GM crops, one of the reasons we GM crops is the make them Round-Up resistant. The big player in the space has no incentive to change due to the fact that they own the IP to round-up and they own the IP to the GM crops that can resist it.

But what we are really talking about is getting rid of weeds. They way it is done now leaves a lot to be desired. A way to fix it is automated machines with object detection that eradicate weeds. Primary problem solved, weeds are gone, secondary problem solved Round-up is not needed and as a bonus not buying GM seeds.

The problem is no one is looking at it from that equation because either they have a vested interest in the current order of things or they do not have the technical chops.

That is just of the top of my head there are thousands of problems to address in the agricultural space.

I mean there are pest problems. There are water management problems. There are pollution problems. There are yield to market problems.

Anything that has a workflow has potential improvements.

> You are falling victim to the everything has already been invented line of thinking.

Because in agriculture it is pretty much true. We are talking about the most technically advanced industry in existence, other than the military. As new technologies make new ideas possible, someone will jump on it immediately. Me, also trying to worry about operating my farm, will always be late to the party.

> A way to fix it is automated machines with object detection that eradicate weeds.

And that already exists and is commercially available. It is somewhat amusing that your best example of something that hasn't been invented yet is something that has been around for a long time.

It is not exactly cost effective against Roundup in all cases yet, but do you really think that if I tinker for an hour per day, if I'm lucky, that I'm going to magically find an efficiency that teams of people working full time on the problem wouldn't find on their own?

I am feeling that you continue to grossly underestimate what can be done with limited spare time between chores when competing against businesses with teams of technologists focused on the problems full-time.

I would argue that CERN like mega-projects are just as technical as agriculture.

Controlled environment agriculture = greenhouse. There are two scales of this operation: small scale low-tech option which require just thermostat and fans and then you have big scale high tech versions that costs many millions of dollars and come with all the controllers built-in.

For low tech option there is just not enough margin and leverage to make it worth spending your time on it. For high tech options you are having millions in debt and another million or two in running cost (labor, seed, electricity) and with margins in single digits you are probably don't want to risk playing with your recipes. Safer bet is to outsource your tech needs to the companies that have teams of people working on just one single problem.

> As a software developer by day, farmer by night, I'm not sure there is much overlap

Depends what you need it for https://tractorhacking.github.io/

Once you get into level of assets that require tractor like this your main job is financial planning.

Consider your ability to automate tasks on your farm (watering, checking soil health, product QA). All of those tasks being automated potentially increase your output.

> I could easily turn development into a full time job in that industry. There is a lot lacking in what already exists.

Care to describe what's missing in a little more detail?

The thing is that all farms (producing a given product) are pretty much the same. When something is a commodity, there is no benefit in differentiating your business through process. A tomato is a tomato is a tomato. Nobody cares about what it took to get it to market. This means that everyone converges in the same direction. This means that the tools that are out there for other farms are pretty much guaranteed to fit right into your operation with ease. It would actually be counterproductive, economically speaking, to try and recreate this existing tools. It will cost you more in the end.

In this consumer space, there is more effort to try and be different. In this case, the customer notices processes and better processes make for a better customer experience. That is how you beat the competition. Often the tools that are out there don't fit nice and tidy into the way we wish to do business. They are either tailored for other businesses or try to be a jack of all trades, master of none. There is all kinds of room to build software that is specific to our operation, and beneficially so. There is a room to get a leg up on the competition if you do it well.

As a bit of an aside, when you're paying $500,000 for a tractor what you get, in terms of technology, is also quite different to a $100/month SaaS product. That is the other big thing I have noticed is simply quality of software. Nobody could ever afford to pay $500,000 for a system in this consumer industry, so the options that are out there are quite low quality. Understandably – I know all too well from my day job the corners we often have to cut and the concessions we have to make to keep things within budget – but in an ideal world the software would be better.

Thats very beautifully put. I am definitely going to be using this analogy the next time this topic comes up. Thanks.

> CS isn't a career.

What is it that computer science professors are doing?

Whether this is true or not, it's distinctly unhelpful for a high school student trying to pick a college major.

The question was about a career, not a major. It's not like "pre-med" or "pre-law". You don't need to decide this in high school.

I interpreted this comment as saying that CS will always be a useful skill and will never be saturated so therefore pick CS as your major if you are passionate about it, without a fear that it will be saturated

The CS market has definitely been saturated over the years, it has booms and busts just like any other hot field. The 80s in particular were very hard on programmers, not to mention the years after the dot com bust. Long term it seems fine, but just beware it can be a riskier if more rewarding choice.

I've heard of people going from a bootcamp course straight into Google and optimizing 100% for the career path. They make embarrassingly more than I do, have been programming for a scant few years, and I couldn't care less.

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.

To be clear, courses such as "category theory" and abstract algebra are not required to be a good engineer.

Go to an engineering school and ask if calculus is required to be a good engineer ;-) You can be a programmer without a lot of math skills. You can do a good job in a number of different areas. You can be promoted and lead other programmers. You can write a lot of good code.

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.

The good news is that linear algebra is one of the easiest forms of algebras out there to learn.

100% agree. Category theory is simply practical and something I came across through a combination of Haskell and Group theory.

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.

Would you be open to having a video chat about these things? I have a distant appreciation but not a full grasp of many things you mentioned and would love some insights.

Me too! I would love to hear more about your experience.

> They make embarrassingly more than I do, have been programming for a scant few years, and I couldn't care less.

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"?

Unlikely, it will just eliminate the "easy" jobs. Just look at writing, mass literacy surely eliminated many jobs but lawyers are still quite well compensated. Another area is mathematics with actuaries.

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.

Ops is getting commoditized through no-code/IaaS-turnkey solutions -- not there yet but I can see what is hard now, becoming easy for 80% of a business needs.

Time will tell. I think there will always be a market for people who can solve problems.

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.

You dont hear big stories from the ones who tried this and crash burned.

That is some amazing experience you have that no bootcamp can ever hope to teach. Thanks!

Do you recommend any books or lessons online to learn the math you mentioned? Trying to break into it but right now I'm only in Algebra II (MAT 111) in HS so a lot of stuff I look at requires more prior knowledge than I have.

Well I'm not a mathematician so I'm not sure my advice is going to be useful.

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...

How can you not care for people working in the top tech while probably not even knowing half of what you have learned?

Would you say the same thing when you would be another field of work; like medicine maybe?

I focus on myself. Am I better than I was yesterday? Three years ago? Good. Keep going.

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.

Curious, and being serious here, what problems are you working on and how do you make the world a better place?

At my present day job I make software for factories. My team and I make people's jobs safer, keep machines running longer, and have improved food/drug manufacturing safety operations.

On my evenings and weekends, when I'm not unwinding, I'm presently working on Haskell libraries for type-directed data migrations, extending the community fork of Lean to add FFI support, and working on a course in abstract algebra.

Making the world a better place is pretty easy and can start with small things. I like visiting some of our customer factories and meeting the people who use our software. It makes my day to hear their feedback and know that it's making a difference for them.

I mean - honestly - most people that work in computers don't work for FAANG, or even a FAANG adjacent corporation. I like job stability (and with my health issues, job stability and good health benefits are always at the top of my priority list), so most of FAANG (and many start-ups) are lower on my priority list; I know I could almost double my income moving out of higher ed. but that comes with different costs and benefits.

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.

I'm not the OP but generally I don't attach that much importance to my job. I'm very lucky to (both now and historically) have great colleagues working on interesting problems.

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.

It's not a competition. If you can do what you enjoy then that can be very rewarding in and of itself.

There may be loads of people signing up, but I bet you've also seen a lot of people dropping out. Once you graduate, you'll see a lot of kids unable to find anything. Maybe not so many from your elite school, but for sure many people study CS without "getting it". Or liking it.

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.

> I am currently in an undergraduate university considered "elite" in US.

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.

reflects poorly on FAANG hiring practices more than anything. how are they not sniffing the phonies out?

You need to remember that a lot (probably the majority) of these people have been overachievers since they were kids. Pushed by their family, mentors, etc.

They know that in order to get to the top, you need to play the game - it's exceedingly rare that one just stumbles into the top, by intellect alone. There are tons of smart kids out there, you need some edge.

So they pick up extracurricular activities, join clubs and boards, start making a name for themselves. Get letters of recommendation, and what not.

Now they're suddenly students at top schools, with like-minded peers around. They start chasing internships, and it's the same thing all over again. Join the best clubs / orgs, get leadership experience, etc.

For these driven "type-A" folk, it's always about hitting the next milestone. It never ends. Get into best prep schools, get into best universities, get the best internships, get the best jobs, get into the best business school, get the best post-MBA job, get the best promotion, etc.

It's like a professor told me once: Some of the brightest students, academically speaking, do not necessarily end up with the best jobs or positions. A lot of them tend to be too focused on their academic work, to the point where they neglect things like resume-building, networking, interviewing skills, etc.

The "phonies" are good at interviewing and do well on the non-technical aspects of the jobs. Also a fair portion of top positions at FAANGs have long since been populated by MBA holders, so there are built-in network effects and biases at play.

They are not phones, it's been drilled into them that's just how life works.

"Elite" schools literally have classes devoted entirely to teaching students how to pass FAANG level interviews.

What are you referring to? I go to an “elite” school and haven’t heard of anything like this.

They're not phonies. Just high achieving opportunists.

Age discrimination is real. If you choose a programming career and don't enter management, then when you are 40+ you might find that you have trouble getting hired for a decent paying job, even if the industry otherwise appears to be booming. When I was studying CS 25 years ago I didn't even think about the age problem. Even if I had, it would not have seemed real at that time, but its real now.

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.

> when you are 40+ you might find that you have trouble getting hired for a decent paying job

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.

There is an artificial shortage of physicians. The number of people that graduate from medical school >> than the number of residency slots.

It entirely depends what you're trying to do. If you want to make a bunch of money, it's unfortunately more about politics and luck than merit.

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.

> 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.

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.

> It'll usually get you the medium bucks, though, before topping out, which ain't the worst.

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.

I think what he means by big bucks is ownership.

Salaries top out at... $200,000 for non-specialized professions, $500,000 for the best of the best...

Compare that to the capital gains made by people who are owners of businesses. Or other large capital investments.

He does. The thing is you have to hang out with the right people, and even then it's a low percentage chance that you'll become an owner.

Completely agree with this point (especially the third). If you look at high income individuals, many have had a hand in building a new business or lead businesses. Same goes for consulting - imagine charging 20+ clients over the course of a year and the income that will generate.

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.

"it's unfortunately more about politics and luck than merit"

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.

> 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 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.

>> While working on the major many people told me my job was going to go overseas and that the future was in managing developers.

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 friend in the 90s tell me the entire workforce in the US was shifting to management.

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.

I'm pretty sure the current spat with China is due to the Chinese gaining traction in a) Branded products. b) Product design. c) Distribution. d) Finance.

No. It's China's market protectionism and one-way trade practices. For example, many products of major US companies are banned in China (think Google and Facebook). Whereas Chinese products are able to enter international markets with minimal barrier to entry. There are many more barriers for an American company to enter the Chinese market than the other way around. This is just part of it, there are many more aspects.

There's definitely been a huge influx of people jumping on the CS train for the money recently. But the thing is, from what I've heard, there's still a huge gap between how may programmers are needed and how many there are.

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...

I think this is mostly true. People are still going to want custom pages, etc, but that's why _now_ is the time to "git gud" at building stuff. If you become a wiz, you'll be on the list of consultants for Company X to hire.

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.

If that were really the case people would care about wether you can program or not rather than if you have a degree which is the primary thing that most companies filter candidates on.

> I've been coding for half my life, out of pure interest for the building things and never got into it for the money.

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).

Unpopular opinion: it's not a good career unless you are the best of the best.

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.

> IMO blue collar work is a better option because it's easier work and more stable

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.

A job does not become 'chill' just because you get to sit on your arse in a chair. There is plenty of stress in 'office jobs', enough to lead people to suicide, drugs, and dying of exhaustion - in UK that happened to an unpaid intern in banking.

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.

> in UK that happened to an unpaid intern in banking.

Note that events, in general, must be rare to make the news. In this case it sounds like it's not even a new trend they're reporting on but a single person in all of the UK. For all I know, that person was going to go off the rails regardless of what job they had (most people doing office jobs can handle an office job, either by dealing with it or deciding to do something else, so why couldn't this intern? I think you'll agree it's just not representative).

But of course, that doesn't make your comment wrong. You're right that I overstated how chill an office job is and I agree with the rest of your comment.

Doing an office job myself and knowing a lot of people that do, I know it can be plenty stressful, and sometimes very stressful for a long time. It's not necessarily chill just because you sit down. Mental problems can be just as bad as or worse than physical problems, total agree there.

But even though the best blue collar workplaces will surely score better than the worst office workplaces, I think that the average for an office worker is better pay, better benefits, better health, and higher job satisfaction. Therefore I do feel like the person I was replying to is either trolling (or, as a variant of that, testing with different comment styles to have controversial content accepted, but Hanlon's razor probably applies instead), or saw only outliers.

The point is that in a high wage country it is actually more difficult to outsource, or h-1b a "blue collar" job than a software job. Therefore it will always have significantly less competition and downward pressure on income.

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.

This is a pretty extremist point of view. It's kind of like saying you shouldn't drive a regular car because you're not a Formula 1 driver. There are plenty of companies who value working a max of 40 hours per week. If you are the best of the best, that isn't going to be a good fit for you.

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.

Before, and during my college years, I worked some pretty gnarly manual labor jobs. From decent blue-collar trade jobs, to downright digging ditches, longshoreman, to a gopher on construction sites.

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.)

On the topic of the physical toll taken on workers (and their families) by manual labor jobs, OSHA says "Out of 4,674 worker fatalities in private industry in calendar year 2017, 971 or 20.7% were in construction — that is, one in five worker deaths last year were in construction."

Probably the most physically dangerous part of a programming job is getting there (car crashes etc).


Interesting take. Personally, I would say that even as a middling developer, you'll be earning more than the vast, vast majority of blue collar workers, and probably putting less wear and tear on your body.

> Software wages have also stagnated for ten years.

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...

This is my opinion exactly. Programming is great if you are in the top 1% maybe 2%, you can make 400k - 800k as just a senior engineer. Everyone else is fighting to keep their knowledge base current, working for companies that do not value them, etc. Basically if you cant pass hard algorithms interviews with a bit of study, you should leave the field and do something else.

Not even hard algorithms, you just have to study leetcode problems these days. There is a website that aggregates them and only so many problems people can think of, they can easily be prepped even by a bad programmer.

> IMO blue collar work is a better option because it's easier work and--

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.

Programming and blue collar work are two different types of work, requiring different skill-sets that not everyone has. Ask your average construction worker to write a web app and no doubt they would find it very difficult. Ask your average programmer to build a house and they would also find it challenging.

Both types of work can be exhausting, it's just that one is mentally exhausting and the other is physically exhausting.

Difference is you can learn everything you need to build a house in a week. You'll make a couple mistakes, you might be off by a little bit, but it really is a lot simpler than the layman thinks. Personally I have found repetitive, physically straining work to be extremely mentally exhausting but in a worse way; There are next to no challenging problems but you are forced to keep your mind on the task with all sorts of pains and aches. At the end of the day though it's a lot easier to walk away from your work, and you know you've always got a job.

This isn't just unpopular, it's ignorantly wrong. I've done blue collar work and CS work. Also the whole romanticizing of busting one's ass pisses me off to no end.

> 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.

You hate the post, but the post is factually accurate. H1B abuse is indeed taking jobs from people and giving them to low wage workers who drive down wages for everyone.

Thankfully things can be factually accurate and still misleading. Kids mow lawns for a trivial cost when compared to professional landscapers. As such rampant child labor is undercutting and driving down wages for working professionals.

IMO blue collar work is a better option because it's easier work and more stable.

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'll throw this advice in because it's served me well in my career. Somewhat related.

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.

> 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)

When I chose to major in CS, I got a nice letter from the university suggesting that maybe this wasn't the best choice, that too many people were picking this, that it would be worth considering other majors.

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)

While I really enjoy how you framed that, I want to add that I still do strongly believe that things are going to look much different in 2025. Reports predicting it as the year more than 50% of normal workplace jobs being taken by AI, I believe the goalposts are going to morph into something we do not have the capacity to imagine yet.

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.

Was it a university like ETH Zürich, where anyone can get in but there is a limited number of spots from the second year onwards? Then it really made sense to suggest that

CS is already in the realm of unsustainable hours: crunch times that last for months; "free time projects" to get hired; everyone encouraged to have side hustle start ups, freelancing, or consulting work. And this is all doubly so for anything FAANG or FAANG adjacent.

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).

>> "free time projects" to get hired

these are the companies to avoid in my experience

Yup mine too, but that rules out a lot of FAANG adjacent companies and start-ups which isn't tenable for some peoples' interests. I gave up on that chase for stability, weekends and holidays actually off, no on call schedule, and long term benefits.

I’ve been thinking about that a lot myself for a few years now, since my 16-year-old son is talking about majoring in CS when he gets into college in a couple of years - he’s even optimizing his high school courses to maximize his chances of getting into a good program in a good school. Having worked as a programmer now for nearly 30 years, I see programming devolving as a career more and more every year: now we have open offices, scrum (i.e. micromanaging project managers), unpaid overtime, constant downward pressure from foreign competition and of course, nothing resembling job security: the older/more experienced you are, the _harder_ it is to find a job, which is apparently unique to programming. On the other hand, I don’t know what else to tell him to do - it doesn’t seem like there’s much else out there.

As blue collar jobs vanish, programming is becoming the new manufacturing. Oftentimes that unfortunately involves a focus less on elegant design and more on a simple closing of x number of tickets. We have developed our own production pipeline where x number of widgets have to be completed each day. With that said, the pay is generally decent but if you have not made it to a Sr. level job by your 40's, it can be tough.

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.

It's pretty much always been that way though. Death March was written 20 years ago:


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.

> 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.

(350/150)^(1/20)=1.04. Slightly better than inflation.

Well, no! Compound inflation from 1999 to 2019 (20 years) is 1.54, which is much less than 2.33 (350/150).

Can't upvote this enough. People on HN keep talking about importance of statistics and differential equations, yet can't take account of inflation when talking about salaries from the previous millennium.

I think that people who think money is a wrong reason to do something end up spending more time and effort getting money because they don't bother to come up with a system for making it efficiently. Which is a bit ironic. If you really don't want to care about money, make it efficiently so you can spend less time on it.

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.

“ 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. ”

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.

While there are definitely some shitty teams at FAANG, there are plenty of teams where you just need to put in your 40 hours a week and then go home. I've worked for multiple teams at 2 FAANG companies now and never worked more than 40 hours a week. Also, as andreilys mentioned, the high pay allows you to invest a ton of money into equities which is what I am doing.

People who are in CS for the money are probably not going to stay in CS long term. There's plenty of ways out for people who don't enjoy the work (management of people or products, technical writing, possibly design).

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'm almost certain I'd never do an internship. It's not a way to optimize for learning and personal growth. And definitely not a whiteboard generic software engineering. Lots of things about internships in the tech field put me off. If it is a startup, I have had a startup, high chance it's a shitshow. FAANG, don't think so. Also what meaningful work can you really get done in 3 months?

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’s partly about working in a professional environment. You can get a 4 year degree and never use git, never work on a single codebase that has existed long before you came and will exist long after you leave. There is so much experience from just working in a professional setting that can greatly boost your resume. We take caution hiring people without this experience as it can be impossible to teach this to someone when teaching them tech skills is easier.

> You can get a 4 year degree and never use git

Having graduated about a year ago, this is the craziest thing I noticed about so many of my classmates. It'll be trial by fire for sure.

agree for exactly the reasons above. the internship i did helped me understand so many things, from version control and unit testing to larger / longer-lived codebases, to the interpersonal dynamics of corporate settings... To this day I feel like I went through a relatively strong CS undergrad based on what I learned there vs. what my coworkers report having learned, but I also learned just as much via internships as I did in school.

> Also what meaningful work can you really get done in 3 months?

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.

> 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.

That sounds like an interesting feature, where do I find it?

1) Open devtools.

2) Select the "Accessibility" panel. See https://developer.mozilla.org/en-US/docs/Tools/Accessibility...

3) In Firefox 70 or newer, if WebRender is enabled, there will be a "Simulate" menu next to the "Check for Issues" menu. See https://developer.mozilla.org/en-US/docs/Tools/Accessibility... for details. Note that WebRender is not enabled across the board yet, so you may need to force-enable it, depending on your operating system and graphics card, to use this tool.

I understand the sentiment. But before I did an internship, I was also in the same position as you where I had been coding a lot. However, like others have mentioned, an internship is very helpful for the following reasons:

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

CS is not just about {IT, web frameworks, mobile apps, javascript, python, java, SQL, noSQL}

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.

You also forgot to add in cybersecurity. It requires in-depth knowledge of how computers are operating and a lot of outside the box thinking.

Yes - that's an increasingly important one. Add cryptography too.

CS is a fantastic undergrad path of study because it is fundamentally a degree in systematic thinking and problem solving. So, regardless of where you go in life, you'll have acquired useful ways to categorize and approach problems.

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.

Let them do CS, let them become coders for the love of money, and even support them. Meanwhile you keep coding and become good at it. Then when their employer(s) will hit hard times, present yourself using the network you developed through your friends. And do contractor jobs, for real money. They will get paid good money, you'll get paid real money. They will sell their souls for money, you'll rack in the dough. Welcome to the freelancers club, best there is.

I started playing with computers in middle school as a hobby and it basically morphed into a career. I've been in the industry since the 90s, well before everyone realized what a lucrative career it can be. And I saw the same thing - the field became flooded with people who were only chasing the money.

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).

What I see is a subset of people who chase the money who are actually very smart and willing to work hard for it in the long run - think those high schoolers who had to be type A students to get into Ivy League with 4.0 GPA and SAT scores so perfect they still put it on their resume.

Type As don't tend to get into engineering, and even if they do, they'll quickly realize it doesn't bring them as much status, influence or whatever they're seeking as they thought.

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.

It's not just people looking only for money that are jumping into the field. I know of several classmates who started off as math/physics/economics majors, took a couple of CS classes because they heard "everyone needs to know programming", ended up liking it and are now CS majors. Even if a majority of new entrants to the field are in it only for money, there's still a large proportion who truly enjoy it as well.

It's still a great idea, and the fact that you have more experience and a real passion for it means that you'll most likely out compete your peers.

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.

The prediction that everyone should learn to code is basically happening more and more now.

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.

I'd like to know why business guys are writing React (or even JS). I can imagine why they might write Python and use Jupyter Notebooks, but React seems a little further out there, maybe they are prototyping some in-house applications or writing their own little apps for some small use case?

Yes, it’s a PoC. They want a UI for the calculations they wrote in Python. Eventually the devs will take over. But the fact they’re even using React and NodeJS now is something to think about. But also it’s more of the technically minded business people who will have the initiative to do this.

It's still a very solid career choice and probably will be for the foreseeable future. AFAIK, Thiel has a thesis about how most innovation in the past 50 years has come in the world of bits and not atoms. This seems unlikely to change in the near term as half of global population isn't on the internet and there are still productivity gains to be made in many industries by digitizing processes or rewriting legacy codebases.

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.

OK, so this will all be anecdotal. But what I am describing is not that uncommon. And I only worked for a very short time in the US. So if you plan to stay in the US for your whole working life than this advice might not even apply to you at all.

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.

> I've been coding for half my life

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.

I can't find the article now, but that was actually a suggestion I really liked; don't learn CS in college, learn History, learn Math, learn anything else, because someone who can program are about a dime a dozen; but a historian that can also program is unique. The domain knowledge is so much more important than the tool used to explore it - and having both is a golden ticket.

My take: in the late 90s/early 2000s, we saw a lot of the same.

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)

> in the late 90s/early 2000s, we saw a lot of the same.

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.

I would have done something in business, in accounting or the like.

Sounds pretty solid to me, but (a) do you enjoy accounting? (b) that may be a job I could see as potentially vulnerable to AI.

I actually did. Something about the balancing of double entry accounting was oddly satisfying to me. While I agree much of it can be automated away, it seems there's no shortage of companies that still struggle with profit/loss and balance sheets.

I also remember really enjoying business statistics. (I was a pretty terrible college student with regard to discipline - both biz stats and accounting were rare courses that held my interest, as well as being classes where others seemed to struggle while I did very well)

I think it'll be pretty good career until some kind of tipping point is hit.

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 funny you say this. I've always had a suspicision that every budding programmer I encounter studies forward looking things, and if a young person did study something ancient like COBOL, they'd probably have great job security and stand out for the few companies that need that kind of developer.

Speaking of COBOL - the next "big thing" of that nature is likely going to be Visual Basic 6.

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.

> I've been coding for half my life, out of pure interest for the building things and never got into it for the money.

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.

CS is probably one of the best fields to be in if you like doing it and you don't want to shackle yourself to the law/medicine/finance treadmills, with the expensive extra years of schooling and insane hours for the first years.

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.

I went into CS without ever having programmed before and consider it the best decision I've ever made.

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.

If you're from an elite university, then you'll have a good chance of getting into a FANG. A SE at a FANG will make triple as much as a SE for most other companies, so do try your best to get into a FANG. If you're smart, You might be able to earn 400K or more in just 5 to 8 years.

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.

>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.

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.

Kind of, but if you want to have the highest comp at a certain time after graduating, the sooner you join FAANG (or similar places like Airbnb) the better. Because if you join at 10 YOE you will probably be downleveled compared to most people who started out there. Not that it’s a huge deal, but just something to think about.

I don't know about other places, but Netflix is pretty good at bumping your pay rapidly. A friend of mine that was working in education went to Netflix. He started at around 180k and hit 350k by a year then over 500k just another year later. After a total of only about 5 years he's making close to 1mil.

Oh definitely, but at least you're not completely shut out.

What's the average tenure at FAANG these days, 2-4 years?

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.

Be careful about any narrative of what your life should be. You should enjoy life, and if you enjoy programming, optimize your career to do things you enjoy. CS isn't FAANG. There are many many many many companies around the world doing all kinds of interesting stuff. I'm 48, I've worked for big and small companies often in the electronics/mechatronics/software world. I know I've done far far more diverse stuff than most people I know who work in large organizations, and get to make super critical decisions that change the destiny of a company. I enjoy that. However people in larger organizations often get to laser focus on one specific thing and put a large amount of effort and thought into it, that can be good too. Good news is, you can make money whatever way you want to go, just be prepared to adapt and change over time

Someone capable of making an app, website, software used inside of a company, script that gives a company insight, or whatever else you could possibly think of can make a 6 figure company on their own within a year for nearly zero dollars. This is not going away. If you think everyone will go into software, GOOD! We need more people in software, we have too many people doing less important or lower leverage things.

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.

> Someone capable of making an app, website, software used inside of a company, script that gives a company insight, or whatever else you could possibly think of can make a 6 figure company on their own within a year for nearly zero dollars.

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.

If you have any capacity for those things though, they're far easier to learn and practice with. It takes years to become good at building products, but I've gone from almost no knowledge to being good enough to manage a product's marketing/advertising in just a few months. But I disagree, I think having technical skills is the most important part to starting a business. You can test as many things as you want before committing, you can build a project you're committed to for "free" (no cost out of pocket, just your time) until it's ready, etc. I don't want to understate the value of the non-technical roles, but I don't think you can overstate the value of being able to own the entire tech stack yourself.

It's definitely the case that the social climbers, lifelong hoop-jumpers, and paint-by-numbers careerists are flooding into tech. Who can blame them? And these type of people definitely dilute the engineering talent pool. As annoying as this may be to those of us who came from more traditional hackerish backgrounds, this will likely self-correct at the next major recession.

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!

3-5 years is an incredibly short horizon.

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.

> every smart kid I know [is] majoring in [compsci]

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.

Its one reason I avoid doing too much front end work. There are so many bootcamp people now and most are good enough if they're motivated. I don't see how these high salaries can last.

The other thing I want to mention is your negativity towards chasing money. It's... well, it's a tell for someone who either is rich or is trying to sound rich. For most of us? The money and security is the first goal when choosing a career. It has to be, for most of us.

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.

I think you're overthinking it. I totally get where you're coming from, but overwhelmingly what you wrote makes me feel that you've given up on actually enjoying what you do for work. You should place more value on that, if for no other reason than when you enjoy something, it's a positive feedback loop for improving everything: your own mood, your productivity, your self-improvement motivations, and your compensation.

For me, solving technical problems often gives me a great deal of satisfaction. I mean, it is sometimes a real slog, too... nothing is fun all the time... but sometimes the worst slogs come with the greatest satisfaction. and sometimes not! Sometimes you work hard and get nothing. it happens. It's okay to work hard sometimes. It's okay for that to be unpleasant sometimes. Difficult experiences are part of what it is to be a human.

I mean, sure, it's impolite to complain all the time, but I would have to be way more desperate than I am to take a job where I always have to pretend to be happy; I have a pretty nice technical individual contributor role, and that's one of the strongest reasons I avoid management when I can, even though, as you point out, if I had better emotional regulation; if I was better able to be happy (or disappointed or angry) on command I would be able to make more money as a manager. (don't get me wrong; I can totally see myself being that desperate. And if I thought I had a reasonable chance of holding down a management job for very long, I'd have to think long and hard on it.)

It's more than that, though. Those roles, acting happy all the time feels... inauthentic to me. For that matter, nearly all of the "self improvement through positive thinking" stuff feels inauthentic to me; self-improvement, for me, is accomplished through introspection and work.

A lot of good answers in this thread and I think most of the answers you'll find are from people interested in programming for reasons other than money. A few off the top of my head:

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.

I think CS mainly distinguish from other areas that it requires far less resource for both studying and doing research. I was majoring in fluid mechanics in my undergraduate, but I could barely do good research as it requires the access to cutting-edge infrastructure. The same happens in many areas of research, but for IT the cost of infrastructure is smaller. One the other hand is a great advantage - we see more in more good research from Africa and Asia with was almost impossible a couple decades ago. But on the other hand the labor market is expanding. Maybe last century there were some positions for “ivy league” grads only, but now companies hire worldwide, and care more about the skill (probably not he case for US due to the current state of H1B).

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.

I suspect CS and programming will still be a very good career choice even if there is a shakeout. More importantly do you see anything out there that looks like a better career choice in 3-5 years? I don’t see any clear winners.

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.

Smart people have been doing good work for the wrong reasons for decades. Really, for a lot longer than that. There's nothing new there.

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.

Computer Science teaches you to think on abstract stuff. That enables you to do so many other thing (e.g. business process planning, organization planning, etc.). You see things differently (and most likely you already do). In that way it is similar to an MBA degree.

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.

The thing with tech is that, I think you need some passion for the trade, in order to make it any longer than a couple of years.

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?".

It depends on how you see your career evolving. If you pick computing you will have to shift gears, eventually - which isn't to say you will switch OUT of computing, but rather you will eventually need to ADD to it.

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.

> 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.

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.

For an assembly line worker who can serviceably crank out features from JIRA tickets in $framework_of_the_month, maybe not. But that's not what CS education is for.

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.

I graduated from a programming bootcamp about 6 years ago. I decided to go into full CS degree but my bootcamp instructors said to me "it is a waste of time and will cost you a lot of opportunity cost".

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.

Your comment resonated with me. Sounds strange, but - any advice on finding a worthwhile bootcamp?

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).

Where are you located? I am at NYC. I recommend Fullstack Academy. I graduated from there, wrote a really long Quora answer that asks about bootcamp experience and got voted as one of the top viewest answer, I have since removed that because the current Fullstack Academy community (the community, not the curriculum) is not for me anymore.

With bootcamp skills, you can definitely land FAANG jobs. I know a person that did not go to bootcamp or CS degree at all but just study Data Structures and Algorithms and got a job at Facebook (since then the person got fired because of performance review, but landed at Google, and it seems that Google does not fire people).

Your MS program will not advance you toward making SE salary soon, so I believe that a bootcamp program probably will be a better bet. MS program though, will prepare you for a good CS foundation and will make you a well rounded SE overall. However, it has little correlation to the amount of money that you will be making, unless, you are so damn good and famous that literally FAANG will be knocking on your door.

There are too many things to study, and CS is not programming. Programming is not CS. You can program without knowing CS. If you want to optimize for money in a short amount of time, I recommend bootcamp, built a few projects, and then study the heck out of Data Structures and Algorithms. Make sure it is a reputable one and has support structure to help you find a job.

Also it helps to focus either on Frontend or on Backend. Thi will make your career transition even faster. I am a fullstack by choice. I don't recommend this path to anyone. It is too much trouble to keep up with the techs, and don't pay that much more (if it pays more) compared to pure backend or pure frontend. I just do it because one day I foresee to create my own company. I need to be a generalist.

So to summarize. If (goal === make more money within short time): - Do bootcamp - Make sure the bootcamp is reputable, has support structure to find you a job and optimize your resume - Focus on either frontend or backend if you can - Build a few projects (maybe 2 or 3) - Study Data Structures and Algorithms

else: - do MS - just study whatever is interesting. AI, ML, Compilers, Hardware, Graphics, maybe build a small project in one of these areas. These topics are hard topics, so even just one project is hard to do - still do Data Structures and Algorithms

I appreciate the in-depth and well-rounded response. I think this will help me develop a better short-term plan to supplement my current longer-term plan. Seems I should consider abootcamp instead of a summer course after this Spring semester.

Will bootcamp be valued the same if not looking for a FAANG job?

I'm in Texas so not dead-set on a FAANG intitially. I'd likely need to move to Austin to do so, which isn't out of the cards overall but not as feasible while still in my current career (also own a home). Needless to say, it would take quite a leap of faith to go full-on intobootcamp/relocation mode where a shot at FAANG would be in the cards based on proximity.

Your points about the MS program are well taken and align overall with my motivations for attending the program. While I want to get into SE or Data Science as soon as possible so that I can start gaining some reps & experience with the overall process (engineering, coding, even inter-office/workflow), I really want a solid core of understanding to build on because frankly, my long term vision for role and area of immersion is yet to be solidified.

Coding is certainly the hook that landed me on this path as I've dabbled here and there for most of my life (arduino,raspi, light scripting at work, C++ in high school) but I suspect I'll eventually be after something besides hammering out code for a bank or similar enterprise where I'm just punching time. (Apologies if I'm leaning on a webcliche; still learning about all the different roles and opportunities from the outside-looking-in).

The courses I completed in the Grad program were DS+Algs, DB design, Comp arch & OS, and etc. I enjoyed learning the concepts and ins-and-outs of all, albeit with DB probably lowest on the list. Massively useful obviously, and learning SQL, relational theory, data modeling & normalization was interesting but again I suspect I wouldn't want to work exclusively on the DB side long-term. I did come to see the connection between relational models, set theory, and object-oriented programming so I definitely see the value of having a CS core.

I suppose that's a long winded way of saying I want to program but don't want to purely punch code. Overall, I enjoy writing code & working with algorithms and time seems to melt away when working on programming projects for school (same cannot be said about my current eng career). But, I am also equally drawn to the math and science side of things - both the ML, AI (data science?) side and the "effect the external world" side (robotics?).

For the MS program, I'll be declaring ML specialization but plan to use my electives to take AI, comp vision and other courses that satisfy much of the perception & robotics spec.

In the meantime, my short-term goal isn't necessarily to make more money. It's to cross-over from my current engineering career & industry into the software/tech/data-science realm ASAP.

I have several years as a ChemE under my belt, so as a new entrant I expect to take a pay cut initially anyway. Long-term, I understand I could eventually outpace my current financial path but overall that's not the primary goal or driver when all is said and done.

Hopefully a bootcamp might help with the short-term goal, while I continue the MS for the long-term aspirations.

According to my experience, reflecting on myself and my non-CS friends' interviews at FAANG (I know 3 non CS friends that worked at FAANG), I was grilled harder during interview at FAANG companies because I have a CS degree compared to a bootcamp graduate.

It seems that you already completed some courses on your grad programs, I think that's a good thing. I heard college these days are partnering with bootcamps to help mitigate the gap between CS curriculum and real SE work, why don't you try to find out if your CS dept has a similar program?

Also it looks like you have coded before. Bootcamp is geared toward a complete beginner, like, never-touch-a-code-before-beginner. So the first 1,5 months (out of 3 months) will be introduction to programming concepts. Therefore I think it will be a waste of time and money for you to do bootcamp then. In NYC, Fullstack Academy is about $17.5k now.

If you can stomach watching and learning yourself, watching video for hours, I recommend just going to Udemy and buying one/several of those tutorials and do it your own. Without bootcamp, you also will need to grok resume your own, find job opportunities your own. I think it is fine to be honest, as long as you have a few good projects and good at DS + Algs, you won't have problems in interview.

Another possible path to take, once you finish your CS degree is to interview at banks that will train you at real world projects (I think these banks only take CS graduates). I actually just had a friend recently, just 1 month ago, that got a $100k/yr + $10k signin bonus on a training program at BNY Mellon, and he just graduated and he isn't that strong in his programming skills currently. Not bad at all.

Looking at your interest, I think you'll probably get bored quickly at average SE jobs, but hey, after you finish your MS and get your first SE job, with ChemEng under your belt, the world is your oyster. Create a new ChemTech startup!

One of the hardest things in life is figuring out what you want; that can be as hard as getting it, sometimes.

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?

I agree with many of the responses here. The easy jobs will go to people who are less passionate than you are and there are still tons of jobs available so I wouldn't worry about them making the field unstable quite yet. I also wanted to point out that even though many people enter the field for the $, that doesn't mean they can't or won't fall in love with it the same way you have. I say this as someone who didn't know what they wanted to do, was encouraged to go into CS, hated it because everyone around me just wanted to prove how much they already knew than their other classmates, but I ended up loving it when I started working. At the end of the day, people still need to work to provide for themselves and their family, and that's not a bad thing. I'd focus on sharing the joy you have of computing in hopes of motivating others and be grateful that your preferred career also pays extremely well.

Do what you love, but first decide if what you love is writing code for others or for yourself. If you think it's the former, by all means stay in CS, your skills will always be needed. If it's the latter, then find a field that you are interested in where you can use your coding skills. If you are not sure, do a double major so you have a fallback.

The supply of jobs is still way above the available workers. A lot of people conflate coding jobs with valley, FAANG, or startup jobs. The reality is that every industry, institution, and every company is in the process of migrating their business practices and operations to be digital. I think coding is going to become more common place in every business, including the small ones. Software development may eventually be seen as the new factory work - a blue collar job that pays the bills and helps you support a family.

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

Yes but anecdotally I think the supply is accelerating faster than demand.

CS is a part of everything nowadays. I never studied CS; I taught myself. My bachelor's is in Criminal Justice, which I never used other than to find work in other countries (mostly as a teacher)

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)

Advice for you:

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.

This is good advice, but also keep in mind that they experienced highly unlikely outcomes (survivorship bias), what they say caused their success may not be what actually did, and the playing field may have changed since then.

I’ve been thinking about this for a while. My view is that the software-is-eating-the-world theory is essentially correct and so demand will exceed supply indefinitely.

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.

And software skills will still be handy in the next career if worse comes to worse. There is great job security in being able to spreadsheet, for instance.

This already happened 20 years ago. During the dotcom boom of the late 1990s, many non-CS university graduates were retrained as programmers, which led to a lot of questionable code from people who knew the basics but lacked the underlying theoretical grounding.

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.

When I was close to graduating high school, I faced a similar situation. So many people were going into CS or software engineering, mostly for the cash, and adults in my life advises me that CS was a saturated field and there was not much growth potential.

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.

If it's what you like. You'll be just fine.

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.

I'm worse-than-average on predicting future trends, but for what it's worth I had the exact same thoughts 17 or 18 years ago and here I am, using a computer science education for things that I think are positive for the world and that pay me very well.

I think since the 90s it was known that CS offered a good, well-paying career path. My classes were packed with fellow students who were in it for the money. Today, I don't know a single one of them who haven't moved into other fields (albeit often related fields, like managing software engineers). If you love software, you'll always have a job, however many other people enter the field. You'll be the one eager to learn new things at work, memorizing documentation, and earning a rep as the one who sees the big picture, not because you're chasing a career but because you love doing those things. That will lift you to the top of you peer group.

Personally I think that this entire sector is due for a reduction. Companies like Facebook or Amazon or Google or just soaking up employees to work on things that don’t really matter. Once they figure that out and manage more efficiently, there will be layoffs followed by the inevitable commodification of CS talent. This field isn’t special, it’s like any other field that went through a boom phase and a later regression to an equilibrium point.

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.

"Soon everyone in every role/industry will have rudimentary programming skills"

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.

I was deliberately vague. I don’t think the existing workers will pick up those skills but they will become increasingly unemployable if they do not.

Americans won't, but immigrants will.

Immigrants who study CS, yes. I live and been to countries where these immigrants come from. I don't think Americans would have anything to worry about if they stay competitive and take time to specialize.

Your regular coding guys might get burnt after the next recession though.

Iran, China, and CIS countries are the ones I have in mind. Which ones are you thinking of?

So would you stop if it were a “bad” career choice? That seems just as disingenuous as you’re insinuating your colleagues to be in switching to CS. And anecdotally, having went to CMU, everyone I knew switched to CS or moved CS adjacent - and many of those that switched are enjoying it to the fullest - not as FAANG engineers but many as CS PhDs.

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.

"Do What You Love, the Money Will Follow" by Marsha Sinetar is a book that helped me. I worked for years writing code, excited to get up in the morning to get started, My performance was excellent. I worked for other years dreading looking at a code base that sucked for managers that sucked, My performance was subpar. Only you know what brings you joy. I think it's a mistake to look at what others are doing to decide what you should do. I'm surprised to read that you feel computer science as a whole is a hot field. Most of it seems fairly prosaic these days, but certain parts are really hot, like machine learning

It's really not a career path you should get into if you're just in it for the money. Your friends will probably wash out within 3-5 years after they figure out they're not actually interested in software engineering.

Disagree. I don't care about CS at all. Still like the work, but wouldn't do it if it weren't for the money.

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.

If you've really not put in any time for independent study and have only 4 years experience on the job, you are not "average". You are below average, and apparently unaware of it. Not to mention a cancer on the industry. It's my job to make sure people like you don't pass the phone interview.

Comparing others to cancer, that's always a great display of character. There is much to unpack here, but I'll enjoy myself a bit and simply leave you with the concept "eternal September". Google, if you haven't heard of it.

I'd hire someone qualified, motivated, and hungry to improve over someone who barely scrapes by without wasting a single cycle worrying about their word choice on an internet forum.

Perhaps we have a different understanding of what constitutes "character".

I think you underestimate what people will put themselves through to score a high-paying, high-status prestigious job (see: med school)

The thing about software engineering is that it doesn't require expensive post graduate education like med school. The barrier to entry is much lower. Many status seekers will eventually realize a few things about software:

1. Wait, I really have to look at this screen most of the day? 2. The pay check is nice, but the job itself isn't high status. I'm treated like a grunt 3. I have my whole life ahead of me, plenty of income, and a degree from a top school. I can leap frog to another position in the company, or go back and get my masters.

I think this is a pretty good question. My dad told me about how, 50 years ago, getting a toolmaking apprenticeship was a license to print money. That certainly changed, and I don't know if anyone expected it?

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.

Your thinking about going against the crowd is exactly right. Pivot either into a niche in CS, e.g. machine learning, or try an emerging engineering field like robotics. Alternatively, consider something like genomics.

I don't care about any degree of my employees as the projects they did in the past (commercial or private) are much more important

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 :).

OP your comment comes across as very puritanical.

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.

andreilys says>"...The cream always rises to the top..."

That may be true for workers, but I heard the management version: "Shit always floats to the top..."

"All the worries my classmates have is how to get an internship at FAANG."

Hopefully you'll give yourself permission to worry about something other than corporate behemoths before you graduate.

In 3-5 years? Probably

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.

>In 50-100 years? Probably not

can you dilate more please? is it because the industry saturation ?

If you study something that you really like, the worst thing that can happen to you is that you work on a field that you really like. That will give a you a huge edge over everyone else.

If you can manage to wangle a double-major that includes CS and some (the right) other field, you might be in a superior position. Including to be well-paid and worked to death.

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.

It sounds like you love CS. I got hooked on programming when I was a kid and couldn’t imagine doing anything else. There may be lean years—I “started” my professional career in 2001 and it was a terrible time. But, honestly, it’s been great and I love it. It takes conscious management, but, really, if you focus on continuing to learn and work on challenging problems, your expertise will compound at a higher rate than those who only have a passing interest, and you’ll be set.

I was a kid programmer and it sounded crazy to spend college learning to code. I studied anything and everything else. More interesting, but not a good resume-building strategy.

Modified for myself: I was a kid programmer and my parents thought it sounded crazy to spend college learning to code. I studied pre-med but didn't go to med school.

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.

Similar boat here; not Asian, but I was in the military, and got into CS when I was 30; got a remote gig at 36. I get paid far, far less than others, but I also happen to live in a low cost of living country, so it (kinda?) evens out.

I would like to get paid more money, and I think I could look for higher paying work at this point. However,I actually do like the company I work for, and it's fairly low stress. I also have enough time to work side projects and start on my Masters (in Geoinformatics, not CS)

And yeah. I feel you on the age apprehension. I think it would be much harder for me to find a software gig back in the States now just due to my age.

Like other feedback in this thread has already covered, the upside is that coding is applicable anywhere, and in fact, I think that outside of our little tech-bubble, it has greater impact as fewer people have those skills. Even a small amount of tech applied to the right place can have huge value.

It's just that the Asian kid in me is thinking I need FAANG on my resume even for a short time to get some street cred. Like you, I do like my job, the comp is OK, but eventually all things come to a end.

I don’t think FAANG is really that necessarily important though. Sure, it might open up some opportunities. So would making good stuff that people might eventually recognize.

IMO, I dong think I could ever get into a faang company. I’m terrible with algorithm interviews. I also don’t think the job would be that fulfilling... what is useful about making or maintaining projects that focus on data, ads, etc, that doesn’t benefit anyone?

The money would be good, but eh... maybe I won’t ever make as much as a guy a google, but I can say I was involved in a project that helped disabled people get picked up by a bus more easily.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact