Ask HN: Why did you leave the tech industry? What's your story? What do you do now? Any regrets? And how come you still follow HN? |
Ask HN: Why did you leave the tech industry? What's your story? What do you do now? Any regrets? And how come you still follow HN? |
I have no standout passion or interest, like many in this thread I am tired of the industry in general and the job itself.
I am considering doing a part-time horticulture degree to dome something different. How did you find your passion?
Companies involved with both creating, producing or contributing to actual "technology" like CPU design, OSes, SDKs, compilers and toolchains which most of the FAAMNG and semiconductor companies do fit the definition of a "tech company".
1. The interview process
This is my biggest gripe. Imo it's a hazing ritual that pretty much doesn't tell you anything about the candidate -- I think companies have it because they had to go through it, so why shouldn't you have to?
I really wish I knew that this was a thing before I got into this profession because I most likely wouldn't have gone into the field if this were the case. If I knew that I'd be asked arbitrary questions on literally everything I learned over the course of my CS degree + 3-4 years of professional experience on virtually every programming topic, language and tool imaginable, I'm not sure I would've entered the industry.
It used to be all whiteboard questions of leetcode, for which I would consume many hours a week just practicing even though it has nothing to do with coding unless you're writing C/C++ code, and even then, you'd probably use already existing libraries for algorithms. Some say it's a proxy for an IQ test, but I'd argue that's BS: it can be easily gamed, and I know a lot of smart people that butcher those because they're introverted and/or don't do well with on-the-spot performance tests with someone watching over their shoulder.
This now got replaced with often arbitrary coding projects that have nothing to do with the job and often take up considerable amounts of time to write. 3 hours? sure if you want to deliver the bare minimum, but then someone else who wants the job more will do way more, so you do (a lot) more if you want the job. A lot of them are now at the screening stage, before you ever even talk to anyone. I've often been ghosted on coding projects: I'd say I've dumped maybe 100+ hours and been ghosted on those projects. It really wears me out. Some places started to add time limits to the projects, which helps, but I'd rather have a 1 hour whiteboard interview on a project than several hours with a considerable amount of time spent setting up the tech stack instead of working on the problem because you're building it from scratch. You could game this somewhat by setting up a ton of template projects over a wide variety of tech stacks to save time, but it's all just a time sink (tooling fatigue).
2. It's always > 40 hours/week
Related to #1. The pay is high, but if you consider the fact that you need to:
- Have a decent open source portfolio to stand out from the crowd
- Constantly learn new tech and show that you know it (learning on the job is apparently out of the question), usually as part of the open source portfolio or a blog. The new tools usually aren't interesting -- they're usually a rehashed version of the older tooling with maybe one very small kind of useful improvement on the old tooling, and possibly 1+ drawbacks, but requires you to have to relearn a whole new api/way of doing things.
- The interview process is incredibly time consuming now that everyone is doing screening tests with several hour-several day coding projects, often which never gets followed up or read
- Meet arbitrary deadlines and create a bunch of technical debt because 'move fast and break things', and then be expected to come in after hours to put out fires that you have no control of preventing or didn't even start, because feature creep trumps sound technical decisions
Then, considering all of this, the pay is actually quite low when you realize you need to put in 60-70 hours/week to stay ahead. Unless you work for a spyware company (unless you get into netflix), see:
3. Detrimental to society: automate or spy
Most of the apps out there either don't actually improve society in any way or are actually actively detrimental to society. You're often either writing spyware (probably backed by some govt), or you're writing software to automate away some white-collar job that society desperately needs as the middle class, the backbone of a healthy society and economy, is continually shrinking and politicians are doing jack about it (to be fair I'm not even really sure what they can do about it...). Modern day spies are basically all in the tech sector, so there's plenty of spy shit. I'm from an eastern european country working for western companies, and I'm sure trust plays into whether or not I'm even considered for positions. Same deal as #1: I really, really wish I knew this as well before going into this field because I probably would've stayed well away
4. You're not a software engineer
There's very little actual engineering involved in the day-to-day work. It's really like 70-90% debugging (repairman) and 10-30% development (white-collar construction). Maybe like 1% is actually engineering in most jobs. I thought I'd get to be an engineer, and it's the aspect I liked the most out of my classes. I like developing stuff but not if it's detrimental to society (#3) and only with a reasonable amount of tech debt. Sound engineering practices would reduce repairman down to like 10%, but tech goes in hype bubbles and is often crap, and the best pieces of engineering are utterly unpopular for some bizarre reason
5. It's all getting automated away
There was a time when having strong linux and networking chops gave you a lot of street cred. Now those people are obsolete as more and more people are switching to cloud companies to save on costs (#3). Open source has killed the engineering aspect as jobs are now all about slapping libraries together and debugging (construction repairman). It used to be a white collar job but it's increasingly turning into a blue collar one (bootcamps?), so I think it's not surprising that the industry is treating it's employees increasingly like replaceable code monkeys (we probably are, and soon to be obsolete) and making us jump through all sorts of arbitrary hoops to get a job.
I've been thinking of getting into teaching + research and becoming a professor, but I'm not sure because:
1. I might just run into other issues in academia that I didn't know about before entering the industry, just like with the tech industry
2. There's also the aspect of bad luck/making your luck -- there are companies where none of this stuff applies, and so I could try to find/target those kinds of companies. My earlier experiences at companies were different. And the culture could probably change on a lot of this stuff, like how interviews are done, though some of it is probably inevitable and unavoidable (like automation + spy shit)
Despite that, I studied Economics in university. It fit my personality as being a lover of data and 'business' but a lot more of the human side of it. I'd always loved business, and while I started out in business school, I found quickly I didn't like 'business people'. So I switched into Econ. Halfway through my economics degree, I took a course on the history of labor markets. This course made me realize I needed to learn to code to stay relevant for the rest of my life. I didn't have aspirations of doing a trade and the course and further research made me realize how vulnerable my skill set was to automation.
So I finished school and then learned to code. I did a bootcamp, and became a very junior full-stack dev. I absolutely loved programming at this point. But I still missed 'business', so I decided to mix the two and start my own software development company. I quickly figured out there is little money in building businesses websites, but plenty in building custom applications or add-ons for e-commerce businesses and focused my efforts there. I made good money, got to live and work in Europe (I'm Canadian) and overall enojyed myself for a few years.
All the while I was perfectly content in the back-end world of web development, working mostly in Ruby, Elixir and PHP. But the front-end started sneaking in. JS has a way of doing that. Soon I found myself spending more time fixing broken node packages than I was coding. Someone above me said it felt like being a carpenter, while spending 80% of the time fixing your tools. That couldn't have described how I felt any better.
Turns out, while I love programming, I hate JS and the world that node has given us. If you want to work on the web, sadly, you're often faced with dealing with it at some point or another.
At this time, I was also discovering that while I always knew I loved interacting with people, that managing remote teams and having occasional video conference calls was not enough to satisfy my extroverted personality. I was becoming lonely in my work.
So I quit. I spooled down my business, going into maintenance mode only. I've since switched into the finance industry, doing underwriting for a small private bank. I love it. I still write code. I spend a decent portion of my time optimizing our company (we're small and the board is happy with any of my tech proposals so long as I explain the value added) with technology wherever possible.
Programming is now only a small portion of my day, but I treasure it now. I still program in the evenings (Elixir Nerves is super cool!) for fun, and of course at work. But it's not my primary role. I will still get paid, even if Yarn breaks something that day.
I've since discovered that .asdf handles 90% of my dependency problems, and that the finance industry doesn't care if your app uses webpack or any javascript for that matter. Removing the need to follow or even keep up with the latest trends in web development from my life has been a breath of fresh air. I couldn't be happier.
Despite being an incredibly small shop, we "leaned in" to the Agile thing in a way that was completely foolish. Scale was irrelevant, we had some services that were hit an average of seven times a day, sometimes spiking to ten. You will have to trust me when I say that they would never go viral. Ever. We did not have teams of programmers working on one product, we had a few programmers constantly bouncing from one little project to another as management demanded. This "pivoting," (and I guess you have to be Agile to pivot so often) resembled nothing more than Brownian motion from the ten thousand foot view. Management would shift in and out, old work was looked at with "why did we build that?" while never asking if the hotness du jour was similarly unnecessary. Meanwhile, backbone processes were neglected and began to crumble.
Ah, but the churn, that was huge. We kept switching from one platform for engineering issues we didn't have before to another platform. We had this, now we are going to Trello. Then it turns out that our parent organization was going to switch to something else entirely in six months, but let's take a little detour from Trello to this other platform just for fun before we go to what the parent organization will mandate. This was most likely to be just another bullet point on the old resume for the lead, to say that he had done it, on his way out the door to somewhere else; if I had to guess, he had figured out what ecosystem his target job was using and picked some items out of that for us to purely temporarily migrate to.
People would buy wholesale into services that simply were not going to last. I would smell the stench of impending death upon them but no. And then later, into the Google Graveyard or the like it would go. So much jabbering about frontend frameworks when almost no Javascript was required, only to have to then keep those frameworks current.
The churn was there in other ways. I had never used a particular backend framework before, in fact had little experience with them. I was forthright about this, so I bought some relevant books, set up a test machine to dabble with, and was ready to go with a tiny little "get my feet wet" project that would still have some minor value. The other "contributor" had agreed to all of this, and when I was set up and ready to learn, somehow everything pivoted to Django. No "buy-in," as the lingo I had to learn goes, from me. Time, effort, money: wasted. Update update, migrate migrate.
I remind people often that nomads never left great architecture behind. If you are constantly migrating, you are not building anything to last.
I switched to something tech-adjacent. I still program. I still use technology to solve problems. Now, when I program to solve a problem, it stays solved. I do not have endless meetings fractally interspersed into my schedule like some kind of stuttering hardware interrupt all to talk about solving a problem.
I follow Hacker News because I am interested in some trends, pet projects, and the like. On a purely cruel level, watching people simply tear into one another again and again over what looks like religious differences (Agile in particular is a fantastic example, makes top-posting vs. bottom-posting thing look tame) reminds me of why I left.
I miss working at a small shop where we were fully trusted to deliver. I find I am able to do very well under Agile, but it certainly makes me feel dishonest that such a measurable portion of my day is spent measuring my performance. It feels like a fractal waste of time.
But I completely understand why it exists.
OK nice it's not just me!
For example, are you in tech if your employer has been around for 20 years and your employee number is five digits? If the business model has nothing to do with technology, or are technology companies like microprocessor manufacturers inherently disqualified because their business model is technological as opposed to financialization? Can you only be in "tech" if you live in SV? Or is it just voting for Democrats that makes one a tech worker as opposed to a typical engineer?
You would have loved 2400 baud after using a 300 baud modem.
> Turns out, while I love programming, I hate JS and the world that node has given us.
Thank you for this. I have long suspected that this crud is bad enough to actually drive people away, right out of programming.
Staying sharp and engaged is tricky. It's easy for a person to become apathetic upon realizing how much churn and mis-spent energy there is in the industry, and when you're old and apathetic they assume that means it's time for the glue factory.
I think I'm starting to feel this. I'm neither talented nor educated enough to work on things I truly find interesting and my ability to learn feels like its completely flatlined these days. Unfortunately, I feel trapped in what I do rn, because it's really one of the only decently paying careers I can get.
Something I kind of like about the hardware side, is that you're forced to keep at least one foot on the ground. Real physics problems are a good source of real business problems because you can't wish them away, and mother nature will tell you if your stuff works or not.
Granted, I'm not rich. I'll never see the kinds of salaries that get thrown around for programmers at the big five.
I've read a lot of the posts here, about the headaches of programming in a modern setting, and the ethical issues spanning a large swath of the "tech" industry. At one time I thought that I'd encourage my kids to get into coding, and I'd still do so, but they are aware of what the culture is like these days, and I'm not sure the money is a big enough attraction for them to jump through the hoops. Also, I can't honestly say that it's career worthy, given the level of attrition and the specter of age discrimination.
One of them is easing her way into coding anyway, because it's fun, and I always guessed that she might have a bent for it. I'm inclined to let her do it as a hobby without pushing her to make a career of it.
I used to be a business consultant and made a career pivot because I got burned out from working 60-80 hours a week and flying 100k+ miles each year. I loved all the projects I worked on, and many of them were very large scope (50m to 300m+ USD) with tremendous impact. I got to work with people in the senior leadership positions at multi billion dollar multinational corporations, and we were understanding their problems and coming up with solutions. It was so much freaking fun.
I barely feel that at my current work, where I'm just working on a CRUD app lol. It is so boring. I don't really care anymore about code juggling, because anyone can figure it out if they have a little dose of motivation. At first it was fun to be a "problem solver", but not like this.
I'm not really that interested in becoming a specialist. I look around at work at some of my colleagues who have years of experience in their specific subset of work, and they only know and care about that thing. These are highly qualified experienced people, but I really don't want to be like that. I like to get a low-level understanding of things I am personally passionate about, and I love learning so I try to get a high to mid level understanding of everything else. I'll fuck with dev ops, database performance, product strategy, marketing, sales, mobile app dev, whatever else that I find interesting.
Being a software engineer at a larger company does not satisfy me one bit, and it really sucks when you realize you're only in it because it is easy money.
I'm working on my own ideas now, and I'm learning as much as I can during this COVID remote time to make it on my own.
When I started my nursing job at the hospital I continued to work with my old company once per week. Now that I'm super busy as a nurse and continuing my nursing education, I fear my old tech job will really end soon. I kinda like it once per week!
I love my new career. I get to work closely with people and help them through tough times. It's very rewarding and my new colleagues appreciate my tech background. I've gotten 2 raises since I started 6 months ago and now make more than my old job working only 3 days per week. The job is not easy, but when I go home, someone else is doing the job so nobody is calling me urgently to get something done.
At the same time, I moved from a small company to a large company. The benefits are good and the perks are complete. Since I started my job as a nurse I have received almost 200 hours of professional development training. Useful classes that apply towards making me better at my job. In my old tech job, I went to an annual trade show and that was about the extent of training.
Anybody else have a job like I did in tech? I had infinite projects to do and unlimited time to do them in. It was weird and not conducive to productivity. Now every day I go to work, I know I will do something important. My patients will be grateful and my employers will support me. Yeah, no regrets here!
For the most part I liked the companies I worked at (which tended to be ~50 people when I joined) and my coworkers. The problems were interesting, though largely not things I was especially passionate about (I spent a couple years making software for call centers, a couple years on enterprise videoconferencing, etc.).
I decided to go my own way for a few reasons. First was financial - I had already started investing in some real estate on the side, and it wasn't a leap to see how much of a financial advantage you can gain from owning and running an operating business vs. being a salaried employee. Second was just that I really like to be in control. Even in a 100% self-owned small business you find that you're not really in control on a lot of things (getting permits from the city for stuff is exhausting, plus you've got a landlord, bank, etc.), but from a day-to-day perspective, I am the one who makes the call on everything.
Last was that it was a good way out of SF. I'm engaged (would've been married in three days... sigh), and I just have no desire to have kids anywhere in the Bay Area. This allowed me to move to San Diego, a place that I love and that is also perfect for this business.
Edit: To answer the last couple parts of the question, no regrets (I mean I guess in theory I would've kept working a steady job and started the business post-pandemic, but I believe all my choices were sound at the time that I made them). Also I still follow HN because I'll always be interested in tech.
I've gone to a number of career counselors. Trying to find something else to do. I have a number of other passions/interests. Just not sure how to turn them into a career? How did other people determine an alternate career to get into?
Well my case is biased of course by my limites experience but that experience really bums me out.
Few reasons why I left:
- Wanted to try something different.
- Incompetent management (Biggest reason), and politics at the workplaces.
- I am not good at expressing my self. Not good at kissing asses. Political correctness and all the stuff/
- Getting old (40)
- Single earner in the bay area with family. I couldn't afford a house in the area that I was living in. I didn't want to drive far for a job. I had the money for a downpayment, but paying $4000-6000 in a mortgage + taxes seems scary. I end up buying a rental property.
- The majority of the family is in the east coast.
So far, no regrets. I am not sure how this COVID-19 will affect the future.
I love writing frontend code (don't like react or other frameworks). Whenever I am bored/feeling down, I write code. I write my own utilities that I needed to get stuff done for my business. I was using JS for theming in one of my 5 years old PWA. Yesterday, I updated to CSS variables.
After all, technology is the future. Not sure any better place then hacker news.
I invested roughly $600k. Typically, if you buy in rural or small cities, you get a 25-30% YOY return.
It's all I ever really wanted to do, so yeah, regrets. Feels like I got to the party ten or twenty years too late.
I left to be a pilot. Spending time traveling, watching the aircrews and staring at airplanes taxi up got to me. I put my time in flying small planes and just finished training for my first airline job on Valentine’s Day this year. The work is amazing, and I’m still very solidly in the “I can’t believe they’re paying me for this” phase of my job as I eat breakfast and watch the sunrise from up high.
I’m not sure if I’ll still have this job by next week, much less October. Oh well.
Programming off and on for over 40 years. Left several times. Because nothing is as fucked up as I.T.
Did sales, consulting, several small businesses, and writing. Kept getting sucked back in. Because no one else digs as deep into things as us programmers. Became frustrated because we were always "skimming on the surface" of everything instead of deep diving into the cause instead of the effect. Besides, nothing turns me on more than watching something I built from nothing working for the first time. I haven't found that feeling anywhere else.
What do you do now?
Back into enterprise programming. Should be having a ball, but I'm more miserable than ever because of the total fuckedupness of management. Planning my next one-person business now.
Any regrets?
No. I had choices but picked programming. I often wonder how my life would have been different if I had become a mathematician, teacher, writer, artist, musician, or something else. But every time I talk to friends who went in those directions, I realized they had their own shit to deal with and I followed exactly the right path meant for me.
And how come you still follow HN?
Because my "Delete Programming from my DNA" button returns a stack overflow.
In all different companies that I have worked with, the finance department seemed to be consistently the most stressful, fly-by-the-seat-of-their-pants part of the company. I am curious for people to tell the horror stories that they had to go thru.
Should I do an Ask HN on the finance dept?
(edited formatting)
The reason is simply that i realized that i was not as good at problem solving as i thought, i also dont find joy in sitting for hours solving problems.
I used to be passionate when it came to programming, but i realized that the reasons i thought it was fun was mostly because i thought i was better at it than i actually where. I was the only kid in the entire school to program and all that.
But after starting a startup and working with other developers i realized that am pretty crappy at it. I also don't get enough joy to try to become better and on one level i can kinda see where my limit will be.
I always been extremely bad at maths and logic solving, i always had problems with sitting down and being focused on doing something like writing, playing video games or coding. I never will be able to solve problems fast enough to be a productive programmer.
It just is not for me, and its just a burden now when i have to do some coding.
Also other people in tech are just annoying, people who only brag about how smart they are. CEOs who are bullies and try to mimic steve jobs. Managers and other people seen tech as a burden for the company etc etc.
That is if you still can deal with the people who work in tech. I rather work with normal people who knows what they do is just an office job, other then people who believe they will cure cancer with their CS degree and CRUDy mobile app they are developing on their free time.
I really want that normal people would be building functions on their computers which today are startups.
If everyone is super, no one is.
Not only was it an awful workplace, but I was capable enough to work alone, and therefore did, so I had no colleagues to build strong comradery with.
We tried to hire myself a senior developer to mentor me and make me happy, but to put it simply, if you were capable of doing that you were simply overqualified for the company in the first place.
Imagine that, hiring your own boss...
Edit: I'm talking about 1 job because thats as many as I got through in this industry. All my applications are custom made, so after a couple dozen with no responses, I've kind of given up and have stopped looking.
I did a Ruby bootcamp 4 years ago at the age of 18, because I always liked computers and hacking around a bit. 4 years later I don't regret doing it, I learned a lot, but I have to motivate myself too much to keep on going with programming.
I find more joy in doing activities where I get to use my hands and body, being active all day. Last year I started working at a bakery which was so much fun and these quarantine days I have been starting repair an old house and painting artworks.
I guess I'll have to find out how to turn that into a living, but it gives me more joy then chasing the money that is in the tech industry. We'll see how it goes!
I have a few questions, if you don't mind.
How did you get started with this? Is investing in real estate something you can do while being a salaried employee or do you need to do it full time? Also, what kind of investments were/are you making?
I own two small apartment buildings in the Bay Area (seven apartments total). I honestly just saw interest rates were low and thought real estate sounded like a good way to take advantage of that. I didn't know much, so I just found an agent through my local Realtor association and started looking at buildings. From there it's not that complicated - you just build a pretty straightforward model of your income and expenses, estimate conservatively, and pay a price that'll make it profitable. Beyond that just use common sense and don't do things like buy in dangerous areas.
I employ a full time property manager, so I have been a full time employee for most of the time I've owned it.
I'm now ~7 years removed from active development and am finding it increasingly more difficult to find time to make a side project to show off while trying to raise a family. I miss development and keeping up with all the new stuff. It'd be hard for me to take the pay cut to return as a junior dev- so now I feel stuck.
It's the third time in my career that I see a company making the developer head count jump from 10 to 100 only to ask all the newbies to rewrite the software from scratch in the most disorganized manner possible.
I'm becoming allergic of rewrites, but I'm pretty sure that I'll land into another one if I switch companies again.
9 years professional experience, four year Computer Science degree, multiple reviews of my resume and cover letter by trusted friends in the industry. Stable work experience where I am not hopping around a bunch. Important position at a successful start-up. Resounding success at every job I've had.
I've been putting my resume out. Radio silence. I have heard NOTHING back from anyone. People don't seem to like my start-up experience.
____
Why I (might) leave if I get back in?
* Infantilization and Micromanagement: Agile is a plague. I hate being micro-managed and forced into meetings all the time. I hate the constant pressure to sacrifice code quality for expedience of release ( when bugs will be much more expensive to detect and fix ). I just want to do my job but anymore that entails being harassed by middle-managers who can't take "no" for an answer when their boss's boss sets an unrealistic deadline.
* The people. I've been saying over and over that one of the best things you can learn in programming is how to lose an argument. I am done with the divas and the control freaks. I am done with the 0 training, three-years of experience clowns that show up and work extra hours ( thus creating an expectation for the rest of the team to work extra hours ), who suddenly know everything and think you are now their bitch ( management loves these people for some reason. Probably because they are cheaper. )
These two things were what I experienced at my last role. Though, I suspect these people exist in other careers as well.
Why do I want back in?
* I have had good jobs before. Jobs where the team is in sync and everyone just wants to do a good job. I think if I can find a team, I can create that environment around myself.
* I have learned a lot of lessons from my previous gigs. I think a layer of indifference is important for a developer job and I am ready to embody that role with kindness and mindfulness. I can deal with the people if I keep them on the other side of the bell jar.
* I love writing code and I am good at it. I even enjoy drudgery like writing a bunch of unit tests or writing documentation.
At the same time I was running an environmentally focused project on the side that I really enjoyed and was starting to take off commercially.
One day I just decided to jump into it full-time.
Now I must stress, I am incredibly fortunate 30 year old, no massive student debts, large mortgages, kids, etc. In some ways, this was one of the biggest contributing factors in the decision. Sure, doing good is nice, but we all need to survive.
The reason I'm posting though, is that the project went full circle, and is now what I brand as a tech company (non-profit) with an environmental focus. I put this down to my background in tech.
Moral of my story (I think), is that most humans all long to do something new and different, but typically head back towards what we are good at. I'm just hoping I don't get bored this time around...
I realized I didn't really want to be a cog in the wheel without human interaction, and I wanted the perspective one gets in medicine to be able to come up with solutions that help people. That evolved while in school to building software/hardware that increased access to medical care, and it's been a cool ride trying to figure out how to actually come up with studies that prove my ideas work (or don't). It's also extremely gratifying to treat patients and make them better, even if it's at the micro scale.
But that's still a drop in the ocean compared to all of the other tech out there!
Literally every system you can think of, both good and bad, had to have someone build it. Systems for managing schools? Someone built those. Systems for managing your local restaurant? Someone built those. Systems for internally managing some niche organization no one's ever heard of? Yep, someone built those too.
Those kinds of things are numerous, and super important.
I always assume that 95% of programmers have some mental disability to do what they do. Nobody with a sane mind can sit in front of a black screen with white text for 8 hours each day solving weird shit.
I started as a CS student and totally sucked at programming, wanted to quit. I finished my Bachelor and started at a StartUp. I totally loved it. I could build things they way I wanted, had a great CTO who helped me along the way.
But of course, you are getting ambitious, so you move on. Next company, higher pay, more complex problems. At some point I switched to freelancing and did 3-6 months gigs for several companies.
Now I taught myself Systems Programming, got a job at a really high paying and interesting company - so it seems.
What I figured out: No matter how high the pay was, the problems were always bigger. I quit a project early despite them paying me 20k a month and I was basically sitting my time up, nobody cared. I couldn't do it.
Now I realize, the ones who are really good at programming have some mental disability which lets them focus on this one thing for hours day in and day out. There is no way you can compete with someone further on the spectrum then you.
Then, what's the point?
You are either wanting to improve, but the better you get, the more challenging the environment. And the problems don't stop. The higher the pay, the more shit you got to eat. That's the whole point.
So you either give up, accept your situation and have a life outside of work, or you switch careers.
My problem is that I just can't seem to find the right company with the right people. Both smart, interesting but also ambitious. You either have super smart introverts who don't want to talk and socilaize, or you have fun people who can't code shit.
I had my first interview at a semi-technical role and boy this was the first time a job interview was fun. People talked, cared about how you present yourself and just didn't want to get as much money out of your mind as possible.
Programming is great, but a too big of a power for smart people not to make use of.
The tech industry nowadays is no longer about solving real-world problems and making the world a better place, instead it's all about screwing the end user in every single way possible, whether it's ads, stalking and privacy violations, spam ("marketing" as they call it) or just plain fraud where the company is happy to take the money but can't make it right if things don't go to plan and the customer is left holding the bag.
Most tech products nowadays aren't there to solve a real problem and aren't funded by customers buying them because they are good; instead they're funded by some VC scum and they're there to capture the market (or rent-seek) and prevent a legitimate business from starting (nobody can compete with free or below cost).
Technology-wise, we no longer use engineering as a means to an end to solve a business problem. Instead, engineering became its own thing and most companies encourage and reward those who opt for over-engineered solutions, which means you spend more time fighting with dozens of layers of abstractions and chasing the latest JS framework instead of actually delivering functionality. This is mostly a symptom of the previous point where showing "growth" and bragging about your (over) engineering is more important than actual profit.
Unfortunately there's just nothing out there that pays as well so I have no choice but to tough it out.
I really don't want to return to tech, because it simply is not my passion. I'm going to try to start an aerospace startup instead, which is my passion. Perfect timing right?
But not any of the systems I've worked on over 10 years. You may not get the absolute top salaries working on more meaningful projects, but there's plenty of them. Here are some examples that I worked on. To a fault, most of these places over-focused on the business and under-focused on exceptional engineering. Nonetheless, there's a lot of money to be made solving real business problems.
- Optometry practice management software
- Insurance benefits processing and customer service systems
- Professional soccer/football training iPad apps
- phone/pbx, Audio and video communcations, tie in with the web
- mapping systems to evaluate water scarcity and agriculture water use
- government benefits systems
Again, user Nextgrid isn't wrong. If you're willing to take say, up to 90% of the highest salaries available, rather than only the top 10% of salaries, there are huge amounts of non-advertisement problems to solve. Rightfully, this comment exposes the depressing cynicism which develops when building manipulative software.
Either way it all comes down to some combination of mental laziness and no ethics. There is no ethical code, that I am aware of, for writing software.
Here are my experiences as a web developer:
* Frustration at the general technical incompetence of my industry: https://news.ycombinator.com/item?id=22821318
* Many software developers need things to be easy, unprofessionally so: https://news.ycombinator.com/item?id=22859326
* JavaScript developers can't interface to the browser: https://news.ycombinator.com/item?id=22740897
* People (only software developers on security) who self-admittedly have no education, no experience, no credibility, and no practice of the art find themselves subject matter experts and cannot understand why an actual expert would disagree with their hastily formed opinion: https://news.ycombinator.com/item?id=22868620
* Hiring software developers is still somehow an arcane mystery few people can objectively figure out.
I could go on, but sometimes your choice is working on a product that either screws the users directly (e.g. ads) or indirectly. Take your pick of where you want to draw the line.
- Optometry practice management software... targeted at maximising in-store sales with prescriptions that are difficult to use elsewhere, encouraging dark-patterns in sales tactics, etc.
- Insurance benefits processing and customer service systems... that attempts to minimise payouts, potentially by adding burden on the customer through the customer service process.
- Professional soccer/football training iPad apps... arguably sports doesn't bring as much benefit to the economy as equivalent spending elsewhere.
- phone/pbx, Audio and video communcations, tie in with the web... for premium rate phone lines that users with little choice are forced to use, such as those installed in prisons in the US.
- mapping systems to evaluate water scarcity and agriculture water use... for Monsanto.
- government benefits systems... that optimises to minimise payouts or contains unnecessary checks and hurdles.
There are plenty of companies that have paid products and still do user-hostile things including stalking, spam, dark patterns, etc.
I paid full price for a Playstation 4. I still had to opt out of "enhanced data collection" and spend 15 minutes disabling every option on their bullshit attempt at a social network. Even the games themselves had their own telemetry crap I needed to disable buried deep in some advanced settings.
Spotify still insists on ratting me out to Facebook by loading their SDK even if I'm paying for the app. They also interrupt my flow every so often with in-app popovers about some stupid feature I don't care about.
A client I worked for that has a paid app had an insane amount of analytics and marketing SDKs in the app (including Facebook of course), so much that I actually refused to install the app or use the product myself even though they gave me a voucher.
So I say this based on personal experience. The Siemens' sales force uses their size and influence (especially with existing customers) to absolutely screw over customers and smaller competitors with better products. Siemens is no different than many other big companies who can use all sorts of unethical (but legal) tactics to sell.
It's very possible to work as an engineer in a big company and have zero idea as to what everybody else is doing to screw people over.
I always thought that I would be able to switch to any programming job I wanted, and that the only decision would be between making a lot and roughing it up (like the GP), or working for a better cause for less money (as you propose).
But now I find it -- after 25 years of professional experience -- nearly impossible to find any job. Maybe it is due to the coronavirus, or the budding depression (or both), but I've never seen the market so slow... :(
There's plenty of bad actors (like any biz) but most of the time when I ship features everyone is happy, and no one is taken advantage of.
I've been thinking about this in relation to the concept of incidental complexity lately. Every year there is more and more tooling and configuration to do before actually coding anything.
I have always considered myself a full stack developer, but each field gets more specialized, and when issues arise I'm just not on top of the suddenly very complex nature of the surrounding ecosystem, even though the goal is to eventually write the same code in the same language I normally use.
I've become increasingly worn-out from this as well. It's strange that as an industry we parrot the "premature optimization is the root of all evil" line, yet we build out our tech stacks as if we were all part of FAANG.
And yet, some kind of new and improved framework gets upvoted to the top of this website every week.
Seriously though, it truly disgusts and depresses me to browse Github and see projects which could have been accomplished with (literally) a single file being split into 10, 15, 20+ files, all wrapped up in some god-awful package managers.
No, developers; your JavaScript snippet does NOT need to be accompanied by two dozen .grunt, .yaml, .composer, .gulp, .jenkins, or .fellatio files.
I have a product which solves a real problem and I'm getting paid by customers who appreciate that their workflow is somewhat easier with my tool. No tricks there.
So, you do have a choice. I'm not saying it's easy or quick, but the choice is there.
(Also, I would really, really encourage you to invest some time and effort into living below your means. It's easier to retire or take a more fulfilling job when you only 'need' 75% of your salary and you already have a big chunk of the surplus sitting in an account somewhere. On the flip side it's made me complacent wrt to demanding raises I deserve)
There is a whole other world of bootstrapped/profitable businesses out there where these things aren't a focus or problem. You might not even have to take much of a pay cut.
Just stop working for shit companies producing stupid shit, money isn't everything.
I think you're overstating it. This is true of much of the industry, maybe even most in certain bubbles like San Francisco, but it's far from all.
> Technology-wise, we no longer use engineering as a means to an end to solve a business problem. Instead, engineering became its own thing and most companies encourage and reward those who opt for over-engineered solutions
I think there's more truth to this, although I still think it's far from all of the industry. There's also a little bit of a good reason for it: tech companies have figured out that when you let engineers work on things they find interesting or exciting, they tend to work much harder and longer. In some sense this isn't a bad deal for those programmers either, if they're getting to do something they love instead of something they hate.
What it does lead to is a weird situation where doing something in a way that's only 80% efficient in terms of effort because of over-engineering, may still end up being economical because it leads to 200% effort from the people working on it. I think this is the root of a lot of the technology decisions being made today. Which, again, is really weird and seems questionable, but it also seems to work out pretty well for all parties most of the time.
But if your criterion is zero pay cut to make the move, then you're placing zero actual value on all those things you complain about.
Your complaints are legitimate problems with the industry, but it should come as no surprise that a free market does not always make ethical decisions.
> Unfortunately there's just nothing out there that pays as well so I have no choice but to tough it out.
You always have a choice. Nobody ever promised that a choice which "makes the world a better place" would necessarily be the one that's best for any individual's own wallet. It usually isn't.
As long as tech workers continue to choose to do work purely based on salary, even when it "screws the end user in every single way possible", employers are incentivized to continue to pay them to do so. The job market works both ways.
It's hard to muster much pity for someone who uses "toughing it out" to describe making a great salary and (by their own admission) screwing their customers.
We're funded from customer revenue. Privacy focused. No VCs, so no moral flexibility needed on our end to meed VC expectations. We don't do any dark patterns. All remote.
There's GitLab, Wikimedia, Cockroach Labs, etc.. there are opportunities out there if you make it a real priority to work at such place.
I hadn't though about why we over-engineer things this way. But I agree
I might add, based on the over-engineered (and, in general, badly designed) software I have worked with, that it usually comes about because it's never possible to change any aspect of the underlying architecture with the purpose of simplifying things.
We wind up with over complicated 'solutions' because we are simply unable to go back to simplify anything ever for any reason. The 'stake-holders' just don't think it's priority.
So all that's left is keep stacking clever solutions on top of bad decisions such that every new clever solution makes it even harder to go back to simplify.
Antoine de Saint-Exupery
Improving the code-base is part of the job and you should be setting aside about 20% of the time you estimate for new features to do so.
There's no need to ask management for permission, your estimate is simply 20% larger.
This seems to vary company-to-company. I've seen the extremes on both sides of this. I recommend finding a new company that shares your views on tech-debt and pragmatism.
I know Fortune 500 developers who are working on super cool DevOps enablers and internal libraries using modern tech. The good places are not your dad's IBM WebSphere configuration shop anymore.
So you're still just providing infrastructure for these guys and not really contributing anything useful to the world, you're just one level removed from that, and hopefully you have enough customers who actually do good.
Every cloud provider is wrapped in HTTP REST APIs but the cloud era version of a UNIX neckbeard has a DSL or CLI tool to peddle.
Sorry, gang. Doing just fine with a monorepo of JS, Python, and Go packages that wrap the APIs for a variety of providers. New infra is just a new language dependency file away, and I don’t have to learn your semantic wank.
So glad you had a job at FAANG, but outside ITs reality distortion field, we’re plenty productive and you’re just another human.
Tech pay will flatten out/drop in the next decade.
Skill requirements are diverging. Tech skills are being commoditized by influential, huge, monopolistic companies. There is no licensing body to keep supply in check (like doctors, lawyers do) and there isn't one likely to be either. Put that together and you have a recipe for excess skill supply, replaceable talent and incredible effort required to switch roles.
One effect of that is lower pay.
The pay will be lower but there are opportunities out there where you can genuinely work towards helping people with technical solutions. Both the local research hospital and world class children hospital in my area always have data science openings and positions like that for instance
Everything you describe is about capitalism: putting profit before any other priority.
It highlight the need to be diligent in daily decisions day-by-day. And when working somewhere that's doing something borderline, or totally unethical, working to move it in the right direction. I hope I can be aware enough to create a net benefit. The problem is knowing enough of the consequences of any action to evaluate if it's a net benefit. That's really hard, but I have to believe that toiling away _trying_ to make net positives happen will _actually_ result in net positives happening. Doubting I could ever make net positives happen leads to cynicism and ensures nothing good will come of my work.
(and thank you for bringing up point about benefit systems - that's the next gig for me, I will work to not be part of the problem)
Be pragmatic. If the company provides a good service but doesn't survive, then that good service no longer exists! Some amount of optimisation for sales is likely necessary, but I think there's a line where things turn user-hostile, even in subtle ways.
This is a good point and I'm glad we're finally seeing some pushback. I would have a problem working for a company that does unethical things and I was surprised that so many people don't care. And before you tell me that people don't have a choice — perhaps some don't, but that certainly doesn't apply to all the crowd that moves to Silicon Valley to work for Google.
https://reports.exodus-privacy.eu.org/en/reports/com.spotify...
And Spotify doesn't make much money because most of their users are freeloaders. Their poor business model should not become the problem of the paying users.
And by weird coincidence to this post I've recently been browsing around trying to find any other type of traditional businesses looking for equivalent help. But I've mostly found boutique places that wouldn't have need for a full-time developer.
Any tips on places to look for opening greatly appreciated.
The problem is that I find it very hard to find these businesses, and indeed most of them don't actually have enough work to fill more than a couple of days so you would need a reliable source of these gigs if you want to survive (you can't charge insane amounts to compensate either as these businesses just can't afford it).
You should work for a system integrator if you want to do that kind of work with regularity. The integrator contracts you out to those companies as needed, and you develop a niche and maybe customers start asking for you by name. In the best cases the integrator is your employer and offers full benefits, as well as absorbing the costs of downtime.
That business model can also be abusive for obvious reasons. I can recommend a good company if you're interested.
https://www.joelonsoftware.com/2007/12/06/where-theres-muck-...
There are plenty of unsolved problems.
An alternative is to look for a problem that has been "solved", but not in a certain niche. For example, inventory control and tracking production seems to be a "solved" problem, but it turned out it wasn't a "solved" problem for small/medium-scale electronics manufacturing, which is the niche I'm in.
Why do you think you need to find a truly unsolved problem? If all you want is a profitable, sustainable business, look at what companies are already paying for, and build a product that solves one of those problems. It doesn't have to be a carbon copy of an existing product. You can differentiate by price or combination of features. Or you can target a different niche. Competition is a signal that there's money to be made in the market.
It won't be easy, and you will have to learn sales & marketing. But it is doable. If there are X companies in the market, there's likely a place for another one (as long as this isn't a winner-takes-all type of market).
I just found out yesterday that AWS Amplify doesn't have a manual deploy button. It's only job is to build and deploy an app and there is nowhere on Amplify itself where you can press a button and kick off a build! Junk like this is everywhere now. It's a golden opportunity for people who know what they're doing.
When I do feel a database is over engineered it is almost exclusively adding complexities to the database to handle a contrived or rare examples. With the most common being "splitting one table into 2 because a one to one relationship is actually a one to many once every 5 years", or "adding a join table because in Joe's 30 year career there was that one time multiple companies jointly sold us a single product"
What I was trying to say was that it's very black and white thinking to say something like ads = exploiting users and healthcare = not exploiting users.
Since Facebook usually comes up when people talk about unethical companies, let me use them as an example. Let's say there is a team that improves ad targeting by 5%, helping to reduce the number of irrelevant ads people see. Let's say there's another team that reduces data center electricity's utilization by 5%, which helps the environment.
Is the ad team more or less ethical than the data center team if they are basically both supporting the same end goal?
I don't work for Facebook if that matters. And I have no answers to any of the questions I posed above outside of my personal preference to not work in online advertising unless I need to do it to survive.
The functionality delivered by products is not screwing people unless you're talking about surveillence capitalism ala Google et.al. Capitalism and the pricing of goods is how we incentivize people to bring things to market and more importantly how we allocate resources. No one, anywhere, through any scheme has ever replaced the market for performing these functions and thereby driving civilization and invention forwards.
People keep believing they can (socialism/Venezuela), or give up on the project entirely after decades of trying (communism/ China / Russia). Maybe one day someone out there qwill have a genuinely new idea which works. Until then you have a right to feel good about contributing, in whatver little customer support / feature adder / managerial capacity you do, to the forward progress of society generally and the amazing, rocket-like increase in wealth absolutely everyone on this earth is experiencing relative to the past 30,000 years.
You might have to change tech stacks and rebrand yourself to appeal more to enterprisey jobs, but that's more of an issue of marketing than anything else. It will be a small transition, but once you do that you'll be fine.
I'd much rather have a 40 hour a week job somewhere else, where everyone understands it's a job and you can be your own person at home. It's hard to articulate, and I could write much more about it, but it's almost like the identity you have to don to fit in there feels too all-consuming.
I don't want to pretend I'm changing the world instead of just installing a new social hierarchy run by the meritocratic elite. I don't want to pretend that programming is my only hobby -- I want to do other things than learn new Javascript frameworks at home. I like my nice 3 bedroom house which is just minutes from downtown and is less than 3x my annual income.
It's admittedly an outsider's perspective but the only reason I would go back is to save up money for a few years then go somewhere else.
1) I switched from being a software engineer to a data scientist in 2010, in part because of the culture. I totally get not enjoying the culture, though I do recognize how much it varies from person to person and company to company, so I try not to stereotype. But on some level, I get it.
2) We're opposites in some way. I've been writing code since I was 8 years old, and enjoy it. I'm the type of person who loves to find a fun and challenging problem and dive in so much I don't turn off. However, people like me are rare. In the last 15 years in the Bay Area, I've only worked with one other person who fit that criteria. Everyone else treated it like a 9 to 5 job. Me, I've never been one to judge or think negatively of that. That's how people are. It's normal. I get there are problems with SE culture, but some people being super passionate about what they do, to me isn't one of them. I don't believe I've ever annoyed anyone, bothered anyone after hours, or done anything unreasonable, and if I did I would appreciate people letting me know in a 1-on-1 fashion. The last thing I want to do is bother my coworkers.
3) You're on ycombinator, the center of Bay Area tech culture. Frankly, I'm baffled you like hacker news, for the people who like this kind of stuff after work hours, yet at the same time are anti that. YC is the heart of tech passion, and if you don't like it, why are you here? Not judging. Your comments and views are valuable. I'm asking out of genuine curiosity.
However, science has always been my #1 thing, and programming is my probably my #3. Interesting, but not the only thing I want to do. Working 40 hours a week at it is enough for me. I still love learning new things and getting better at the craft, but when I go home, I have other hobbies.
I'm hacking my treadmill with Arduino for fun. I'm brazing metal. I'm riding my bike more. I'm reading a fiction book that just came out. I just read a book about world development. All of that is a lot more interesting to me than going home and sitting at a different desk doing more programming, you know?
And while I'm not offended by your comments and this is entirely non-personal -- really, I'm just curious as well and enjoy talking to people with different perspectives -- the attitude that if I'm not always programming, I'm "less than" than other programmers seems oppressive to me. I'm still smart, I'm still curious, I'm still good at my job. But there's still the perception that if I am not programming more, I am falling behind.
So the solution for people like me is to pretend to be someone like you, who loves programming above all other things, and it's mildly exhausting. It's great that you love programming so much and I kind of envy you. But not everyone needs to be exactly like you to be a worthwhile contributor. (Again, not personal, I just enjoy putting these thoughts into words.)
Citation needed. I think YC users think they are the center of tech (or the universe?).
What would be that actual proof that it was? Do we know how many users HN has? What % of VC actually spend time here? What % of meaningful founders actually spend time here? Ya the CEO of github will drop a post on a major thread concerning his company, but so what?
Honestly the more time I spend here the more I see two notable demographics: cynics trying to feel superior (like myself), and people trying to justify their own salary and lifestyles via a fat FANNG paycheck.
P.S. and college students / recent grads who know everything.
If your company starts to go the route of evil, you can find another job with people who are less morally bankrupt.
ACM Code of Ethics: https://www.acm.org/code-of-ethics
There are incompetent people in every industry. So what.
Hiring is an arcane mystery in every industry where productivity can't be quantified. So what.
I have never seen anything remotely close to that in a place of corporate employment ever. I have been doing this in the corporate world since 2006, but if you count my time as a security analyst in the military than I could push that date back to 2001.
The military does force feed you (memorization verbatim) ethical standards, though, at a huge contrast to the loosey goosey corporate world:
I'm not sure I've worked directly with anyone recently who could pass a DOM test like that. Everything is React and and Axios and the browser (and HTTP, TCP, DNS, etc) is a mystery.
Edit: mystery isn't even the right word really, if you mention any of the other layers I've seen people get actually hostile.
Only 3 candidates were able to pass this code filter. The people that did pass either did well enough to pass or extremely excellent. The people that failed, maybe 19 of 22 people, all failed epically.
In practice I highly doubt that the population of candidates is actually this bimodal. It might lean heavily below the hiring bar, but I have trouble believing that it's bimodal. My own personal experience has been that it looks a lot like a normal distribution where the hiring bar is just two standard deviations above the mean (which would imply that you give offers to about 1 out of 25 people who apply, which sounds approximately in the right ballpark).
As a consequence, if your question is producing bimodal results, I can't help but wonder whether it's a good interview question, because knowledge tests exhibit much of the same type of distribution of outcomes.
In my experience, if you give the candidate only one hour, access to documentation only helps with recalling past experience, because one hour is too much time pressure to actually calm down, pick through, and digest documentation on something you haven't seen before. If you knew the DOM functions existed and just needed their names, it'll work, but if you're unfamiliar with what the DOM already offers, even if you could learn it fine on the job, you won't learn it fine under time pressure. I recently adjusted one of my interview questions specifically to reduce the need for looking up documentation because I noticed exactly this phenomenon.
It surprised me just as much. I cannot speak to the capabilities or thoughts of any given candidate. Ultimately the test was a test of using a single standard API that is based upon a standard model. If it were just a matter of instructions or syntax I suspect a candidate would gotten over that by either asking the right questions, trial and error, using a reference of whatever. I think what really destroyed people was a complete inability to perceive the page as a series of nodes all interconnected with various relationships.
> In my experience, if you give the candidate only one hour, access to documentation only helps with recalling past experience
That is only partially true in this case, because the candidates knew coming in they would have a code filter accessing a page using vanilla JavaScript. I cannot remember if I specifically mentioned refreshing on the DOM methods or not. I might have. This was 8 years ago. But they had at least a day prior notice to catch up on how to interact with a web page using JavaScript using only their code. The time pressure would have applied to the specific tasks asked of the candidates.
My experience in frontend feels like everyone learns ad hoc without digging deep into basics. Overall, I felt if you have aptitude or real passion for the work, you would just get a computer science degree and be attracted to other parts of the stack or other problems to solve.
This obviously doesn't apply to large tech companies which make it a point to hire talent (frontend, backend, whatever).
> Hiring software developers is still somehow an arcane mystery few people can objectively figure out.
This is actually one space where I feel the frontend world shines. Almost every frontend interview question has been very practical.
There is how to get into a data science job, and how to make that switch.
There is how to get into doing data science as a hobby or a skill/experience, and how to make that switch.
There is how did you make the switch to data science. That is, what is your story?
And there is the deeper dive, most people do not consider enough: "Will I like doing data science work?"
My story:
When I was a teen, I wrote a stock market bot that was pretty profitable. That may be a quant researcher job and skillset, but it is a kind of data science too, as data science is a research position, where creating models is part of the job spec, identical to a quant researcher.
So I got into it, out of hobby, not out of taking a class or reading a book, but by being infatuated with the plots I see in the stock market, seeing patterns everywhere. When I'm doing a 9 to 5 I have to put a timer on when I'm looking at plots, or I can easily spend days just taking in information. I just like it, a lot.
In 2010 I applied for a job as a software engineer, passed all the interviews, was going to do another SE gig, and then I was talking to a manager during an interview and I said something like, "With enough time and effort, nothing is impossible. That's what I love about programming." So, he threw a curve ball at me. He said something like, "We have a team of roughly 15 people classifying web sites, labeling if the site is porn, education, business, and so on. There are a little over 60 categories." This team worked on the web filter schools and dmvs all over the country paid a service for, to limit what websites people can go to.
I jumped on it, "I can automate that!" So he started a new team and put me on it. What did I do? I looked up how SEOs work and how Google's search engine worked. Certainly they were classifying websites in one way or another, so it was just a matter of research and figuring it out.
...in the end the project succeeded. What strongly surprised me at the time was how it ended up categorizing websites to a higher degree of accuracy than the people we were paying.
That's the non-business side of data science in a nutshell. It's figuring out how to do something often suspected or assumed to be impossible, and making it possible. It's not just researching how to do something, but using cutting edge research from published papers and often doing the next that no one has figured out yet.
Programming is a tool that automates thoughts. If you can figure it out you can put it into code. If it's a complex enough of a problem you can use ML to automate the writing parts of that algorithm you could write by hand. ML is often thought of as a way to generate a process, that can't be written by hand, and to some extent that is true, but only in the sense that it would take too long to write by hand. Eg, where writing by hand would need an if statement for each of the millions of hypothetical scenarios.
ML is also useful for giving insights. You have a hypothesis -- an idea of how to do a task -- and you run ML over it, and either it solves the problem, or it doesn't, and what it comes up with that is incorrect will always teach you something, so data science is often an iterative loop, where you put some ML in just to see how the data varies from your hypothesis giving better ideas in how to write a better model.
Sometimes someone will say data science is an analyst + software engineer, but that's not quite right. An analyst looks at data, plots it, organizes it, and then reports on their findings about what is to management. A data scientist looks at findings and applies predictive analytics to it, finding solutions to potential problems. Eg, "We'd like you predict future customer churn, and propose solutions that will eliminate this potential future customer churn, before it happens." This is done through identifying or classifying what the causes of customer churn are, then finding solutions to those causes (hypothesis), then writing some software that automatically enacts that solution. Then you can look at if that solution is working, and validate your hypothesis or invalidate and learn more of what is really going on. Hopefully that makes sense.
In summary, if there is a task that other software engineers can't figure out how to do but you can, regardless if you're using ML or not, it may be data science. (Keep in mind, software engineers can use ML, so while data scientists often use ML, ML is not data science.) The path from software engineering to data science is usually just that, taking what is deemed impossible by those around you and making it possible.
How to get into DS as a career: As a software engineer, your best bet is to transfer internally. It's rare for a company to higher a fresh data scientist who previously was a software engineer. Data scientists can help all companies, from startups to large companies, so you don't have to be at the "right" company to switch, you just have to find a problem that could benefit the company, advertise your hypothetical solution to management, and start doing it. Data scientists are the ones finding projects to benefit the company, and doing it. They're usually not being given projects from management like software engineers are, though ofc they can be given projects too. Keep in mind: I'm a lead data scientist, and my first data science roll I ended up leading a data science team, so my views are biased towards my own experience.
Most of the enterprise sales cycles I have worked under go from 3 months to a year anyway, and the implementation time might take 8 weeks to a year+ - so drive by spamming doesnt really get results.
(Payroll, Commercial Real Estate)
Who says that? It's so backwards from everything I'm accustomed to in the bay area. (In the bay area I've done 10 years of data science and 5 years as a software engineer before that.) Maybe it's because I didn't go to universities out here and it's university culture? People at MIT can get very passionate about their projects.
I've had companies (many of them) advertise to me saying I should join them because they have a healthy 9 to 5 work culture. But what company doesn't? Maybe a young startup, but you sign up for that at that point.
Everyone I know who regularly works more than 40 hours a week (who isn't a CEO) is almost always because their boss asks for X quantity load of work done, which might be 50 hours of work, so they do the 50 hours instead of communicating they can't do that much within 40 hours. Sometimes it's because they're a junior and are afraid of not fitting in and are afraid of getting fired, but sometimes it's a senior who has their tech down, but not their communication skills down. It happens, and it's sad to see, because it almost always leads to burn out on their end. It's not a good thing.
I love what I do, but I do 40 hours a week. Want more? It better be a rare event (crunch times are a real thing in some industries) or you need to be paying me more, and I'm not cheap.
>So the solution for people like me is to pretend to be someone like you, who loves programming above all other things, and it's mildly exhausting.
I love programming, but it's just a tool. It's like saying you love hammering. It doesn't make a lot of sense when you take a step back. What I love is the projects I do. You mentioned hacking your tread mill, so it sounds like you do more tech hobby stuff after hours than most software engineers.
Frankly, I rarely do projects outside of work, despite loving what I do. Why? Because companies give me inspiration to do specific tasks that I love. Without working I have a hard time finding things to do. If I could find infinite things to do, I'd be a CEO, providing things for everyone else to do. The only people who truly don't turn off, end up being CEOs, not software engineers. (Unless they don't know how to capitalize, or some other edge case, of course.) So it's unrealistic to believe you have to be doing non-work tech to work in tech. That's just absurd.
Also, I can't say from country to country, but within the US software engineer culture, while it varies from company to company and team to team, is generally somewhat similar across the country. On the NYC side, working more than 40 hours a week is common (eg, quant work), where on the bay area side only working 40 hours a week and turning off (unless you're at a startup) is common.
Is it possible this has to do with too small of a sample size? It's easy to stereotype. We naturally do it unless we learn otherwise, sometimes through learning statistics, sometimes through other routes.
Ycombinator comes from Stanford which centers around creating CEOs, creating most of the companies in the bay area. Most non-yc bay area companies still have Stanford at its roots. I don't have a direct data point, but almost every company I've interviewed for in the last 10 years and have worked with, their CEO or CTO or some other c-suite "club" is strongly tied to Stanford and from that directly or indirectly tied to YC.
The NCO Creed, however, absolutely is a code of ethics.
Fair enough. :) I've experienced a similar issue with interview questions where they often floundered on the question because they hadn't ever spent time digging under the surface. For example, I notice that a lot of (typically junior) developers seem to only think of JSON as a representation for hierarchical objects but never really spent time thinking about the typed-ness of its keys/values or the limits of what JSON can actually represent. An interview is a bad time to be confronted with that realization.
I cannot remember if I specifically mentioned refreshing on the DOM methods or not.
Well, it was a long time ago, so I'll give you the benefit of the doubt and just talk about what I've experienced. I go back and forth about how specific I should be about the type of questions I might ask. On the one hand, it seems kind of foundational that someone writing web frontends is aware of the DOM and how it works, even if they never directly interact with it. On the other hand, I think questions need to control as much as possible for the "preparation" factor because some people simply interview better or have more time to study.
It doesn't seem too crazy to me today that a competent FE dev these days might have spent their whole career in React, and therefore they don't really have a strong grasp on the DOM. If you had asked when I first started doing web FE development, that would have been crazy! But frameworks got a lot better and a lot more comprehensive since then.
I recently had an interesting experience asking a question involving dealing with UTF-8 encoding. I figured "everyone knows about UTF-8 right?" I retired the question pretty quickly once I realized that bit manipulation is not actually something you have to be even remotely familiar with in order to be a functional developer today in the vast majority of programming tasks, and therefore it wasn't even a good fizzbuzz-type test.
I tried to convince myself that these advantages made it worthwhile to sit alone in a dark room for >10 hours a day, but in the end I couldn't. I was spending more time wrestling with package managers, version conflicts, obtuse configuration files, pointless deadlines, egotistical colleagues, and almost zero time solving interesting problems on products that I care about. You might argue that I should have just found a better job, and I did, several times, but I found that no matter how much enthusiasm I had for a job at the beginning, eventually it got bogged down in software engineering detritus. I didn't much care for my colleagues: no offense to those present, but I just don't really like tech people, despite the fact that I obviously am one of them.
Through a series of coincidences, I found myself with an opportunity to teach programming at the university level. It was a lot of fun: I can talk about problems that interest with me with people who want to hear it. I operate with very little supervision. I still get to learn new technology, but fortunately I can ignore the rough edges and focus on the benefits. Meetings are minimal. The salary is adequate for my lifestyle. Best of all, I get to interact with real, live human beings. (Although at the moment, of course, we're doing everything via Zoom.) Fundamentally, the problems I'm solving are not technology problems, but human problems. At this stage in my life, this is more interesting.
I never imagined I'd end up a teacher, partly because I was a terrible student. Over the years, I had gone back and forth between industry and academia but now I think I'm in academia to stay: there's nothing I miss about slinging bits for a living.
Ironically, I'm helping my students enter a career that I left, but I let them make their own life decisions.
That squares with my experience of software development. It's like being a furniture maker but spending 80% of your time fixing your goddamn hammer because it keeps breaking and no better hammers exist, or consulting glue-drying tables because they keep changing your glue on you every hour or two and for no good reason every single glue performs differently while accomplishing the same thing.
... and then most of the remaining 20% is meetings and communication, which would be fine if you had more time to do the thing you're actually trying to do.
This is something that you're supposed to know on the first day after you finish apprenticeship.
In the modern tech industry you need authorization from your product owner/manager and engineering manager just to build a new tool or abstraction to automate or speed up your own job, because god forbid you do anything that's not in JIRA.
But my PC has recently started crashing for no obvious reason. The analogue has crept into the digital. Every error message is different. Parts work when tested in isolation. The whole is less than the sum of the parts.
It's really quite annoying, and I'm enjoying walks in the park more these days than typing on a keyboard. I put up some shelves the other day. They are still up. An update won't break them. Reliable.
The iOS dev experience is far from perfect, and while YMMV, I definitely found I spent _much_ less time fixing my hammer when I'm building for a single platform using a single language in a (largely) excellent IDE.
Sometimes I think there must be engineers out there who enjoy the hammer fixing and glue-drying that comes with the rapidly changing full-stack development landscape.
I studied aerospace engineering and day-to-day it's exceedingly rare to need any math beyond basic trigonometry. 80% of the time it's useless meetings, emails, paperwork; only sometimes it's actually useful or fun. Some people study business for years and end up splitting their days between sitting in meetings and updating Gantt charts.
That's just how work is.
Wow, this resonates with me. I have never liked my colleagues at any job, and I hate talking about tech with people outside of things related to work. I find tech people difficult to get along with and the conversations don't interest me. I say this knowing I could very well fit the same description but here's the thing:
I find that often tech people replace an entire personality with video games / following the latest tech releases / anything related to their job. Almost all "water cooler chat" at tech companies is what game they played on the weekend, what the latest steam sale is, what the latest tv show is, what new programming language they're learning. Like, please. Can we talk about something else?
Sounds like me if you throw in anime :) But, what's wrong with that? Other people do the same thing but with sports or music or raising kids or "hanging out with friends" or whatever else they fancy, but one is no more a "real personality" than the other, though, people with other interests always seem to have no real personality and be all about that lame thing they like, don't they? :)
Interesting. I've worked at plenty of companies and I rarely met people like that. Maybe it's an American quirk (I've mostly worked in Europe) or perhaps it's specific to tech companies? I've mostly worked in non-tech (government, banking, telcos, with some simple web startups) and people there are fairly well-rounded. It may be that big tech is selecting for the biggest brainiacs in their hiring process, and being a brainiac correlates with having a one-dimensional personality? I've certainly meet a couple of people like that when interviewing at some of tech's household names.
I really enjoyed teaching guitar and talking to people when I was younger so I've slowly been creating educational content on LinkedIn and YouTube for software engineers. The main thing preventing me from taking a jump is my immigration status (I'm not American and I'm working on my green card right now). I'm glad this is working out for you!
I suspect the daily grind becomes apparent regardless the career choice.
I can imagine how doing the same thing for 20+ becomes dull and uninteresting, especially if you have arbitrary deadlines, superiors to report and so on.
The way that I personally cope with this is, accepting the fact that my job is a job and at the end of the day, the only thing that really fulfils my life are good health, exercising and spending time with loved ones.
Whilst I try to enjoy my job as much as I can, it's just a means to an end.
I think a trap that some of us fall into is letting our careers define who we are and once that happens, it becomes very easy to lose the sense of self.
The top answer also mentions this. Yours is currently second-top.
I hope developers get the message.
I'm SO tired of trying to navigate around the mountains of pure garbage every time I want to work on a new project.
I long for the days when adding new functionality to your project was as easy as including a single external file, and when code repositories didn't automatically come with ten different utterly useless metadata files.
I see the problem that our tooling is diverse and assembled from parts. You can pick a compiler from column A, a version control from column B, and GUI framework from column C, a message queue from column D, etc. And somehow, it's is possible to make them all work together. We love having that flexibility and choice.
But we pay a price in the added complexity of making all the pieces play together. A sibling comment mentions Turbo Pascal, as a contrast to today's programming environment. Yeah, Turbo Pascal was great, but it was also an all-in-one kit: you couldn't even use your own linker, you had to use the built-in TP linker. In a sense, it was a walled-garden Apple-style development environment. But it worked, it was easy, and it was fast.
The closest we have to that today is Visual Studio. I'd argue that the (mostly) all-in-one nature of Visual Studio and C# relieves a lot of the headaches of the more traditional open source toolset, at the expensive of less flexibility.
This is not an argument in favor or against the Microsoft world, just an observation.
Does anyone remember Borland's VCL, Rox desktop or Acme from Plan 9? All vastly different, but all enabling great workflows. I would like to dive in GUI programming more, but I'm too picky regarding technologies. Closest to my ideal is Tcl/Tk and Lazarus it seems.
I say it as a guy spending most of his time in terminals for 15 years, mostly by choice.
> I'm SO tired of trying to navigate around the mountains of pure garbage every time I want to work on a new project.
It sounds to me like you are also... developers? :)
I don't think it's easy to find jobs that pay at middle-class levels in many larger cities.
The salary may not be great, if you have experience and good student evaluations, you are in a strong negotiating position.
Some caveats: getting a university teaching job is a lot easier than getting a university research/teaching job. Previous teaching experience is a big plus, as is previous industry experience. PhD is nice, but not required (I don't have one).
This is what we’ve lost in our industry in the last 25 years, and to the worlds detriment.
That's been my motto since I heard it there.
Have you somehow avoided this stuff?
I imagine it might be different in secondary school education, but at the university level, I find that no one really cares what I do, as long as the students don't complain. I always redesign the curriculum to suit my tastes and interests, and I've never gotten any pushback from admin.
Basically, the department assigns me classes to teach, and after that I'm on my own. Once a semester a senior faculty member observes my lecture, mostly to make sure that I haven't shown up drunk. The only politics I'm exposed to is on the hiring committee.
All jobs will have x% of nonsense and y% of what you actually really enjoy doing, and I think as long as y >= 10% then you'll do okay.
Honestly, I like sitting by myself and grappling with tech problems. It's nice that I'm allowed to sit inside my own head and think all day. Maybe it's because I'm young enough that the problems I'm facing still seem somewhat novel. But perhaps it's true that OP is more extroverted and doesn't enjoy that nearly as much.
Good on them for finding a better career fit. If I had to interact with people all day, I would die.
I can totally relate to this.
Anyway. I hadn't really thought about it in a while, but maybe I'll try for that again in the future. I don't hate bit-slinging quite yet ;)
More controversially, I'd say that any labor relationship is necessarily exploitative, and doing any work beyond the minimum means that you are giving more than you're getting and thus being abused. But that's not advice for having a prosperous career. :)
You'll probably need at least a Master's degree if you want to teach, but a strong industry background might be enough. You might try approaching a local university (don't discriminate, even community colleges need teachers) about teaching one class a semester. If you like it, you can try a better school or go for a full-time position.
The first simply had another passion - travel. Work was just a way to pay for that. Eventually went to work for an agency, been there a long time and AFAICT couldn't be happier (despite being less well off materially). I've known a couple of others who fit this pattern. One left the industry to raise goats and make cheese instead.
Multiple have left to become full time parents. I hope they don't regret it, since this group includes my wife. ;)
Several others have left the industry but have not necessarily left tech. Some do light consulting. One's writing a book. Most are working on long-deferred personal tech projects.
I just about joined this third group before my savings took a 15% hit, so I might as well say why. I'm tired. I'm tired of the artificial deadlines, and processes that slow people down more than they improve quality, and the omnipresence of coworkers who exhibit every kind of bad engineering or interpersonal behavior (even though others are awesome). I want to enjoy making things again, and the moments when I can do that within the industry seem all too fleeting. Even the best of my dozen jobs stopped being fun, or just stopped. The thought of going through a modern tech interview process yet again so that I can do all the rest again just fills me with dread.
I get to play with lots of tech still, except it's more of the layer 1 stuff. Doing fiberoptical backhaul work, or installing DSL in peoples homes.
I'm still interested in both hardware and software. I run Gentoo Linux on my machines at home, and I have a DO VPS for "cloud things", but I'm glad it's not my job, because software issues can piss me off like no other thing is capable of.
I took what I call a 12 year sabbatical from tech. I became an officer, went to pilot training, learned lots of new and useful skills, met lots of very good and interesting people, some of whom are my best friends.
Taking off from a short airfield in a blizzard, at night, wearing NVGs is an experience I don't care to re-live, but I'm glad I have something to talk about at parties.
A quote that affected me greatly during the time I was thinking about leaving: "if somebody wrote a book about your life, would anybody want to read it?"
After getting married (to somebody I met during one of my training courses), settling down, and having kids, a quieter, 40-hour-a-week lifestyle started to sound pretty good again. I had always been a hacker at heart, and realized that I was getting to the age where it was probably now-or-never if I wanted to re-enter the industry. So I went back into tech! It's better the 2nd time around.
Zero regrets.
If you don't let yourself explore, you're not going to be happy long term. (Eventually, you will hit that fabled mid-life identity crisis.)
Perhaps it's less that any one situation is preferable, but more that you need variety.
* Meaninglessness. Most of the projects are simply not necessary, they do not help society in anyway, they just exist to make someone else wealthy.
* Tedium. The intellectual challenges aren't there after a while. There are countless intellectual challenges in the field of computing / computer science, but they are usually precisely the ones that industry has no interest on.
* Micromanagement. "Agile" and similar management practices (yes, I know, you're not doing it right, blah blah blah) are downright humiliating and infantilizing. Almost no other highly skilled professional has to tolerate such level of intrusion on their day-to-day activities. I love deep thinking and creative expression. The modern corporate setting prevents this by design.
* Open-spaces. See above.
* Idealism. I was so excited about the possibilities that the Internet opened for humanity. Now we have ad-tech and horrible exploitation of "gig-economy", warehouse workers and the like. This is definitely not what I have in mind when I started.
* Conformism. The tech industry is extremely conformist. Monetary consideration always wins. Deference to power always wins. "Hacker" used to mean something completely different. Almost opposite to the current definition.
I realized that what I always loved about computing was the endless creative and intellectual possibilities allowed by the medium. This is more or less the opposite of what the industry values, despite what they might advertise endlessly. There is nothing cool about it. It is stale and anti-intellectual.
I don't need a lot of money to be happy. You probably don't either. Time on this earth is the most valuable thing we have, and I would rather spend it waiting tables than enduring one more stand-up meeting.
I think creative nerds are the life-blood of the industry, but they tend to be shy and not assertive, so they have their life controlled by the "business types". I honestly believe that if the nerds told them to fuck off and started spending their time working on things they think are relevant, the world would become much better quickly. This won't happen, I know.
But then dot-bomb happened and it looked like the party was over. I looked down at the job opportunities after graduation. I didn't really want to spend the rest of my life wearing a tie, writing bank software and sitting in a cubicle every day, so I decided to try something different.
I became a seasonal park ranger. And it was awesome.
Like most jobs, I got it through knowing someone. My grandparents had volunteered for the NPS and were able to connect me with the right people. I became a seasonal park ranger at Yellowstone.
It's not for everyone. The pay is not great, but you do get lots of good benefits because it's a government job. And you're often living in remote areas (the nearest grocery store was an hour and a half drive from where I was stationed). It's also not conducive to family life if that's your thing (again, the closest school was 1.5 hours away and everyone around me was my coworkers). And the days are long, helping tourists, checking permits, etc. Permanent jobs are also incredibly hard to get - you usually have to do years of seasonal work to accrue enough seniority to get considered for a permanent position.
But the benefits? Being able to crack open a drink after a long day and look up at more stars than I ever thought existed - I spent many nights on the front porch of my cabin looking up at the Milky Way. Hiking, camping, boating on the weekends are easy because I was right there in the park. Clean air, clean water. A good group of coworkers (for me) who legit really care about protecting these astounding natural resources. And a feeling that you're really making a difference and reaching people.
I did this for a few years and they were among my happiest years prior to my marriage. Ultimately, I ended up going back into tech after things recovered. But there are days that I really miss the outdoors and wearing the uniform.
This. Something has definitely changed in the last ~10 to 20 years since the end of the dotcom era of interviewing in the tech industry. Before it was as simple as reading the AUTHORS file in an open-source project like Linux to vouch for a programmer applying to somewhere like Red Hat or Mozilla. But now we are expecting them to write a proof of quicksort's worst-case runtime complexity or to explain the Diffie-Helman public key exchange mathematically on a whiteboard to "see how you think" and "prove programmer ability" which is unnecessarily academic and they either don't use it directly or search on Google for it anyway.
That's just the onsite interviews, pre-interviews are riddled with Leetcode, Hackerrank and Codility tests which can be cheated or the solution can be found on Google. What a shame that these flawed tests still exist.
Excellent phrase. Thank you.
That being said, I haven't left but have been wanting to for ages. I'd be more interested in staying if I could find a unionized work place (when Delta cut salaries by 20%, the pilots union was able to negotiate for profit sharing after the hard times were over, when my company did that, they refuse to even discuss whether we'll ever be bumped back up to normal… even if we get paid well already it doesn't mean we shouldn't work together for better working conditions and more of a stake at the table) or a worker owned co-op to work for, but so far that hasn't materialized.
I've been doing customer projects for the last 8 years and it has been horrible experience. 99% of the things you're building are the same thing all over again (CRUD apps and various integrations) and pretty much 100% of the problems are caused by people acting stupid in different ways. It all just feels so pointless.
I wish I could come up with something else, but currently this is all I know. At least it all pays well. So golden handcuffs of sort I guess.
I moved from being employed to being a contractor/consultant (somewhere between the two). In the last 8 years I've worked with 8 or 9 clients and each one had serious issues (all bar one * , I would say). There were either individuals with power or small groups who were holding everyone else back by making consistently poor decisions, and there were upper managers too blind to see it or remove the offending parties, despite being informed by their staff what was going on.
It grinds you down, but I feel very similarly to you - it pays damn well and I can't see another way to achieve the lifestyle I want.
(* that one was a huuuuge corporate, and a department with incredibly low productivity and systemic issues with working practices. However they produced quality software to a schedule that was clearly OK with them, so .... that's OK I guess)
Software Development can be mundane and repetitive. Stupid users cause most of my headaches but I use my hobbies as an outlet.
Might need to tailor your resume a bit but if you like coding it doesn't sound like you're at the point where it's time to leave everything.
1. Do not work for a company where tech is not their primary product. If you are only a cost center, you will be treated like a second-class citizen.
2. Work for a smaller company. Your work is so much more impactful when you are not part of a mega-machine.
3. Work only remotely. The quality of life increase that comes with working remotely is massive, and I am not willing to give that up.
Of course this is not always going to be realistic. For one, working for a company that sells tech does not mean that you will be treated well, but it is more likely. Smaller companies, and remote only tend to pay a bit less (and definitely less than a FAANG), but still more than plenty to live a great life.
Who knows where life will lead me, but I will try to stick to these points.
That depends. If you work for a small company working on a product few use, then what's the impact?
The more I work as a programmer the more I agree with points 1 and 2. With Coronavirus I'm having the change to work remote 100% of the time and I'm enjoying so far. It's likely that's something I'm going to pursue in the future.
Also saw that programmers were starting to be treated like factory workers where attendance and metrics like keystrokes per minute were more important than good well written and documented code.
The final straw however was "move fast and break things". Basically pump out change for the sake of change and let the end user do quality control.
One could argue that app stores have also played a significant role, basically taking thirty percent gross while depriving the developer of direct contact with the end user.
Bottom line, I’d rather be sailing.
The worst part is how this leads to more on-call and an increase in working off-hours.
This is why I quit being a software engineer as well (I didn't leave the tech industry altogether tho, just switched career trajectories a bit).
I spent years trying to talk some sense into the people pushing that and trying to explain (it's as much art as science) but in the end the Scrum people won. So, I moved over to devops and consulting where most of the time I'm helping people with stuff, and the long death-march sprints to satisfy an arbitrarily deadline that nobody cared about until it got put on paper two weeks ago, and still doesn't matter except it will turn some spreadsheet field red that draws the Eye of Sauron from higher ups, are mostly over now. I get my coding fix by working on open source projects, and it's way more fulfilling.
So true! Saying both as developer and user!
Which is a euphemism for “I turned into an obnoxious punk” but I’m fine with that too :)
It feels like as the years pass and ones sense of autonomy as a human being overflows the brim, it gets harder to tolerate not being your own boss.
I took five years off work and was complete master of my destiny, which finally wore off, and I now work at a private boarding school that is recognized globally as being a center of excellence for teaching and learning.
The summary is it’s completely different and challenging to switch careers like this. It’s also been fantastic because (1) I am naturally a very gifted teacher (2) but I am completely unqualified, very raw, and full of newbie naivety which is all very humbling (3) and yet very liberating as once again the expectations on me are low and I have room to learn and grow, and (4) I am surrounded by people who actually know what they are doing and are committed to helping me get better.
The best part is that I can approach the day to day of the new role and the skills it requires with the mindset of someone who has been through one career already. I may turn into a punk again but for now I’m enjoying being a level headed journeyman surrounded by masters.
I like building things for people to use, but as a programmer found myself very isolated from users (even at small companies). It felt like I was doing the hard work of building a product but then someone else got to do the fun part of showing it off, while my reward was just... more programming.
Also, I found the job extremely boring at times, extremely difficult at others. I decided that the stress wasn't worth it, especially when my work was having a limited impact.
Finally, I'm not in the USA so tech jobs had no "golden handcuffs". Many other jobs were available that paid as well as a Software Engineer.
I still work on personal programming projects, where I can be much more involved in the whole product and not just the code. I can also choose to only work on things that I really care about and/or that I feel can make a real difference.
So I quit. I decided that movies is something that I have always loved and it’s what brought me most joy. I researched different career options and I came across creative development and producing. It resonated with me. Read movie scripts, give notes to improve it, work with writers, directors and identify the best strategy to get a movie made. One doesn’t need need money to become a producer. So I left the Bay Area and moved to Los Angeles and interned at two companies. The second company was a great fit for my interests (genre, etc) and I am now in full time Role and absolutely enjoying every minute of it.
I earn a quarter of what I used to make but I am much happier. But there are things about technology that I still like. And I am always curious about new developments. So I still enjoy reading Hacker News everyday.
Since then? I did stints in various unskilled & skilled blue collar jobs. Can't say I had much passion for any of them. So now I'm back, without education (mild regret but I can always study more myself; I think education should be increasingly on-demand and lifelong), but at least the pay is better and I get to work in a clean office while listening to music of my choice. I think the field still sucks (well, I imagine there are jobs I would really like but the chances of finding them, without leaving my country and family and everything behind, is probably quite slim), the grass wasn't very green on the other side.
Of course, I'm still a hacker at heart and I hope to create something nice one of these days. Probably nothing commercial.
I occasionally see ones that resonate with me, but either require an education I can't afford to obtain, or want over a decade of experience working in similar roles.
I had been at the company for over a decade, and had gotten quite lucky in the RSU lottery & thought, wait, I have enough money to last forever, so why do I do this to myself?
My health was bad, I was overweight, smoked, was depressed. I felt like it was going to kill me if I stayed another decade.
So I quit. In the years since, I stopped smoking, lost 1/3 my bodyweight & really got my shit together. I dink around on personal projects and learn new things. I follow HN because I'm genuinely interested in tech & now I can pursue what things I want, rather than those I need for $JOB or $NEXT_JOB.
I miss the good people I used to work with, but this is almost completely offset by how much I don't miss the assholes and the hassles (annual review, recruiting, meetings, explaining basic math to MBAs, etc).
I started with Fortran while in the US Air Force (yay CDC 6600 and VAXen), got my CS degree, got out, worked in C/C++ and TCP/IP in the early '90s (yay SunOS), got married, moved to a big buy-side investment manager (meh Solaris), more C++, then Java. Lots of Sybase (yay JDBC).
7 years ago I quit after our big company was bought by a bigger company (yuck Perl).
Took 6 months off for a sabbatical (yay Rome. wow Bernini), then entered my "encore" career at a public safety agency. Introduced Python to that org, of which I am slightly proud. As always, plenty of RDBMS (Pro tip: don't run Oracle on (yuck) Windows Server 2008).
Regrets? Just that it's a shame programmers tend towards philistinism, and that office culture and beer culture overshadow any appreciation of history, philosophy, and the arts.
I now work for a small consultancy company doing research and designing funding programmes for charitable foundations. It's great because I get to do lots of research, writing, and thinking and have a positive impact on the world. No regrets, I'm very glad to have made the transition.
Still follow HN out of mild addiction and because there are interesting articles.
My route in was pretty idiosyncratic, and I think that's true of many people in these kinds of jobs. A more standard way to transition into this kind of research/consulting/policy work from tech might be go for jobs in technology or innovation policy. If you're in the UK I can point out some orgs that do that kind of work but in any country there will be various think tanks, policy consultancies, etc.
Both are so toxic to mental health that I had to move away.
I haven't really left the industry itself but I've moved away from a pure engineering role (which is my true passion) to a more specialized role which is ok but not as enjoyable. But, I don't have to deal with open offices nor agile, so it's a win.
The other aspect that makes me sad is that what we call tech companies today, aren't. Their product isn't tech. Netflix is an entertainment company. Google and FB are advertising companies. And so on. Very few actual tech companies in SV today.
18 years experience. My Current job the tech lead is a diva, doesn't listen to anyone else and just add more and more to our enormous codbase. There are now 3 devs. The other two just basically clean up behind him as he builds technical debt. Trying to discuss is likely to end up in an argument.
I have had a could of technical test recently and failed them both. Today I was given a number of reasons, for example was missing test x,y,z, when the spec said if you were pushed for time, write down the test you would do (which I did - along side that I actually provided the most complex test to implement, to check the timing of the cache refresh). I was advised I should have provided mocks (which would have taken ages to set up for example). They preferred a REST API to the HTML that I gave as output despite the specs asking for a "page". A couple of whitespace errors that made pylint complain. I hard coded some URLS rather than make them configurable (it's a test, not a production application) and didn't provide a setup.py (which was never asked for). Am I expected to be a mind reader? "It should only take you two or three hours"
Before that was a computer science fundamentals quiz for an hour and a half where I had forgotten thing from a couple of decades ago. How to avoid deadlocks in Java (I haven't done threading in years, I said I would need to reads up on it again) and what happens when hash tables have a collision. Again, couldn't remember off the top of me head as it was 20 years ago.
Does no on value the art of trying to keep code simple and maintainable? How do I demonstrate to prospective employers that I am good at this and stop wasting my time with nonsense described above?
Then I was a lawyer for around 15 years, and now I am moving on again. I am currently pursuing a masters degree in cognitive science, and I am planning to see if I can get into working on human cognition and AI/machine cognition in some interesting ways. (If anyone is doing anything like this, then hit me up. I am really interested.)
I do not regret my path at all. It is entirely likely that I could have made as much or more money if I had stayed with building websites and then gone into SWE or something, but a career in law was fun and challenging. And you can leave what you are doing at any time. I think a lot of people could stand to learn the lesson that you can, you really can, just say "screw it" and go do something else. It'll be ok, as long as you are even a little self-motivated.
I still follow HN because it is still one of the best online communities I've found, and it produces some of the more interesting and thoughtful interactions online. You know, it still has its faults, but overall I like it. HN is the primary way I discover new and interesting tech-related news, which still greatly interested me as a lawyer.
I got cancer and when I got better I have never wanted to go back to the office.
I have spent last 10 years travelling the world, reading, learning to live on very little. Never looked back. Life is not a bliss but I am happier in general and satified with tradeoffs I have made.
I still do some projects for my own satisfaction. Still enjoy programming and learning new skills.
Edit: I have been blessed that despite two engineering degrees (financial math and electronic engineering) I have never worked as a programmer for living.
Since I have learned by trial and error 6502 assembler to hack strategy games on C-64 programming have always been unspoiled free time, pure fun activity for me. And 19 programming languages later it is still so.
I live in small summerhouse, eat simple food, cook, own old, small car that I use only when necessary. I prefer biking whenever possible. Buy most clothes and stuff used or heavily discounted. Buying used stuff is also good for the planet. Learnt a lot of DIY which is both cool and satifying.
I despise urban enviroment but have to visit the city cause I take care of older parents. So the summerhouse and living in the forrest is both a choice and a way to spend less on rent..
In a way I always wanted this but given the opportunity I had been chasing money, opportunities, new experiences, following the rat race etc. Now as this is over I feel less conflicted which makes me happier.
You need way, way less money then you think you do but the expectations adjustment process on the mental level is very slow. But of course it is good to have some savings.
I didn't work for a year and now I'm working on contract 6 months a year and try to maintain my boat/sail the other 6 months It gives me time to refuel and enjoy working in tech again.
Incompetent leadership: bosses and leaders that are seemingly nice people, but have no clue as to what's going on in their organization. Typically managers that aren't technical at all, but they just "fell up" in the organization somehow.
Relatively low pay: speaks for itself. It's easier to deal with hard problems and difficult people when you're also not worrying about which bills to pay this month, and seeing your peers in other companies do a lot better than you. This was especially true when I was in academia.
Toxic work environment: This unfortunately has happened a couple of times, once in a small family-run shop (13 people) and once in academia (a different role than the aforementioned one). There was a common denominator with both - the person at or near the top was a nasty combination of incompetent, bitter, and pit their employees against each other. In other words people that were truly pathological. All in all in my career I've reported up through dozens if not over a hundred people total through the various chains of command, but these two stand out. With one in particular there's a bit of PTSD (in the small shop the CEO would threaten jobs for minor things - this was ~2010 when the economy was still near the bottom where I live, and his COO would do equally vicious things).
I work for a great company now with some of the most awesome leadership you could ask for. I'm glad I didn't quit.
I think the ephemeral nature of software really plays poorly with the artificial deadlines, and the artificial importance of some projects in general.
Eventually you recognize the pattern, and there's no logical way to justify it, so it's harder to motivate yourself. You know the deadline isn't real, and you know the software will be rewritten next year with some new technology. You may even be rewriting last years right now.
Tooling churn hurts here as well, because eventually after enough iterations, new tools are just in the way of getting real work done. You know it's not gaining you anything by putting in the effort to learn Toolchain X, because arbitrarily different Toolchain Y is about to become the new industry fad, and will make all that prior arbitrary knowledge pointless.
Some of my favourite years in software were when I worked at an eCommerce agency that served only one framework. Learning I invested directly impacted my work for the coming years. I began to master the tools, which feels amazing. I could also see the real world effect the software had. Sure, it was simple, selling products to people. But commerce is an interesting problem space, and a fundamental part of society, so it was neat to be a part of it and see real companies I worked with grow because of my software.
For example, one of the open source projects that I contributed to most heavily, PyWikiBot, has been around for almost two decades now, and most of my contributions were made ~13-15 years ago, plus some minor maintenance since then, and most of those features I wrote are still in continuous use to this very day by me and many others. And that's just some random tooling library for Wikipedia stuff; imagine how much long-term impact your work would have if you were editing MediaWiki itself, or the Linux kernel, or gcc, or any number of other incredibly widely-used things.
It's been a few years since I left the industry, and I'd be surprised if any of the code I wrote professionally hasn't been superseded by now. Even worse, plenty of it was scrapped before it was even released.
Of course, I knew this would be the case when I was writing it - that does indeed affect one's motivation.
A couple years older than you. I was working a nice gig at a startup until November. Nice because the owners were nice, the coworkers were nice and it was an interesting embedded application involving renewable energy - so not the run-of-the-mill web app. They ran out of funding in November but there was the possibility (prior to covid-19) that they would get more funding so I didn't look around much hoping I could just go back to work for them when they get more funding and avoid having to interview again.
Of course, that's not likely to happen at this point given where the economy is at. And I still can't bear the thought of interviewing again. So I'm effectively out of tech at this point. If someone comes along and offers me a gig without the arduous interview process I'd take it, but otherwise, I think I'm done.
Sure, bad programmers age out because they were never great at programming in the first place. But I would assume the HN crowd falls in the top half of competence because there are so many people here who seem smarter about programming than me. If you're good, you don't have to worry.
Maybe good programers age out because the technical side gets too repetitive, their jobs become more about politics, and they have enough money to change tracks later in life.
When it gets downright tiresome is when being the project janitor puts me in conflict with young "tech leads" who denigrate those contributions because they've only ever worked on that one project where other people took care of those things for them. It's like the difference between living in a college dorm where everything's taken care of for you, vs. having a house and kids and bills of your own. Being a strict individual contributor with no cares beyond the one piece of code in front of me is just a fond memory.
Unfortunately, few companies will hire someone with 30+ years' experience just to write code, even for a salary appropriate to that role. Companies want to pay those lower salaries not only for direct work product but also for growth potential. The worst part is, I know they're not wrong. The only way to do the kind of work I really enjoy, and only that work, is as a hobby.
You don't have to worry about keeping your current job, but getting a different one becomes a lot harder. Your 27 year-old interviewer might be thinking "You're my dads age, and my dad is crusty. No way you can wrap your head around lib-of-the-week.js"
Which people you're talking about? The survivors who are still working in the field? Or those who had heart attacks at their desks at 50?
Turns out they were just taking a leave of absence, every year, to travel, and just eating the pay cut.
I thought engineering enabled travel. I met countless "digital nomads" traveling the world, doing 20 hours of work a week at cafes. Making bank and getting to travel all they want.
If a couple decides they want four kids, the numbers can work out, for 10 years or so - especially if childcare is expensive.
My company (Automation & controls) is partnered with electricians for all the jobs we bid on. Having electricians that know wiring for specialized bus networks, how to do basic troubleshooting on control circuits and all that is amazing to have.
Alternatively, for those reading this in the tech side, the job is super engaging. I get to work on programming machines the size of my bedroom. I get to travel and see equally interesting locations (Dam spillways, Agricultural facilities inland and at port, underground mines, etc.). The fact that I get to get out of my office a few days a month is a big reason I've stuck with my job for as long as I have (7+ years now)
EDIT TO INCLUDE SOME PICTURES (Both the Cool and the Ugly):
https://imgur.com/5uOWDGB https://imgur.com/oJozMBr https://imgur.com/95HSxlx https://imgur.com/yhrPUC3
Especially
> Find your way into Industrial Electrical work if you can. You get a strong mix of tech and electrical, moreso than Residential, can't really say the comparison to Commercial work though...
Avoid residential electrical work if you are technology oriented! Yes, yes, home automation and all that, but that pales in comparison with industrial work. Commercial in theory has the same potential, but (at least here in Italy) the jobs are ..hm.. dodgy (very poor project management, tasks scattered across sub-sub-sub-contractors so nobody has really a clue of the global picture ..stuff like that)
This in reverse is part of why I am a programmer; it can take two or three days before I'm really pissed at a software problem, but physical stuff really annoys me in mere minutes.
Why? Don't really know. I know a bit of it is that I know how to get myself into trouble in software and then usually get back out much better than I do in the real world, but even so, I had the patience in software to develop that and I really don't for real things.
On the other hand, a screw-up can have bigger consequences when your buggy code is used by thousands of users a day.
Ps. Love the username/post combo.
My BF's dad owns an electrical company, and I know BF will most likely end up working there - I've considered in the past joining him. This post is encouraging because it seems like I could get all the movement and outdoor time that I'm missing with coding, and also be building stuff that's useful to people.
Do you see many female electricians? I suspect there are few - any ideas as to why? Is there a lot of heavy/difficult physical labor that I would be unable to do?
Most of the "creative nerds" I have encountered in this industry are arrogant, have grandiose beliefs about their own intelligence and have zero empathy for anybody who is not exactly like them. I don't think things would be much better if they ran the show.
I recently saw a video about Boeing that concluded that the whole debacle was due to it straying aware from its commitment to good engineering and to trying to please the wall street. It traced back to the source of decline as the purchase of McDonnell Douglas which was mainly done due to Boeing management feeling that they needed better "business types", which was all that McDonnell Douglas.
Slowly, but I am seeing an acceptance and respect towards the nerds/engineering instead of hype men & impressive stock figures. Wall street types are seen as the hyenas/fox in a sheep's skin that need not be celebrated and looked upto.
Meanwhile Wall St. simply downgrades, the MBAs shrug their shoulders and speak about drive-thru ordering as an innovation, the Founders get ousted, and people become sick.
This is how I felt about myself, I spent my early twenty working a job living frugally saving and then quitting to work on my own projects. Failed entrepreneurship was a great lesson in how hard it is build things people want and how easy it is to build things you think people want. The difference is often very subtle small details, but asking the right questions to unearth those details in incredibly challenging.
The amount of things that someone will give their time or attention to our suprisingly small
So much this.
wars aren't started over human-rights, they are fought when you f%%k with someone's money.
True. Right now amidst the pandemic, it turned out the farmers, medical people, janitors, delivery guys are the most essential jobs.
Ah, don't be so negative. I'm gonna do it or die trying.
> A good group of coworkers (for me) who legit really care about protecting these astounding natural resources. And a feeling that you're really making a difference and reaching people.
This feeling of 'feel' for a thing, its what I miss in tech personally. Companies offer a service, want a happy customer and make money that way. But a 'feel' for the actual goal and way its done usually lacks. Too many egos...
I think the industry is totally wrong about the type of activity that programming is. It's a creative endeavor, not a mechanical one. The best people are the ones who derive joy from it, not just a paycheck.
I end up looking at nature with both my old eyes and the cold scientific ones. A piece of wood, pale shades, smooth, is also a matrix of nanoscopic sugar fibers. It's odd to confront the two point of views. Same goes for butterfly wings, or flower petals..
About once a month I’d go to Sams in Idaho Falls, which was usually an all-day trip.
I’ve been up through Bozeman before. Beautiful area!
I have begun trying to find things I truly care about as a countermeasure to this fatigue, so far it seems to be moving in the direction of just helping with repairing and refurbishing used computer hardware. I know how to do it for my own purposes, it's less mentally taxing, you get to save useful stuff from going to the landfill and you will also help cut down on consumption. It probably helps that the results are immediate (broken device -> working device), but going this route will have a minuscule impact also on a larger scale.
I think people trick themselves into thinking that "changing the world" is their ticket to happiness. I think looking more locally is the key to happiness. Make your community better in some way and the results are immediate, and you get to be a part of something meaningful and present. If you become the local guy that fixes people's old computer hardware, then you'll be genuinely impacting people's lives for the better.
I feel exactly the same. I’ve had a great career within web development and UX design, in pretty significant ways, but it’s still not fulfilling and I’ve lost purpose in it.
I’ve turned my UX interest towards city planning, and I focus more on nature, farming, exercising. Whatever energy I have left I spend on a few startups.
Also, I’ve gone through all the medical and psychological steps to be a helicopter pilot (old dream) and I’m applying to schools at this very moment.
Looking to make the switch more permanent soon, I still have a day job as frontend developer.
Purpose and intention is all.
Careful with that, its one of "those jobs" that people flock to, but very hard to make a living in. A relative of mine did that, started rich, got his own helicopter, isn't rich anymore.
I find my work far more impactful, knowing millions of patients are being treated by my software in some way.
It is boring. So like you said, I just try to find an opportunity that could help, but it's hard to find.
A reason why I could not leave my job right now, is that it's well payed. That's a high risk when you have a family with kids.
At a startup, you get to have a large impact on the company so it definitely can feel like you're making a difference.
I'm curious, this is not something I've needed to know, but what would be Java specific to an answer?
If I was asked about deadlocks, I would say "always acquire resources in the same order".
I don't think that's the correct solution, unfortunately - see e.g. the dining philosophers problem.
Edit: or rather, you have to be very careful what the "order" of resources is.
I imagine it would take half a day or reading to remember it again.
So much of our mental state in programming has nothing to do with the code or our work and so much to do with the people we work with. I think regardless of whether you stay or leave the industry, you've gotta leave any jobs where the people are that toxic.
I don't really know the programs in the US very well. I didn't look at any when I was considering the field. Do you want to try to do a masters and then get into industry, or rather then continue with a PhD?
My best courses, I think because I was already scientifically/technically-minded, were the very math and technical based topics, like tax, retirement, real estate finance, etc, while the ones that I often had more difficulty with were things like family law and criminal law, for example, which were often much less intuitive and much more arbitrary-seeming to me.
Ultimately, law school was pretty easy for me overall. Certainly, I had friends and classmates who thought it was beastly difficult, though I suspect if they looked back at it now, most would say that it wasn't as bad as they felt at the time. It's different for everyone, right? Like anything else, how much you put in is how much you get out. I think that really probably anyone who can make it through an undergraduate program can make it through law school.
Nowhere near as many headaches as juggling all the moving parts in the Javascript web app ecosystem, which I'm doing for work right now (currently stuck on something right now).
This is a great quote, I'm going to steal this from you!
I had a go at our manager recently after letting two people do our tech test then say they were too inexperienced. We could have worked that out before wasting their time.
it's kinda depressing in a way, because coding was at first, something that pulled me out of the slump i was in due to a shitty upbringing. i really like writing code, but the industry sure does know how to suck all the fun out of it.
If you need a visa and work permit, it really complicates matters: I highly recommend acquiring European citizenship if at all possible. (I did, which had the side-effect of immersing me in genealogy as a hobby.)
The congressional recommendation is for entrance into the US Air Force Academy, which is a 4-year university.
If you already have your degree, you can apply for OTS (which is your initial officer training - I think it's 3 months long now) and a pilot slot directly.
Another option a lot of people overlook too is getting to pilot training via the Reserves or ANG. Those units can interview and hire you directly, and you'll go through the same training and do the same job with a lot less red tape.
I have some bad news for you. As you become a more senior developer you will spend most of your time interacting with people, and a lot less time just "sitting and thinking".
Depends on the job. There are employers who recognize the value of somebody who has broad experience, and who can/will do things that are necessary but not fun. There are also employers who only measure hands-on-coding skills, and/or who insist that everyone should be on a "growth path" even if they're already at a higher level than most will reach. Good people don't have to worry at the first kind, and very much have to worry at the second.
Our AA saved us countless thousands of hours each year. She was worth her weight in platinum.
In case anyone is curious, I've been able to live well on about $6000-8000 a year. I certainly eat like a king, since fruits and vegetables are amazingly cheap here. Otherwise my hobbies are inexpensive, e.g. exercise and sports, writing software for personal projects, making digital art, etc.
It's not for everyone, but I would have really struggled on a more conventional path. It's been my experience that working for someone else is really degrading, although I'm sure some companies are better than others.
I consider myself extremely lucky, as most of my neighbors here lead very difficult lives. In the poorer half of the world, life is extremely brutal and arduous for most people. It's very sad and I've seen things here that are shocking and appalling (and I am not faint of heart, after spending many years "hustling" in the US). The behavior of other expats here also leaves something to be desired, although at least it's not as bad as Thailand...
Cambodia is developing rapidly, but somehow I doubt that the kleptocratic government here will manage to turn this place into the next Singapore or Korea :)
Again the deadlines and lack of planning ahead bites. Look we just need this little feature now, it can't take long? And again, and again. You never get enough time to take a step back and re-evaluate design decisions (or, God forbid, plan ahead and do it right in the first place) and fix what wasn't done right. No, it's always this little feature that needs to be quickly hacked in, another branch, another special case, how it interacts with other past or future special cases is anyone's guess, and the code base that was already full of hastily hacked together barely-functional crap grows more and more poorly thought out crap. Tests? What tests? No tests, so if you dare go back and try quickly fix some poor design.. well, someone is eventually hopefully going to find out what you broke and give you a completely uninformative bug report. Updates? Well there's no ticket for that. And besides, something might break, because there are no tests. There's no ticket for tests.
Sometimes you might even wish that the whole thing would be discarded and done from scratch..
Well, the state of New Jersey is looking for programmers to update COBOL programs that were written 50 years ago, so you might be underestimating the sheer power of inertia in software development...
It's the same with how a lot of tech folks idolize farming. In reality it's a tough job with long hours and cold weather.
A few years ago they upped and moved to Wales and operate a cattle farm, they also home-school their kids. Mostly now I see their ads for pasture-fed beef on facebook. They seem happy.
My grandfather was a farmer and died after an accident cleaning something with gasoline. Sounds dumb (I don't know the details) but farmers tend to have accidents like that because the whole job is working with dangerous machinery, chemicals, and animals, and a "family farmer" has an incentive to take risks someone working for a corporation doesn't.
I remember a news story about a farmer who passed out from breathing something toxic, so his oldest son goes to get him, he passes out too, his wife goes...the whole family died like that one after the other.
Short-terms gains at the expense of long-term losses is a fact that has to controlled by the board of directors and the ridiculous salaries of CEOs has to be stopped. A rule must be put in place that the shares they gain cannot be used during their tenure and only used 2-5 yrs after leaving the post.
Founders bring in an MBA to run the company is like parents bringing in a Consultant to raise the children. You can never expect anyone else to care of the kids as much as their own parents.
I think that Google lost its way due to Eric Schmidt. Considering that [Page was forced out in 2001](https://en.wikipedia.org/wiki/Larry_Page#Changes_in_manageme...), he was away too long and Eric did his MBA-shit and screwed up the company. Page should have returned as CEO in 5 years instead of 10 yrs, it was too late by then. Now Google is Evil.
I feel that if someone like Page was leading Google and all the tech giants where lead by nerds like Satya Nadella & Sundar Pichai. PRISM & attack on encryption would not have been too strong. We need more founders like Elon Musk & Jack Dorsey. I hope someone like Sergey Brin advices the WhiteHouse on tech-business while Steve Woz or Richard Stallman advices on tech-ethics.
Mark Zuckerberg is a disaster, so is Bill Gates, Peter Thiel, Larry Ellison & all Steve-Jobs-like creatures.
Video: "McDonnell Douglas had used Boeing's money to buy Boeing" - https://youtu.be/EESYomdoeCs?t=468
Had a coworker say to a client, "I could explain it you but you're not smart enough to understand it."
Absolutly ridiculous and toxic individual.
I am too old to hang out with negative people, also too old for people who are only interested in making money. So I searching for a new tribe, I think outdoors people are the happiest bunch. I just don't know what can I do.
I always laugh whenever TechCrunch or someone runs a story about some hot shot university winning a programming competition because they implemented an algorithm the fastest or created yet another new app.
When in the real world, most programming jobs are making changes to a really large code base trying your hardest not to break other things. Not nearly as glamorous.
"That's great, kid. Now figure out why this build works on everyone else's machine but not yours. And then once the build works why the test suite throws a series of errors, one at a time, each new one appearing as you fix the last, when everyone else tells you it's green (though at some point you'll figure out they're all passing flags to disable parts of it, but forgot they're doing that). Oh we have some other things for you to do that are actual programming but you can't do those until you fix that. Oh and when you're halfway done Fred over there's gonna tell you you need to pull master because he just updated all the dependencies. Oh hey what do you know about code signing and app store distribution?"
I'll just say that my business was started by the owner in his farm's shop rebuilding/selling motors. When he expanded to doing controls they were like 3 employees and his friend was the electrician who they hired on. Since then the Electrician partnered with his Son-in-law and they train the majority of their guys right from their apprenticeship.
As much as I keep using "My company" throughout these posts I'm still just a guy in a programming/integrator role.
As long as you understand digital logic well enough you'll be able to grasp the concepts. Having more formal education helps but is one of those fields that isn't strictly necessary unless you're working in a specialized sector. My personal take is that Software is still playing catch-up in this domain to the rest of the world but its coming. Up until the last 5 or 10 years the software was mostly just running the facilities but now integration to the business environments is becoming a bigger and bigger requirements of my clients.
I've mostly become hands off on the PLC/SCADA systems at my company now because the requirement for software utilities to function within the control system for data collection, trending, reporting, etc. has become so so much bigger. I have clients that want to use OCR to track shipping containers throughout their yard, clients who want me to integrate their invoicing systems to the operations so staff can see the scheduled daily loads coming, designing unmanned kiosks for customers to key through when coming to site and a whole lot more things.
The programming languages are all defined in IEC 61131-3, and you can more or less use them interchangeably. You can use structured text for (clunky) text-based programming, ladder logic if you want to feel like an electrician in the 70s, or functional block diagrams if you like flowcharts. They each have pros and cons, and being able to use the different languages (with different paradigms) in a single application is one of the more interesting things about PLC programming. There are probably good textbooks for this, but I don't know of any.
PLC programs execute in a constant loop (scan inputs, execute program, set outputs), so basic programming problems (e.g. delaying execution of some function) often require some re-thinking on PLCs. Having a basic understanding of how a PLC actually executes your code is pretty critical. Again, there are probably textbooks for this, but if you buy a physical PLC, its datasheet might also explain this.
You'll need to connect the PLC to some hardware for it to do anything meaningful, so having a basic knowledge of electronics would be useful. If it's just a hobby, you probably wouldn't need to know any more than you would if you were working with an Arduino.
There aren't that many major PLC vendors, so to get started, you could by an entry-level PLC from one of the big players (e.g. Allen-Bradley Micro800 series). Admittedly, I haven't looked at PLC options in 5+ years so there might be better options these days. Unfortunately, PLCs are pretty pricey, and even a small one will probably set you back a few hundred bucks. There are probably simulators available if you're just curious about PLC programming languages, but I don't have any experience there.
Right now I'm trying to hack my treadmill with an Arduino unit so I can control it with software, and I'm learning a ton. Plus it's not a huge investment.
The guy who got me my job was a MS CS, my employer sought him out because they needed a guy for internal software projects. I did a hackathon with him and he hired me as his replacement when he moved to the gaming industry.
My degree is Software Systems Engineering, most of my coworkers are Electrical Engineers or some form of Electrical Diploma.
As long as you have a decent foundation in Networking and Digital Logic you'll be perfectly suited to program PLC/SCADA...
So, "systems integration" job involves making systems interoperate as seamlessly as possible, by doing so adding new features, or reducing weaknesses, like for example vendor lock-in (sadly this is not always possible in industrial automation, see below). So the concept applies also to other sectors - and there are indeed non-industrial automation SIs - you might want to add terms like "PLC", "SCADA", "ICS" (industrial control systems), "industrial automation", "controls" to your search.
As for my own experiences in the (industrial automation) system integration industry, in Italy:
As I said before, and said elsewhere by TheCapn, vendor lock-in (in the form of employing equipment by one company, and their tooling, and their services, etc.) is a thing. But at the same time, your job is to make heterogenous systems interoperate! So most certainly you'll have to work not with your usual tools. Personally I have found that the most successful companies rely on some vendor (and their support, and their expertise), but are very open with working with, and know, the others. Obviously the more you can develop autonomously the better; it is a trade-off between freedom of action and access to more credible (branded, battle-tested, supported by big company etc.) solutions.
Knowing when to add one part to the system, or where you can just expand one of the already existing parts in order to accomplish the task is fundamental. Too often I have seen superflous parts added where it would have been enough to extend one of the existing parts a little (This is often due to vendor lock-in, you cannot work on some equipment, so you put another device by your vendor of choice).
Another thing I love about my job is the "Jack-of-all-trades" mindset required. Also human skills are important, especially here where the industry is mostly composed of little shops: sometimes you just have to understand enough to call the right specialist and contract that part of the job to them. I started as more of a computer person than a engineering one, but I managed to gain some expertise over time thanks to this knowledge transfer.
Edit: System integrators as sibling says, I second that!