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.
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.
Genuinely curious as I'm open to a move.
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.
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.
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.
Not sure if I would make more doing webdev, but am not in US so it would be normal middle-class income anyway.
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) :)
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.
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.
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.
Linux might "shifts unpredictably" too (looking at you Gnome ;) but at least the owner can't ban you.
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.
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.
How is that different from MVC patterns in desktop development?
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.
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.
It doesn't stop me from moving forward (it hasn't yet) but there are those occasional days...
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.
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.
You have no competition from abroad and no shortage for demand, like seriously, do you know any area that's lacking sick people?
Not to mention status.
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.
https://www.google.com/search?q=being+doctor+sucks&oq=being+...
and here is another one about being carpenter sucks http://www.bbcboards.net/showthread.php?t=828471
and this one is about how hard is it make money from woodworking https://thewoodwhisperer.com/articles/why-i-dont-offer-woodw...
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.
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.
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.
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.
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.
Which, to paraphrase Douglas Adams, has made a lot of people very angry and been widely regarded as a bad move.
The existence of Dilbert says you're wrong.
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.
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".
Meeting users, finding out about their problems and working out how software can solve them?
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).
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.
Oh, and it's real plumbing...
You get to talk worth a bunch of people in sales and still exercise your problem solving skills.
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.
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.
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.
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.
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)
- 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.
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)
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.
Is this not a contradiction to you?
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
You cannot simplify something by adding overly complex layers of abstraction on top of it.
Are they not understanding costs and scaling?
But I think it would be a terrible idea to be reliant on just one server because downtown, latency are real-troubling issues.
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.
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.
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.
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.
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.
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.
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.
This is my biggest concern about the state of my profession. It might not be the right analogy, but it gives me a house-of-cards type vibe.
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.
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
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.