I kind of feel I have wasted my time/life on this career. Maybe someone can give me decent advice.
I am in my 40s now. I started coding when I was a young teen, copying code from books in the library to build text based games. I ended up making lots of my own games, some got popular. I grew a love for tinkering, coding, and building things. I eagerly joined the CS dept at university in the early 2000s, when CS attendance was at a record low. But I didn't care, I loved it.
When I graduated, I could not get a job. This was around 2004-2005. I submitted my resume to many companies and got nothing. I ended up working temp jobs, until I finally got lucky at a career fair, hit it off with a software QA person, and got my first SWE role.
This job wasn't exactly pure coding, but more like a data scientist/engineer role. But I became the coding expert on my team, and built many critical things for the company. I got the best perf reviews, threw myself into the job and did pretty well. It wasn't the most satisfying work (I just wanted to code), but I got my itch scratched enough. Unfortunately the company tanked right as I was having a kid, and I had to leave.
Next up was, in retrospect, probably the highlight of my career. Almost a pure coding job in HFT. I gelled very well with my manager and my team, and I threw myself into it. Again I was top ranked in perf reviews, and I got my first big pay check after 6 years of relatively low salaries. Then it kind of fell apart. Some controversial stuff came out, all the SWEs realized they were getting screwed, and morale sunk. It hit me very hard personally - I felt I had given my soul and life to this company, and they had screwed me over. I left and went abroad.
At this point, my career started to stagnate and I became more and more disillusioned with the software field. I could not find the same environment I had at the HFT company. Everywhere I went had people who barely had any work ethic, or were barely able to perform their job. I found it very hard to enjoy working in these environments. I started consulting to at least earn more money and try and find better roles, but nothing ever improved.
After several years of this, I was getting miserable and depressed, and my marriage was falling apart. Combined with my experience at work, I developed deep burn out. I found myself unable to work more than an hour or two a day. It was incredibly depressing. But worse, at the places I worked at, no one seemed to care. So I guess at this point I had just become like everyone else. Oh man. That was eye opening and depressing at the same time.
I decided to try and rekindle my love for engineering again. I started working on my M.S., with a plan to join FAANG when I was done. Everyone says how these are the best places to work, a true engineer's paradise. Doing the M.S. was great - I was back to programming and the basics, which I love, and I enjoyed it a lot.
I'm now an IC at a FAANG (one of F/G, you guess). And you know what? It sucks. I could go into great depth why it sucks. But suffice to say, my expectations were sorely disappointed. This was supposed to be a pinnacle of my career. Instead, it is one of the most dysfunctional places I have worked at. The only positive is the pay is extraordinary. But I don't see how I can work here for more than a year or two. It is stressful for all the wrong reasons.
At this point in my career, I'm thinking what else is there for me? I'm exhausted - tired of chasing the next dream for it to be a disappointment. I just want a job where I can flex my engineering skills without BS, work with good, competent people who care as much as I do, and be able to relax when I get home, knowing I've done what was expected of me. Does this even exist anymore?
Assume the responsibility for the things that happen in your life. It is kind of annoying to read your text, it is always some external thing that "happened" to you, and it is always other people who are not up to your standards. At some moment you even declare with despair: "(...)at this point I had just become like everyone else". And guess what? This is true and false at the same time, in a fundamental level most people are not remarkable, and you probably aren't too. But at the same time, nobody is the same, you have worth just by being, and other people have too.
I don't care about your engineering skills, while they are good enough to warrant you a job at a FAANG company, by 40, it is clear that you are not some John Carmack, a Dave Cutler, or a Linus Torvalds. So stop this bullshit about wanting to work with people who "care as much as I do", as if you are some hero descended from Olympus forced to work with those lowly mortals.
The impression I get is that you must be someone incredibly annoying to work with, and that your performance is not even nearly close to what you think it is, and that you really need to come down to earth.
Stop looking outside, work on yourself instead. You'll never be satisfied just by changing jobs. Do therapy if you wish, become acquainted with stoicism, be a volunteer in some poor country, whatever, but do something to regain control of your life, to get some perspective, and to adjust your expectations to reality.
Not to be snarky, but it depends on how good you are and where you are (and have a track record of being). I don't know you but when most people complain about "BS" they're complaining about the fact that they have to justify their priorities, projects, and timelines or interact with other departments.
This is exactly what high paid SWE work is these days. You can have less collaboration by moving to infra, but it'll still be the norm.
Usually the only way you're allowed to go live in your coding hole is by being way better than the median engineer and having an eye for changes that produce massive amounts of value. Some examples:
1. Guy who works at a node shop who mostly ships optimizations and improvements to V8. Generates >2 mil ARR in savings every year.
2. Engineer who goes around the codebase quietly removing scaling bottlenecks for different teams.
3. Engineer who sits around solves all the hard distributed systems bugs that come in. Something wrong with the paxos implementation you rely on? he can patch it.
If you can't be this person for a company it's much harder to step away from how the company actually gets run.
> work with good, competent people who care as much as I do
There are some mid-size startups that fit this description, but at larger companies your only hope is to find this at the department level. Remember that 27,000 SWEs work at Google. It'd be weird if every single department was mostly full of good, competent people who care.
If you want this in your work you generally need to be targeting engineering organizations at the size of 50-200 people.
Software development has squandered the brightest minds on pointless work for decades. Your feelings are not wrong IMO.
Even back in the 40s this threat to Real Work posed by the computer's infinite ability to steal time from bright minds was basically already identified:
> It's a very serious disease and it interferes completely with the work. The
> trouble with computers is you play with them. They are so wonderful. You have
> these switches--if it's an even number you do this, if it's an odd number you
> do that--and pretty soon you can do more and more elaborate things if you are
> clever enough, on one machine.... If you've ever worked with computers you
> understand the disease-the delight in being able to see how much you can do.
>
> - Richard P. Feynman
> Everyone says ... a true engineer's paradise.
I've never had this impression of FAANG. I always figured there were a tiny number of people working on amazing projects, surrounded by a much larger number of people keeping the lights on, or working on very periphery projects that either no one cares about or which will never ship because of politics or business whims. Did you really think it would be ... paradise? Thinking that about ANYTHING is a recipe for dire soul-crushing disappointment.
As I see it your most rational options are the following. A) Learn the corporate politics necessary to get the work you want in the extremely privileged position you’re in. B) Phone it in, do the bare minimum, don’t stress at all, and collect until when or if you get pipped and let go. C) Combine the two. The highest review I ever got working for FAANG was for the year where I did the least work. Don’t misinterpret that as total slacking off btw, I still did good work, but I dodged every oncall shift I could and otherwise kept my work week in the under 40 hour range.
1) switched to information security. I found reverse engineering, doing CTFs, and hacking things in general brought back the sense of joy I’d lost.
So I took a job reverse engineering/exploiting embedded devices with half the pay and loved it, which ended up being one of the best places I’ve worked (and the pay quickly increased as I loved what I did)
2) Eventually left that role (sadly) and built my own business — this is the only time I’ve truly had my building itch scratched, as the only limit was my ability.
Granted, this requires some soft skills like sales and business acumen to be profitable/sustainable (i.e. knowing “what” to build is harder than building generally) — but incredibly satisfying.
If you find a mature leader in your org, to back your initiatives, you will have a lot more leanway into what type of projects you pick and what type of work you do. It actually makes a huge difference. Also, don't get into the psc games, just do a good job, screw the ratings.
That's what I am doing, and it made me happier.
Ps. The alternative is to start a small project, that makes you happy. Something, very small and duable within a couple of months. (avoid over-ambitious projects). A utility, or a simple app. If it shows promise, develop it fruther.
> And you know what? It sucks. I could go into great depth why it sucks. But suffice to say, my expectations were sorely disappointed.
Working for FANG sucks. Go work somewhere else. Take a paycut settling for a different company.
Stop pining for being 20something again; stop believing company PR.
You won a golden ticket; don't burn it.
I humbly propose that you start planning your exit from your software development career. Not forever, but at least long enough to rack up one or two alternative careers.
OR! I propose that the explosion of your marriage (and everything wrapped up in that) is the real gravitational black hole in your life (in a good way and bad way) around which everything else revolves.
My marriage recently blew up catastrophically, and it devastated me. I'm still not even sure what 'back to baseline' would look like, but I feel (disappointingly) fundamentally altered as a person. I generally believe we're all malleable enough, but I've got a lot of work to do, to recover a version of myself where I generally enjoy my own company.
Save money, reduce expenses dramatically, once you're at a 15-month runway pull the plug and leave.
Which none of us can answer for you.
Elzbardico's comment is harsh, your response to it is totally fair, but I did want to highlight something in your response to them: "it seems the kind of dream team I want to be on is very rare."
I do think folks in this thread have a point that you are externalizing the source of fulfillment throughout your original post. Even now you have this idea that there is some perfect team of colleagues that will make you fulfilled. Another harsh way of saying it is: if you were good enough to be on that dream team, they would have pursued you at some point in your lengthy career.
You probably have enough money to have some freedom now. So... what next? Options:
1. Go volunteer, long term, committed, somewhere that truly needs help 2. Go full on hedonism for three months: travel, drugs, alcohol, sex 3. Go on short- to mid-length silent meditation retreats 4. Rent a car and drive around the country for a month with no plan
Eject yourself from the SE identity and see what's left. In that space, see either what brings you joy or piques your interest.
A year from now you might end up back as an SE, but it'll be with more intention .
Another way of looking at this is, skip town, hibernate while the job market sucks, come back in 2024 and maybe that dream job will exist anyway.
It sounds like you have a good income and might be able to afford one. Often people think they just help you with mental illness but they can help you figure out your goals.
Find a community, and serve: My community is golfers - people that want to play golf. I am serving it by building a side project that I know will solve problems... because I have those problems.
Another thing I have found helpful is meditation, and spirituality in general. Try it and see if that path is useful for you (tons of stuff on YouTube... start looking, and the right stuff will come your way)
All the best.
Use that to identify what you want to be next.
And in the mean time, they're paying you because it's work. It's an exchange - so just treat it as such; don't expect to always find meaning in a job.
On the other hand if you're willing to work at an unimpressive, low status startup you can often do a lot of interesting things. Startups also tend to attract nerds who don't really care for status or impressing other people. They're more focused on the engineering problem at hand.
This isn't always the case of course, but playing the odds it's more likely.
Startup work is riskier and won't impress people the same way but you get to do stuff. Not pretend work that sounds good or is meant to promote people, work that you think up over beers at 7pm and then go code the next day at 8am (or 10pm that night depending on the startup).
They have challenges of their own, but for a certain kind of personality they're much more palatable than large companies.
Keep in mind if the startup is successful it will eventually grow into something that attracts status seekers and shifts to derisking rather than weekly hail marys. But the fun years can last a good while before that happens.
If you do manage to get lucky and find a place like you describe, realize that too will be temporary, so the problem will be back.
Humility: look in the under-looked places for finding joy. And realize there’s always more to learn and to teach. Curiosity: try new things.
After a certain time I realised that I would never be hired to work with what I really love doing and focused on working to pay the bills and use my spare time to pursue my real interests on my own. Some of the apps I wrote got to see the light of day and some not. Did it bring me money or recognition, no, but I certainly felt realised knowing what I can achieve or even for the fun part of it. I currently work with more managerial tasks related to cybersecurity, with no coding skills required, but it never stopped me from coding at all. I expect no recognition for the work I do there (but someone will sure want our heads at the next breach). There is too much politics at the office out of our control and to me that's where most BS comes from.
I've had my M.S. some years ago and it may be great to improve the code you write, but I would recommend it more for the networking, meeting and discussing with new people and raising new ideas. Currently I'm in the middle of a new undergrad course in architecture (building's architecture, not software architecture), a newly found passion discovered almost by accident. And I'm even considering another M.S. in this area. What can I say, I love the academic environment just didn't get to be a professor (yet).
So this is what I'd give as advice: No, matter how much they try to sell it to you you're not family. You give them your knowledge and time and they pay your bills (extra hours are not free), that's the exchange you're in for. Your work is not worth your real family so be there for them, spend quality time with them, do family stuff together. Find out what you like doing. Pursue your passions away from the office and get in touch with real people whenever you can, be it in an academic environment or a local group (you can even try and start one if there is none in your area but even community work does it).
But to your last point, yes, just not in the private sector. Join the dark side and work government contracts, the pay is decent and you get exactly what you're asking for. You get to be technical, unless you want to be management...boring, you work your obligatory 40 hours and when you're done for the day that's it, go home. Everything's classified and no one bothers you when you're clocked out. People are competent and everyone wants to get the product out and the mission done without office politics. TBH superchill environment for senior engineers.
No they don't. Many people believe these are the best places to work, and the vast majority of those people have never worked there. They also tend to not have a whole lot of experience working as a SWE. I know many people currently working at or having worked for a FAANG. It was not the experience most had hoped.
As for me, I enjoy solving what I call real-world problems. These are problems being experienced by many people. By solving them you're actually helping make the world a better place. That helps me get through the BS that's part of every job.
- your job can'not satisfy you always. There are good jobs and bad jobs. But good job can become a bad one in overnight. Nothig is permanent. So don't get attached to it, instead love your craft.
- the software domain is the easiest one to experiment. Having a computer and internet is enough to build whatever you want. If you wanna have kick by writing good code, just get it from your own project.
I think you will still be disappointed. Perhaps try working for yourself instead?
Why not go into startups? Your skills will be most valued and you’ll have a say over what you build.
You’re energy for challenge is a classic problem for intelligent people. After it all, deciding what is worth building is a greater challenge than how to build it. IMO.
It doesn’t need to be VC funded where you have to pretend you’re some baller.
Just do something fun.
It’s even easier when you have a fat bank account. Open it and breathe a sigh of relief that if things go south you’re still set for a long ass time / life.
Worth, meaning, value, etc, stems from the framework through which you make sense of the world, aka your worldview. If you're a scientific atheist, then heck yes, what a bargain! Your life is entirely worthless. Eventually you'll disappear, then your family line will, then humanity, the Earth, our galaxy, and in the end all information will be permanently erased in a big crunch or its opposite, when atoms themselves are pulled apart by gravity, science is yet to decide which. If you are a theist (Christian, Hindu, and many more), then an inextricable part of you is the deity itself, and your life is worth everything.
These are examples. Neither I nor anyone else can give you a worldview. You have to dig for it yourself. Your inkling is the calling of your meaning in life, the lack of which you express. Almost by tautology, meaning in life is the most difficult yet rewarding thing you can pursue. I can give you some leads.
Christianity and Platonism are the Western civilization, to which your engineering career and therefore you belong. If you are ignorant of those, you will be fundamentally lost. Study those. Because you devoted the first half of your life to rational pursuits, trace the birth of mathematics and physics from Platonism. I promise, this history is replete with meaning. Study the worldviews of Galileo, Newton and Leibniz. Study Einstein and Heisenberg. But study their critics also, very importantly the deeply flawed yet unavoidable philosophical response called Skepticism or Anti-rationalism. Finally study a new twist on rationalism that can be called Creative or Open philosophy, first expressed by mathematician philosophers Henri Bergson and Alfred N. Whitehead.
The scientific method does not give life meaning. Philosophy leads to it, and religion (broadly re-ligio = re-connection, as in with the deity) is it. Yet there is a source of deep meaning hidden within science and technology, which is the main reason it's so powerful. You can find it if you look.
Large organizations often hate philosophy and fundamental questions because they already have their "correct" foundations. They want human cogs in their system. Trash all ideologies, seek out people whose life is deeply meaningful in books and life, and think deeply about your own foundations with your own open mind.
If this doesn't happen soon enough, use your extraordinary salaries and go buy a farm with chickens pigs etc. and start woodworking, you'll feel better i think.
Helping others is a great feeling and a nice chance of pace.
You need to figure out what’s inside of you that’s making you miserable — it’s not all of these jobs and all of these people, it’s you.
Therapy might help. Not being snarky.
Could you elaborate on this?
You basically have 3 categories of companies:
- Start ups - everything is loose and fast, the goal is to ship something before the company falls apart. Lots of coding, but high stress
- Mid size - there is old legacy loose and fast code but things are in some phase of stabilisation. There are lots of problems to solve and coding to do but usually less stressful and starting to see sensible engineering practices and decent culture
- FAANG - whole mix of stuff because these places are enormous. I've worked for Microsoft and enjoyed that. I worked for Amazon and hated that. The projects differ wildly and it's very competitive. The bonus is you get a paid a lot and there are smart people to learn from, but the con is the less nicer companies are good at forcing you to compete with your teammates and kicking people to the curb
In terms of "coding is the thing I like to do", this is a tricky one. As you get older the expectation is that you take on more responsibility. Your skills change from coding to helping other people code and coordinate work. For a company it is hard to justify paying someone with lots of experience to just do lots of coding - they can just find young enthusiastic people to do this. Your selling point is dispensing that experience and wisdom to level up your team.I currently do way less coding at work than I would like which makes me sad, because of my seniority. However, I do enjoy helping other people do better and making things more efficient, which makes me happy. I compensate for lack of coding by having days booked out where I just focus on hands on stuff. I also do some private projects where I can build and do whatever I want.
If you just want to do what pleases you AND make money, your only real option is to start your own company. However the reality here is that you will likely invest a lot of time in non-engineering stuff (and learn a load more skills) just to make your company successful. If you just want happiness then find a private project to work on or contribute to. I have personally found happiness just going back to a midsize company that appreciated the injection of experience I gave and respected that I enjoy coding. They care more than most companies I've worked at. But remember that the relationship between you and your company is a mutually beneficial contract, everything runs on capitalism. You are free to screw over your company for a more lucrative contract just as they are to replace you (within reason), it is a free market.
You are essentially trying to fight against the natural transition of a less experienced junior dev to a more experienced senior one as you age and that's a difficult one to win. If you're above average then it's just common sense that most people you come across won't be as good as you :).
In summary:
- Happiness but not money - work for a company that appreciates you and does nice things. Charity organisations are likely to fit in here but there are companies that don't have sociapaths as managers believe it or not :). The nice ones are more likely to be non-US ones
- Medium happiness and medium money - midsize company that still tries to keep its employees happy. Good ones will have flexible work polices like remote work, etc.
- Unpredictable happiness and high money - FAANG (experience is very dependent on project and team, Microsoft is a good one depending on your global location)
- Unpredictable happiness and unpredictable money - run your own company :)