Amen. Modern software development is frankly kinda sucky. The old days pre-2000 were arguably a lot more enjoyable. Today it's just digital plumbing and dealing with all sorts of issues that are not creative. The sheer complexity is frankly absurd as well. I've thought about moving on from software many times, and I know many who have. Just because you can do something doesn't mean it's best way to spend your short life. Not to mention that sitting in front of a computer all day is not the best use of one's body.
I think a lot of the pre-2000 programming was a bit more enjoyable because most of us were not programming for the web and actually using platforms that were designed for application development. The web is a very poor fit for what most people want designed.
My guess is that it has nothing to do with pre-2000 (or non-web), it's just that people enjoy a rote activity a lot more at the start of their careers when things are still new and interesting. When you've done 50 web sites, the 51st isn't nearly as exciting as the first ten.
I got burned out badly by a string of gigs that effectively came down to helping clients fight some self-inflicted business complexity and connecting yet another stupid website to yet another stupid database, but instead of quitting the industry I decided to slowly fire clients that wanted that kind of work, and build my own products. It took a while to get things rolling since I did this as a gradual shift, and financed it by doing smaller and smaller consulting gigs, but I strongly recommend that as an alternative to quitting altogether to anyone who feels the pain outlined in the the original post.
For me, immersive coding is an activity that brings a lot of joy. Building software is the closest thing to modern magic - you turn ideas, keyboard clicks and caffeine into something that people actually use; potentially making a positive impact on someone's life/work/day.
By building my own stuff, at my own pace, I rediscovered the joy of coding. As much as it was in pre-2000 work and before web.
If you build your own stuff, then there's nobody to tell you to connect a RSS feed to a RDBMS system. For me, the key to keep programming enjoyable is to be able to control the pace and business requirements. In my case, this translated to focusing on business-to-consumer products at a very low cost to the consumer, so I'm in charge of the product, not the customers. With B2B, especially at a high single customer price, people feel entitled to ask for stupid shit, and whoever manages the product feels compelled to accept it. With low average lifetime customer value, saying no is very easy. I assume that's not the only way to keep full control of the product, but it worked for me.
This.
All SW pplz I work with that ultimately experience this I recommend to spin up their own project in order to channel their own creative energy into.
> The web is a very poor fit for what most people want designed.
The web is an application development platform that's split into two pieces with a critical security boundary in the middle, which causes basically all of its problems because every web app has to be a distributed system. If you can constrain what you want to build to either a set of pages and forms or a single client-server app that sits in a sandbox and uses the browser as its display buffer, that makes it manageable.
The default (and indeed only) language for the web not enforcing type safety is also a handicap. People will eventually build a shell inside it where compile time type safety can be mostly enforced.
On the other hand, the alternative is worse: a proprietary platform which shifts unpredictably and from which the owner can ban you.
On the other hand, the alternative is worse: a proprietary platform which shifts unpredictably and from which the owner can ban you.
I'm not sure that's the only alternative. I would actually describe the web as shifting, unpredictable at the behest of one company with the controlling browser and search engine.
I cannot tell if this is a joke or not. If it is not, there are entire industries out that that depend on software development that are NOT web related.
Embedded programming i.e. automotive, industrial, aerospace.
The problem is they pay poorly in comparison to web dev but are a lot more stable long term.
I have done almost 0 web development at 3 of the FAANGs and am quite satisfied with the pay. I don’t think web would have paid better. I’ve done OS type work (system daemons, libraries etc), embedded, mobile, etc.
Then there are people who work on compilers, image recognition, AI, browsers, server work of all kinds, etc etc. the variety, depth, and scale of work is much larger than web and can pay better as it can require a deeper level of expertise. I’m sure there exist web developers who make more than people who work in these spaces just as the converse is true. I don’t think it’s possible to say which pays more. Web dev may be an easier avenue to break into things with a low amount of experience though.
That's cool but the thing is FAANGs are absent in most countries outside of the 2 US coasts and a few major tech hubs in Europe. Everywhere else, most of the SW industry is just CRUD/build-an-API-for-this-shitty-JSON type of work.
Compiler/AI work and the rest exists where I live as well but it's strictly in academia, not in private companies and has a high barrier of entry as it's mostly PhDs or post-docs and is also paid poorly.
Web dev work you can find in pretty much any major city in the world.
For example, in a city nearby to me there's a major VR/AR headset company which I'm pretty sure solves really interesting problems. The issue is, what happens when you want to change jobs but want to stay in the same city as that city has no VR/AR hub so there's no other demand for specialists in this specific niche.
Don't know why this was downvoted. As someone living in Europe, this comment is exactly why I stay in my cushy, very well paying and super boring and frustrating backend job. In the backend world, there are dozens of employees who would be happy for me to come work for them, while market for interesting work with similar is very shallow here (a very limited selection of FAANGs, what else?). I don't want to move to the US (mostly because the US visas seem designed mainly for people in much worse situations that I currently am) and the European market is just too shallow to build any more advanced coding career - unless you're ok with low salaries, little savings and coding until you're 60+ years old. I don't love coding that much.
I'm from Poland. Of course, everything depends on the conditions of the retirement that you're comfortable with. For me, it's 5000 PLN ($1300) a month till I'm 85 years old + paid-off house. The 5k PLN should be very comfortable assuming no children, which I don't want.
Assuming ultra-safe investing to only protect the principal (i.e. no return above inflation) and wanting to retire at 40, you'd need around 2,500,000 PLN ($650,000) to achieve that + buy the house to retire in. Let's call in 3,000,000 PLN ($780k) in total.
If you look around a bit, as an in-demand (meaning - chasing the latest tech fads, maybe some tech lead experience as well) senior backend developer, you can get take home 250,000 PLN per year on a long-term (meaning usually multiple years) contract basis. Assuming 60,000 PLN of that goes to living expenses, it takes less than 16 years to save up the required 3m PLN to retire. And, if you're really hot in terms of CV, you can take home much more than 250k per year. Also, there are options to contract in Western Europe or get six figure remote US job (this one's harder than the other options) for more pay.
I was giving net numbers. Assuming I pay 19% taxes in Poland on that remote job income, the range you've given translates to 240k-310k PLN net.
Also, I myself happen to make over 400k net PLN per year, but I didn't want to use myself as an example, as I only know a handful of people who make that much - so it's perhaps not something you 100% can count, whereas the 250k per year number is absolutely attainable by any senior dev with reasonable/modern CV and good negotiating/job hopping skills.
would you mind naming the German companies paying 90K+€. I know quite a large number of people working in really big companies in Germany, which are considered very well-paying, and while 70-90K is certainly standard, anything else requires taking up management roles, which are not necessarily remote and not so many.
That’s true. Outside Silicon Valley there’s probably not as much non-web dev work. I still think it’s out there. Banks exist everywhere and my brother has worked in a European bank for a long time. FAANGS also have offices all over Europe (London, Paris, and Berlin) doing non-web work and even before COVID if you were senior and talented enough remote work was an option. Now remote work for all companies has simplified drastically.
I have worked on mobile OS, PC software development, web, machine learning problems, and now VR. I’m not particularly worried about getting pigeonholed because any company I’d want to work for can recognize the value of a generalist - I’m not going to solve hard domain-specific problems but I can architect the SW and plug all the pieces together and dive into domain-specific problems when necessary. To be fair though I’ve heard this concern from other people who want to move back to Europe, but the framing was different - how do I explain to them what I do in a recognizable manner.
However some places are 10, sometimes 20 years behind into best practices, be that in coding, tools, PM practices, innovation, etc.
There's a reason a lot of mobile phone companies closed down (as an example).
As much as I like the area I don't miss staring at a hodge-podge of C/C++ code done in weird style that might or might not have been auto generated and will as many memory bugs as possible.
And how many of those are going to let you in without at least a decade of experience in the specific domain, and real world experience with whatever guidelines or practices they use (i.e. MISRA for X).
Maybe all of them? I worked in Automotive right out of university and they trained you for everything you need to know including C programming tricks and MISRA and they hired pretty much anyone with generic programming knowledge as long as you were willing to learn.
I'd imagine embedded being relatively far away from that kind of work (that's until you've got to add WiFi and/or IoT-cloud web interface - and happen to be one of the only few software people in the company).
I can't speak for GP, but I do behind-the-scenes networking stuff for an enterprise ISP.
My team's responsibilities include configuration management, fault management, and certain KPI monitoring. We don't need to write webapps for that (though we do integrate with them) :)
Not OP but I've focused on C++
, computational geometry and graphics programming for over a decade. That field is still quite thriving. You just need to work actively to find the right employers - and they are not as common as 'more regular type' of programming gigs.
Not sure if I would make more doing webdev, but am not in US so it would be normal middle-class income anyway.
Games, embedded, desktop apps, "infrastructure" software (OSes, networking, orchestration, developer tooling), mobile apps (depending on how picky you are about using APIs being "web"), ...
Pre-2000 you actually had a hope of understanding everything your computer software was doing. These days there's no hope, everything is too complicated for the best of minds. You'll only ever know a small portion of it. Maybe that doesn't bother some people, but it's a big demotivator for me. I miss being able to truly understand my computer.
Now I feel like I'm always spinning my wheels. Even worse, I'm more capable of learning and understanding than ever, but the amount I need to know is increasing faster than my abilities to learn it.
I don't see why this should bother you. This isn't just the case with tech. Doctors work with humans that they don't have a hope of understanding even 5%. I have done web development my whole working life and I couldn't tell you how the browser actually renders a page. I just know the interface to communicate with the browser and let it be someone elses job to work out the next part.
It's human nature. You spend your life being an expert at something but as you get older you also get to watch it slowly slip away. That sucks, I don't care who you are.
It doesn't stop me from moving forward (it hasn't yet) but there are those occasional days...
Application development on the web is much more pleasant than what we were doing on any pre-web platform, and possibly even now.
I've wanted one-way data flow (React, Elm) forever.
We just have rose colored glasses because we were younger, dabbling, all tech was new and non-web tech was just what was available. And we confuse that for some sort of obvious tech superiority. I'd say those were the worst times for application development, not the best. Makes me wonder how many people actually worked on a production client application back then.
Application development on the web is much more pleasant than what we were doing on any pre-web platform, and possibly even now.
The platform that the web was designed on (NeXTSTEP) was much nicer to develop on. VB programmers had a much easier time than web development now. The web was designed as a document delivery platform and it continues to show how hard it is to get basic functionality going.
I think there is a lot of truth to this. I started programming in C++ and then Java. But for about the past decade I've done web dev. Recently I've found myself back working on some non-web projects and it's a breath of fresh air in many ways.
True, a lot of that could just be the change in scenery. But I really appreciate that just about everything about the platform exists in order to create software, rather than trying to jump through the bizarre hoops that browsers created. Not dealing with Webpack is an absolute god send.
But with all that said, I think wasm has the potential to bring us sanity again. And if not wasm, then possibly tools like Rome will make web dev a bit more sane at least.
Okay so it seems most people here on HN hates their jobs? That's sad but i think its not unique.
Web dev was especially insane during the IE era, more than today.
Most people just hate their jobs, it's nothing unique to the tech sector and i would argue that tech is still a pretty comfortable niche to work in compared to most other fields.
Doctors have extreme debt and work crazy hours, teachers get way too little, manual labor is very tough on the body, journalism is dead etc. - it seems to me that everyone i know just "has a hard time" because of information-overload, 24/7 connection, lowered real wages etc. I.e systemic issues at the core.
That said i also want to get more zen, cut back, transition to more resilience - but tech is not uniquely bad, and while i also have dreams about transitioning to more entrepreneurial roles or "moving into nature" - i still can enjoy "the chaos" of modern development / design - and this really is the key i think: to accept the mess, the imperfection, that no one knows what the hell they are doing in most sectors.
Drop the fake self imposed yuppie consumer self policing and perfectionism mindset and just accept that we live in a crazy part of history where everything is obsolete after 5 minutes, so just do what you find acceptable, try to scrape some money together and remember to appreciate the fact that at least you are in a sector where it's pretty easy to be an entrepreneur if you want to - compared to a lot of other people who have no idea about how to get started or jump ship.
Years ago if everything went awry i would stress out, be afraid of angry clients, be angry at myself - today i relax, i am interested and laugh at the complexity, and if someones angry i don't care, the world is crazy, we are monkeys living in a world not made for our biology, it's future tech dystopia/utopia right now, no one is able to piece something together that works for a long time anyway, it's mostly not my fault, but i still try to do my best. This mindset has helped more than a lot.
> Okay so it seems most people here on HN hates their jobs? That's sad but i think its not unique.
Internet comment sections have always biased toward people who hate their jobs, are unhappy with their lives, or are otherwise trying to escape into virtual distractions.
Not everyone fits this description, of course, but the negative comments are over represented relative to what the general population thinks. Never interpret any internet comment section as representative of the norm.
Growing up, my internet commenting activity was highest when I was least happy with my jobs. It was lowest or even non existent when I loved my job. (Currently I enjoy my job, but I have 10-20 minute periods of time to kill on my phone daily for other reasons now).
Also, don’t forget that HN comments are heavily biased toward cynical interpretations.
> Drop the fake self imposed yuppie consumer self policing and perfectionism mindset and just accept that we live in a crazy part of history where everything is obsolete after 5 minutes, so just do what you find acceptable, try to scrape some money together and remember to appreciate the fact that at least you are in a sector where it's pretty easy to be an entrepreneur if you want to
If you hate work, becoming an entrepreneur is the last thing you want to do. Dealing with grumpy customers directly will only make things worse.
The majority of people I meet in the real world have no problems separating their personal identity from their home life and well being. For some reasons developers are particularly bad at mixing their work and their personal identity while chasing perfectionism. I assume it’s because we grew up in front of computers and many of us spend our leisure time on computers as well.
Even the smallest bit of separation of work and personal life can fix this. In other words, learn how to disconnect from technology and do literally anything else for a few hours per week. We don’t need to go all in on quitting the industry to get a break.
Important point. I do remember the general level of cynicism and depression being several magnitudes lower 10-15 years ago though - on early HN/Reddit for example - today it seems everyone hates everything and we are 1 year from collapse every year - and i don't personally disagree that we have more than enough important things to tackle, but the "i have given up"-tone has become widespread even in MS news that i don't check very often anymore.
I miss excitement, enthusiasm and humor - and yeah the world may be plummeting into tech dystopia and climate collapse but throughout time aid workers, firefighters, war time doctors and myriads of other people have kept their humor, interest and skills despite chaos around them and so should i.
About the entrepreneurship, yeah i agree but i still think "knowing how the internet works", how to make a website and how to learn by yourself is still a pretty good "extra skill" you get to have as a tech worker than can easily work as a stepping stone into new fields.
Doctors have guaranteed work and income (the debt is only true in the US), they can walk into any hospital to get a job or open their own office, their status is protected and the job cannot be outsourced abroad. Have a look at what doctors make and what engineers make, the H1B salary data is a good sample, you will see that engineers are very pale in comparison.
Teachers have guaranteed job, good income and many benefits. Salaries are usually set nationally not adjusted per location, it's not great to live in the most expensive tech hub but it's pretty good everywhere else in the country.
Yeah, this. As a doctor, the older you get, the more valuable you become(usually) while as a SW engineer the older you get ... well you know it already.
You have no competition from abroad and no shortage for demand, like seriously, do you know any area that's lacking sick people?
Well, the grass doesn't seem to be much greener elsewhere, and it seems most of folks here are confusing hobbies (things you do at your own pace for fun) with work (things you've to do for others, at their own terms, for money/material stuff).
If you google "being doctor sucks", you will find very similar complaints (see link below), and it seems some doctors were envious of nurses, but I didn't bother googling "being a nurse sucks" because I know what to expect.
here is an interesting take away from that last thread:
"I have built maybe 6 pieces I really liked in the past 10yrs. Thats someting you’ll face in any craft business. Making crap you don’t like."
Well, welcome to modern capitalism, adulthood and work. The underlying assumption here is life supposed to be fun and easy, it is not, it has never been and perhaps it will never be.
Yes both teachers and doctors in the US are protected from competing with immigrants through licensing schemes. They are also protected from competition due to the fact that they can be paid mostly from government accounts.
I think I wrote this somewhere else too but in my opinion one of the issues is that software development is one of very few jobs that can “not suck”. Many of us are pulled in for that promise and ultimately many will end up in plain boring jobs like everybody else.
I was just starting pre 2000, but it was not much better. I had to deal with a legacy COBOL system. I had to write C++. VB6 was actually pretty great for doing quick plumbing. And C# + WinForms which succeeded it was also great. But in the end, I’m still solving problems today, just like I was back then. I still enjoy programming as much or more than I did then. Some super tedious things have gotten substantially easier, too, such as building telephony apps. I had to do things like that pre-Twillio, and I don’t miss it.
In the early 1990s and early 2000s web development was a nightmare. Having to test not just in different browsers, but different versions of different browsers, because they had substantially different behaviors. There was no "Inspect element", JavaScript debuggers were entirely absent or incredibly crude. Getting a decent looking web page to render and function correctly across all the different browsers you supported was a real achievement. You spent most of your time fighting browsers, not making actual progress.
>Not to mention that sitting in front of a computer all day is not the best use of one's body.
You can say that about all desk jobs(even bus drivers) since they all sit on a chair the whole day but at least in some cases we get paid better and have more free time to take care of ourselves. And unlike the bus driver, I can leave work or take a coffee/toilet break whenever I want.
And labor jobs that don't require sitting are usually even worse for your body long term(landscaping, plumbing, gardening) and sometimes pay worse as well. If I'm coding, I can constantly shift my body position if it gets uncomfortable while a plumber/gardner is just stuck in that straineous position until the job is done.
Maybe athlete or personal fitness instructor is the only job I can think of where you earn money while staying in shape.
Not all desk jobs, well certainly not all jobs where you are always sitting down, cause the same long-term strain on the eyes, however. A bus driver is at least focusing on the distance for most of the day, which is much more natural than staring at a computer monitor and its artificial light and small text for hours on end.
Personal trainer is fairly bad for your body and wellbeing as well. Its basically split shifts since clients want training either before or after their work. So sleep is an issue.
If work was easy then we wouldn't need to be paid for it.
>If work was easy then we wouldn't need to be paid for it.
"work" in its natural sense is indistinguishable from play. Animals play as a way to practice "work". Lions etc play hunt. The problem is that "work" in modern times has little to do with what we are genetically-inclined to want to do.
We are genetically inclined to sleep, find food, and have sex. Work in any civilization pays money, which allows you to buy food, a place to sleep, and resources to attract a partner, so I disagree.
Pre-2000 it was also plumbing, the difference was that you were mostly plumbing someone else's homegrown cruft. Occasionally you got the chance of building some framework by yourself, probably to the dismay of the developer who had to maintain it after you left.
I like today's plumbing better.
Honest question, what is a great career pivot for someone that's been in development all their life? It seems that nothing pays as well as building software, unless you go into management which most developers would enjoy even less than digital plumbing.
A very common pivot I've observed and am part of is to brewing craft beer (with the caveat that maybe that's a local/regional thing). It sure as hell doesn't pay as well as development, the hours are longer, but... you get to drink plenty of great beer! Something about brewing seems to draw the same sort of personality as development - there's a fair degree of technical knowledge and skill demanded, an attention to detail, and yet a creative aspect, too. Then, too reformed/recovering developers can always find a small refuge in automating some/some aspects of the brewing process.
I run a website that helps people. I still deal with software, but on my own terms. If I put the same content on a cookie cutter WordPress site, no one would care. Now, programming feels a lot like woodworking: a deliberately inefficient way to do something, just because it's fun.
> Now, programming feels a lot like woodworking: a deliberately inefficient way to do something, just because it's fun.
Now that is a standout line right there. It perfectly describes some of my own personal projects. Sometimes—oftentimes—they go nowhere but I had fun.
One such task was developing a secret Santa system in python with an auto mailer and “paper” backup while in Hawaii last year. It took me part of a morning during breakfast before we went out for the day. I refined it when we got home. There were others already out there and it did nothing more then putting names in a hat, but it was fun. And it’s reusable. And it had the added benefit of needing no moderator—nobody in on the secret.
The metaphor of a wood working project just seems to fit so well. Nice one.
Start your own company and build something you believe in. Few other professions are as well equipped to start their own business. Except for real plumbers, maybe.
Hate your job? Maybe it's the job, not the profession. Developers have an enviable amount of mobility; use it.
Maybe you aren't taking care of yourself in some other way? Sleep, diet, exercise, possible clinical depression: these are all things to try.
Perhaps you're burned out? It's 2020, that's a very real possibility. There's a whole literature on what to do about it, and "abandon your career" is dead last.
Both of the preceding paragraphs have a "talk to your boss" component. Don't think that's a good idea? Great, you definitely have the wrong boss, GOTO LABEL "Hate your job?".
Good reasons to stop developing software: a) there's something else you really want to do, and you have rational confidence you won't starve, and b) you're ready and able to retire.
Bad reasons to stop developing software: literally anything else.
My plan is to bank enough money from software jobs to be financially independent at a high standard of living (I'm well on my way to that). Then afterwards, just retire and do all sorts of hobbies without trying to make them into a career or earn career-equivalent amounts of money from them.
If you're currently on that trajectory (i.e. you're able to save a large percentage of your income every year) then I'd recommend it. If not, then yeah, you might need a second career if you want to get out of development soon. My plan is not to need one.
Find a smaller enterprise system integrator in the field you're familiar with. Titles such as Sales Engineer, SE, Solutions Architect. Usually the compensation plan is a 70/30 or 65/35 split between base and commission. Once you cut your teeth and are building out your professional network, then looks for an ISV to be on direct sales...
I have a cousin who is a travel welder, he is young and single. He is making over 100k but he has to relocate for work about every 6 months. It's a great gig for a young man, but ones lifestyle would have to fit how the work comes to them.
Business/System analyst is a very different role than a UX researcher.
In the agile world, the analysts were basically replaced by product owners, but I assume there are still places where they exist. I've done it for a while, it's quite cushy job if you're good at talking, writing, presenting (same as product owner but without the "ownership" part, so much less stress).
As a statistician now working as a machine learning engineer, my response is “definitely not”. It’s all the frustrations of software development, but on top of that you are now frequently dealing with clients/colleagues whose requests are now not simply impractical, but usually defy the laws of mathematics and probability, and an ever present pressure to put out work that amounts to fraud. Analytics have a lot of value to provide many organizations, but it requires planning, foresight, and a willingness to sacrifice a little now for the sake of a payoff in insights later, which very few organizations have, in my experience. So it essentially becomes a buzzword and people throw worthless data at you to wave a magic wand over so you can tell them what they want to hear. Doing so would essentially require lying, so instead, we would perform the awful, worthless analysis, it usually didn’t provide much insight, and we would include a litany of disclaimers about why the little insight it did provide wasn’t al that trustworthy, which would just disappoint and infuriate the people we were working with. We would also provide detailed guidance on how to execute moving forward to make the process much more valuable the next time around, which without fail went in one ear and out the other.
So essentially we became figureheads. Our work rarely was used in any significant way or provided much value, but we were kept around because the company wanted to be able to tout its “data driven” culture.
It was so bad that at one company I worked for, they had the data science/analytics department start putting on a yearly intracompany conference on analytics that became a huge deal. One year they got Stephen Levy, the author of Freakonomics, to be the keynote speaker. At one point he shared a story about how he was consulting with a company on their marketing, and they found that they had accidentally not been running ads in a particular metro area, and were able to leverage this to act as a control to assess the materials effectiveness. But when asked to intentionally do something similar moving forward, the company balked. It was so close to home that my colleagues and I wondered if the head of our department had fed him the need to talk about it. And yet, not a single thing changed at the company during my time there.
I currently work in a role much closer to software engineering, and I have all of the same problems described by the person in the original post and that many are describing here. But I consider it a strict upgrade over my time working as a statistician.
Seconded. I work as a data analyst in medical research (bioinformatics postdoc). I am often introduced as a statistician, even though I'm not, because I can do a bit more than a t-test.
The situation in research is exactly as you describe -- we are figureheads who are put into place and highly pressured to confirm whatever hypothesis a PI wants for their latest grant or paper. They would never ask us to commit fraud, only perhaps to "double check" an analysis 10 times until it shows what they want to see.
If I were working for a company, this would at least be understandable, as companies don't even have a theoretical commitment to truth and scientific integrity, and there are no real consequences to a faulty analysis.
But it is immensely galling to see in research. Here we are, paid by the public to supposedly pursue truth and improve human health, and instead the job is to constantly be finding ways to avoid fraud and fabrication without pissing off the collaborator. The result is, as you say, useless analyses if the analyst is honest, and fabrications if they are not.
There is absolutely no doubt in my mind that this is one of the key reasons the ROI on science has declined drastically in the last few decades. It makes me laugh bitterly every time I see (increasingly frequently) political exhortations for plebeians to "trust the science".
Thank you for sharing this, these are fair comments. My experience has been more positive, but I see the truth in many of your points. For what it's worth, I have always been involved in controlled experimentation, and never anything related to ML or modeling. Our biggest issue is usually ensuring we are getting accurate counts of events, and when I see all the challenges in that, I wonder how anything more advanced ever gets done.
I suppose, as with anything, your mileage may vary. And in this case, your mileage will depend largely on your organization. In my experience, most organizations are not equipped or prepared to do what is necessary to make most analytics efforts worthwhile. But in the instances where this is not true, working as a statistician is very rewarding. If you have had a more positive experience than I, more power to you, and kudos to you and the people you work with/for.
It seems like the only realsitc pivots are going to be adjacent business type positions, and even then there's a chance of a payout depending on company / position, etc. Like you said though I would hate these more than I do the software jobs.
Having been there per-2000, not really. It was not appreciably simpler, most of it was really plumbing (but maybe you were making up the pipes as you went along), and there were assholes abound.
I also feel that back then demand massively outstripped supply which created its own kind of stress as I felt I was working a lot more with much less experienced devs who just got into it because it good paying work, but they didn't really enjoy it.
Nowadays there seems to be a lot more software engineering skill around generally, and a big yay! to github and Stack overflow, and the thousands of developers who freely provide code/frameworks and knowledge to give all developers a leg-up.
It's good to no longer be in the thrall of the large software vendors (sun/apple/MS) to provide frameworks, tools & documentation.
There was a thread about what you learn when you get older. One thing I have learned is that nostalgia is bunk. It is just selection bias and bad memory.
Music was not better back then, people were not any more polite, educated and rational, and trying to fix bug in some big-ball-of-mud visual basic codebase on a 640x480 screen without access to Google was not any more enjoyable than debugging an overdesigned React application is today.
If you enjoy a challenge and have a great team in a well-run organization, developing is enjoyable, then and now.
There are still many many many good projects. Even with Web technologies. However in my observation Web stuff brings in a lot of people doing things they don't understand even fundamental things. Observing JavaScript or Node forums is generally a pain. Regularly there are people asking basic questions and all they want is the next library stick into their pile of things they don't understand.
Sure, one doesn't have to be able to write an operating system from scratch and there is value in high level libraries not requiring to reinvent the wheel all the time, but basic understanding of HTTP or such should be there for web developers as well as basic understanding of data structures or algorithms (while computers are fast enough and data sets small enough that so many people get away without knowing for quite some time)
Some memories of pre-2000 that were not that enjoyable:
- Most of the teams were not using SCM, but connecting to the same network drive and daily copying the whole folder as a backup. For those who did it was CVS (ugh). Even during the 2000's the best you got was SVN.
- So many Visual Basic projects
- For web projects: deploy by copying the files with FTP, getting shouted by a colleague because you override the hotfix he did using SSH and VI on the production file
Now there were good projects back in the day, and there are good projects today. You just have to take control of your career and not just follow the flow of the first company who hired you in your area.
Also remember that you can pivot within software development, there are so many different kind of software, you just have to accept to get out of your comfort zone.
My fingers, of course. Are you seriously comparing hard physical labour to typing on a keyboard? One of those is back-breaking and seriously dangerous to personal health, depending on what you're lifting/operating. The other may earn you RSI or carpal tunnel syndrome if you're not careful. There's a whole world of difference between these two.
This is a very narrow view. I've probably practiced software development longer than almost anyone on this thread - right at 40 years. I'm still a practicing software engineer, doing "enterprisey" software development in Java. Still interesting, lots of challenges, and yes, lots of complexity.
That said, I've done a lot of other things over my career, and one reason it's stayed interesting is the variety. If I wanted a change right now I'd probably look at small embedded systems work.
With all the AI, IOT, scientific, real time control, and robotics software being developed these days, I think there are a lot of interesting directions available!
I'll add a shameless plug for Julia, which I think could become a major general purpose programming language, and which makes for some enjoyable development!
(On the "best use of one's body", I have some sympathy there, but "balance in all things". Or just up your rates and work 32 hour weeks. heh)
I miss the old days from time to time. I will say though that everyone once in a while, you still get to do something "hardcore". It can still be fun, although it's not like it was. I do think we have as a field have done ourselves a disservices. Not to do the "back in my day," but I will say that with making many mundane tasks becoming easy, it's easy to slip into the mindset that there are no really complex things going on under the hood that sometimes you still need to tackle.
A lot of people just starting out don't see this immediately and it is often too late in a project when it appears. This isn't their fault, and it's sad people outside of the field don't recognize this at all. I think it puts a lot of undo stress on new people when non-developers expect them to build things effortlessly and quickly all the time and when something doesn't work, the developers ultimately blame themselves, because they've been led to believe it was easy too.
I remember fondly tasks like writing my own collections and logging pipelines. It wasn't as efficient as connecting libraries but it was more satisfying when you built your own way from the ground up.
I don't miss pre-2000 days when an admin would bounce the Linux servers and not bother to add a startup script for our JBoss or Tomcat servers in their service startup scripts. Our web servers would disappear for no reason from time to time and we would run around chasing the cause.
I feel the same way. The plumbing required has become so complex these last few years (if you use new technology).
10 years ago we uploaded the server/backend binary to a VM, installed postgres/mysql and configured nginx/haproxy as a reverse proxy/ssl termination.
Now, if you want to deploy a modern SPA while using some buzzwords like k8s and devops you need:
* complex frontend build process with things like webpack which have huge config files
* Build docker images for all components (each microservice, frontend, etc)
* Build zips for deploying your lambda functions
* Configure docker repository for storing images
* gitlab/bbpipelines/githubactions/whatever pipeline configuration for automating all this building
* Setup a production-ready k8s cluster
* Write the kubernetes yaml files for describing your services
* Figure out how to hookup a cloud load balancer to your kubernetes ingress
* Figure out letsencrypt certificate renewal and make your ingress aware
* Figure out CDN configuration (and invalidation) because apparently we don't serve the frontend from the backend server anymore
* Some network config so your lambdas can access the backend
* Since we're using microservices we're going to need some service discovery, and depending on which SD solution we choose we might need to build this into each individual microservice (Consul)
* And probably lots more as I haven't even touched service meshes, or JWT authentication, caching and cache invalidation
All this for something that can be handled by a single server. This constant waste of time and energy, both the devs' and the machines', is what bothers me the most. I'm constantly reminded of the quote "anybody can build a bridge, but it takes an engineering to build one that barely stands". Maybe I should go into games or embedded.
none of that is required. chasing fad based development would make you think that it is, but there are a lot of successful products that aren't burdened with all this cruft.
What you're complaining about is basically that certain features have become simpler to the point that it's feasible to have them in more situations--and adding those features adds a certain amount of complexity.
There are three overlapping issues in what you talk about:
* Moving from bare metal servers to VMs to containers, with cloud deployment optionally thrown in there somewhere.
* Moving from hand deployment to continuous integration.
* Moving from monolithic applications to microservices.
This systems you just described are virtually infinitely scalable.
Lambdas expand infinitely, k8's can easily autoscale stateless docker containers out forever.
All for starting under a 500 dollars a month?
150$ for EKS, lambdas first X million are free, and are cheap as hell from there, cloud LB is 50 bucks a month, etc.
Not to mention all the other benefits that containers provide Infrastructure as Code, no dev environment incompatibility problems, etc..
That is UNHEARD OF historically.
I think you may have some rose colored glasses or I'm just idealistic and naieve, but it's insanely exciting what's possible for a small enterprise nowdays.
The problem nowdays imo is management. The business people have taken over tech instead of tech people running things. And people without knowledge of tech, running a tech shop always makes the job suck.
To me, no. A significant amount of the complexity that I generally deal with is “accidental complexity” caused by the current general approach of mixing up a ton of random dependencies of unknown quality or pedigree and the subtle flawed interactions between them. Coming up with ugly workarounds is creative I suppose, but ton in a sense that makes me at all happy.
It's not a contradiction to me. Things can look like plumbing from the surface, require no creativity at all, and run some ML model below the surface that only a handful of mathematicians can understand. The upside: powerful tools that just need to plumb in place, the downside: god help you if it breaks.
Not at all. Plumbing can be very complex, digital ot otherwise. It's not as easy as "connect input to output and done", there are constraints on the system that need to be accounted for, and meaningful design decisions to be made especially with respect to expected volume.
But that doesn't mean it's creative. Plumbing, like web development, may have all of these complexities and constraints, but typically there is really only one solution that can be considered "right" and your job is to go through the steps and do the math to find it, there's not a lot of room for creative thinking, despite the complexity of the problem.
If it pays well for as a job, what else can you ask for? Unless you are independently wealthy, how can one be so picky as to complain about the nuances of software development at the tooling/dependency management level? Sheesh
Look at the broader job market. Compare the pros n' cons of any career against software development. Compare the barrier to entry, demand, and other market conditions. Software dev comes out pretty well.
I don't think it's unreasonable to want to be paid to solve software problems creatively. A lot of people get in to software for the creative challenges rather than (or as well as) the money. The problem is that most software isn't actually doing anyting new so it doesn't need much creativity to build. It just needs people to glue together the right combination of parts that have already been built to solve generic problems in order to solve the specific problem they're making software for. That's usually pretty boring.
I will complain about whatever I want. I will not force others to hear/read it or agree with me. But I will do this and I will not care about other describing it as a picky and entitled.
You must be in your twenties. Software development can be a uniquely depressing kind of work. All the complexity, which can be compensated for with youthful vigor, can eventually become so overwhelming and exhausting that you will need a break.
Money isn't everything. If you can do a job that pays less but doesn't depress you as much, you probably should go for it. You won't keep your job as a developer forever anyway, age discrimination is very real in the industry.
At the top of the requirements list of any job, is How Well It Pays.
Having comfortable amount of money frees you to to enjoy other aspects of life/personal passion/family building. That's how the global economy works, for the time being.
For a job that doesn't require overtime, consistent schedule, a solid 9-5 type position. What is there to complain? Looking at the big picture, the economy is filled with people who are barely getting by, laid off due to pandemic, and working overtime or multiple jobs, to generate enough income in attempt to sustain life.
Having a "comfortable amount" of money means nothing if you're burned out to the point where you can not enjoy the rest of your life.
If "I no longer build software" doesn't resonate with you, you just haven't "been there". Again, you're probably in your twenties. Don't expect your rationalizations to last you into your forties.
If you're still a developer at the end of your forties, chances are you will lose your job and your spouse anyway.
> That's how the global economy works, for the time being.
Curiously, people in the less affluent countries report being happier. Also, in the US, most of the money you earn goes into someone else's rent: Your lease or mortgage, your car, your insurance, your loans, your taxes, and so on. It's the American Dream!
> Looking at the big picture, the economy is filled with people who are barely getting by, laid off due to pandemic, and working overtime or multiple jobs, to generate enough income in attempt to sustain life.
If you think those are your two options, that's fine. I'm not telling you to quit your job.
The trap is that the youthful vigor leaves but you still need the money. I find myself growing tired of the constant churn and needing to learn new stuff to keep up with what's going on, and then pretending I know enough of what I barely learned to be able to talk to a room full of clients about it, but I need the money (I am nowhere near the valley so I make a mnerely average amount of money for where I am in life) so what can one do? Just keep plugging away because I can't not have the money.
Money isn't everything, but without it there isn't much that you can do to sustain yourself. I'm privileged to be where I am today, and I keep this at the forefront of my mind as I see people struggling in jobs that are all about physical labour or the service sector, if they have a job at all (or are on zero-hour contracts). Choosing a job is something that only select people have as an option, in the grand picture.
The old days pre-2000 were arguably a lot more enjoyable.
Yes. 1 monitor running the editor full screen, no constant interruptions from IM, documentation in books that actually was accurate, programming the actual machine not piecing together other people’s crapware libraries.
Frankly the tools really sucked back then. Build systems and IDEs were awful. Just go play with an autotools-based C project sometime to remind/education yourself. Visual Studio 7, horrible. No mainstream refactoring IDEs to speak of. C++ compilers across multiple platforms were horrible at standards compliance consistency, and you could barely get a working STL, practically everyone wrote their own string and containers classes. CORBA -- some nice ideas, bad in practice. Java was a dumpster fire of EJB/J2EE heavyweight, with slow an d expensive application servers. Expensive Oracle installs dominated the database world, with the rest shored up by MySQL installs that were only partially ACID. No CSS HTML, pre-HTML5 so a mess of nested tables to make things lay out properly. Most sites were a pile of spaghetti code "type 1" JSPs or ASPs or really bad PHP sites making database calls and queries right in the page source, horrible to maintain.
Then the serving or hardware infrastructure, in the world of web stuff... forget about cloud or even reasonably priced hosting services. Most shops, even small ones, I worked at ended up having their own sysadmin team managing an owned or rented fleet of expensive Sun server hardware, etc. Closets full of hot and pricey hardware etc.
And as for languages... I learned Python in 95 or 96, back when it was pretty new. But almost no shop would have considered hiring me to work in it. Erlang, Python, OCaml, various Lisps, Smalltalk, all that good stuff all _existed_ but pretty much nobody would ever consider letting you write production code in such "weird stuff" until Ruby kinda broke the barrier. Perl was everywhere, but "serious" shops started to push Java, but Java was frankly awful back then around 2000. As I allude to above C++ was painful to work in at the time. C# didn't really exist yet. Visual Basic was all over the place, but was frowned on for "serious" stuff.
I think people forget how dominant and awful "enterprise" development is/was. It's still out there, but HN in general doesn't seem as exposed to it. Back in the late 90s, early 2000s, the accepted "enterprise" stack was the aspirational crap _so_ many shops adopted... it was for that time what "microservices" and "bigdata" other dogma are today. People didn't need it, but they thought they did.
Frankly, everything took longer to get done. Simple things are quicker to get done now.
Nah, it wasn't a particularly good time to be doing software dev.
I guess if you were employed in the right place, and were lucky, you would at least get to work on pioneering work building the tools and infrastructure that we now take for granted and complain about. Being at a Google building Bigtable etc. or Sun Microsystems working on the innards of Java etc. back then would have been a dream job. But the vast majority of us never got that chance. We were plumbers, too, just with really crappy pipes.
> Just go play with an autotools-based C project sometime to remind/education yourself.
Funny you should mention autotools. It reminds me a lot of webpack, especially in the way nobody[0] really understands how it works, but you search around for examples and copy/paste what works for you.
[0] a hyperbole; i'm sure someone does, just as I'm sure some people dreamt of M4 macros back in the day
Oh it's so awful; but I recently was exposed to a project where some of the leads were trying to defend it as a reasonable tech choice. It really isn't. Not in this era. Most people never even used it correctly in the first place.
Totally agree, and let's also mention Stack Overflow and the plentiful learning resources on Youtube etc. In 2000, I was a teenager trying to learn C++ and the Win32 API, and when I got stuck I got really stuck. These days, the amount of resources to help you with a problem or learn a new technology are infinitely higher which removes one of the most frustrating aspect of software dev.
It wasn't autotools per se that was horrible. It was the the fact that you had to pollute your system with random libraries, often no longer available from the operating system vendor repositories. Docker has been a lifesaver with these older projects.
I’m in desktop development (not games, not cross platform - old school document based apps) and it’s bliss. I do 95% actual programming algorithm/data structures/domain problems and only a tiny bit of wrestling package managers, deployments and other plumbing.