That is an exaggeration. Don't forget that most "3rd world" countries also have their own pornographically wealthy elites blocking out the top 1%. The differences are in the distribution of the middle/bottom tiers. A remote job gets you at most into what should be a confortable middle class position.
From my experience, writing software in 3-rd world country is a reliable way to get out of the poverty. Some example numbers for Kazakhstan: average salary for many low-skilled labour workers is around $100-$200 per month. Average salary for junior software developer is at least $500 and you would quickly reach $1000 and very skilled developers might get $2000+ per month.
The same is true for Russia or Belarus or Ukraine, AFAIK. Wages are even higher there.
And I'm talking about building software for internal clients. Outsourcing or remote work allows for even higher salaries.
I'm not entirely sure why the market works this way. It's not like any random software developer can go remote and compete with the rest of the world. But it works.
I'd really be interested to learn whether Indonesian situation is similar or not.
> It's not like any random software developer can go remote and compete with the rest of the world
This is actually becoming more and more of an option. At my last (small) company, we hired several individual remote developers from various parts of the world that most would consider "third world".
We were introduced to them via referrals from contract work done elsewhere, and we did a paid trial period at first.
Not all of them worked out, but the ones that did were quite good, and we were paying them an excellent wage for their cost of living.
> > It's not like any random software developer can go remote and compete with the rest of the world
> This is actually becoming more and more of an option.
To do this though, you generally have to know how to market yourself, put together proposals, gather requirements, design and project manage, on top of coding. Not every coder is good at this or wants to be.
This is not necessarily true. In a large enough organization you can have a lot of that done for you, and you just basically "pull tickets" (to be reductive about it) and deliver the work.
You have to be able to interview well of course, but do design and project management? I'm not talking about a freelancer who delivers an end-to-end project here, I'm talking about hiring a remote developer to join an existing team and deliver features.
It would be a bit higher in Indonesia, but not too far off. FWIW somebody earning $1500 USD/month, living in Jakarta, would be very comfortably middle class.
There is a lot of people from US here on HN so you should clarify that you talking about salaries after tax. E.g $1000 in Russia would be the same as $2000 in the US since employer pays 33-49% of salary as taxes.
In my home town called Rostov-on-Don (10th largest city in Russia) I have friends who make $2500-3000 after tax for their software engineer and devops positions. Some of these people are far from being a rockstar developers, just have well-paid positions at large companies. Average salary is somewhat lower, but it's still good money here since living costs are low.
PS: Family of 3 can basically live there for $1500 / month with rent, food and entertainment and if you single even $600 is quite sufficient.
Another interesting fact: if you're freelance software developer in Russia who work remotely for western company and register as entrepreneur then your efficient tax rate at most is 8% for fees and taxes. Then let's say 1% extra for banking and accounting, etc. So you basically keep more than 90% of income.
And there is even lower tax rate options available if you work alone and earn between $10,000-80,000 / year. You just pay fixed amount of taxes every year for special "patent" which cost e.g $400 / year in my home city. Then efficient tax rate gonna be like 1-5% depend on how much you earn. Though unlike when paying 7% of income this might require more detailed accounting since tax department can always ask you to show some documents. Officially "patent" allow you to pay $400 just once for income up to $600,000 / year but obviously in real life you gonna get some tough questions from tax department.
In any case tax rates for freelance software developers in Russia are very very low. Also unlike what western person might expect all government services are available online and accounting is no-brainer because Russia have some of the best fintech in the world.
TLDR: Russia's IRS/HRMC equivalent digitized VAT collection (similar to sales tax). Basically every 90 seconds all tills/cash registers across the country report back the sale to the taxman, so you don't even have to manually submit any VAT returns.
Russia started with 20% tax gap between revenue due and revenue collected (while e.g. UK is at 9.1%), and now after this they are on 1%.
My understanding it's almost real-time tax reporting with millions of tills acting as IoT devices sending data up.
Russia also have instant payments for consumers between all major banks which are free for first ~$1400 / month (100,000 RUB) and it's should be soon available for businesses as well. It's all run by central bank.
For fintech there is Tinkoff bank which is more advanced than Monzo / Revolut / N26 / etc as well as two "virtual" B2B fintech banks that even do accounting for entrepreneurs on their own. And to be honest even Russian largest state-owned Sberbank is far more advances than most of institutions in US and EU.
So as long as your business can't be forcefully taken away and there are no political risks it's quite comfortable to be freelancer when it's come to taxes.
As a developer in a third world country, I have to disagree that it is a reliable way for everyone. Not everyone has the programming skills, communication skills, confidence to reach out and negotiate for jobs above cost-of-living wages, and there is immense competition. Prospective employers will start out assuming you're not as good as programmers in the first world, you will get lowballed and the odd unscruplous employer will skip out without payment. It's a hard slog; not impossible if you're lucky enough to be born into better circumstances than others and have enough support to go the rest of the way; but definitely not something that anyone can do.
Out of poverty, but probably not into the incredible wealth that American software work can generate. For example, see the commenter saying their house is paid off and they can live off passive income. I’m not in a third world country so I don’t know for sure what salaries are there, but I find it hard to even imagine having so much money!
From personal experience moving from South America to Europe for a developer position: Not true.
A developer making even a small salary working remotely from a "third-world" country is still making much more money than the average person. Just as an example, on my first remote position I was making as much money as each of my parents who were on 10+ years careers in corporate sales. It's nuts.
Of course the quality of life outside work made it worth moving to Europe, but to this day I still wonder if I should move back to stay closer to family while keeping a great salary.
I'm the OP on that github issue. Put it this way: I'm building furniture for money, but I can't claim to be making a living at it yet. I'm fortunate to have a supportive partner and that we've moved to somewhere with a lower cost of living than Boston.
We ran through a budgeting exercise a couple of years ago before I made the career change, and besides housing, our single biggest expense is health insurance.
I've always lived cheaply, and it's let me take advantage of opportunities as they come up (I paid for school with money saved from working in software), but it's still a big transition going from two white collar jobs to one. I'm grateful that my partner and I both value the flexibility we get from living frugally.
This made me laugh, because I actually am planning on making a transition to woodworking. My house is paid off, and I can live on a fairly small income that I can probably generate mostly from passive income. If I can actually supplement that with building furniture, bonus. If not, then I still get to build furniture.
Of course there is, within a defined timeframe. If I bought 5-year government bond last year, then this year it's 100% passive income to me. I don't have to do absolutely anything in order to get it this year.
Serious question, didn't anyone else' school have shop class? I was a college prep, NHS, cross country, all AP core courses kind of guy, and I took it all four years of high school.
Or was there some kind of restriction on taking it at your school? Or maybe your parents didn't let you?
Genuinely curious as to why someone with a professed interest would not have taken shop?
There was a special program at my school that gave you more shop classes. They did everything to discourage me from joining it, because it's where they shoved the struggling kids. I really enjoyed it, and really can't see why it was just for struggling kids.
This was the last year before the school reform. They ended that program. In fact they ended shop class altogether.
It was over 20 years ago for me, and we had shop classes. It's amazing how heterogeneous the US school system has been, and continues to be apparently.
It was only offered in certain types of secondary school. Mine was considered 'posh' and so we wore blazers and learned latin, whereas other schools didn't have blazers and offered 'trade' subjects.
Shop was heavily discouraged for college-track students when I went through high school, both by the administration in terms of guidance counseling and timing of the classes, as well as through heavy social reinforcement by peers.
Perfect example of why so many people hate high school. "Avoid this thing you're interested in because it won't help your career prospects. Also it's a waste of time."
Pretty much this at my high school as well. They had a shop class and auto repair class. I really wish I had taken those (I did take shop in middle school though).
Largely we had to choose -- take the college prep classes (AP whatever, languages) OR trades classes. There was definitely classism -- "trade classes are for poor kids". =(
I would much rather schools require things like: financial literacy, and building/repairs/cooking. They are lifelong skills and very useful. There's no reason its an either or proposition.
I don't think mine did. Maybe. I remember hearing one classmate mention shop once, but maybe I misheard him or he was joking or something. If we did have a shop class, it wasn't advertised, I don't know who taught it or where the shop was.
Mine did, but in my sophomore year, they were cut due to budget constraints that failed to meet a referendum. Industrial tech, foods, automotive, and welding all got the axe. Music and sports only stuck around because of the boosters. The Cisco and CAD classes stuck around because the local community college sponsored them, which is how I ended up where I am today I guess.
'Design & Technology' (woodworking, little metal, textiles, food, etc.) is on the curriculum in the UK, so I did that. Had to take one variant at GCSE, I did electronics. (Having waited practically my entire school life to have a lesson that was electronics and only electronics!)
But it irks me to this day that the language I opted for, Latin, was dropped that annus, because not enough others signed up.
You can't please everyone. (I did like wood/metal work though, just not as much by far as electronics. I'd be much more interested now though - I watch an awful lot of it on YouTube.)
I wish I had taken anything but latin in HS. Only reason I did it was because of colleges requiring foreign language classes, and by the time I had graduated, I didn't have any plans of going to college.
Add me too. Somehow the joy of seeing things being built from raw materials in the real world equates that of complex software being created out of nothing. But the finite element of the real world has that extra satisfying element: no dependencies to update, (mostly) no security patches, generally less maintenance, and it lasts longer.
True, for immediate things having this ability is a godsend. But as software and bugs "dry up", it can get just as hard to chisel out as physical material.
Funny, I want to move to a farm and keep goats and chickens (I am a Systems Architect). I still want to code in my spare time, if only to just pass on the skills to my offspring.
eta: Admittedly I did a bunch of design/architecture consulting and teaching tech courses for the first decade or so to pay for the farm. Consulting is a good way to keep your hand in, and teaching serves as a great marketing platform for the consulting work.
Have you ever worked on a farm? If not make sure you understand exactly what it entails. Most people who've never done it vastly underestimate how much work it is.
That said, a small hobby farm with goats and chickens doesn't take much work. But going on vacation can be problematic.
You might find that what was a hobby is not as much fun as a job.
I mentioned this to an actual "rock star" developer London session musician with a doctorate in music who moved to development after teaching themselves after an accident.
I have a job writing software, and in my spare time I write software as a hobby. The job is much less enjoyable than the hobby, because in the hobby I'm doing, by definition, only things I like.
I think any hobby is less enjoyable when you have it as a job, since you sometimes need to do things you don't like doing or aren't interested in.
There are lots of people who generate income from some type of cottage industry hobby. Woodworking, candles, jewellery, preserves, decorations. If you’ve got a bunch of equity to fall back on (in the form of your home plus securities), then you’re in a much better position to escape the pressure to do unwanted work.
The above is one of the major reasons I’m such a fan of basic income. I think we’d see a lot more cottage industry shops, used bookstores, cafés, and the like, if we all had basic income to cover our basic needs.
Heck, even software developers can get in on the game by working on their own passion projects. Whether it’s indie gaming or retro computing, a new photo editor or CAD software, or perhaps a new sort of application never before seen. There’s just so much cool stuff people can do with computers when they aren’t trying to build a startup aimed at a big exit.
I won't move away from my main job for a while, but I do want to move to a lifestyle where I grow all my own food. It's a very interesting problem, of whether a single person/family can be mostly self-sufficient on food while spending only a small part of their day growing the said food.
Lots of biology, perhaps a little bit of tech thrown in, if it helps.
I thought about this as well. I think that I'd be mostly okay on the vegetable front but I don't think that I'm up to plucking chickens or raising animals. I would also need a bigger yard!
I think you easily can, the difficulty comes with whether you can be happy with what you're limited to, so more a question of personal tolerance for lack of variety in order to be happy with your food, IMO.
Damnit, that was my plan too, only I have no passive income, so customers (or contracting) would be important. Hopefully this trend doesn't continue to become a glut of Silicon Valley woodworkers...
As a warning, you're eventually going to run out of places to put that furniture if you don't sell some of it!
I'm the OP on that github issue, and while my partner and still have some IKEA furniture I'd like to replace, we also have a couple of pieces of mine that don't fit readily into our lives that we just have around the house. The chandelier on my website[0] was a spec piece built for a show at the Wharton Esherick Museum[1]. It didn't sell at the show, and I don't really have a place for it. It's now sitting in a crate in a corner of our bedroom.
Likewise, the Federal period shelf clock[2] is without a shelf and is also sitting in a crate until I get a chance to mount a shelf for it. How hard can it be, you ask? Surprisingly difficult in a log cabin. If the pandemic ever ends and I get my workbench out of our living room, I might have a place for it!
Sounds like a humble brag to stroke his own ego. Wood working grunt work is virtually infinitely less intellectually stimulating than software grunt work. If he’s working for himself now, good for him but the comment just comes off as superfluous and pretentious
As you've laid your judgement of your woodwork on all woodwork, and thus have concluded that all woodwork is less intelligible than all software building. I know this is an interpretation, and not verbatim. But it might be sensible to be a little bit less strongly opinionated on the levels of work being intelligible, as its just an opinion, and would not consider it a fact.
The work I do on software I consider as relatively intelligible, but the woodwork I do, requires as much of my brain as the programming, just in a whole other area of my brain.
Your harsh judgement on the matter is just rather irrelevant, it works for him, it tickles his brain, and was just an honest response on github, no need to get trolled here on HN.
>virtually infinitely less intellectually stimulating than software grunt work.
Really why do you know that? Sitting the whole day in front of a screen compared to create and finish (yeah that's a real thing in woodwork) a Project sound's much better (and like everything it has it's up and downsides)
I think you misinterpreted my comment. I do wood work and I create software. Wood working is intellectually stimulating, however, wood working grunt work is very much not so. I’m fairly certain that writing maintenance scripts or plumbing between old APIs is more interesting than running a bandsaw or a belt sander 10 or so times repetitively.
You keep saying this like it's an objective fact. It's not.
Running a bandsaw 20 times might sound to you like the epitome of boredom. To me, a (poor) woodworking perfectionist (i.e. I'm always trying to make my work furniture-grade, but usually failing) it's an exercise in constant concentration and error-correction. To a master, it can be the epitome of mindfulness.
An activity being “mindful” is not the same as an activity being “intellectual stimulating.” I do not consider software engineering mindful in any significant way but I do agree with you that repetitive manual labor is quite mindful.
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.
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.
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.
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.
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".
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).
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.
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.
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.
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.
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.
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.
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.
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.
>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.
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.
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.
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.
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.
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.
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 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.
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.
ok snowflake. You put your opinion on a public forum. Do not respond with such an attitude. In the context of this discussion, no one cares about your personal feeling when confronted with a feedback of being picky and entitled.
We simply want an exchange of opinions from both columns.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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).
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"), ...
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) :)
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 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.
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.
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...
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 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.
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.
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)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
> 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.
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.
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.
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.
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)
Yeah. Obviously there are those who enjoy it, but this line of work is kinda the pits. Best you can do is try to be well compensated so you can hopefully stop doing it soon enough.
This is what Ive shifted to as well. Trades are much more useful in life, because you can't pay to get a job done right, and paying anyone else at all is far too expensive.
For most people you have the reality of needing a 40 hour week job to live, and there's plenty of people who spent the 4 years to get a bachelor's in compsci and nobody cares to hire them. Software is volatile, you can spend plenty of time making something that will not work and won't be at all useful.
Reality is the software job market sucks, and people have to learn how to build their own houses or else become stuck as rent slaves.
I disagree. I really enjoy woodworking, but it's definitely not to save money. Same for working on motorcycles. The former is rendered useless by economies of scale, the latter by the cost of my garage and tools.
Woodworking is apart of a series of skills that transfer to other useful trades. Hard to make buildings if you don't know how the basics of how wood works.
I didn't pick up woodworking to build a house. If that was my goal, sticking to programming would be the fastest way to get a house built. My ability to make money from programming far exceeds my ability to save money by doing anything else. If it was about the money, I wouldn't rent a garage, fill it with tools and spend my weekends building subpar furniture for twice the cost (a common woodworking trope). I'd just have it shipped to my door.
I probably average to about $50/hour programming. Last time I hired someone to fix something in my house I ended up paying about $350 for 1.5 hours of work. Physical materials was just a low voltage cable.
I had a plumber quote me $1300 to replace a $250 part that just screws on/off. I did it myself in a few hours.
Since I work on salary, one of the best ways for me to get more money is to save mine by not paying overpriced contractors to fix things around my house.
That's of course assuming that you are already skilled and equipped enough to do the job yourself. If you're starting from scratch, you'll end up saving below minimum wage by doing it yourself.
Besides, if you're already working 40 hours a week, the remaining time is much more valuable, because it's relatively scarce. Not everyone is comfortable spending their evenings doing extra work.
Okay, good for you, as I said in my original post the job market for software is not generally that good, and the vast majority of people work low paying jobs.
I used to work in a kitchen for a while. My back hurt most of the time and I always had burns or cuts somewhere, but I was definitely way more happy. Mentally for sure. Also the feeling of building something, I feel like peeling a potato is more enjoyable than shipping modern frontend.
Add me to the woodworking ex-developers. I built a website that pays the bills, and now I have a lot of time on my hands.
I am finishing my first piece of furniture today. It's pretty scary to work without an undo button. The physical world isn't just instructions, but movements. A little twitch can ruin a cut. A clumsy movement can dent a piece of wood you spent an hour sanding. You truly experience the meaning of "measure twice, cut once". Resources also feel tangibly limited. You can't just spin up another server, you must drive across town to buy more lumber.
I still enjoy coding though. My passion for it returned once I could do it on my own time, without stakeholders, sprints, meetings, deadlines or even schedules. I sit down and work until the coffee wears off, then go do something else. It's a hobby again.
I don't think programming is the probkem. Anything you do 40 hours a week for other people will get to you just the same. Programming is a pretty sweet gig, all things considered.
Hit the nail on the head. Work is work and it drains passion out for most people. Obviously not all cases, but at least I feel of you are looking for purpose and joy from work you may be looking in the wrong spot.
Agreed. Loving something and it turning into a real job with all the added fluff/protocols/whatever (things like talking to customers, having to do marketing, having to meet deadlines and such) will suck up everything you think you love about it and make it feel bad once it's in the real world with actual constraints and dependencies. It's no longer only you and it, it's no longer exploring and playing in the sandbox.
From what I've heard from other sources, it's kinda like what people call being a grown up.
Count me as one switching my "hobby" from programming to woodworking (even with the astronomical lumber prices these days). I started with some outdoor tables, and now I'm building a woodworking shop in my garage... and LOVING it. It so much more satisfying than figuring out another distributed TX compensation mechanism!
But, I also don't want to start a business doing woodworking. The last thing I want are clients yammering for "seven red lines"; this is something I'm doing as a hobby.
I may offer-up a few furniture items on a local for-sale app or a craft show app... but I will try and resist the urge to create a better local craft show app, or a wood inventory/cut-list app, or a simple CAD app, etc.
"I built a website that pays the bills, and now I have a lot of time on my hands."
Okay.... I assume you're not going to talk about this because then you'll have so much competition you won't be able to pay the bills anymore, but do you have any generalized background information about this?
> "This guide contains affiliate links. When you click those links and buy something, I make a little money. The income allows me to work on All About Berlin full time. All my recommendations are genuine. I want to keep this website useful and neutral."
What you really need is some level of exclusivity, if you can drop ship someones stuff into a different market or bring a new customer base to it. If 50 other people are doing the same thing it probably won’t work.
A decent portion of our business used to be dropshipping onto Amazon against others that were doing the exact same thing with the same terms. Margins obviously ended up tiny and the whole thing was at the whims of Amazon. Glad we don’t do that anymore.
As a current CS student on his last year, I've heard this a lot and it's taken some time to come to terms with. I've always seen people saying they can get work down by their work, which was really scary to me at first. How could I ever become tired of the think I've loved most since I was 8?
Yet, this happens to everyone, including me to a small extent during my last internship. I think everyone can grow tired of anything given enough of it, and I think coming to terms with that is easier for some than others.
I've mentally prepared myself to branch out into different pastimes, and for some reason, it seems we all land on wood working.
The problem with programming for a job is that you don't get to do it on your own terms. If you really focus on it and have a bit of luck, you can align your job with the stuff you wanted to do anyway, but even then every 40 hours is probably 30 hours of not particularly interesting work and 10 hours of the stuff you loved when you first fell in love with programming.
After the way they went after Bosch, I have no interest in ever buying a SawStop. Good for them for making safe technology, but shame on them for going after someone else who made better technology. The world needs safer options for tools like these, and being litigious bastards helps no-one.
I've heard that SawStop's patents are expiring soon, so it seems we'll have some competition in the next 5 years. In the meantime, since there are no other saws which protect your fingers from being sliced off, it's the best insurance policy for a software developer who needs them the most.
For those transitioning from programming to woodworking, if you don’t understand how to use your table saw, you’re not supposed to design and build your own table saw because you think you can build a better one.
This made me chuckle and then suddenly realizing that you caught me: often enough, this is how i(t) work(s) . E.g. "i don't understand (crypto) algorithm $XYZ, fuk it, i'll write my own crypto!"
Yes, heed the scary warning of the complete stranger on the internet. You might want to quit the hobby altogether. I heard that there was risk involved. Eeks!
You may enjoy Shop Class as Soulcraft by Matthew Crawford. It made sense of the permanent vague anxiety I've always had while working in a digital medium.
I went the other way into programming from the trades.
Sometimes, especially when I read about people leaving this industry to go work in the trades it makes me nostalgic and miss working with my hands and building real things.
But I also have enough bad memories of shitty work conditions and waking up sore day after day to give me a gut check to stay put for a little longer.
> I don't think programming is the probkem. Anything you do 40 hours a week for other people will get to you just the same. Programming is a pretty sweet gig, all things considered.
Turning my hobbies in jobs killed off a lot of fun I used to have. I think it's pretty universal and why it should probably be more common to switch industries a couple times at least through your career to keep things fun and not stay in a burned out mentality forever.
I also went from residential/commercial framing and remodeling into systems engineering/sysadmin. There are moments that really stand out on both sides, as you said. I distinctly remember packing the tools up one day and thinking about how the second floor of that house wasn't there that morning. It was a good feeling that has stuck with me for 15 years. But I also remember the days our crew was trying to eke out a few hours of work with a hurricane coming in because we needed the money. We had the walls and roof mostly up on a beach house so we could do some interior work without being directly in the rain. However, the end of one of our extension cords, the one running the skil saw, was sitting in a puddle of water that completely encircled the cutting bench. I remember being told to unplug it to pack up and having to move it out of the puddle with the handle of my hammer since it bit me a couple times.
I think what it boils down to is that, generally, software engineers/coders/sysadmins like to build things. When we don't get to build the things we want, the way we want to, it leads to a desire to get into woodworking. It's building things; its success is purely merit-based; and it's building the things that you want to build. I wouldn't recommend anyone go into construction (especially not commercial construction a la Office Space) from coding. It's joy is fleeting and infrequent and it ruins your body.
Framing seems a bit like a race to the bottom, because it's invisible to most people. Lots of software gigs are the same. Furniture is the opposite, and maybe some software is too
Yeah I did the same. I went from being an avionics/aviation electrician to college and then to being a software engineer. I hated being in the elements all the time so I wanted to have an officer job. Overall it's been good for me but I do miss working with my hands more.
> Turning my hobbies in jobs killed off a lot of fun I used to have.
Yep. I haven't really worked on any of my hobby projects like I had before.
> I think it's pretty universal and why it should probably be more common to switch industries a couple times at least through your career to keep things fun and not stay in a burned out mentality forever.
Isn't that years of education and work to start at the bottom again? If one has a family to support doesn't seem terribly feasible.
I've done over 10 years in the trades, and now 10 years in dev and am coming to the close of this chapter. I'm not entirely sure what I'm going to do, but I've been looking at a few projects that would be an intersection of the two.
I'd like to have another couple careers before I retire. The best part of a career is learning, getting it, then doing something as a journeyman and looking at your work and thinking, 'I got it'.
Welcome to this beautiful hobby! I'm sure you'll love it for a long time to come (as you said, it helps to not _have_ to do it for 40hrs a week).
I want to add to your description and say that the design part of the work can also be hugely satisfying! I found that there is something similar to software engineering: you can make it as simple [1] or complicated as you want, but there is something magical about finding the simplest solution that gets the job done.
Consider posting some photos on the woodworking subreddit if you make something cool!
Thanks :) I take little credit, because nowadays a lot of this is very achievable to learn with youtube and a bit of patience.
It's really incredible how much tacit knowledge transfer is made possible because of youtube. Definitely one of the purely positive aspects of the platform and the internet in general.
> It's pretty scary to work without an undo button.
sawing wood these days too I cannot keep laughing alone in my beard thinking how software people just don't understand how the world used to be and how much had to be designed to work before trying .. there's no way back, or to be precise, every wrong turns costs dearly.
> I built a website that pays the bills, and now I have a lot of time on my hands.
It's also pretty impossible to build a website that pays the bills indefinitely without maintainence or upgrades. If your website becomes popular enough to pay your bills you WILL eventually have competitors, as well as new mediums of technology, and you'll have to constantly keep up to date.
I'm a software developer by trade. I have a lot of woodworking experience by choice. I am a strong believer in that every developer should learn how to work with wood, or metal or other physical materials that require you to slow down and think about the next step.
But then I also believe that technical interviews should consist of putting software developers in a woodshop (experienced at woodworking or not) with a bunch of power tools and telling them to build anything they like. Those that still have all their fingers attached we automatically hire. Everybody else we write a glowing reference so they get a job with our competitors.
I work with wood as a hobby. It's interesting how creating basic objects or furniture is actually really easy.
But making those things really well and flawless is so very, very difficult.
For example, I can whip together a new drawer, no problem. But making that drawer fit perfectly on all sides and open and close perfectly smoothly. Now that takes a whole other level of skill.
And don't even get me started on paint and varnish.
I would like to see a tool to view the level of contributions(money, time, etc) to other projects (tech or not)of people requesting features to define a line of moral urgency.
Strangely enough, to a degree I envy this guy. I've been at my current job for over 8 years and up until a few months ago I was pretty happy. However politics caught up and I decided to leave. At the moment I have a few offers on the table, one of which is from a company somewhere in the FAANG realm. Senior software engineer, awesome conditions, very generous paycheck, lots of benefits. So tempted by all this I said I'd take it. A few days later I got an email from a third party company, which had been tasked to do a background check on me. Which is fair - employment history, criminal records, education history - sure, I can understand that. However I got really suspicious when I saw their form and how much detail they required for what are otherwise simple checks. I decided to investigate the company before I move forward and it turns out their background checks involve a lot of... Background. As far as digging through social networks and message boards and pulling comments and likes on things which can be considered "inappropriate" and "offensive". That alone is enough for me to turn down the offer and move on with the next one. But looking at the extreme alternatives in this scenario, I take chopping off my finger in a heartbeat - at least I get the chance to keep my pride and dignity.
Totally off-topic, but the automatic blade brakes on modern table saws are really cool. It runs a current through the blade, so when something moist like your finger or a hot dog gets too close (maybe using capacitance?), it automatically drops the blade and instantly stops it with a single-use brake mechanism. Better to destroy the $100 blade-and-brake assembly than to lose a finger.
Completely dry them first, cut them, then let them soak in water overnight. Can't guarantee they'll taste 100% the same, but you get around buying dedicated hot-dog cutting hardware.
These saw brake systems aren’t on “modern table saws”. This system is branded and patented and only exists on Saw Stop table saws (no affiliation). If I recall correctly, the inventor took the tech to the big saw makers when it was first in invented and was turned away, because of some combination of he wanted too much money and they didn’t want the liability of marketing a “safe” table saw. So he started his own company.
The tech is truly something incredible. It uses a disposable cartridge with a shotgun-sized charge to ram an aluminum matrix into the bottom of the spinning blade if it detects current (oily skin touching the blade closes the circuit). It stops it in thousandths of a second and your left with a nick instead of maimed. It ruins the blade and the cartridge. You’re out ~$150 if you trigger it. Small price to pay for keeping a finger.
Huh! Thanks for the correction. I was under the impression that it was more widespread. I forget the brand of the table saw I used most recently, but I do know that it has that feature.
Saw Stop is the original one. Bosch does have their own version called Reaxx, though it drops down through the table. They don't sell it in the United States due to patent issues with the Saw Stop version.
Those videos show up in my Youtube feed the last few weeks too (although these saws have existed for many years now), but I still wonder - why do they always use hotdogs in the demo videos? Can't they find anyone who's willing to risk a finger, or is it something much more boring like OSHA rules or something?
>or is it something much more boring like OSHA rules or something?
I think it's more like if you understand the tech well enough that you are willing to risk it you likely understand how not to stick your hand in a saw in the first place, don't see the value add and don't wind up working for these people.
Also there's probably a pretty big social aspect of it. The guy willing to stick his hand in the saw for the demo video is gonna get shunned by most of the kind of people who want to work on tech like this.
Technology can fail, so why risk it? I'd not trust my fingers to someone else's design either, no matter how good, though I'd be happy to have that system installed on every table saw. But we'll have to wait until the patent expires. Even table saw blades that are protected like that should still command healthy respect and anybody that wants to show off that capability is throwing the dice. It's a bit like driving into a wall at 50 Kph to prove that airbags work. Sure they do. But you may still get injured.
There’s a video of the guy who makes them using his finger. There’s another on their website, search for sawstop. But as for others, tech can always fail so why risk it? Also it costs $100 each time you do it so it’s not like a ton of people want to waste the money.
I wonder how well this would work in a real life scenario. My dad does autobody work, and his hands are like dry, cracked stone. They probably have very high electrical resistance. I'd imagine a wood worker's hands to be similar.
Once the blade started cutting through the skin and got to blood vessels, the resistance would go way down, so it would probably still work - just with a larger/deeper cut than more conductive hands.
Uh... I don't think you understand the problem. A company going though your private social media is a big no-no. It's as if they'd call your friends and family and ask them "Has OP ever said or done anything offensive?".
It's none of their concern and the fact that they even try this shit is a massive red flag. If they don't respect your privacy before they hire you, they won't magically start respecting it afterwards.
Even setting that aside, a company policing what employees say in private, regardless of whether or not they find out about it actively or passively, is absurd. An employer does not get to decide what you say, do or think in your free time.
-----
EDIT: As a small extra, here in Germany something like this would be very much illegal, as you're not allowed to discriminate against job applicants based on their political opinion.
> EDIT: As a small extra, here in Germany something like this would be very much illegal, as you're not allowed to discriminate against job applicants based on their political opinion.
Same here but laws are a subject of interpretation. I'm sure there is a loophole somewhere in there and it can be used against you.
> You would rather lose a finger that work in a company that has strict very rules around offensive behavior?
As I said, in a heartbeat. I was born behind the iron curtain and still live in a place where it casts a dark shadow. There's a fine line between "strict rules" and full on dictatorship. Frankly I never understood the fuss around the so-called "offensive behavior". I spent 5 years of my life studying abroad. As an eastern European, if I had a cent for every time someone called me a car thief ALONE, I would have made enough money to buy the entire VW group(and never have to steal a car again ho-ho-ho). Do(/did) I care? No.
I have a relative who was fired from their job in the 80's because he said a joke about the dictator at the time and wasn't hired up until the entire regime collapsed almost a decade later. Do you not see the problem with this? It's a question of self-respect and dignity. I don't care what anyone at work does or says, so long as work is being done. Their personal lives are none of my concern. A several-hundred page report which contains likes of a tweets like "A priest, a rapist and a pedophile walk into a bar… He orders a drink." with an "inappropriate" flag is a gross violation if you ask me.
Seems you selectively read only parts of my comment. It's about dignity and self-respect. While many people are gladly giving those away, I'm not. As I said, I've been called every stereotype known to mankind related to eastern Europeans. Do I care? No. The same way I didn't care when I was traveling through the UK in 2014 just as Nigel Farage was preaching how 150 million Bulgarians and Romanians were about to flood the UK and take everyone's jobs, rob everyone's house, kill every baby and rape everyone and their dog. Those were the headlines of every news report and the face of every newspaper stand. Again - did I care? "Cool story bro". Did any of that cause any harm to me or those around me? Not in the slightest. If anything I learned to joke about it myself.
The main issue is that when these things become the primary concern of a company, those that climb the ladder are not climbing it necessarily for their contribution but for their "attitude" or as I prefer to call it, ass-licking abilities. Because many people aren't buying into any of that but are willing to exploit this niche. Here's another example: I know a guy with a 5 figure monthly salary who has spoken at several seminars with multiple videos online, promoting the LGBTQ community. Great, right? Behind closed doors his reaction to all of those efforts was "what a bunch of faggots". As a developer he is absolutely terrible. He'd never be able to tell you the difference between float and double. Guess how he worked his way to the position he's in... Sadly all the translations I could find were terrible but here's the least bad one [1]. It's worth a read and you will see the analogy and the problem.
It's pretty clear that there's offensive behaviour as generally understood (antisocial stuff, mostly) and whatever reign of terror this company is, from the OP's perspective, prosecuting.
Yea there's absolutely no way I'd give a company or their goons permission to invade my privacy like that. Disturbing that companies are even allowed to get away with that without a class action law suit.
They get away with it because officially they don't do that. Some guy got a hold of his report and that's how he found out. Officially it's employment history, criminal record, and education history, nothing more. But the fact that such things ended up in their report(which, mind you, was almost 400 pages) raises many red flags.
I find myself writing less code these days, not because I'm lazy, but because I can borrow so much already-written code from people now, thanks to things like Github and the Internet in general. I am a firm DRY[0] enthusiast, and also, a /Don't Repeat Other's Efforts/[1] enthusiast and it pains me to solve an already-solved problem.
Sadly there are people out there calling me a 'Stack Overflow developer' in that I copy and paste code, but I find immense joy in challenging most of that code and tinkering with it to find a solution that fits my needs. In other words, I rarely use a snippet of code ad verbatim.
DRY is a good principle when you're aiming for effective product development, but that doesn't mean it's the most fun. I often find myself reinventing the wheel in my private projects, not because I couldn't easily find a library that already does what I want, but because I enjoy that sort of "DIY-Programming". I want to think about all the messy details because it's one of the things that makes programming fun for me.
Maybe this depends a lot on the individual. Some might find my way of enjoying code very boring, as I'm just messing with low-level stuff and not getting that much done. To me it would feel very exhausting to be writing glue-code all the time without messing with the internals of the systems I'm working with and recreating them myself every once in a while.
As a general advise to new developers: Find out what you enjoy about coding and always keep that in mind, be it while looking for a job or starting a new private project.
LoL, just go build some software dude. In the last two years I wrote a compiler, a brand new log store, heaps of other things, and I did them while doing my job.
If you actually care about your craft and can say no from time to time, the amount of interesting work you can do is limitless from the perspective of human capability.
I posted the original issue as a minor complaint about the docker cli and promptly forgot about it. I never expected it to get any traction or follow-up. At the time I posted it, I was working as a contractor for my former full time employer. I had left full-time work there in early 2017 to attend the full-time program at the (sadly now-defunct) Furniture Institute of Massachusetts[0].
I finished that program in early 2019, and split my time between commission work and part time work for other woodworkers. Like software, in woodworking there are things you learn at school and things you learn doing it for money.
In early 2020 (which now feels like a million years ago), my partner and I left the Boston area for her to take a job in the northern hinterlands of NH.
It's been an interesting year to say the least: A lot of the opportunities I was hoping to have to publicize my business have been canceled (craft shows and fairs, open studios, etc) due to the pandemic. I'm fortunate to have brought a couple of paid commissions with me when we moved. Owing to the pandemic, the schedule on them has been protracted. I was going back and forth to Boston to fulfill a teaching obligation until early March. Then the pandemic hit, and all of my suppliers and my shared shop space[1] closed down for a couple months.
Just before the shared shop closed, I grabbed my workbench and set it up in my living room. The place we're renting doesn't have a basement, garage, or anything resembling shop space, so that was the least bad option. I bought wood for a couple of house projects, and got going working entirely by hand. The first project was a desk for my partner. I built it following the design for a staked work table from the Anarchist's Design Book[2]. She's been working at it since, and we've been doing our best to manage my noise and her Zoom calls separated by perhaps as much as 20 feet.
Sometime in late May or early June things started opening up slowly. I bought wood for those projects, and the shared shop space began operating with extremely limited hours. I've wrapped up those couple of projects, and honestly, the next thing on my TODO list is to spend some time doing some business planning, re-shooting some of my earlier work, and updating my website[3]. Bad timing on the pithy github comment on my part; had I known it'd hit the top of HN, I'd have made it after I updated the website!
If you're in the Boston area and would like to see some of my work, the Cabinet on Stand shown on my website is on display at the Fuller Craft Museum[4] in Brockton, MA through November 8th. It feels a bit weird to mention it, but that piece is also for sale through the museum. Purchasing it supports not only me, but also the museum. They were closed for a long time this year as a result of the pandemic, and like a great many of our cultural institutions, they're hurting. They laid off the curator for the exhibit my piece is in due to budget issues.
If I can offer everybody only one thing to get out of this, it's that our cultural institutions live a fairly fragile and perilous existence, particularly the smaller ones. The Wharton Esherick Museum[5] in the Philadelphia area is also taking a beating. Please, please, please take some time to support these institutions. A lot of our shared culture doesn't make it to the MFA. Those headline institutions show a limited subset of stuff; there's so much of value in the smaller museums, galleries, and historical societies.
Seconded! Can you give a ballpark for how much you'd charge for a piece like this? Seems like an insane amount of work at incredible quality. I want to own it.
A lot of "designer" furniture is priced in that range so that doesn't seem that unusual especially if you consider all the manual working hours going into a piece.
Replying to you, and hopefully everybody who commented on your comment:
Oh man, the line between "art" and "craft" is ill-defined. I think of craft as something that has to fulfill a functional need as well as satisfying an aesthetic need, and art as meeting a principally aesthetic need.
Whether you view the cabinet on stand as art or furniture (craft), I suppose depends wholly on what your needs are :-) I built it as a piece of furniture that would suits my aesthetic tastes and also hold some stuff.
The price on it is $5,200 US.
The pricing on anything is a challenge. I have a woodworker friend who is married to a pricing analyst. She works for a sizable multinational corporation, and he feels as in the dark about how to price stuff as I do.
Broadly speaking, pricing for custom work is likely to be at least at the high end of factory made furniture, and by that I mean really nice factory-made stuff. Think like Thomas Moser[0]. Whether you like their look or not, the quality is excellent and as I understand it, there's a lot more hand work that goes into it than is common these days. I'm going to use them in the discussion below, but this applies to any high end commercial maker.
The reasons for this are complicated: On the one hand, my capital costs are (a lot) lower than any factory, I don't maintain showrooms in pricey locations, and I don't have a staff I need to pay.
On the other hand, Moser is buying lumber in quantities that I couldn't store at a price I can only dream of. They have well established lines of furniture that they're set up to make in quantity, or at least know how to build, whereas virtually everything I build is a prototype in some sense.
What you don't see in the final product is the test pieces or the jigs that I built to build it. Project recursion isn't just a software thing, I assure you.
Because it's unlikely that anybody will ever want exactly the same piece, that cost doesn't get spread out over a production run, or even stuck into storage in case somebody wants one in the future. Storage is a cost, and I pay it for stuff I know I'm going to use again and again (a table saw sled, for example). Project specific stuff gets either broken down and reused or put into my wood stove. At best you get the materials back; the time is a sunk cost.
I've talked to other woodworkers about this, and some take the approach of having a line of pieces that they're jigged up to build quickly and efficiently. This is a valid approach to making money at this. Putting some thought into whether it makes sense for me to develop a line at this point is on the list of things on my business planning TODO list.
Even woodworkers who have a catalog of pieces they know how to build have to make choices about how to design and build. Christian Becksvoort has a 15 drawer chest in his catalog[1]. Every tier of drawers is a different height. That means something as simple as cutting parts to rough size involves ripping boards to 20 different widths (for each of the 10 tiers: 3 pieces full height for fronts and sides, and 1 piece reduced height for the drawer back).
And then you have to keep track of those parts. And then you have to dovetail them. I'm willing to bet that Christian Becksvoort would lose money building one 15 drawer chest with a dovetail jig because he'd have 20 different set ups (10 heights, front and back). Could you make it cheaper by making some of the tiers of drawers the same height? Absolutely! Would it retain the charm of his design? For some customers, no.
Before anybody gives up hope on owning anything Christian Becksvoort has ever had a hand in, I'd like to note that he's an author as well as a furniture maker. He's written two books for Lost Art Press[2], and I recommend both.
Replying to say that I'm heading to the shop. If anybody has questions, I'll check back in in the evening (US Eastern) and do my best to answer them then.
Good luck with all you're doing. Your work looks incredible. As a budding woodworker (I hesitate to even call myself that, mainly making boxes and shelves at this point), I can appreciate the amount of work that goes into such pieces.
When I look around, I feel woodworking now is what photography was 10 years ago to software people. A hobby that lets you get away from the computer into the physical world, but still tingles all the engineering/math/maker mindset that attracts people to software. Although I got into woodworking because of my grandfather, I see a lot online of software people doing the same just to "get away."
From an economic perspective, I hope you're able to capitalize on that trend of people with lots of disposable income willing to commission this sort of thing (or even classes), if that's partly your intention.
Wow, nice stuff. This resonates because I'm pondering the same move, have a small shop, and have started with small traditional projects. I even live 20 minutes from Wharton Sherick but have never been, thanks for the links!
Oh man. Shipping. Have I got a horror story about that. Let's just say that the chandelier pictured on my website is the first of two that I built. I crated it and sent it to a show in the care of a well-known shipping company (you've seen their trucks if you live in the US). And then I had to build a second one for the show.
I'm told that shipping via specialist companies that routinely handle art and high end furniture is a much better experience for all parties.
I'm trying to keep jobs within a reasonable drive or the pieces small enough that I can double box and peanut them without driving the cost for the dimensional weight through the roof.
Kudos to you for having the wherewithal to make such a choice for your quality of life. The rest of us should take this opportunity to think how our requests and demands on OSS maintainers are perceived and be more empathetic: if you aren't paying for something you can't demand anything get done, this after all, is a collective effort of hackers working toward some community good. If you or a company directly benefits from a project monetarily think about supporting those projects -- but even then you don't get to demand anything. ... something something, honey vs vinegar or the however the saying goes.
Secondly, if I can leave everybody with just one more takeaway (besides supporting your local craft organizations, wherever you may be), it's that the phrase "it takes a village" applies to businesses too.
Besides first and foremost my partner, I owe an enormous debt of gratitude to everybody who has taught me; everybody who was a student with me at the Furniture Institute of MA, I've learned something from every one of them; everybody I've worked for, I've learned something from every one of them; anybody who's ever written a blog article I've read; anybody who's ever made a youtube video I've watched; my suppliers, especially the knowledgeable ones who've taken the time to not just sell me something but help me learn what fits my needs; my customers, especially the early ones who have worked with me as hiccups have arisen; countless friends both in the trade and otherwise who have provided moral support, gotten me out of jams, and been all around awesome; and finally my partner, who bears thanking way more than just twice.
I don't consider myself especially brave for having taken this step or having any particular wherewithal. For most of us in woodworking, there's an enormous number of people we have leaned on and learned from to get us where we are. I suspect this is true for most of us in software as well. There's a lot of companies built at least in part on open source projects, existing infrastructure, etc.
To be clear, I've never made a contribution of any significance to an OSS project outside of working a 9-5 salaried job. Your point is spot-on, but I can't rightly claim to have been on the sharp end of maintaining anything open source. Thank you to those who do.
Lastly, this all came about because I've been following the Fusion360 news on HN and looking into alternatives. I downloaded FreeCAD, started reading docs, and found a dead link in their README.md. I filed a bug, submitted a PR, and figured if I ever wanted it to be useful, I'd better sort the email account that github sends to. I cleared out a couple thousand github notifications for projects I no longer work on, and that many more bounce messages from my former employer.
Among the several hundred remaining emails was a slew of notifications about the bug that I filed 3 years ago. I figured I should check in, and the rest is (recent) history.
I was being perhaps a little tongue-in-cheek when I referred to the "northern hinterlands of NH". Folks in Boston generally consider anything west of 128 to be "Western Mass".
Hey, while you are reshooting the pictures, have a look at David Hobby's material over at Strobist [0], especially the lighting 101 series [1]. Hope you find them as helpful as I did!
Thanks for the recommendation. I've long considered myself not smart enough to shoot with a flash, but I've never given it a really serious try learning. As I understand it, getting the exposure right can be a challenge. Or maybe it's just a learning curve I haven't tried climbing yet :-)
Everything on my site was shot with continuous light, but I'll take a deeper look at the site and see what I can learn. Some of the photos definitely make me want to! And let's be honest, strobes are a lot less hassle to deal with than studio lights.
Your work is beautiful and I hope you find many buyers. I humbly suggest you include prices on your web site, as many people have no idea what handmade furniture costs these days, and many of those can actually afford it.
Those are beautiful chairs, and I would agree that the price sure looks worth it. Thank you for bringing them to my attention
For a point of comparison, Kevin Rodel designed the side chairs I built (from plans he published in Fine Woodworking). He lists a price of $1,600 each on his website[0]. I think that's also an entirely fair price for what is a simpler chair to build. Ignoring everything else driving cost in chairs, adding arms alone adds complexity.
The question of listing price is a difficult one. Christopher Scharz of Lost Art Press addressed this an an article he wrote for Core77[1]. He's very established (and rightly so) and chooses not to, but he suggests it might be an advantage for somebody starting out.
One challenge to publishing prices that I perceive is that it fixes a price in a potential customer's mind. I wrote to somebody last week about the question of pricing, and observed that a bookshelf for a child's bedroom is a very different piece from a bookshelf for a lawyer's office. The price varies considerably between the two!
What I (and other people doing principally custom work) can offer is the ability to tailor a project to a budget (within reason) by explaining what drives cost and letting them make choices based upon what they're looking for in a piece.
At this point, I don't want to turn anybody away with a price that's outside their budget, but I'm also mindful of the adage that "if you have to ask, you can't afford it".
Some really beautiful pieces. Some unsolicited advice... if you haven't already considered Etsy (I used to work there) it can be a great place to sell your work.
I've bought a lot of furniture (some custom) on Etsy and people have been surprised by that / think there isn't necessarily high quality work there.
In addition to the larger pieces, if you have work that's easily repeatable you can make a lot with e.g. tissue boxes or cutting boards, etc...
Thanks! It's something I'll look into when I sit down to do some business planning. In case anybody else is interested, I've also been recommended houzz.com. Custommade.com used to deal in furniture, but they seem to have pivoted to jewelry.
I've definitely seen quality work on etsy, and I appreciate your perspective as a now former employee.
I'd love to know your thoughts on woodworking in a living space. Before the pandemic I took classes at a local art school. I'm considering upgrading to a two bedroom apartment (in a large apartment building) and using the spare bedroom as a workshop. I'm guessing I'll have to go all (or almost all) hand tools. Do you think this is feasible, or will I regret it? I'm worried about dust management and noise for my neighbors. Chiseling in particular seems like it would reverberate through the building.
I did basically this for a year, except in my main bedroom (didn't have a spare). You're right to be worried about dust and noise.
For the dust I had a pretty powerful airfilter, but I would still have clouds of dust coming out of my pillow/sheets.
I would have said that general noise during the day was ok in my case, but that was before everybody worked from home.
For chiseling you can actually do a lot without hammering. If your chisels are sharp enough, you can push them through the wood for most techniques. That's what I did when I worked in the evenings.
It helps to have a very heavy workbench that doesn't move too much. Sawing still makes noise though, and planing kinda does too.
All in all, less than ideal, but for me it was great for a while! It really depends on what size and type of things you want to make. Feel free to specify and I can give more details.
I think it makes sense to explore other options as well: renting a garage, finding a community workshop, etc.
Thanks for the thoughts. Were your dust clouds the result of hand tools, or were you using power tools? I’ve mostly used power tools, but my impression is that hand tools might make less of a mess? Hopefully being in a separate room I can isolate things...
That’s good to know you can sometimes get by chiseling without a hammer! At the moment I’m interested in making a Danish Modern style chair, likely in walnut or oak.
If not, use Fesstool tools and one of their dust extractors.
I built a wood bed for my truck in the living room some decades ago. And also a clavichord. Hand tools generate shavings, but little dust.
I have a very good collection of hand tools in a large tool chest. And, I have a very solid, large workbench. Both of these look great in the living room when not in use.
As others have said, hand tools generate chips or shavings and less dust than power tools. I strongly suggest doing your sanding outside if at all possible. If not, The recommendation other folks have made for Festool is on point. Their dust collection is excellent. I own a Makita random orbit sander and it leaves a film of dust on the surroundings when I use it. I've used other people's Festool sanders with Festool dust extractors, and it's outstanding. You pay for it, but you really do get what you pay for.
Part of my strategy for keeping dust down is to do as little sanding as possible. I generally try to get a good surface off of a cutting tool (a plane or scraper), and then sand once at the grit I want to end at. Squirrelly grain, or tearout around knots sometimes requires pulling out the sander. Still I try to limit my use of it. If I can spend 5 minutes planing, and 5 minutes sanding, I'm a long way ahead on time compared to spending 5 minutes each sanding at 4 different grits to get the same surface (numbers from thin air, but the principle applies).
Noise is a challenge. You're right that chiseling is not a quiet activity. Anybody who thinks hand tool woodworking is a quiet and contemplative activity should spend a day in a room full of people chopping dovetails and then maybe reconsider their opinion.
All that said, there are a great many woodworkers who work successfully in apartments or other tight confines. Some of them are even married :-)
Funny you should mention that book. Tom West's daughter is Jessamyn West, famous Vermont librarian. Her cousin is Christopher Schwarz of Lost Art Press, influential author and publisher of woodworking books. She was recently interviewed on Vermont Public Radio's Brave Little State podcast on an episode about religion in Vermont.
I believe all of the above is public information about the named people.
If I'm honest, I haven't yet read The Soul of a New Machine, but it's on my list. I did pick up House[0], also by Tracy Kidder and read it over the winter holidays a couple of years ago. I'm not sure exactly how I'd sum it up, so I'll leave that to the author, linked below. I've also read excerpts of Among Schoolchildren[1] and can recommend it (at least the parts I've read) as well.
I just recently bought the anarchist's design book and toolbox book! I'm just just getting into though - haven't built anything yet. Need to get tools and set up a shop.
I'm off to bed for the evening. If I haven't addressed your comment specifically, I'd like you to know that I did read it. Thank you everybody for your kind words. I hope I addressed nearly everything people asked about even if I didn't reply directly to every comment; there were a lot of good questions!
I have not read all the way down the over 800 comments, and if you shared kind words or asked a question outside this thread, I apologize if I missed it.
I'm honestly astonished at how much this seems to have resonated with a lot of people. If it's not blindingly apparent by my comment, this was the last thing I expected to see at the top of HN on a Monday morning!
If you're trying to learn woodworking or are interested in learning it, I'd encourage you to do so. We all started somewhere, and for me that was struggling mightily to get a board flat with a hand plane in an evening class. My first dovetails were as rough as anybody's. Whatever you want to build, go ahead and build it. There's room for all kinds of woodworking in the world, fancy and plain alike.
The instagram woodworking community has been a mostly positive space for folks in the field both as hobbyists and professionals. If I can take a moment to veer briefly into politics, it hasn't been universally welcoming to women and people of color. Laura Mays talked about losing followers every time she promoted a show of female woodworkers. This is, frankly, shameful. There is room in this field for anybody who wants to explore it, at whatever level they choose to. Shutting people out because they don't fit our preconceived notions of what a woodworker looks like makes us all poorer.
Lastly, there are really too many people out there sharing excellent woodworking content to hope to name without some omissions. In addition to everybody I've linked or mentioned in other comments, I'd like to add in no particular order William Ng, Richard Macquire, Paul Sellers, woodgears.ca, seejanedrill on youtube, and artofplants on instagram.
I've doubtless omitted any number of other highly worthy people I've stumbled across over the years. I'd encourage everybody to go down the rabbit hole as far as they'd like and discover those people and more.
Totally on board with not building software any more. In fact, at 55 this is my last week of it. For real. Basically, everything sucks more about building software nowadays more than I remember it sucking before, from the mere mechanics of navigating through an obscenely large pseudo-object-oriented codebase to the WRONG constructs/idioms people use to build distributed systems to the way software is packaged and deployed to the horrific attitude toward testing or documentation to the biased interview processes to ... I could go on forever. I know some of that perception is mere nostalgia or other effects of my own age, but by no means all and I honestly feel less than half.
Building software was never simple or easy. We've gained a lot of knowledge that makes it easier because you don't have to build quite as much from scratch, but we've more than made up for that by making it unnecessarily hard in every other way. Taking the simplest change from idea to production involves so many steps, and not even the steps that assure it's correct or maintainable. It's feeding the beast we built ourselves rather than the one born of necessity.
I sincerely feel bad for people who have to stay in it. Some day most of you will get over the dollar-induced Stockholm Syndrome that seems universal among junior developers, but by then you'll be stuck on that train to hell. Good luck to you.
I think it’s gotten a whole lot simpler in the past 10 years. People used to have to rack their own hardware, install PDUs, check temperature gauges, plug wires, configure the switches, setup RAID and backups, make sure you have that serial cable plugged in so you can telnet in in case the switches don’t work, and lock the data center doors without forgetting their keys back in the day. And this is before actually developing and deploying your application software.
Now you can just buy a bunch of db cycles and scale to >10000 qps without batting an eye (though you’ve got to watch your wallet).
I think because some of the hard stuff got a lot easier, the easier stuff got unnecessarily complex. And there are so many ways to scale things that some of these constructs and idioms used over time stopped being used because they mattered less if you could just turn a knob to scale your crappy code.
> People used to have to rack their own hardware, install PDUs, check temperature gauges, plug wires, configure the switches, setup RAID and backups, make sure you have that serial cable plugged in so you can telnet in in case the switches don’t work, and lock the data center doors without forgetting their keys back in the day.
Yes, and other people did this job, not programmers. People that loved tinkering with hardware, low-level OS stuff, networking, etc. We even had a name for them: "system administrators" and "network administrators".
Nowadays everyone's expected to tweak CSS and configure kubernetes in parallel.
We still exist. Our job titles just changed and more responsibility was put on our plates. Now we do the above work, plus manage automation (Jenkins pipelines, Ansible playbooks, etc) among other work. Not that the increased responsibility is an issue, just that the title makes us seem fancier than we are. I think that is part of the problem, everyone needs some ridiculous title now, a “lowly” sysadmin gets looked at sideways.
Yes. Although I worn that and other hats before and often together, I disliked being a sysadmin. I don't like being on call, it causes me to wake up at two in the morning to check a website. I do not like worrying about when to install a new patch.
So when my job title switched away from programmer to some kind of DevOps thing and I was shoved back into the sys admin role, I was unhappy about it.
That does depend in some areas of technical /systems programming back then you normally developers where expected to know the basics and be able to do all that - the original full stack developer OSI 1-7.
Trouble is they tended to be interesting but poorly paid jobs
> People used to have to rack their own hardware, install PDUs, check temperature gauges, plug wires, configure the switches
What you describe is what used to be considered sysadmin work. I too did quite a bit of it, but most of it went to people who specialized in those things. And no, I don't do any of it now. On any given day I'll probably deal with machines in at least a dozen geographic locations across two continents, and if I tried to enter any of them I'd be stopped at the door - no, at the gate before I even got to the buildings. Instead, I write code to interact with the deployment system and the provisioning system and the multiple monitoring systems and the automatic remediation system and so on. Is it better? It scales better, but as a matter of personal satisfaction and avoiding fury at other people's crappy code I think I'd rather be plugging in cables and configuring switches.
> I think because some of the hard stuff got a lot easier, the easier stuff got unnecessarily complex.
There's a lot of truth to that, and I don't think we necessarily disagree on the outcome. However we got here, whichever specific things make modern software development more unpleasant, it seems that it is more unpleasant than it used to be.
Re: the sysadmin work, app developers have to worry a whole lot less about it, oftentimes not at all. In startups, that's a huge plus. I still remember servers going down because some workloads were destroying the RAID arrays s.t. that they were drawing down too much power and overloading the PDUs in their racks. I ended up having to hardwire the distribution of jobs to other servers while we (actually it was me, I was at a startup) got the PDUs upgraded by talking to a sysadmin on the phone. (Amusingly at some point we had to fix some DNS while restarting one of the boxes so I had to tell the guy what to do by dictating vi commands.)
But yeah it's like over time we ended up scaling the crappiness of software along with the software itself. At the same time, I'm inclined to believe that software development at large is in a much better position to solve a whole bunch of other problems than ever before. That keeps me motivated personally, though I get the frustrations for sure.
I think it is funny you mention 10 years because I would agree with you, in the last 10 years we corrected a lot of the sins that we did in early web dev, but I think the lament reaches further back. Move back 25 years ago and it was much easier. A kid in his room could singlehandedly write the next big thing. Things in a lot of ways where much simpler then, it's hard to not look back on that period without a lot of nostalgia.
I was around 25 years ago pushing bits around SunOS boxes and when people were still figuring out CMSes. FTP and BBEdit ftw. Definitely some things were simpler, but stuff would fall over in a heartbeat. I still think of the day of 9/11 when major websites couldn't serve their homepages because they were bombarded by traffic.
Kids in their rooms still do write the next big things. The difference now is they now raise a ton of money along with it. They scale a whole lot further, and much faster. There are more entering the engineering profession through Lambda School and bootcamps and what not. They also leave around a lot of shitty code that usually ends up building some business value. Much of this was true back in the day. It's just gained a whole lot more momentum IMHO.
I'm 56 and STILL love building software ... I started coding as a hobby when I was in 6th grade, built my first computer (a COSMAC Elf) when I was in 10th grade and spent 20 years doing a combination of electronics and software engineering. For the last (almost) 20 years, I've been only doing software development with a small amount of consulting on hardware design and hobbyist projects. (And the weirdly political intersection with these disciplines while working on a committee that wrote part of the DOCSIS cable modem spec). I have no intention of throwing in the towel and am really enjoying the Go language (and happy to see that Java is taking steps to reduce the complexity of the JakartaEE framework).
But ...
I used to code for fun in my spare time and more recently I'm finding myself working on "shop" projects. I sold my pocket-cruiser (a small yacht) and I'm building a couple of small wooden boats. I have a '71 Saab Sonnett III I'm in the process of restoring and a '71 VW Karman Ghia that's next on the list. I thoroughly endorse the idea of doing something with your hands - it's so much more satisfying than sitting in front of the TV.
I believe the main thing that changed is that 10 years ago, "building software" meant you would work with (presumably reasonable) engineers. Nowadays, it means you do web busywork for some newly rich kid chasing a startup lifestyle, who may or may not have any idea about what's easy/difficult possible/impossible.
Also, the whole industry has been strongly commercialized. Before, people would share source code on the internet just for the fun of it. Nowadays, that is a surefire way for someone else to take your source code and sell it as theirs. I mean that's basically what Cloud providers do. They rent out access to open source software.
The insane pressure of money also makes sure that most software nowadays is not build to any reasonable engineering standard, even when it really should be (like Boeing MCAS). Instead, every piece of software nowadays is optimized for the sweet spot between sucking so bad that nobody buys it and not spending a penny more than what is necessary.
The goal of software development has changed, and I think $1 phone apps nicely illustrate the new commercial landscape. It's the bare minimum quality at the bare minimum price.
BTW, on a related note, most bicycles made in 2000 still had a much more stable frame than the 2020 models. The marked switched from costly steel to cheaper aluminum so that you can make $300 supermarket bikes. And obviously, the quality has suffered.
It appears that in general, there's always a race to the lowest possible quality in the hopes of reducing costs, thereby increasing profits. Does anyone have any suggestion how we could reverse this trend in general?
Thee $300 supermarket bike (I have one and put over 40 miles on it weekly and it's help up fine for four years) provides access to folks who otherwise can't afford the fancy $1,500 aluminium/carbon machines. Fancy bikes are still getting made and even getting better.
Newly rich kid or VC funded startups distributes money from wealthy people to an every growing software industry. It allows people like me to work in software; something that was previously only available to elite educated people who happened to live in the correct zip code.
tl;dr: The pie has increased in size and become much more inclusive. Yes, there is a lot of low-quality pie out there. But there is also plenty of high-quality pie for those who can afford it. This is good for everyone except the very elite entrenched class.
Ignore the downvotes. Initial votes are misleading, and if the comment is substantial, they'll stabilize to a reasonable value over the following couple hours.
> Cheaper does not eliminate the quality. They can both co-exist and indeed do.
It sometimes does, if it eliminates quality out of the market. Say a quality frame costed $500 before; then you have a new, cheaper technology that can achieve similar performance by cutting out more extreme loads / road conditions; as manufacturers jump at it to save money, suddenly the whole $100-$800 range uses just that, and the quality frame rises to $1500 due to collapsing demand. Can't say whether it's good or bad on the whole, but it annoys the hell out of me in cases where I could afford the quality product but I can't, because nobody is making it anymore.
Open source as an art is inclusive. Or at least as a social model for developing software, has greater potential than startups, which are exclusive to those with financially viable skills
A working culture tuned to movement of a minority of capital “haves” isn’t much different mathematically than a monarchy and his lords and barons, etc.
There’s a gentler temperament, but “work the jobs we will pay for, while deflating your buying power to maintain historical human narratives” isn’t exactly fostering free flow of capital, labor, and ideas.
That's fair, but before I spent a lot of time in industry, I thought most tech entrepreneurs were genius engineer/business types.
I was shocked that a LOT of startup founders are well-connected rich kids who have no skills or ability to lead a tech company. I learned that, while saying that you have a huge trust fund isn't very cool, saying that you're a tech entrepreneur CEO is perceived as cool. So the rich family uses their connections to raise a few million (often indirectly) and suddenly the kid is an "entrepreneur", despite lacking any relevant skill sets. It's not like there's any expectation for these companies to make a profit anyway.
Yes, you can avoid these companies, but it's worth warning younger engineers that this is maybe 50% of tech startups. It's more of a problem with NYC based companies than SF based companies (as NYC has more old money and less emphasis on tech companies actually building real tech) but I've seen it in both cities.
This is kind of true. Young tech entrepreneurs are mostly either harvard/stanford/other top college grads, or theyre from wealthy families. But entrepreneurship has always been this way, its not a middle class career path, and arguably, tech has increased the number of middle class/raw talent trying to start their own companies.
If you were to look back at the early 1900s, or even 1980s, its much better today than back then
I'm not sure I deserve the "elitist" label, but yes, I find this development very negative.
While I agree with your point that hobby startups distribute money and enlarge the market, I was trying to point out that people working under management with no experience will probably not learn their craft well. In my opinion, the old apprentice system used for jobs like becoming a carpenter would be quite appropriate for software engineers. But it only works if there are enough master level programmers around to teach everyone else.
As for the pie analogy, I don't share your opinion. When the market moves towards lower quality, that usually makes high quality more expensive or even outright impossible to acquire. Case in point, I'm not aware of any bicycle that is rated for 200kg+ for driver and luggage. Not only are there no cheap bikes at that stability level, but also nothing in the $2000+ premium range. So something that used to be easy to buy for everyday folks 20 years ago is now too expensive even for rich people. And all that only to drive the price of the cheapest bikes down from $500 to $300, which I presume won't make much difference to anyone because a good bike will last you 10 years, so it's <$1 monthly in either case.
Sorry about that, I didn't mean it to come across as a personal attack. I mostly agree with your paragraph about hobby startups. And I secretly lust after a nicer bike and might go for one soon :)
Not only will it easily take that weight, it's designed to comfortably carry a passenger and cargo. Or the Yuba Mundo, there are a few other brands. And you can get them in electric, if your thighs aren't made of steel cable.
Yuba Mundo is $1800, which sounds like a lot, but with inflation that's well under a grand at the time when more bikes were heavy and over-engineered. With the nice side effect that they could carry a lot of weight....
It was always like this except in the hobbyist world, and I think maybe you and some developers are confused because the corporate takeover of the web is relatively recent. When I think of software development in the past I think of Office Space (the movie), not some idyllic times.
I think you might be experiencing what it's like to have, er, experience.
Like, I could make the exact same complaint except I'd situate it about 10 years earlier, around the first dot-com explosion.
And somewhat earlier than that, I remember grizzled programmers from the 1980s who hand-tuned their C and assembly and who thought we were flagrantly wasting computer resources on garbage platforms like the web.
(However, bringing it back to the 2010s and beyond, you're right that open source development has been completely co-opted.)
There's nothing stopping you from getting an FPGA board and rolling your own CPU, system, software stack from the ground. It's easier than ever before to walk in the footsteps of Woz or so if you like the idea.
FYI, I have built a great many things in my career but not one of them was a web app. Mostly, it has been data storage systems, from single host to few hosts to many hosts to one of the largest three or four such systems in the world. But hey, great guess.
I keep saying it. Building software in tech sucks. The process, the people who complicate everything, all the unnecessary features that bloat the code, spending all your day reviewing pull requests, etc. But building software in general is fun. For me it's also not so much about the software but about the business. When the business motivation is clear and I believe in it, then I'm motivated to build software. And when I say business motivation it can even mean me wanting to learn something.
I'm in agreement with you that it's about the business and having the passion and motivation to solve the problems of that business. When I look back on my software career and think about the projects where I didn't have an interest in solving that particular problem, I would always revert back to just learning the technology for the sake of learning. For me, just learning and not applying was never as fulfilling as doing both.
It goes without saying that your feelings are personal ones, totally valid, and nobody can really question them.
I'm 20 years behind you, and I don't know what effect that will have on my views. But I don't really recognise the picture you're painting. Compared to the first steps I took as a developer about 15 years ago, almost everything about software development seems better to me. I find developing software to be easier, more consistent, and less frustrating than it used to be. Good development practices—things like testing, CI, coding standards and so on—seem more prevalent than they used to be. It's easier to get code out to production than it ever was. Everything in the ecosystem—like tooling, libraries, and services—feel far more open, consistent, and accessible than they used to.
I am almost certain that on the whole I spend a far greater proportion of my time now actually writing code that does interesting things, as opposed to code that hacks together some junk to try and make it work with other junk.
I think I'd draw the conclusion that everybody's opinion on how the industry works is going to be heavily influenced by their individual experiences. Maybe I just enjoy software right now because I've now got the technical competence and confidence to avoid some of the frustrations that I experienced earlier in my career, and in another 20 years I'll be right there with you lamenting the state of the industry. Who knows?
I completely agree. Docker, amazing frameworks (Laravel, Django, ReactJS etc.), git, CI, amazing IDEs, etc. It's absolutely magical compared to what we had 15 years ago. Entry level is much higher though for sure, you definitely need to learn and know a lot. But once you do know certain things at a certain level, you become a very powerful individual.
And here it lays the paradox. All the tools you have mentioned have little to do with programming (one individual solving problems by writing code). The tools you mentioned have to do with software engineering (a bunch of individuals solving problems by writing code, plus a bunch of constraints).
The joy is in programming, not in software engineering. At least that's how I interprete the GitHub comment (and all these stories about developers that cannot take it any more and burn out).
I don't need to worry about many many trivial things I had to worry about before these tools, and now I can actually work on the problem I'm trying to solve almost immediately.
Is that true tho? I mean, I love programming, but I hate React. I love thinking about data structures and their relationships, but I don't like Docker. I spent hours thinking about how can I solve a problem (just for fun) and I absolutely don't need GCP nor Azure. I like coming up with cool algorithms (or reading about them) but I find Laravel (or Django) really unelegant and not worth my time.
It depends on the problem you're solving of course. All of these tools are built to be able to solve larger, more complex problems more effectively. You are still welcome to ignore all of them and write a cool program for yourself for fun, just don't expect to get paid for it.
Ultimately, we get paid to solve business problems, not to have fun with programming.
This is of course true. But is a particular fashionable technology the best way to solve that business problem, or is yet another layer of fun? I suspect that being able to deliver simple scalable solutions without bandwagon dependencies is going to be a differentiator, in _business terms_
I think it's easy to forget that modern tooling (+AWS/GCP/Azure) let's one dev match or exceed the productivity of 15 developers and a couple of PMs in 2005.
That's a very specific meaning, like in terms of scaling maybe? But in terms of actually meaningful problems solved for end users... But there very nature large scale systems aren't very common, but everyone is chasing that unicorn startup which can serve 10 million users; so scalable APIs are more "practical" then simple workflows
Scalability seems overhyped. If you write small efficient systems they can handle a lot of work. If you use big clunky frameworks that convert simple things into map-reduce style problems of course you're going to care about scalability and how much your AWS bill is going to be.
In many technical interviews, they want to talk about "scalability", using fancy big data software for horizontal scalability etc
But I also know from experience that many, many of these problems would be more elegantly solved by more traditional tools like Postgres, especially since servers have gotten more powerful, the cloud service options more plentiful and reliable, and the software more optimized. The "scalable" approach can lead to massive amounts of wasted person hours unless you're sure you really need it. But if you say, "just use RDS or CloudSQL, or maybe BigQuery", you get perceived as a newb by the 24 year old who just got his MS doing Spark work on toy problems.
It's a laughable claim to say one developer has replaced 15, and obviously not true. The vast majority of code was business logic and still is.
Today's 'process' is no more efficient than, say, deploying rails to heroku in 2007. And even before that, you'd spend half a day writing an automatic deployment script, and then deployments would take a couple of clicks and you'd never think about it again.
I spent all day today and Friday just trying to get a Google Cloud Composer project to run locally. I'm still waiting for that increased productivity that modern tooling supposedly grants me.
Thank you for sharing your perspective. It honestly warms my heart to see that some people believe the trajectory is still upward.
> Maybe I just enjoy software right now because I've now got the technical competence and confidence to avoid some of the frustrations that I experienced earlier
Just as some but not all of my (mostly negative) perception is surely personal, might I suggest that some but not all of your (mostly positive) perception is not? Perhaps the industry really has improved in some areas that you care about during that interval. Yay! OTOH, that doesn't necessarily put your perception and mine in opposition. There are other areas and other intervals, and other priorities as well. It's great that your experience has been positive. I hope it remains so.
I think that's a good way to think about it. Everyone's individual perspectives are valid, and they're a mix of real things that have happened in the industry and their own experiences.
I'm very much aware of how bad some parts of the industry can be (particularly having recently dipped my toe into some machine learning work and discovered an entire sub-field in which nobody has ever heard of documentation, testing, coding standards, or things like releasing software that actually works).
The issue isn't so much the trajectory, but the people in the industry. I've been repeating for a while now that there are too many people who are not team players, who are basically still cowboy coders, looking to scratch their own personal technical itches rather than working together to build good software. This has been my experience for the last 5 years at least. It definitely reminds me more of the 90s, when the industry was a mess because it was new and growing. My issue is mostly with the people though, not the actual work. Lots of self-righteousness. Lots of people wanting everything to be on 'hard mode.' And as someone else commented, there is definitely a Stockholm Syndrome with the money involved since I now can not do anything else and maintain my life. Nor has this industry made it easy to change jobs. Nobody wants to train, everyone seems very cheap, but they want to hire Kobe. I am counting the days before I get broken.
I think you are right to say that the methods are vastly improved, but the ends to which those methods are applied have become ever more uninteresting (for a lot of people), and often morally suspect. We have built exquisite tools, but we use them to extract profit, to manipulate behaviour and often for no discernable purpose at all.
Programming has become joyless.
There are ever-shrinking spaces where a developer gets to build something novel - something that's state of the art, that's creative, that taxes their intellect and brings the pleasure of achievement forth. It seems that for every developer working on rocket guidance systems or self-driving cars there are a hundred toiling away on yet another CRUD app, or wrestling with a hydra of microservices. It pays well, but fun it is not.
I program ever since you had to restrict arrays to 64k in Pascal's 286 real mode. It was definitely fun, but other than building really limited games and freaking text areas (that would regularly crash with out of memory errors, losing your changes), along with bad accounting software build in MS Fox, there wasn't much you could do.
And I remember people literally leaving the industry when the migration from MS-DOS to the Win API happened, which was forced around the time of Win 95. Because everything was terrible.
But I love it when seeing young, privileged, overpaid software developers complain about joy. Keep at it.
While we should not discount your experiences, and while there are many complainers out there about nothing, I think the poster to which you replied has a deeper point.
I too am relatively young. When I was a kid, Bill Gates and windows was the devil. Nowadays I realize I judged him too harshly and that he does a lot of good in the world, but at the time Microsoft was the bridge troll.
Looking back, everything seemed so simple. Programming open source things had meaning to it. People didn't program open source back then to my knowledge as part of a larger corporate strategy. They did it because it was fun.
Corporations entered open source programming as far as I'm aware en masse in the early 2010s late 2000s. Around the same time Facebook and Google reached their peak of popularity. It felt awesome to have corporations join in the fun and it felt like the software got much cleaner and much higher quality.
After a while though it just felt like corporations took over the place. Software is better now but it's tailored to corporate needs even in the open source world.
Now that our apps have millions of users, and we can see how they interact with the app in near real time, there is a constant push to manipulate the behavior of the user. Like our app? Leave a review! How likely are you to recommend our product to a friend or colleague? And so forth. To your point, we have always been asked to do things like this but in the 90s there wasn't nearly as many ways to do so. Seeing the greater capacity of our code being used for yet more greed is disillusioning.
I get it, everything is terrible, and it always has been. But I do wonder if we haven't lost something from the '90s to now. I feel like there have been several Eternal Septembers, but instead of our communities getting flooded with trolls they have been flooded with corporate interests in communities that didn't used to have these interests at play.
To try and combat this feeling, I have tried to find those communities for programming that try to get back to our indie roots. In the '90s we didn't care or need corporations to sponsor us or our open source projects. I'm still sure there are those out there that run their projects without the need for GitHub Stars or corporate funding but it's now seen as unreliable or otherwise undesirable to use projects that are simply done for fun. I think remembering that that's all I ever used to use will help me find more fun like I used to have. Preserving the space of programming is a hobby I think is really what's at stake here.
I may be privileged, but I am neither young nor overpaid. I started programming on something called the Commodore 64, so my opinions have been refined over decades. And if I say programming has become joyless, it's because I've been around long enough to remember when it wasn't.
The joy someone can get out of programming seems like such a subjective feeling that I find it hard to believe you're generalizing your experience to all programmers.
My solution was to dump the Windows environment for my personal use.
I program in Arduino where I only have 2.5 K for my variables, programming with so little memory really forces you to think about your program methods.
I built small projects using 74LSxxx chips, building logic instead of programming it can be refreshing.
When I need more space I program in C++ on a Haiku machine, 32 GB of ram and 12 CPUs gives you the power, but the lack of frameworks means it is all your own coding.
There are ever-shrinking spaces where a developer gets to build something novel
I think it might be possible to say that relative to the entire industry the space for novel or interesting work is shrinking – possibly. But I don't think that actually means there's less interesting stuff to work on. If anything, the spaces for that are growing – maybe more routine work is growing faster, but I can't really say. I'd wager that the majority of software for its entire history has been pretty boring.
I agree. Though because of the growth of the industry, these spots where actual cutting edge work is happening are insanely competitive, and I would bet that many of the programmers (not all of course) who worked on the cool stuff 20 years ago would not make the cut for the cutting edge today, or are simply not interested in the particular niche of that edge.
Working on the cutting edge implies some sort of combination of greater talents and ability to work harder than others (hence increased competition), which means that the artificial barrier is a mere pittance.
The people interested in doing cutting edge work will find a way to be there no matter what. The vast majority of people overestimate themselves.
I had a great amount of fun working on my debug visualizer extension for vscode that was trending on hn a couple of weeks ago. And on other open source extensions and projects. I felt visionary and proud. That is what I want to do.
But it pays for nothing. I make more money as a street musician than with my open source projects that have more than 100k users. But I got paid a lot for improving some online gambling site. This is how it is.
There are some economic theories about non-monetary compensation that try to explain this. Basically:
Total Compensation = Salary + Benefits + Intangibles
Those Intangibles can be things like working environment or commute, but they can also include your affinity for the organization’s mission. People are willing to take smaller salaries when they’re working on something they love & respect. It takes more money to convince people to work on boring or undesirable things. It’s the exception to be paid well for something you like.
I think the word you’re looking for is “utility”. People maximize for utility, which includes all of the terms above. Utility of money also has diminishing returns, etc.
I disagree, one of those intangibles is the easiness to learn, so most of the time you get paid less for working on boring or undesirable but easy to learn things like one CRUD app after another. And you get paid better for more difficult and interesting things, because there are less people able to do it.
I think you need to call out bonus and RSUs/long term incentive plan here, too. Many places don't have them; talks of salary invariably leave them out, but they are what makes the FAANGs TC particularly compelling. And other companies do have them, but oftentimes it's hard to figure out which do, and for what roles (since it sometimes is dependent on seniority and perceived importance).
I can't judge whether the actual programming there is fun, but I can't imagine an environment where bugs get exploited to the tune of tens of millions of dollars can be all that fun, and the entire field seems to be built on fraud, scams, and finding greater fools.
I suspect a nontrivial number of programmers in that field will find themselves making license plates or exploring harbors with concrete shoes a few years from now.
The bugs don’t affect the programmer or the company, assuming there even is a company
And the programmers have easily translatable skills, so nice try at making a point but it doesn’t make sense when there is a real conversation to have
But you werent actually here to debate the differences in how that could affect programmers in that industry vs other industries
Your preconceptions are a random incoherent mixture of things that are oddly excusing bad actors or bad companies by ignoring them and conflating it with blaming a specialized skillset or sector
You could have kept all that in your head because this was clearly a copypasta rebuttal prepared for any conversation about crypto
Unfortunately I agree with this. A great quote I saw a while ago:
“The best minds of my generation are thinking about how to make people click ads.” –Jeff Hammerbacher
Every paying software job I've ever had was in some way involved getting people to click on ads. Either directly making a product where ad click rate is a measured metric, or products that helped people make products where clicking on ads was a metric...
I have usually been able to find a lot of joy in solving the problems in the smaller areas where I was focused, but whenever I took a step back and looked at what I was helping work towards it felt very meaningless.
I think finding a job today where you feel like the work you do does genuine good for the world is an incredibly rare and difficult thing...
I've been in the biz for coming up on 25 years and I've never tried to make anyone click on an ad.
It also may help to downgrade "doing genuine good" from "solving the world's biggest problem once and for all" to "helping people get food reliably" or "keeping this industrial process that provides value to thousands of people going" and so on. Sometimes I do lose a bit of track of what I'm doing, but in the end the jobs I've worked still end up helping people do useful things, or protecting people, not making them click on ads.
There's a lot of jobs in programming that don't involve making them click on ads. Even in the heart of Silicon Valley, there's going to be a lot of jobs that don't boil down to that.
I've never had a job convincing people to click ads either in about the same amount of time. But when I look at the salaries being paid by those companies trying to get people to click ads I think I must've made a mistake somewhere. Not that I want to have a job getting people to click ads, but those jobs pay like 2X to 3X the highest salary I've ever made (or more).
You haven't made a mistake. Those jobs pay highly because they have to. The phenomenon of soulless, not-great-for-the-world jobs being really highly paid is not a new one, and not at all unique to software - compare a celebrity plastic surgeon versus a doctor who saves lives after disasters, or a corporate attorney at a weapons company versus a pro bono lawyer who works for virtually nothing.
Full disclosure, I'm doing OK (not living in SV helps a lot), but, yeah, I'm not pulling down half-a-mil a year.
But I don't want to hate my job. I don't always love my current job... as I like to say, they're paying us precisely because this isn't what we'd be doing of our own free will... but I don't want to hate it.
Because it's more than just the hating the job. It's coming home every day to your family in a bad mood. It's your children associating you coming home with the guy in the bad mood coming home. It's being on hair trigger all the time despite your best efforts. It's living in a place I don't want to live.
The funny thing is, I look at that and I don't feel like I should be willing to pay $300,000/year for that... but apparently I am.
I sort-of know Jeff, and I think he comes here sometimes, so: hi! Funny thing: the same company "inspired" both of us. The best minds of my generation are figuring out how to get two broken systems to talk to one another.
"The best minds that I know are thinking about how to make people click ads."
There is a considerable number of exceedingly intelligent people in pure mathematics and (theoretical) physics that don't work for Google, Facebook etc. and never would. Those that do often have nothing to do with Ads even three to four edges removed (think Martinis or the people at MSR).
This is true, but don't overestimate it. I know first rate math & physics types who gave up on academic work and now work at a FAANG or similar; and I know second rate ones who stayed. So it's a mixed bag.
It's neither rare or difficult, exactly. The problem is how you look for the job.
Most corporations in the US that are for profit aren't about doing good, they're about making money, and publicly held corporations are even legally encouraged by US law to put the shareholders' bottom line first and foremost.
Non profits can care a lot more, but they generally (at least the ones that exist not) don't focus on something abstract like software, they generally serve an immediate need like affordable housing or surplus food distribution or job training.
Until the business climate in the US changes, about all anyone can do if they want a job where work actually helps people is either work somewhere they get paid enough to use surplus cash to help people or work for a non profit.
I think an idea that hasn't really been tried yet is building a non profit for software... not fitting a non profit base to an existing package, but building a corporation that is made to produce software for the public good.
> I think an idea that hasn't really been tried yet is building a non profit for software... not fitting a non profit base to an existing package, but building a corporation that is made to produce software for the public good.
Mozilla? Unfortunately, they weren't successful at creating new things of value (with maybe Rust being the exception).
Who are your customers? There are plenty of low level systems developers at Facebook and Google and so on. The solve the same hard and interesting problems that you do, probably at greater scale so they're even more hard and interesting. Often they're many layers removed from the people who directly get others to click ads. Being a low-level developer, or being at a separate company, doesn't necessarily put you at any greater remove from the advertising octopus.
I work in Fintech, our customers are banks and the like. They actually buy our software because it generates value directly instead of trading in human attention.
Maybe you think banks are just as bad as advertisers but I tell myself I am enabling the tens of millions of Americans who have retirement accounts. The day-to-day is enjoyable nonetheless.
> Maybe you think banks are just as bad as advertisers
Banks as in consumer banks? Maybe not. Commercial banks, brokerages, hedge funds? Welp. I admit that some of those have made my imminent retirement possible, but from a broader view I don't see much good about how large the US financial sector is compared to the overall economy or the preferential treatment they get from our government.
> I tell myself I am enabling the tens of millions of Americans who have retirement accounts.
I'm sure many at Facebook would say they're enabling small businesses and non-profits directly through advertising, and many more "little people" through the platform(s) that those ad dollars pay for. They're also enabling some very unsavory people and behaviors, as are most in fintech. Read the news lately? ;) Everyone likes to dump on ad-funded businesses. I've done so myself. It's not entirely unjustified, but sometimes it seems disproportionate and even hypocritical.
Ads are only the way of making money, or are you saying it only matters what the end result is? It's possible to sell ads and also do good with the work.
Businesses have a tendency to optimize for making money so if the only way for them to do so is by having people click on ads, guess what they'll eventually become great at.
>Unfortunately I agree with this. A great quote I saw a while ago:
“The best minds of my generation are thinking about how to make people click ads.” –Jeff Hammerbacher
They're not really though. Ads may be the revenue stream but it's not like the top engineers at Google were on ads. They were building the search engine.
If you meant to say that Google's top engineers _used to_ work on the search engine but nowadays they work on making people click on ads because that's were the money is, then I wholeheartedly agree with you
No, it's like saying the best athletes of our generation use their gifts to get people to buy stuff. That's how they make their money, but ultimately it's not what they spend their gifts doing. They work to be at the top of their sport and other people figure out how to make money on that.
Successful/rock star athletes spend 99.9% of their time honing their athletic skills and the rest on advertising deals. Google on the other hand spend 99.9% of its time on making people click on ads. Because that's their athletic skill? No. Because money.
It's an amusing quote in the sense that it gets used by two people on opposite sides of it, and they're both wrong.
People that hate ads love that quote because they like using it to lambast the tech industry (in general, and advertising in particular), even though only a small percentage of engineers or other tech industry employees work on ads.
People in the ad space love that premise. You know what's worse than that premise? Admitting to themselves that they're not the best minds of their generation and they're still stuck doing work trying to figure out how to optimize ad clicking - the worst combination. At least they get to pretend they're the best minds of their generation, if they buy into the quote, that's a consolation prize.
The best minds are largely not working in advertising (maybe a small share of them are). They're figuring out how to leverage CRISPR to cure and prevent disease, or trying to figure out a therapy for Alzheimer's disease, or working on immunotherapy. They're the kind of minds that were working at Pharmasset figuring out how to save tens of millions of lives by curing hepatitis C. They're designing and building the next generation of semiconductors at ARM, Apple, TSMC, Samsung or Nvidia, pushing against the boundaries of what's physically possible. They're working on electric cars at Tesla or VW. They're trying to solve our battery problems. They're launching rockets at SpaceX or Rocket Lab. They're designing the next airplanes for Airbus. They're at NASA, ESA, JAXA, CNSA, heading to the Moon and Mars, or working on James Webb, figuring out if Venus contains life, and so on. They're designing the next generation of nuclear reactors, ITER or maybe working at LHC. They're working at Illumina, Boston Dynamics, Intuitive Surgical. They're in national and university labs all over the world, trying to solve very hard problems on a daily basis. They're even working on hypersonic weapons, military drones and designing nukes. And that's not meant to exclude the rest of this giant world, as the world is filled with examples.
I have been lucky enough to work with a lot of great people, and I definitely found a lot of enjoyment in a lot of the work I've done, but I definitely wish that time had been spent doing work with more of a positive impact... Luckily there's still lots of time and I'm working on more impactful stuff now!
> Every paying software job I've ever had was in some way involved getting people to click on ads.
That's an amazing fact.
May I ask how old you are?
I've been designing SOCs, DSPs, Control Systems and a lot of software for various systems since 1985, and I can only recall one that might have been close to "clicking on ads" (it was a personalized "on hold" system for dial-in to major retailers (like JCP), to replace Muzak with offers and information and stuff). I was the VOIP-to-Enterprise-Telecom integration guy, so not directly tied to the ad-part, but the company pushed couponing to their clients pretty hard.
Not to mention that those CRUD apps have been done, exactly the same, 10000s of times before and 10000s of people are doing the same work you are doing now at this moment.
Everyone thinks they are productive but value is being burned all day, every day in most companies all over the world. The level of reuse is depressing and people, especially here, firmly believe we need to use the latest frontend and backend crap to rebuild what was working perfectly fine before.
More and more everything appears resume driven and to extract more hours billed or even higher LoC or commits per day. It is a nightmare and I refuse to play more and more. The over architecting for shit one off projects burning 10000$s a month ‘in the cloud’ so it probably, maybe it won’t crash with the 5 users per day it has using it.
Yes the tooling is better but the drive to use every latest tool and tech really makes no sense for almost any project.
Fitting anecdote; a company from LA was contracted to build a crud app for a big corp; they used react, typescript, node, express, aws, aws lambda, redis, dynamo and rds. For a crud app. They got $50k for it. For a crud app. Costs were through the roof running it as you need actual good people to run it. It failed a lot of times for such a setup as it was all the latest of the latest architecting wise. Brittle as hell even with all the tests and resume driven busywork. I rewrote it 1 php + bootstrap and jquery file in 1 day with a perl script to migrate the data and running on a 1.99$/mo server. Cheap, easy and no worries; handles a lot of traffic for the cost of a cup of coffee, does not need devops and they paid $2k for it to me. This is not the only story; microservices + serverless + the cloud really are excellent for making money, but as you say, no fun and in my experience, no benefit. Just added complexity.
Unfortunately there are a lot of people around these parts who have arrived at the conclusion that the only way to build software today is using all those services and more (I mean, where's kubernetes in that stack?). They will aggressively defend their role which is no longer about creating software but instead entirely about weaving together a myriad of components.
What's often missed here is that the problem the lego is slotted in to is often subtly different each time. So you have a guy building an 8x2 lego brick that slots perfectly into his mansion and then someone else really needs to cut a corner off of it to fit their problem. But the original designer never gave you the option to do that so now you have to write an adapter to plug the 8x2 into an 8x2 without a corner.
It only looks like reinventing the wheel every time if you're completely ignorant of the subtle differences of each problem domain. And if you make a bunch of changes to create arbitrary lego bricks then now everyone has to learn your brick framework before they can make an 8x2 brick.
I agree. You have to know your lego blocks well and understand where they fit and where they don't. But if you choose to remain ignorant of the available lego blocks, and instead write everything from scratch every time, you're wasting a lot of effort.
> But if you choose to remain ignorant of the available lego blocks, and instead write everything from scratch every time, you're wasting a lot of effort.
That's a good seam upon which to filet this analogy. A quick Google search turns up uncertainty as to how many different bricks there are. It could be in the 3000s, 6800s, or over 12000. We are all ignorant of the available lego blocks.
I'm not entirely sure what you mean. But if we're talking about AWS cloud services, there are certainly AWS experts who know how to develop software in a cloud-native way and utilize most or all of the relevant services. That knowledge is what we are paid for. It's also true that there are a lot of AWS services available and expertise is divided into different specialty areas, like ML, IoT, etc. Hard to be expert at everything.
Agreed but that is not what is happening though ; people do both; they use legos and reinvent the wheel. Making everything, imho, worse.
The authentication thingy you got as lego block did not quite fit and now you are using more code than the module has in it to add what you need for it to do, making the original module probably impossible to upgrade without a lot of work and creating a problem for maintenance. Now you can fix this by telling your client; ok, I won’t do this because your idea of auth is wrong. But then the client might kick me out (probably not a bad plan if they are doing trivial things significantly different than the rest of the world). I can just implement it like I mentioned above and make money maintaining it (risking having also to maintain the original lib). Or I can just make a new lib and for which I know it does what it was.
Then, my favourite option, is just take something that just works already, deploy that and adapt a few people their habits around it. It fits 95%, stop whining. The least popular option ofcourse, so there we are, creating slightly different wheels with millions of almost the same LoC and unused andor unmanaged libs that should not have been written or used, again, imho.
I have different experiences. My "lego blocks" are AWS services. Each service is a black box that maintains its API backwards compatible forever. My custom stuff is built around the API and keeps working forever. ( * ) In my view AWS has been very successful in maintaining this backwards compatible model even when they often add new features to services.
There are sometimes edge cases that are not possible to implement, but they are rarer and rarer as the service portfolio grows. In those cases the only option is to write your own container and deal with the usual package-level dependency issues in whatever programming language you use.
( * ) The only thing that doesn't work forever is Node.js, which is deprecated every few years and needs to be upgraded to a new major version. I'm looking forward to the possibility of WebAssembly/Deno replacing Node.js as an "evergreen" application platform.
In the past 5 years all my projects have been based on AWS Lambda, API Gateway, S3, DynamoDB and other serverless technologies which are only billed for actual usage and network traffic. So they don't cost much unless they actually get heavy load from users.
I love how the justification of numerous AWS services is always "so it can scale" but if and when that scale ever happens, a new architecture is necessary because the costs become untenable.
I haven't seen this happen myself. In projects that I've been involved with, the justification of using serverless services has been to reduce development costs, because you don't have to setup and develop everything from scratch and spend effort maintaining the infrastructure. The ultimate goal is to avoid doing anything else than define the business logic that is unique to the project.
Is it the same wheel? It sounds like you wanted a Honda Civic, but you used the wheels from an Abrams tank. So obviously the solution is to invent a tank wheel <> Civic chassis adapter layer?
>They will aggressively defend their role which is no longer about creating software but instead entirely about weaving together a myriad of components.
Same thing is happening with mechanics. Young mechanics repairing parts less often, more handing off parts in need of minor repair to specialists and a focus on fitting parts.
I'm so tired of React being thrown into every single web stack as of late. You don't need some large React boilerplate mess, that could've been done with some simple PHP+Jquery stack. It's caused this SPA nightmare also, where you have a large delay in page loading, when it's a site with basic functionality.
> Not to mention that those CRUD apps have been done, exactly the same, 10000s of times before and 10000s of people are doing the same work you are doing now at this moment.
And yet now OP is making wood furniture, which has been made before the same thousands of times. Some people need originality some don't. Some just like the work for its-own sake. For those who need originality they should find a job working on something that's not a CRUD app. Not everything is a CRUD app. That's on them.
Sure that is true, but then again I have written many of employee directories, cms’s, erps, social networks, running apps, banking fronts and backends, insurance fronts and backends which were all exactly the same except forced in a different tech because of the taste du-jour. We wrote a massive insurance monolith system in c# and my new client wants it microservice and in TS/node. We will be doing exactly the same as 2 years ago and make a boatload of money while we have a working and tested solution. Almost all of this is CRUD with some calc sheets in excel which we did in the 80s, 90s, 00s and again now. The functionality is completely the same; even the screens have the same ux; ui is a bit updated. But the MS foxpro version was fine almost 30 years ago. Not my money though so what can I do.
Not sure how it fits wood furniture; you cannot copy a chair in a nanosecond; you can software. I am not saying there is no space or need for bespoke and unique software but if you are doing LoB apps for/in a big corp, as many of us do daily, chances are there is a) a perfectly fine version already running in your corp somewhere and b) a completely identical product in all the companies around the block.
> chances are there is a) a perfectly fine version already running in your corp somewhere
You and I have very different experience with big corps :)
My experience is closer to "There's a half-finished version running somewhere that was cut short because of budget/deadline constraints. The team that worked on it is long gone, and it has been maintained by an outsourced team of junior resources for 3 years".
Re-writing a customer-facing system to be closer to the "modern" web experience they're used to on their everyday apps and sites _can_ make a substantial difference to customer experience, and ultimately the bottom line.
$50K is kind of cheap actually. I've seen people pay $200K and more for basic CRUD websites with a little extra this or that.
In fairness, if your web app does more than CRUD, or if you expect it will in the future, then PHP and jQuery wouldn't be my first choice. I'm very familiar with how much of a mess an app can become when pursued that way -- a nasty soup of callbacks and conflicting states. As tooling around React improves -- and it's already quite good -- it will be easier to cost-effectively write a React CRUD site.
If you just want a CRUD site that works, and you want it fast, a Rails site with scaffolding will probably give that to you in an hour or two -- with almost the whole hour being spent thinking about your data model.
> Not to mention that those CRUD apps have been done, exactly the same, 10000s of times before and 10000s of people are doing the same work you are doing now at this moment.
I recently worked for an org that had quite a large software suite (internal system) that was 99% CRUD. For every single CRUD operation, there was a front-end call, to a back-end service, that called a specific stored procedure. So pretty much 4 stored procedures for any construct stored in the database. No ORM, very little dynamic building of queries, thousands of database tables. Releases were a nightmare, change management for database objects is its own complexity, especially with so many objects. I think people were open to change, but with a decade of existing data structures+data, and a long list of projects, nobody wanted to make a change...
My one regret, with respect to that org, is not driving the necessary change.
The recent (modern startup, hip and happening and VC invested company) I built a CRUD frontend for has a lovely system: mysql but the db is not relational: 1000s of tables matching the Objects in their OO code. I have so many scripts and generators and, especially for mysql, introspection tools it was not that much work but what a horror show.
> The level of reuse is depressing and people, especially here, firmly believe we need to use the latest frontend and backend crap to rebuild what was working perfectly fine before.
This seems overly cynical to me; the reason software developers are well-paid (overpaid, some would argue) is that what they build is measurably better that what was there before (at least in dollar terms. I'm not getting into the moral quagmire of automation replacing human jobs ATM)
Code reuse is often a red herring, when taken to extremes. Here's a thought experiment: all software developers are now required to implement all CRUD software in SAP or Peoplesoft (pick one). How much of the code do you think will be re-used, and how much will be in the customizations?
I think what has changed is the expectation that work should always be 'joyful'. I don't the majority of employees working in any industry have ever been involved in cutting edge or creative work.
Can you imagine what the medical field would be like if the majority of general practitioners started complaining about the fact that they don't get to work in neurology research?
"The brightest minds of our generation are working on making people click ads".
Every time I hear this quote, I remember all the small businesses and ventures that only exist because of Instagram, Facebook and Google Ads. Housewives baking cakes, a leatherworker making custom backpacks, a blacksmith restoring antique knives - those are just personal friends of mine who wouldn't be able to build their businesses if not for what those brightest minds of our generation are doing.
Is all of this really worthless to you?
(Copied over my recent comment on this exact topic, I hope it's OK with the mods).
At least for me, this is exactly why I do personal projects. E.g., here's something random I did a couple weeks ago. It's so simple that it's almost embarrassing to post, but it's:
100% vanilla Javascript
no dependencies
no cookies
100% client side; no server side state, no ajax
state is stored entirely in the URL
state is correctly maintained across page loads (i.e. page edits its own URLs to maintain state)
Javascript is 100% local, so it's instant and doesn't require any data fetch
correctly detects a potentially spoiler-full page load by looking at the referrer (so it doesn't annoy you as you navigate around the site)
... and the entire thing is less than 100 lines of code
And it was surprising to me how genuinely fun this project was. I work on compilers/runtime systems for a living and I often get stuck in large code bases. I enjoy what I do, but working with a small codebase that's not massively overabstracted is just so fun.
The other thing that stuck me, as I was doing this, was how much the Javascript ecosystem has improved over the last 10-15 years. It was possible to do this in a very small amount of code with no dependencies precisely because of the all the bells and whistles that have been added to Javascript over the years. Maybe this isn't so obvious to someone who has been neck deep in Javascript for 15 years, but as someone who has been mainly in other languages, it was a very noticeable and dramatic improvement. The web platform is way, way nicer to develop for now than it used to be when I first got started.
Now I'm trying to figure out what other small projects I can get involved with.
Over the next year or two I hope to develop a mobile app.
After 15+ years of big messy corporate server programming I think this might be the place joy is hiding.
I accept that I will probably not make the money I have made gluing clouds together the past couple years. But maybe I can make something useful that people like to use.
I don't think that this absolutely microscopic slice of the overall software development ecosystem is really representative of anything interesting.
But yes – I do think React is a pretty good approach to UIs compared with many things I've used in the past. There are good and interesting discussions to be had about the different possible techniques that can be used; this isn't an entry into one of them.
Separating the HTML, JS, and CSS is an approach that works up to a certain size/complexity app. When I’m working on some functionality, I need to be able to understand the relevant parts of the HTML, JS, and CSS. With a smaller app, one person can more or less grok the code base well enough to find everything they need. With simpler apps, you might have fairly uniform or boring styling and not a ton of CSS rules. If I’m setting something up with Bootstrap and just getting it working, I can probably ignore CSS for a LONG time.
If you’re working on something larger and more complicated, you really want to have all of the HTML, JS, and CSS for a particular piece of functionality right in the same place so you don’t have to go searching for it. It’s how you survive in large/complex apps. You’ll think, “The margins in this box are too large” and you want to be able to fix that without trying to grok some massive set of CSS rules, and when you do get the CSS rules that you want, you want to know that they’ll be delivered to the client—something that is easy if you deliver all of your CSS rules to every client, but hard if you want to split your CSS.
I think the only real tragedy here is that too many people are copying “the way Facebook does it” without wondering if Facebook might have a completely different set of priorities than they do.
I agree. I came to realize a few years ago how arbitrary the HTML, CSS, JS separation is. It makes sense if you think of the web as simply a set of documents (with progressive enhancement and all that), but we've gone way beyond that metaphor. If you're building a web app, separating the three is cargo-culting.
I'm ~23 years behind GP, and I feel the same way as them already. Goes to say, this may be a matter of personality.
There were few and brief moments in my career as a software developer when I was truly happy at my work. Most of those involved implementing an architecture or algorithm I figured out from scratch, or took from scientific literature - either as prototype or directly in the product. Sometimes as "hold my beer, I got this" moments. But as you can imagine, this is maybe 1% of the things I've been doing at various jobs.
From where I sit (a backend developer, thoroughly burned out by webdev a couple years ago), most of coding I do is software bureaucracy. Turn this data into that data, ensuring module X and Y get paged in the process. Oh, half of the code I'm about to write is implemented elsewhere - quick, figure out how to juggle the dependency graph to somehow route control from here to there and back. This data I want to convert is not of the right colour - oh, I need to pass it through three sets of conversion layers to get back essentially the same, but with a correct type tag on it. Etc.
It's utterly and mind-numbingly boring, unless you architectured the whole codebase yourself, at which point it's somewhat fun because it's your codebase, and who doesn't like their own Rube Goldberg machines?
At this point, I've learned a coping strategy: just forget the project scope and focus on your little plot of land. Doesn't matter that the software I wrote half of is going to help people do exciting stuff with industrial robots. What matters is that the customer changed some small and irrelevant piece of requirements for the 5th time, and I now have to route some data from the front to the back, through the other half of the code, written by my co-worker (a fine coder, btw.). So a bunch of layers of code bureaucracy I'm not familiar with, and discovering which feels like learning how to fill tax forms in a foreign country. If I start thinking about the industrial robots I'll just get depressed, so instead I focus on making the best jump through legacy code possible, so that I impress myself and my code reviewer (and hopefully make the 6th time I'm visiting this pit easier on everyone).
Maybe it's a problem of perceptions. Like in the modern military - you join because you think you'll get to fly a helicopter and shoot shoulder-mounted rockets for daily exercise. You get there and you realize it's just hard physical work, a bit of mental abuse, and a lot of doing nothing useful in particular (at least until you advance high enough or quit). And so I started coding, dreaming I'll be lording over pixels on the screens, animating machine golems, and helping rockets reach their desired orbits. Instead, I'm spending endless days pushing people to simplify the architecture, so that I can shove my data through four levels of indirection instead of six (and get the software to run 10x faster in the process), and all that to rearrange some data on the screen that really should've been just given away to people on an Excel sheet with a page of instructions attached.
(Another thing that annoys me: a lot of software I've seen, and some I've worked on, could've been better and more ergonomic as an Excel sheet with bunch of macros, and the whole reason they're a separate product instead is to silo in the data, the algorithm, and to prevent the users from being too clever with it. Also because you can't get VC funding for an Excel sheet (unless you're Palisade).)
Got a bit ranty here, sorry. I guess my point is: I accept the industry is mostly drudgework, but I refuse to accept that this is all essential complexity. Somehow, somewhere, we got off track, because all this shit is way harder than it should be.
> who doesn't like their own Rube Goldberg machines?
Love that. Yes, the 1% (of which I've been a part) often get to control both the structure and rate of change for a large codebase, and in perfecting the fit to themselves they almost inevitably make the experience worse for everyone else.
Right. And I'm not angry at the person who drives the shape of the codebase; working with code designed around a different philosophy than your own is something that one can get used to. But I do feel that the large codebases I've been dealing with were often way too large for what they're doing - even though I couldn't always pinpoint what was superfluous. It's probably just entropy at work, but I can't stop thinking - there must be a better way!
I definitely agree. It's quite easy to look at a large codebase and feel like it's way more complex than it needs to be. That line of thinking often leads to rewrites, and in my experience rewrites often lead to newfound understanding of why the codebase was complex in the first place.
True. I've learned to resist the urge to rewrite code just because it feels too ugly/complex to me - except in the cases where I know I can get tangible benefits (performance, better API) and the scope of rewrite is limited and guarded by extensive tests. It's true that some of the cruft accrues because of changing requirements and the ongoing process of learning that is a good chunk of our work.
And yet accepting that, I still can't shake the feeling that things are more complex than they should be. That also applies to the code I'm writing myself (which is immune from the "rewrite because I could do it better" urge)!
I suspect it is all about perspective - I entered software development out of desperation for any career tract job out of grad school 8 years ago, experiencing 2.5 years of a desperate job search while enlisting in the Marine Corps Reserve in the interim. I was ecstatic that I entered a profession where I can solve problems, and I’m still very happy I can do so today, even while having grinded up to senior at a FAANG.
I no longer code outside of work though & found a happy balance of learning on the job with my productivity. I find the amount I do get to spend coding also has gone down - a lot of my time is spent mentoring, in meetings, writing planning docs, and just thinking about projects, or occasionally researching what’s the best paradigm for my problem. I am ok with this, as I am taking more joy in being a leader than directly coding necessarily. I recognize not everyone shares the same perspective though.
I like how you describe focusing on your plot of land as a positive coping strategy. I had been doing it instinctively (or necessarily), but had thought of it as some kind of failing. Your comment makes me feel better about it.
The end goal of software I work on is to help airplanes land safely. But actually, I work on the software which presents the user interface that displays and sends configuration settings to a device on the ground that helps achieve that.
So my day to day is figuring out whether two bytes in a serial buffer an ad hoc protocol are actually transposed, or if the comments are in 20 year old code are lying about which is which. Or trying to figure out whether a Win32 font setting command from two decades ago is still interpreted the same on Windows 10.
The rabbit holes and yak shaving just go on and on. I have it in me to enjoy doing the work, but when I think about how many steps I am removed from the actual airplanes and I feel badly for filling my brain and my workday with trivia.
Yeah, I also initially felt this is some kind of failing (I'm usually the "big picture guy"), but ended up accepting this as a coping mechanism. It's not that I forget about the purpose completely - just learned to think about it more when planning and designing, where the wider perspective also affects the task in a meaningful way. When deep in the codebase, I try to put it aside, so that I don't get in a depressive session of thinking "why do I have to shovel this garbage back and forth to satisfy some low-level requirement, instead of, I don't know, talking to people who'll use this on-site and getting some real feedback from them?". Rationally, I know that shoving garbage is an important part of getting quality software that helps others do exciting things. Emotionally, I just wish I was in their shoes (probably just as much as they wish they were in mine).
You seem a bit more positive than me when facing this reality, so I'm glad you have it in you to enjoy this. I almost have it, so I find ways to cope, and enjoy the opportunities to do something less mundane that come every now and then in such projects.
> but had thought of it as some kind of failing. Your comment makes me feel better about it.
I do it as well; I think organizationally it's a failure, but it is an effective personal coping mechanism. In other words, it's bad for the organization that their codebase isn't really a melting pot of different developers' ideas but instead, if you zoom in enough you notice that it's really a series of hundreds of small fiefdoms each with their own slightly different customs and semantics. This is what creates that software bureaucracy.
For employees though, it works. It's about the only way that I really derive any sense of satisfaction from software engineering. When I can stand back and say yes, this package is mine, I made it and I will take care of it. With the melting pot packages it feels more ambivalent; some portion of the code is mine. Probably not the clever bits, they're probably bugfixes. So I don't have enough mindshare to get satisfaction from achievement, I don't have the satisfaction of at least solving one of the hard problems. No, those people have come and gone, and I'm left with the shale oil of satisfaction: fixing bugs, writing unit tests, and adding documentation. Like shale oil, the joy it brings is very close to the effort it takes to extract it. This isn't the "I accidentally hit an oil vein while digging a garden" joy of really getting to solve something.
Some people derive a lot of joy from doing things that help others (like unit tests, bug fixes and documentation); I'm unfortunately not one of them. Sometimes I wonder if it isn't at least partially because it's so hard to feel the impact. I know HN hates the idea of gameification, but I wonder if it couldn't be applied to good effect here. If someone could make an integration with CI, and with major editors, we could scrape data regarding how many times your unit tests have caught bugs, and how many times your function/class documentation has been viewed. There could be a leaderboard for people that are into that. But for me, just the raw numbers is enough. "Unit tests you have written have exposed 137 bugs in PRs, and documentation you have written has been viewed 138,476 times" would be a huge motivator. It gives me that warm and fuzzy "I actually productively contributed" feeling. Right now I get nothing back; I have no idea if anyone has ever read the documentation I spent hours writing, or if my unit tests have caught any issues.
Oh man. I’ve dealt with so much legacy code I avoid reading comments as long as possible, they lie more than I’d like. Sadly something like bit fields are the one place I feel I have to trust the comments god help you if they’re no longer accurate.
> I've learned a coping strategy: just forget the project scope and focus on your little plot of land.
I get what your are saying and you are getting a lot of positive reinforcement about this. I would suggest to you a caveat.
I've worked in some orgs where this mentality becomes entrenched. In these new-fangled tech startups with people changing roles and even companies every two years this probably happens less. But I've seen people entrenched into their own kingdoms for decades. An individual, or small team, creates a moat around their "little plot of land" and they become intransigent. This leads to two bad outcomes: they resist any change to their systems or process, going so far as to obfuscate it to protect it. They also don't pay attention to holistic concerns, caring only about maintaining some idyllic vision for their own "plot of land" to the detriment of any larger objectives.
I think this is a real concern when divisions within a larger org compartmentalize around code or system boundaries. It is not something to shrug off as if it couldn't happen to you.
Honestly, I've used an unfortunate turn of phrase in my original comment. "Your little plot of land" indeed implies a fixed, entrenched moat. What I meant was something different - the area of code I'm currently working on. That may be a different place with every new task. My coping mechanism isn't building little kingdoms - just focusing on the code a given task involves while purposefully forgetting about the global context of the application, in order to not think about how minuscule and irrelevant the task is to the exciting things the company is doing. That context is usually not useful when doing the changes I've already planned beforehand, and it is emotionally distracting.
Me too. And all I can do is point at Javascript in webpages. Which, as a Java dev (if I can still call myself that 15 years into doing all sorts of other stuff too), I want nothing to do with but somehow get dragged into all the time.
I can really relate with the idea that we're feeding the beast we built rather than the one borne of necessity. Unfortunately, which I'm sure the latter still exists, it's the former that always seems to pay the bills.
I'm at the end of my software development life cycle, but I've got the opposite perspective on java vs javascript. There's just so much boiler plate and unnecessary typing to implement solutions in java relative to javascript. The amount of stuff I can accomplish per line of code is significantly higher than any other language I've worked with, with possible exception being python.
I think it's amazing to see CICD tools which make it super easy and quick to deploy web apps-- such as Vercel, for example.
Simply by booting up a github project, and starting from a template, I can deploy a SSL-secured site within minutes-- as a frontend example.
On the backend, using infrastructure-as-code solutions, to again, "templatize" a starting point, such as an AWS service or set of connected AWS services.
Whereas up until recently, I'd typically go rent a chunk of a server to run Linux, and setup NGINX-related security features myself. Not that tough, especially the more I learned NGINX. However the 3-click deployment via tools like Vercel take away so much headache. That said, at times, I think it's can be necessary and easier to simply setup a linux server, so as to have full control over the process.
It's just nice to have the additional options.
I love how much the software-supporting ecosystem has evolved.
It lets me focus more on development, and less on devops. And that what I want, as a developer-- To get to coding ASAP, and not worry about tangential concerns-- as a matter of specializing.
(Disclaimer: I only have about 2-3 years of professional experience, but prior to that, was teaching myself for about 5 years off and on. In that timespan of 7-8 years, I feel so assured and emotionally secure given the reduction of headaches due to the fact that I no longer have to learn so much ecosystem related stuff, and can focus more on programming)
I started programming on an amateur basis in 1984, professionally in 1997. I'm 52 now. My experience is that coding has become more and more interesting and pleasant. In the early days, I had to deal with under-powered languages that either couldn't do certain things or that made them very difficult. Then I encountered languages that were much more pleasant to use, but had other problems such as not scaling well to team-level development -- sometimes even I couldn't figure out what I had been doing. Languages are clearer now, they make thinking about problems easier, and while this issue has not disappeared, it's less bad for me than it used to be.
For me, tools, including languages, do matter. I can well imagine that programming in Java would be soul-deadening (although Java is still better than some languages of the past).
Incidentally, I am not dunking on languages of the past. Lisp has been around for a long time, as has Smalltalk or Haskell or ML. Many of those languages were not accessible to anyone without a mainframe or expensive workstation. This situation has improved greatly in the past decades, which to me is another reason to prefer coding today versus the past.
Obviously, most of us are not able to cherry-pick our toolset for work. We use whatever our employer says to use, or whatever the demands of our project require. This may be part of why many people find coding to be an uninspiring experience. Also, the problems that people work on might be dull, it's hard to get motivated about a basically tedious problem.
Last, it's worth acknowledging that some people just don't love coding all that much. It's hard to imagine doing really well at something you don't deeply enjoy day in and day out. And your passion can change over time: you might really enjoy something in one part of your life, and not derive much joy from it at another part.
> Compared to the first steps I took as a developer about 15 years ago, almost everything about software development seems better to me. I find developing software to be easier, more consistent, and less frustrating than it used to be. Good development practices—things like testing, CI, coding standards and so on—seem more prevalent than they used to be. It's easier to get code out to production than it ever was. Everything in the ecosystem—like tooling, libraries, and services—feel far more open, consistent, and accessible than they used to.
All true points.
As an individual developer, if you are working on what you want to be working, we are in a great time. You can pick from a selection of outstanding tools and we have, for all practical purposes, access to infinite hardware.
As a developer that's part of a team... it sucks. Expectations are getting ever more unrealistic - probably because so many things are quickly done, but other things are just as slow or even slower. Most people's jobs consist of wiring together 150 libraries across 30 'microservices' (which are rarely microservices, but often distributed monoliths) and that's after spending a lot of time bikeshedding on what the tech stack is supposed to be like.
The challenge is that in most projects, the things that make things "better" also hide entire galaxies of technical debt. The MongoDB debacle is an example of that problem, as is the outcome of Docker (images full of vulnerabilities, difficulty in making even the most quotidian tools like strace, etc. run easily, converting a known and enforced-common production userland environment into a hodgepodge of 'whatever', etc.) and so on.
Supportability, risk-mitigation, debuggability, etc. are all thrown away in most of today's environments. An awful lot of tech companies are running mostly on hope.
> Some day most of you will get over the dollar-induced Stockholm Syndrome that seems universal among junior developers
We aren't working hard because we just want money. We want to save up enough money so that we can retire at 55 and stop working. Then we can start spending all our time complaining that the software industry is going in the wrong direction.
Because in any other industry, the effort:earnings ration isn't nearly as good, so we'd have to work into our 60s before we could do that.
> We want to save up enough money so that we can retire at 55 and stop working.
If that's what anyone takes away from my jeremiad, then I actually think that's pretty great. Except ... why not 45? Maybe if more people could use software development as a quick route to something else that created more personal satisfaction and/or social value, that would actually be a good outcome. A bit more "it's just a job" and a bit less "it's my holy calling" is a necessary ingredient in that formula.
Not everyone here works for FAANG companies in silicon valley. Retiring by 45 is possible in much of the rest of the country but one has to go hard to do it.
For myself, I simply wanted to be free from financial worries and financially independent. I hit that at 35, and yes, I'll probably be able to retire by 45, but I'm a bit too frugal for my own good. For someone living a more 'balanced' lifestyle I think 50 or 55 is a fine goal.
I disagree with you. Today's scenario is certainly much more interesting than the post dot-com boom years, maybe not as interesting as the very early days of computing, but certainly ripe for innovation, and a test-bed for innumerable breakthroughs that are yet to come. We are currently living the post "Big data" age and advancing fast toward the pre quantum computing era, with a renaissance of AI and machine learning technologies. Cryptography is ripe for disruption and the past years have seen the introduction and deployment of novel concepts and semi-old ideas that have finally found application with cryptocurrencies and distributed systems. There are several projects at the forefront of technology with defined goals in mind, and definitely solving real world problems, like privacy in cloud computing, for example. Software stacks have matured intro fully fledged products and there is plenty of choice for every use case, one just need to delve into the enormous amount of information available and do his homework. Operating systems have also advanced a lot and I love, for one, how easy is to operate Ubuntu nowadays, and the level of freedom it offers to users. Maybe you need to think a bit outside the box? respectfully, have a great one!
I tend to agree but I think what’s driving this stuff lies in the changing software product- and project - culture, and the glue-like nature of modern work is an outgrowth of that.
On the engineering side we’ve fully embraced the ephemeral, disposable nature of code, which tends to run counter to business needs which may require hastily constructed code hack jobs to stick around indefinitely. Really makes taking pride in workmanship impossible. You’re allowed to feel good about what your company is doing, but if you feel good about your code then perhaps you’re indulging yourself on company time and could be more productive... so you end up feeling guilty about doing good work.
I also think over the last 20 years there’s been a concentrated movement to remove technical expertise from the product design process. Engineers are present to provide estimates and gauge feasibility, but aren’t granted much leeway beyond that. Decades ago, you needed dev skill to actively shape technical projects since there wasn’t even that much user-level experience with computers and technology to make judgements.
This loss of balance tends to mean software is driven forward almost exclusively by either new features or redesigns. Technical enhancements are rare, unless they exist to support existing features. Nobody wants to spend a few sprints on "Make this thing feel 30% faster" or "Deal with our memory usage issues in these cases" until it reaches crisis levels or customers complain. So you get bigger, bloated software that runs slowly because nobody is authorized to make anything faster or use less resources until a product market position is threatened because of such technical deficiencies.... although sometimes the answer by product leadership to such problems can be even more features.
After having read the article Built to Last[1] from the latest issue of Logic Magazine over my morning coffee, and spending breakfast pondering my coming day of figuring out if we can disentangle some stuff I'm working on from the increasingly complex and inscrutable Big Data ecosystem, and if it's even going to be possible to get management to approve it when the requests to stick RSS feeds into DBMSes are forever piling up, and generally thinking about my own mid-career situation, and, this comment really hit me like a punch in the gut.
This quote from Built to Last is going to stick with me for a while: "... many people don’t even see the preference for complex languages for what it is: an attempt to protect one’s status by favoring tools that gate-keep rather than those that assist newcomers."
I'm not leaving the industry any time soon. At least in the abstract, I do like what I do for a living, and believe that there are still some habitable spaces left in the field of informatics. But there's a part of me that is beginning to wonder if the best and most comprehensive literary (sort of) analogy for modern software engineering culture isn't the Orks from Warhammer 40,000.
Alternatively, one could take the view that low-abstraction languages are designed to turn programmers into replaceable parts. This benefits the “low-quality for low-price” software vendor culture at the expense of programmer’s pay and status and also at the expense of the customer’s ownership and quality experience.
This attitude, both from the business side and from the developer side, has always struck me as an egregious misapprehension about where the value in software development lies.
It's never about the code. It's about getting the job done, and the code is just a tool for getting it done. And getting the job done is ultimately about domain expertise, or design skill, or engineering acumen, or any number of more abstract skills. When developers get all protectionist about complex technical tooling instead of focusing on perfecting their ability to get the actual job done, that's a moral own goal. It doesn't challenge the idea that developer skills are inherently low-value and replaceable, it takes the idea as a given, and asks, "OK, since we're inherently low-value and replaceable, how can we artificially make it harder to replace us?"
Me, I don't want to respond to the idea that I'm just a code monkey by trying to be the fanciest code monkey imaginable. I don't want to be a code monkey in the first place.
> "... many people don’t even see the preference for complex languages for what it is: an attempt to protect one’s status by favoring tools that gate-keep rather than those that assist newcomers."
Don't forget the ones who jump onto a new language or framework so that by dint of experience they can be the gatekeepers for the next generation. This was staggeringly apparent with both Java and Go, each in their time.
I learn new languages for technical development and to stay curious and fresh. You learn new languages for job security. They want to gatekeep the next generation.
In case anyone is inclined to go read the article, let me (potentially) save you a click with the following excerpts from it:
> the last thing many male computer scientists entering the field wanted was to make the field easier to enter or code easier to read, which might undermine their claims to professional and “scientific” expertise.
> Take the C programming language: it was created in 1972, but as one of the current COBOL programmers I interviewed pointed out, nobody makes fun of it or calls it an “old dead language”
> There’s an old joke among programmers: “If it was hard to write, it should be hard to read.”
> it’s perhaps no wonder that a committee-designed language meant to be easier to learn and use
And, of course, the quote from the comment to which I'm replying:
> many people don’t even see the preference for complex languages for what it is: an attempt to protect one’s status by favoring tools that gate-keep rather than those that assist newcomers.
If any of these quotes even resembles something you _might_ think about this field, maybe you'll get something out of reading the whole article.
Personally, these quotes are so backwards to me that the author could just as well have written "Programmers can breathe under water" or "grass is the cornerstone of a well balanced diet".
This is interesting, and it may be partially true, but I'm not convinced it's malice, as that statement seems to indicate.
Last year I wrote a small book called "Splash of Code", which teaches newcomers to code (in JavaScript) in a way that similar to the way I learned 30 years ago. I selected JavaScript because the barrier to entry is low, you just need a browser. Many programming ecosystems are daunting to setup these days but there are still some easy systems we can use to introduce newcomers without all the modern complexity.
Browsers have come a very long way in the last 10 years and are a pretty amazing platform for development. Once you learn a little bit you can start to write amazing software for a cross-platform worldwide audience.
Wow, that resonates quite a lot with me, though I'm not 55 yet.
I started my career as a software engineer with web development in the 90's. Everything seemed simpler. Literally.
Then, fast forward to 2020. I'll cite you an example of what happened EXACTLY yesterday. I have a web application which is complete and ready to be deployed. It's a backoffice application for one of our e-commerce sites. It's built using Phoenix, so there is a separate assets folder which contains a webpack config and its own package.json as well.
The frontend updates require me to update the assets manifest as well. So, we've setup CI for it to automatically do that for each deploy. So, as usual, it simply runs npm install, but, suddenly, everything broke. Remember, this was fine until our previous deploy. It was some weird error from node about not being able to do something with Babel. I had to spend about almost an hour to figure out it was coming from some other package that was making use of Babel. (If you're interested the error is this one[1])).
OK fine, we upgraded the babel version as indicated in that issue thread. However, it wasn't compatible with some other package on the OS we were running on. So, now I had to downgrade the entire node version itself to something we knew that worked.
We lost a good amount of engineering time simply because of this unwanted complexity. Remember, all I wanted to do was JUST deploy. Our backend code was perfectly fine. Just for one new added feature, we had to pay a price with our time. This is hardly an exception, this is becoming in the norm.
You may want to use `npm ci` instead of `npm install` on automated processes like CI. `npm ci` will install the package versions from `package-lock.json` that presumably worked while developing, `npm install` will try to install the latest that match the criteria in `package.json`
I've been doing this for over 20 years and feel the exact opposite. The process for getting an idea turned into working software is faster, easier and better than ever. You are looking at it from the inside. All the mechanics have changed from how you were trained and now the process is no longer bottlenecked by the kind of problems you are used to solving. From a higher-level perspective, businesses are 100x smarter about how to think about digital problems and solutions, what kind of talent they need to execute and how much it costs. Nothing will stop executives from trying to squeeze budgets and timelines, but that's human nature. But now there's a chorus of experienced people who can speak the truth, who know when to build vs buy, who know what quality looks like, who know that user experience is paramount. Software development has become commoditized which sucks for developers, but it's great for software.
I'm only 27 but I'm already dissatisfied a lot with most of what the software industry does and the decisions it makes. I've been 1.5 years without a job at this point and wherever I look for one I'm very disappointed.
- The arbitrary deadlines that serve no purpose. Example: we have to update our app every week/month because reasons.
- The utter lack of understanding of the concept of feature completeness. Example: operating systems that update every year for no good reason whatsoever. What's the point of updating from Mojave to Catalina as a user? What new does it bring? How does it empower the user in a way not before possible? No one knows because it does not. It merely moves things around for the sake of change.
- No one wants to understand what they're abstracting away. People keep piling abstractions upon abstractions yet can't answer the basic questions about how their operating system works at low level.
- Fashion. A lot of it. Basically, if you're doing Android, you MUST want Kotlin and Jetpack and Compose. Same for web — SSR is soooo 2010, gotta make that news website a single-page application because how come would we not use React. IMO, fashion has no place in engineering.
- This "we'll always be able to ship an update" attitude. This is the worst. No one wants to make high-quality software any more, they want to move fast and break stuff at the expense of the end-user sanity. I can't understand how this way of thinking came to exist tbh.
- Business incentives. They ruin everything, but it's especially felt in software engineering.
- Priorities in general. No one is considering what they're making a tool to help the user achieve something. They're making these monstrosities that always put their own interests before those of the user. Dark patterns, purposely inconvenient and awkward UIs, spammy notifications that don't correspond to real events, you name it. In my book, that's not the way to go.
To me, this sounds like developers who are too far away from the business. Either they don't understand the context, or they aren't given the latitude to express their concerns about product direction.
IMO "the business" is the root of the problem. Businesses tend to put money before literally everything else, and thus we end up with the awfulness that is the modern social media for example.
No matter how visionary, proficient, and user-respecting you are as a developer, if you aren't complicit in earning all the money in the world at all costs, you're gonna get replaced by someone else who is.
No offense but I think you're being dramatic and a bit naive.
There are plenty of small companies chasing a dream other than total economic world domination. Obviously if you look at Facebook etc that's all you're going to see.
Also, good luck running a business, any business of any size, without caring about money. Once you're responsible for the the livelihood of your employees and yourself (and maybe even SO and your progeny) your perspective changes radically.
> There are plenty of small companies chasing a dream other than total economic world domination.
That is until they are pressured to "grow" by their investors that they do have more often than not.
> Also, good luck running a business, any business of any size, without caring about money.
I've worked at a company that was alive and well without chasing profits. It did a bare minimum of monetization to cover its expenses and get a little extra, and that was it. Users were happy, we were happy too. Then the investors decided they've had enough of it, sold their shares to others and those forced the CEO to leave. It was then acquired by a big corporation. I quit in around two years after that when I realized there's no going back and it's only going to get worse over time. It took a lot of effort to make myself go to HR and tell them I'm resigning. I still miss the spirit that was there when I joined. And I'm not sure there are any more companies like this, especially in 2020.
If you had put a couple of millions into a company you'd probably expect to get your money back, no? Would you be happy giving your money away?
Another point you are missing is that not all companies work that way either. Many people start their own business with their own money and don't have to answer to investors. Look outside of tech: restaurants, design studios, stores, etc.
> If you had put a couple of millions into a company you'd probably expect to get your money back, no?
Yes and you will eventually get it back if your company turns profit — any profit. That doesn't in any way imply growth at all costs which is what the world is obsessed with today because stocks. Practically, it doesn't make much sense to earn hundreds or even thousands times more money than what you spend, yet most companies do just that. It ends up laying idle on bank accounts, not benefitting the end users and society at large in any way.
> Would you be happy giving your money away?
Yes if that meant making the world better.
> Many people start their own business with their own money and don't have to answer to investors. Look outside of tech: restaurants, design studios, stores, etc.
> I sincerely feel bad for people who have to stay in it.
Truly? Or do you mean you feel bad for people who still have to work for a living? Because if you still have to work for a living I can think of 9000 jobs that suck more than working on software. Btw, I'm turning 60 next month and have been doing this for a living since about 1992, before that I did lots of other things, so I have several points of comparison.
A younger developer might think the tools that suck. A younger developer might think that the older developer's reluctance to embrace change or recall the time when they were beginners is part of the reason why they suck. Like git. Git sucks.
I think this is precisely the problem. Sure, you can make incremental improvements to existing systems, but what if all existing systems are bad? Once in a while, you have to design a totally new system based on concepts and metaphors that everyone understands.
I think it's worth mentioning that I'm 27 and almost 4 years into my career in software. I am convinced I have the best job of any of my friends, or just about anyone I meet at my age. I make more money and work less hours than >95% of my (all college-educated) friend circle. I don't feel stressed at work ever. My team supports me, my manager encourages me to expand my skillset to whatever interests me.
My career trajectory is looking phenomenal, and I find software development generally fun & rewarding (although certainly not all the time!).
But who knows, maybe that will all change by the time I'm 55 and I'll hate that I spend my career in software dev. Seems unlikely.
I think for some people building software became about making the most amount of money they can possibly make, it became about grinding leetcode to get that sweet package at FAANG.
Startups became about flipping crud apps that try to get users addicted to them.
There are still cool and honest jobs out there! Work in a space you care about and have fun, filter out anything with VC money or FAANG. Usually older companies can be more rewarding from a career perspective, you also get to work in bigger projects with more responsibilities as well as you aren’t competing against 50k’s of software engineers to climb the ladder.
How I miss the old days simplicity. One php
File you just uploaded with ftp and that was the deployment. Now you need to know so many frameworks and processes to deploy a simple web app. It’s overwhelming and I get anxious because It’s so hard to choose what to learn.
My current project is one file with html,css,js all in one. I am using Vue, stripe, and three.js. To deploy I git push and then render handles all the rest (including provisioning a free certificate).
Honestly it’s easier now to do things like that than 15 years ago when I first started.
I'm not far behind you in age, but I started crazy early in life.
Well, I think the big question is, are you /developing/ or /hacking/? Hacking is fun, developing is a job. Hacking is in a language and stack that's probably a bit unstable, that most shops wouldn't let you use in production. Developing is writing code at about 30% of your ability to express yourself, to avoid someone half-reading your code later from misinterpreting it.
Sometimes you can intermix the two to make the job better. Sometimes not.
Plus there's a massive amount of pollution, growing by the day. Everything is built on an increasingly shakey foundation and starts rusting right away. More time is spent on trying to figure out why X isn't working, less time on actually building.
I am not so old, but I also remember a time when software development was much more enjoyable. The difference is that at the time software engineers had more autonomy to decide what to do. Nowadays everything seems to revolve around fads. If you're not into the latest fad or have some ideas that differ you'll suffer resistance all the way around: in the job, online, when doing hobby projects, etc. Even open source nowadays has to conform to some well-supported online fad, otherwise people will complain of what you do.
I've been able to, most of the time, work on (somewhat) novel problems, at least within the organizations I've been working, and certainly interesting ones to me.
But I've always enjoyed tinkering on non-productive personal projects more. Exponentially so. I'm with you on most of the things sucking in software development.
I spend so much time on shit. Politics, presentations to justify spending 0.000001% of our budget on things I need, convincing others that maybe we should leverage well established best practices, not even controversial or cutting edge kind, but the actual ones people everywhere use, rather than re-inventing the wheel every time.
Right now I'm expected to inventory our software catalog, again, because someone doesn't want to get that information from the place we are using to already document it.
And it's only Monday. This week will be long, so very long.
I totally understand people who are burnt out on building commercial software. The incentives are often to create systems that work poorly for both users and are hard to work with for developers. It's a miracle when that's not true!
However if you're really burnt out, and still want to exercise your skill, take a break and give open source software a try! I'm still having fun building http://www.oilshell.org/ after many years.
If you're building it for yourself, open source software can be fun, and it should have the side effect of being useful to some others as well.
Yes, although I worked on open source while employed for 6-10 years too (sometimes it was my job, but usually not).
I'm not saying that it's the way to spend the least time at the computer :) I'm saying it is a way to avoid being burnt out.
If you are building something for yourself, and others incidentally get some use out of it, you'll be less likely to burnt out than killing yourself for a deadline made-up by a VP. And then the whole project gets through away, and no customer ever cared about it. I've seen that a lot.
-----
Related story: Many years ago I got burnt out by my job, and I took a woodworking class at night (lol, definitely a programmer thing). It was great, and I'm typing on top of a desk I made in that class right now.
However I bought a bunch of magazines about woodworking, and I noticed that everyone had 8 or 9 fingers, so I didn't go further with it :) The thing that the OP pointed out is real!
> an obscenely large pseudo-object-oriented codebase
It shocks me, just how often OOP is just not nearly the best approach to something. I certainly still lack in experience though. But why use OOP for something like putting data from a sensor onto a bus? And stuff like that.
> I sincerely feel bad for people who have to stay in it.
I'm in my 50s, and I've been getting paid to build software for over 27 years now, and started programming on a near daily basis on a TRS-80 in the 1970s.
Please don't feel sorry for me. I still very much enjoy building software.
I won't necessarily disagree with the particular challenges you cite.
The total complexity is enormous now, but the tools and abstractions, which themselves have variable quality, and bring their own complexities, are tremendously powerful, and, though it often doesn't feel like it, effective.
Beyond the specifics, I acknowledge that 'the industry' has evolved in many ways and directions, not all of which are positive.
I face non-technical challenges today that, had I known about them 30 years ago, would have probably caused me to switch careers.
So, I acknowledge what you're saying, and to it I will only add this: each of us exerts a great deal of control over how we perceive the world around us. It's possible that the difference in the way you and I 'grade' the software industry is that I am, for no knowable or particular reason, more fundamentally optimistic about things than you. It's also possible that, primarily for reasons beyond our control, I've ended up working in more positive organizations.
To other people reading this far: two specific anecdotes about how the software industry has changed over three decades provides very little concrete indication for how your personal experiences are likely to go.
Another TRS-80 fan here. I learned programming by sitting in the back of a Radio Shack where they had a Model I Level II and a Model II with those big 8" drives. This was probably around '81 or so. A year or so later they eventually had a Model III in the front of the store.
Whenever I get burned out on software (in my case, Vue and React) -- and build complexity -- I always remind myself of those TRS-80 days. The only learning references around were the books for sale by the TRS80's -- a couple books on TRS80 graphics, Rodney Zak's 'Z80 Assembly Language', and William Borden's Z80 books. And of course the Tandy version of Zork in the little plastic baggie hanging from a wall hook beside 'Eliza' and 'Dancing Demon' -- and then the wall of brown folders of 'Scripsit' and 'VisiCalc' on TRSDOS 1.3 (?). Maybe the editor/assembler at the time, too -- 'EDTASM'. Don't remember if that was in a baggie on the wall hook or in a Tandy brown TrapperKeeper with the cassette insert and several tapes.
Those were great days -- and everything (for me, at least) was new and exciting. Nothing was ever too daunting or too complex -- even as daunting (and as complex) as Z80 assembly seemed to me -- a 13 year old at the time.
That's a feeling I always try to recapture in very deliberate ways these days. It's good remember how it all started.
Complexity is daunting today. I believe, however, that the power available far outweighs the total difficulties.
I am still inspired by the basic possibilities that most anybody can, with nothing but access to a computer and the Internet, write some javascript and html in a simple editor and make it available to most everyone in the world.
Objectively speaking, that's simple and approachable, far more so than anything I ever did or was aware of.
The detail in the store description is wonderful. That's exactly where I grew up, learning to program on store equipment as the store manager let me spend the days there in exchange for showing potential customers what these things were.
I'm also in my 50s, and I can't imagine ever losing interest in programming.
A computer contains practically infinite possibilities, and people who lose interest in that are really just lacking creativity, and maybe some cognitive ability.
I don't only program though, I am creative in other ways and I build many things that have nothing to do with computers, but I do often incorporate programming into these creative pursuits, because it sometimes pushes the project to the "next level".
If someone only writes "glue code" then yeah, that will get boring. There are so many other kinds of programming though, that many never even explore. 3D is a whole entire interesting field that is far removed from "glue code". Home automation is one of my latest obsessions. The list goes on and on.
>> I sincerely feel bad for people who have to stay in it
This seems a really sheltered perspective without a real idea of the kinda struggles that exist for a lot of other careers. Not unlike some doctor/lawyer/scientist/executive talking about the profession as a "train to hell" because it doesn't satisfy some sense of technical purity.
Before building software, I was stuck in dead-end sales jobs with a humanities degree that had no career prospects. Switching to software development has required a great deal of sacrifice, and I'm genuinely thankful every day I get to write code for a living I'm thankful.
- I'm thankful I can get paid well enough to live comfortably.
- I'm thankful I work in clean, climate-controlled offices.
- I'm thankful for a profession full of interesting people to work with.
- I'm thankful I can engage my mind and excercise a certain amount of creativity in my work.
I really hope 55 year old me can remember to be thankful.
That's a good point, and I am grateful. "Train to hell" was hyperbole. Programming is still a damn good profession compared to many others. It's also far less than it could be. These statements can both be true simultaneously. After some years of the particular issues that affect older programmers, made worse by the fact that they're almost completely ignored in a youth-dominated industry, 55-year-old you might be less sanguine about the whole thing. Don't be quick to judge when the other person has been where you are and not vice versa.
Have you ever worked as a manual laborer? I spent most of my life working as a lawn keeper, warehouse laborer, retail associate and construction worker. Building software is such a breath of fresh air. Even the bullshit that comes with it is still better than the day to day bullshit of any of those other jobs.
It may not be perfect, but man is it better than what so many people do.
You sound super burnt out and taking a (possibly permanent) break sounds like just what you need. On the other hand I, at 50, am looking forward to another 25 years of programming with any luck. I think almost everything has improved since I first started with much improved processes (no more waterfall), new and interesting programming languages (with jobs using them), free software becoming firmly established, much better tooling, more interesting work (cloud and distributed systems have added much fun, including improving those distributed systems), enlightened views on testing and documentation being very important (I remember when simple unit tests were frowned upon as wasted time), nearly everything in the software process is automatable (CI, CD are great), etc.
I obviously am at a different place than you but I don't think everyone who enjoys the work has Stockholm Syndrome and needs to be pitied. Some of us honestly enjoy it and I plan on working as long as possible as I really like the external supply of ideas to create.
Though had my carrier taken a different path than it did I can easily see being as burnt out as you. I worked briefly at a large enterprise company (not software makers, think greek sneakers) which was so terrible.. if that sort of job was my only option I wouldn't have lasted a decade in this business. That place was seriously depressing.
I still build software. Every day. I delivered my first commercial product in 1978. I cannot recall a day that I've never written some form of code. Even if only a line or two. Made notes about writing code. Thought about how to solve a problem and the code involved.
I don't think I've ever worked a day in my life.
Well, not strictly true, I've had several jobs that start out with interesting problems to solve and then became "it's another CRUD app." I quickly left those jobs to find other work.
I'm not cheap but then I'm not well compensated. I don't make FANGMAN income, but I am financially comfortable. I've found joy every day in my work, even if there are many days where the work in utter frustration, by simply seeking out the kind of work that makes me happy. With an interesting problem I will work all the hours my mind and body can muster. With a 9-to-5 "what's the point/what am I learning/this has been done eefore" regular work-a-day job there is no amount of money on this green Earth that could get me to focus or be happy. Well okay, there would be a certain amount, at which point, after 12 months, I'd quit, take the money and go do a different job that pays less but is more interesting.
This course of action isn't for everyone, not everyone has the privilege of saying "F* it! I'm out." when they are doing something they don't find joy in. I've just made sure that I never put myself in a position where I couldn't choose that course of action. The road has been hard some days, and money has been tight more often than I want to recall, and I won't die a wealthy man, but I will have had adventures along the way that keep me still striving to build software every day.
Footnote: My job last year consisted of writing kernel drivers to speed up SSDs. My job at the beginning of this year was control a radio controlled car from your cellphone. Then I built a dashboard for my home that tracks my phones and my cats and the weather. My job, right now, consists of building a stupid simple app (with a lot of screens and moving parts) on a mobile device that talks to OpenWRT to put a pretty and simplified user interface on what is a complex piece of software. I've never had to build a mobile app that tries to simplify a complex router interface before. It is a learning experience. But once I've learned that lesson, I won't be building another one. I'll go find something else to do.
It's kind of interesting to me that at least one other notably talented programmer, Glenn Reid, formerly of Adobe and author of "The Green Book" and developer of Touchtype.app and PasteUp.app chose to move on to building furniture by hand.
By way of contrast, I've been trying to puzzle out how to do woodworking programmatically which has been an interesting exercise, since traditional CAD/CAM is quite limited in its assumptions, and the tools which are accessible to me (in terms of them matching how I think/work and having an immediate, applicable preview): BlockSCAD and OpenSCAD are rather limited in their ability to export files (DXF, SVG, STL) --- in particular, I'd like the ability to write out a text file w/ full control over the contents, but that's not viewed as a valid request by the devs.
I personally think programming is a terrible job. In these threads, there are always people who say "it isn't programming, it is x", where x is "poor management", "the fact that it is a job", "the type of programming you are doing", etc, etc.
It isn't, it is programming. Anyway, I want to go one step further and return to a more ancient living style. I don't want things like artificial light, computers, etc, to be a significant part of my life. The best time I have ever had, even to this day, was when all of those things didn't exist.
Look, software always sucked and has always been enjoyable. It depends on where you are on your personal journey. I've been around long enuff to have suffered true burn-out more than a few time.
When I take the 30K view, in the almost 40 years I've been tinkering with software, people have never had it so good. Super enterprise grade software is available to tinker with, for free, and can run on your freakin' phone. If you want to go super low level and screw with assembly language, knock yourself out.
I'm a mechanical engineer in aerospace looking to move to software. I like the idea of setting up an office at home and working for myself. Is software really this bad, as all of the comments here suggest? Should I make the jump to software from a career in which I have a decade of experience? I just find aerospace boring, unimaginative, stressful and low paying, and if I could work on just building code for web apps or whatever, I'd much rather do that, even if the pay was 'only' 50k per year, but with the benefit of working for myself.
I'm about 40 yrs old, started in software almost 25 years ago. I still really enjoy it. I stay away from web development because it's a big mess of sloppy languages and tools.
Programming can be great, fun, challenging and profitable, but it can also be tedious, boring, demoralizing and hours can be miserable. It all depends on the company and the project you're working on.
I agree with most of the haters in this thread yet I wouldn't trade it for another kind of job :-)
> I just find aerospace boring, unimaginative, stressful and low paying,
Could you expand on that a bit? To an outsider aerospace sounds much cooler than making web widgets with questionable purpose...
In programming, it's move fast and break things. In aerospace, it's move slow and be methodical and never break things. I work in certification, and something as simple as re-painting interior sidewall panels requires something called an STC (supplemental type certificate) which requires updating manuals, burn testing representative samples of the painted panels, and design reports with constant communication with the local transport authority. I think the process is adequate, since we're dealing with machines in the sky, but it's the complete opposite of innovation.
Software used to be, "I have a cool idea for a program / app that will solve the business issue x. I'll go work on it." Then the dev spends a few weeks working on it and has a product to show. If it is worthwhile, the dev will be able to clean it up and make it production ready. This is where the woodworking idea comes in. You create. You have ownership and accountability.
Today, that is almost completely gone. Now it's Business has been forced to design a system for you that doesn't make a whole lot of sense and a bunch of stuff wasn't considered. If you push back, you'll get dragged into endless meetings where you try to explain things to people who have zero training on what you are explaining. You'll get pushback because their egos will get involved and eventually overruled on most of it. After that, you will get a week to work on a sliver on it, then next week you'll work on a different sliver but often whatever business decides, not what makes sense. You'll also get a bunch of processes to weigh you down because they hired a bunch of goobers cheap that keep breaking stuff. When this doesn't work, it will be your fault.
I think the grass is always greener on the other side. I have a BSc and MSc in biomechanical engineering, was never able to get / keep a job in engineering for long but what I did do sucked—way more rote activities and way less actual problem solving than I was promised. Fell back to software development, my pay has gone up considerably but it is still a lot of rote activities and less problem solving than promised. So far the most interesting stuff I've gotten to do was when working either alone or on a very tiny team (2-3 people)—then you still have a ton of boring work, but you also get some interesting stuff too.
As with any "mental" job, I find I work best when I balance it with a "physical" job on the evenings / weekends, such as renovating my house or basically doing anything with my hands. When physical jobs were my paycheque, all I wanted to do were mental things in the down time, now its flipped. Neither is necessarily better or worse, though I do enjoy the flexibility that software allows / requires.
It's not as bad it might appear from this comments. People are just generally bad managing their own careers and really figure out what they enjoy/want.
This means that you should clarify better what do you want in a software job. Besides working from home, what do you want? Relax workflow? Adrenaline rushes from doing fixes in live/production systems? Do you know work on technical or business features? Does the tech matter (new/legacy) for you? Do you enjoy mastering a tech or just make software work? How much payment is worth a worse job?
My suggestion is that you write down what's your ideal software job and review it several times. Then it's a "simple" tasks of reaching for it and keep your expectations in check.
I have a BS and MS in mechanical engineering. I started working on simulation software, and now I work in edtech.
This is an interesting thread, but my advice is to never take comments on the internet as any sort of representative sample. It is unlikely someone happy with their job would comment on a thread about quitting, because it makes for a boring addition to the thread.
I sometimes wonder what my work life would be like if I switched back to mechanical engineering, but I'm very happy working purely in software. Engineering requires a ton of capital and fairly large teams to do cool things. With software, a single person or a small team on a shoestring budget can build pretty neat things. I also work 100% remote, which I'm not sure would be possible with a mech eng job.
I do wish I spent more time in the machine shop at school though. Many of my neighbors in my HOA are either "real engineers" or retired blue collar workers, and they can fix things much better than I can. I can help reset their router though! :)
This is a privileged position to take. IT is one of the very few ways to have a relatively decent life in my third world (well, technically second world) country, especially for those of us who can't rely on nepotism to put them in a comfortable place.
Sure, I can go make furniture out of wood for $150 a month (and I did at some point in my life), but I'd rather keep my cushy lifestyle and stare at a screen for 16 hours a day, thank you very much.
Good for you. No, really. I wish you nothing but the best. But that's now. After some years, when you have already secured a relatively decent life, your perspective on the value of continuing to do it might change. In fact, it would be rather amazing if it didn't. Yes, it's absolutely a privileged position, but it's still how I feel and how I suspect a lot of programmers my age feel. You can't dismiss our reality any more than we can dismiss yours.
I don't think you can secure a decent life by programming outside of US - if this is understood as position of comfortable financial independence.
I'm a programmer, my income is in the top 10th percentile, but that just means I'm in the upper middle class with the privilege to pay more taxes. I need to work until I get to retirement to secure myself financially.
That is true by definition. No matter how much or how little you make, it remains true. The question is: when do you get to retirement? Making a lot of money makes it a lot sooner.
In my country I get to retirement when the government says I can go - more or less. Otherwise the pension is really small.
To explain: a large chunk of our salary goes to the state's pension fund - not my fund. When I reach the official retirement age the government will allow me a pension that is scaled based on my payments while employed.
At this time I'm looking at 3 decades on front of keyboard (am 40 and the official pension age for me will be around 70).
For now the "trick of the privileged" (like myself, I guess) is to work remotely for an US-based company and get half of US salary, while living in a country where that salary is still 2x what you'd get on your home market. It probably will stop working at some point (as salaries for remote workers reach equilibrium), but for now, it's a good way to live.
Ok, I suppose in that case where you can get as remote a salary far exceeding local market rate the situation is also conducive to an early retirement :)
FWIW I think that's the same in the US as well, unless you strike it lucky with stock options. As obscene as Silicon Valley salaries are, it would take remarkable financial discipline to get to the point where an early retirement could be had.
I believe that due to market forces, engineering salaries are set as high as they can be without producing "escape velocity" for said engineers.
That said, I'm not in the US proper but in Canada, but I'm in the same position as you: highest tax band, make very good money, but unless I were to dump everything and move to an area with a much lower cost of living I will be in no position to retire before 65. Doing that (major cost of living reduction) becomes difficult once you have children.
Id agree but can we stop using "obscene" in this way and TBH a average SV salary is nothing much to write home about compared to some other professions.
It's very doable in Poland - see my comment above somewhere. At least for now, the taxes for contract work (even long-term one) are low and the pay puts you probably in 98-99th percentile in the country. Retiring in 10-20 years is real (of course, it requires full-blown careerism: job hopping, going after the hottest fields/fads etc.).
I wonder if those making furniture are just doing it to stave off boredom after cashing in millions of tech stock profits. I've already seen exactly this sort of pattern in a few people I know.
When I was a manager for a few years I started wood working as a hobby. If you have the builder/creator itch then when you stop building software then you will need an outlet for your itch. When I went back into software development, I have not touched the wood working.
Wood working, classic automotive restoration and several other hobbies tend to scratch a similar creative itch that software does. They each have a element of perfection above perfection, unlike software success in a project is easy, but similar to software mastery is difficult.
There's definitely some truth to that. I've grown to hate technology over the past decade or so, largely because I'm a technologist who believes that technology should exist to make our lives better and the entire modern industry seems hell bent on doing the opposite. Consequently, I'm considering radical lifestyle changes that I am forced to admit would probably not be possible if I had not saved a good amount of money that I earned working in technology. And I don't even make that much because money was never a big motivator for me.
I'm neither rich, nor do I work as a programmer or software engineer, but I have found woodworking to be extremely rewarding. Wood is an amazing material, and there's thousands of years of woodworking experience available in books, online instruction videos and DYI guides so it's relatively easy to get into. It's nice to use one's hands for other things than a mouse/keyboard.
While I occasionally dream about working on cars or motorcycles at times instead of sitting in front of a computer all day, I think we tend to forget how good of a career developing is.
When we picture our dream of doing a simple trade, we only think of the most awesome part of that trade. If I'm a car mechanic, most of it too is just trivial oil and tire changes or changing a basic part of two - not working on engines in depth.
Same with programming. We would want to build something cool from the ground up, but we are just piping stuff from a lib to another.
Comparing woodworking to corporate code is unfair anyway. I'd rather compare working at a furniture factory to corporate code, and woodworking to a solo dev project.
> most of it too is just trivial oil and tire changes or changing a basic part of two
I bet that it feels better and more rewarding than updating a dependency and spending 2 days fixing all the errors caused by updating, especially knowing that you will have to do the same thing in a few months.
There is something that feels good when you create/fix/improve a real object compared to a software one.
I do agree that "complex systems stir up the same emotions", but I was more referring to the simpler systems. I enjoy putting the dishes back into the cupboard a lot more than I enjoy moving icons on a desktop.
I know it's cliche, but Zen and the Art of Motorcycle Maintenance has some of the most valuable advice for software development I've ever imbibed.
His description of the feeling that something is going wrong, and of the emotional shift required to change frame before making the problem worse, that's saved me from more bad decisions than I could count.
Dependency fixing is nothing compared to dealing with all the people you typically find in a software shop, IT, managers, pseudo-developers like SRE, infosec, or devops. Those people are actively blocking app developers in order to extract a paycheck, and sometimes it feels like the app developer and product manager are the only people actually interested in making money.
890 comments
[ 2.8 ms ] story [ 393 ms ] threadThe same is true for Russia or Belarus or Ukraine, AFAIK. Wages are even higher there.
And I'm talking about building software for internal clients. Outsourcing or remote work allows for even higher salaries.
I'm not entirely sure why the market works this way. It's not like any random software developer can go remote and compete with the rest of the world. But it works.
I'd really be interested to learn whether Indonesian situation is similar or not.
This is actually becoming more and more of an option. At my last (small) company, we hired several individual remote developers from various parts of the world that most would consider "third world".
We were introduced to them via referrals from contract work done elsewhere, and we did a paid trial period at first.
Not all of them worked out, but the ones that did were quite good, and we were paying them an excellent wage for their cost of living.
> This is actually becoming more and more of an option.
To do this though, you generally have to know how to market yourself, put together proposals, gather requirements, design and project manage, on top of coding. Not every coder is good at this or wants to be.
You have to be able to interview well of course, but do design and project management? I'm not talking about a freelancer who delivers an end-to-end project here, I'm talking about hiring a remote developer to join an existing team and deliver features.
In my home town called Rostov-on-Don (10th largest city in Russia) I have friends who make $2500-3000 after tax for their software engineer and devops positions. Some of these people are far from being a rockstar developers, just have well-paid positions at large companies. Average salary is somewhat lower, but it's still good money here since living costs are low.
PS: Family of 3 can basically live there for $1500 / month with rent, food and entertainment and if you single even $600 is quite sufficient.
And there is even lower tax rate options available if you work alone and earn between $10,000-80,000 / year. You just pay fixed amount of taxes every year for special "patent" which cost e.g $400 / year in my home city. Then efficient tax rate gonna be like 1-5% depend on how much you earn. Though unlike when paying 7% of income this might require more detailed accounting since tax department can always ask you to show some documents. Officially "patent" allow you to pay $400 just once for income up to $600,000 / year but obviously in real life you gonna get some tough questions from tax department.
In any case tax rates for freelance software developers in Russia are very very low. Also unlike what western person might expect all government services are available online and accounting is no-brainer because Russia have some of the best fintech in the world.
TLDR: Russia's IRS/HRMC equivalent digitized VAT collection (similar to sales tax). Basically every 90 seconds all tills/cash registers across the country report back the sale to the taxman, so you don't even have to manually submit any VAT returns.
Russia started with 20% tax gap between revenue due and revenue collected (while e.g. UK is at 9.1%), and now after this they are on 1%.
My understanding it's almost real-time tax reporting with millions of tills acting as IoT devices sending data up.
For fintech there is Tinkoff bank which is more advanced than Monzo / Revolut / N26 / etc as well as two "virtual" B2B fintech banks that even do accounting for entrepreneurs on their own. And to be honest even Russian largest state-owned Sberbank is far more advances than most of institutions in US and EU.
So as long as your business can't be forcefully taken away and there are no political risks it's quite comfortable to be freelancer when it's come to taxes.
A developer making even a small salary working remotely from a "third-world" country is still making much more money than the average person. Just as an example, on my first remote position I was making as much money as each of my parents who were on 10+ years careers in corporate sales. It's nuts.
Of course the quality of life outside work made it worth moving to Europe, but to this day I still wonder if I should move back to stay closer to family while keeping a great salary.
We ran through a budgeting exercise a couple of years ago before I made the career change, and besides housing, our single biggest expense is health insurance.
I've always lived cheaply, and it's let me take advantage of opportunities as they come up (I paid for school with money saved from working in software), but it's still a big transition going from two white collar jobs to one. I'm grateful that my partner and I both value the flexibility we get from living frugally.
Just curious: is this income 100% passive?
The draw to these seemingly not-so-adjacent fields is strong.
Or was there some kind of restriction on taking it at your school? Or maybe your parents didn't let you?
Genuinely curious as to why someone with a professed interest would not have taken shop?
Lots of schools don't have the classes though, probably mostly because of funding.
This was the last year before the school reform. They ended that program. In fact they ended shop class altogether.
Largely we had to choose -- take the college prep classes (AP whatever, languages) OR trades classes. There was definitely classism -- "trade classes are for poor kids". =(
I would much rather schools require things like: financial literacy, and building/repairs/cooking. They are lifelong skills and very useful. There's no reason its an either or proposition.
But it irks me to this day that the language I opted for, Latin, was dropped that annus, because not enough others signed up.
You can't please everyone. (I did like wood/metal work though, just not as much by far as electronics. I'd be much more interested now though - I watch an awful lot of it on YouTube.)
I really enjoyed it and it made me love working with materials and building physical things.
Still writing software...But renovating my house was a nice way to remember all that lost skills.
Source: am a mechanical engineer who works on my industry's software
eta: Admittedly I did a bunch of design/architecture consulting and teaching tech courses for the first decade or so to pay for the farm. Consulting is a good way to keep your hand in, and teaching serves as a great marketing platform for the consulting work.
the downside is you have to 'install' and continuously 'run' a shovel
That said, a small hobby farm with goats and chickens doesn't take much work. But going on vacation can be problematic.
I mentioned this to an actual "rock star" developer London session musician with a doctorate in music who moved to development after teaching themselves after an accident.
I think any hobby is less enjoyable when you have it as a job, since you sometimes need to do things you don't like doing or aren't interested in.
The above is one of the major reasons I’m such a fan of basic income. I think we’d see a lot more cottage industry shops, used bookstores, cafés, and the like, if we all had basic income to cover our basic needs.
Heck, even software developers can get in on the game by working on their own passion projects. Whether it’s indie gaming or retro computing, a new photo editor or CAD software, or perhaps a new sort of application never before seen. There’s just so much cool stuff people can do with computers when they aren’t trying to build a startup aimed at a big exit.
Lots of biology, perhaps a little bit of tech thrown in, if it helps.
I'm the OP on that github issue, and while my partner and still have some IKEA furniture I'd like to replace, we also have a couple of pieces of mine that don't fit readily into our lives that we just have around the house. The chandelier on my website[0] was a spec piece built for a show at the Wharton Esherick Museum[1]. It didn't sell at the show, and I don't really have a place for it. It's now sitting in a crate in a corner of our bedroom.
Likewise, the Federal period shelf clock[2] is without a shelf and is also sitting in a crate until I get a chance to mount a shelf for it. How hard can it be, you ask? Surprisingly difficult in a log cabin. If the pandemic ever ends and I get my workbench out of our living room, I might have a place for it!
[0] https://www.longwalkwoodworking.com/#/chandelier/
[1] https://whartonesherickmuseum.org
[2] https://www.longwalkwoodworking.com/#/federalclock/
As I told a friend yesterday: this is fashionably called "event sourcing" these days :).
I'd even say I enjoy adding a RSS feed to anything. There are not enough RSS feeds out there.
The work I do on software I consider as relatively intelligible, but the woodwork I do, requires as much of my brain as the programming, just in a whole other area of my brain.
Your harsh judgement on the matter is just rather irrelevant, it works for him, it tickles his brain, and was just an honest response on github, no need to get trolled here on HN.
If you read my initial comment carefully you’ll see that I’ve made no such conclusion.
Really why do you know that? Sitting the whole day in front of a screen compared to create and finish (yeah that's a real thing in woodwork) a Project sound's much better (and like everything it has it's up and downsides)
A big No from me, looks like we just have different tastes.
Running a bandsaw 20 times might sound to you like the epitome of boredom. To me, a (poor) woodworking perfectionist (i.e. I'm always trying to make my work furniture-grade, but usually failing) it's an exercise in constant concentration and error-correction. To a master, it can be the epitome of mindfulness.
Yes my apprenticeship was (4y) +3 years after that.
Again different tastes.
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.
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.
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.
We simply want an exchange of opinions from both columns.
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.
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...
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.
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)
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.
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.
- 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.
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.
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)
Can’t wait to do anything else.
For most people you have the reality of needing a 40 hour week job to live, and there's plenty of people who spent the 4 years to get a bachelor's in compsci and nobody cares to hire them. Software is volatile, you can spend plenty of time making something that will not work and won't be at all useful.
Reality is the software job market sucks, and people have to learn how to build their own houses or else become stuck as rent slaves.
I had a plumber quote me $1300 to replace a $250 part that just screws on/off. I did it myself in a few hours.
Since I work on salary, one of the best ways for me to get more money is to save mine by not paying overpriced contractors to fix things around my house.
Besides, if you're already working 40 hours a week, the remaining time is much more valuable, because it's relatively scarce. Not everyone is comfortable spending their evenings doing extra work.
What does the plumber do? Exactly what I would have done after watching a couple youtube vides -$500 in labor.
He didn't even try to repair the pipe he just cut it and used push on PEX connectors something I could have done myself.
Please, do what you truly want. Many if not the majority of individuals on this forum have the opportunity to do so.
[0] https://news.ycombinator.com/item?id=24537865
I am finishing my first piece of furniture today. It's pretty scary to work without an undo button. The physical world isn't just instructions, but movements. A little twitch can ruin a cut. A clumsy movement can dent a piece of wood you spent an hour sanding. You truly experience the meaning of "measure twice, cut once". Resources also feel tangibly limited. You can't just spin up another server, you must drive across town to buy more lumber.
I still enjoy coding though. My passion for it returned once I could do it on my own time, without stakeholders, sprints, meetings, deadlines or even schedules. I sit down and work until the coffee wears off, then go do something else. It's a hobby again.
I don't think programming is the probkem. Anything you do 40 hours a week for other people will get to you just the same. Programming is a pretty sweet gig, all things considered.
From what I've heard from other sources, it's kinda like what people call being a grown up.
But, I also don't want to start a business doing woodworking. The last thing I want are clients yammering for "seven red lines"; this is something I'm doing as a hobby.
I may offer-up a few furniture items on a local for-sale app or a craft show app... but I will try and resist the urge to create a better local craft show app, or a wood inventory/cut-list app, or a simple CAD app, etc.
Okay.... I assume you're not going to talk about this because then you'll have so much competition you won't be able to pay the bills anymore, but do you have any generalized background information about this?
> "This guide contains affiliate links. When you click those links and buy something, I make a little money. The income allows me to work on All About Berlin full time. All my recommendations are genuine. I want to keep this website useful and neutral."
https://allaboutberlin.com/guides/moving-to-berlin
Isn't dropshipping extremely overcrowded since The 4 Hour Work Week popularised it?
Good to hear I was wrong :)
A decent portion of our business used to be dropshipping onto Amazon against others that were doing the exact same thing with the same terms. Margins obviously ended up tiny and the whole thing was at the whims of Amazon. Glad we don’t do that anymore.
Yet, this happens to everyone, including me to a small extent during my last internship. I think everyone can grow tired of anything given enough of it, and I think coming to terms with that is easier for some than others.
I've mentally prepared myself to branch out into different pastimes, and for some reason, it seems we all land on wood working.
Be careful with that table saw...
*in not-so-serious side projects
Sometimes, especially when I read about people leaving this industry to go work in the trades it makes me nostalgic and miss working with my hands and building real things.
But I also have enough bad memories of shitty work conditions and waking up sore day after day to give me a gut check to stay put for a little longer.
> I don't think programming is the probkem. Anything you do 40 hours a week for other people will get to you just the same. Programming is a pretty sweet gig, all things considered.
Turning my hobbies in jobs killed off a lot of fun I used to have. I think it's pretty universal and why it should probably be more common to switch industries a couple times at least through your career to keep things fun and not stay in a burned out mentality forever.
I think what it boils down to is that, generally, software engineers/coders/sysadmins like to build things. When we don't get to build the things we want, the way we want to, it leads to a desire to get into woodworking. It's building things; its success is purely merit-based; and it's building the things that you want to build. I wouldn't recommend anyone go into construction (especially not commercial construction a la Office Space) from coding. It's joy is fleeting and infrequent and it ruins your body.
> Turning my hobbies in jobs killed off a lot of fun I used to have.
Yep. I haven't really worked on any of my hobby projects like I had before.
Thank you. I have nothing else to add. I just needed to read that today.
Isn't that years of education and work to start at the bottom again? If one has a family to support doesn't seem terribly feasible.
I'd like to have another couple careers before I retire. The best part of a career is learning, getting it, then doing something as a journeyman and looking at your work and thinking, 'I got it'.
I want to add to your description and say that the design part of the work can also be hugely satisfying! I found that there is something similar to software engineering: you can make it as simple [1] or complicated as you want, but there is something magical about finding the simplest solution that gets the job done.
Consider posting some photos on the woodworking subreddit if you make something cool!
[1]: a minimalist piece that I'm personally proud of: https://www.juricho.me/zurich-table/
It's really incredible how much tacit knowledge transfer is made possible because of youtube. Definitely one of the purely positive aspects of the platform and the internet in general.
if only software were written that way...
Dents can be somewhat fixed by getting them wet and ironing them.
sawing wood these days too I cannot keep laughing alone in my beard thinking how software people just don't understand how the world used to be and how much had to be designed to work before trying .. there's no way back, or to be precise, every wrong turns costs dearly.
It's also pretty impossible to build a website that pays the bills indefinitely without maintainence or upgrades. If your website becomes popular enough to pay your bills you WILL eventually have competitors, as well as new mediums of technology, and you'll have to constantly keep up to date.
But then I also believe that technical interviews should consist of putting software developers in a woodshop (experienced at woodworking or not) with a bunch of power tools and telling them to build anything they like. Those that still have all their fingers attached we automatically hire. Everybody else we write a glowing reference so they get a job with our competitors.
P.S. This is a joke.
But making those things really well and flawless is so very, very difficult.
For example, I can whip together a new drawer, no problem. But making that drawer fit perfectly on all sides and open and close perfectly smoothly. Now that takes a whole other level of skill.
And don't even get me started on paint and varnish.
I wouldn't make so light of that.
The tech is truly something incredible. It uses a disposable cartridge with a shotgun-sized charge to ram an aluminum matrix into the bottom of the spinning blade if it detects current (oily skin touching the blade closes the circuit). It stops it in thousandths of a second and your left with a nick instead of maimed. It ruins the blade and the cartridge. You’re out ~$150 if you trigger it. Small price to pay for keeping a finger.
You can also trigger it if your wood is too wet. That was one of reasons given against using it everywhere.
I think it's more like if you understand the tech well enough that you are willing to risk it you likely understand how not to stick your hand in a saw in the first place, don't see the value add and don't wind up working for these people.
Also there's probably a pretty big social aspect of it. The guy willing to stick his hand in the saw for the demo video is gonna get shunned by most of the kind of people who want to work on tech like this.
I wonder how well this would work in a real life scenario. My dad does autobody work, and his hands are like dry, cracked stone. They probably have very high electrical resistance. I'd imagine a wood worker's hands to be similar.
> That alone is enough for me to turn down the offer
> I take chopping off my finger in a heartbeat
You would rather lose a finger that work in a company that has strict very rules around offensive behavior?
...
It's none of their concern and the fact that they even try this shit is a massive red flag. If they don't respect your privacy before they hire you, they won't magically start respecting it afterwards.
Even setting that aside, a company policing what employees say in private, regardless of whether or not they find out about it actively or passively, is absurd. An employer does not get to decide what you say, do or think in your free time.
-----
EDIT: As a small extra, here in Germany something like this would be very much illegal, as you're not allowed to discriminate against job applicants based on their political opinion.
Same here but laws are a subject of interpretation. I'm sure there is a loophole somewhere in there and it can be used against you.
I fully agree. I would not work there.
> It's as if they'd call your friends and family
Not at all: they would be alarmed by the call.
Yet, comparing this to "reign of terror" or "having a finger cut off" it's a huge and dishonest exaggeration.
People living under oppressive regimes have much bigger issues than not being hired by this company.
As I said, in a heartbeat. I was born behind the iron curtain and still live in a place where it casts a dark shadow. There's a fine line between "strict rules" and full on dictatorship. Frankly I never understood the fuss around the so-called "offensive behavior". I spent 5 years of my life studying abroad. As an eastern European, if I had a cent for every time someone called me a car thief ALONE, I would have made enough money to buy the entire VW group(and never have to steal a car again ho-ho-ho). Do(/did) I care? No.
I have a relative who was fired from their job in the 80's because he said a joke about the dictator at the time and wasn't hired up until the entire regime collapsed almost a decade later. Do you not see the problem with this? It's a question of self-respect and dignity. I don't care what anyone at work does or says, so long as work is being done. Their personal lives are none of my concern. A several-hundred page report which contains likes of a tweets like "A priest, a rapist and a pedophile walk into a bar… He orders a drink." with an "inappropriate" flag is a gross violation if you ask me.
There's a very big line between a company's silly hiring policy and a government. I doubt the company will send goons to kill you.
The fact that you can't tell the difference says a lot.
> Frankly I never understood the fuss around the so-called "offensive behavior".
There you go.
The main issue is that when these things become the primary concern of a company, those that climb the ladder are not climbing it necessarily for their contribution but for their "attitude" or as I prefer to call it, ass-licking abilities. Because many people aren't buying into any of that but are willing to exploit this niche. Here's another example: I know a guy with a 5 figure monthly salary who has spoken at several seminars with multiple videos online, promoting the LGBTQ community. Great, right? Behind closed doors his reaction to all of those efforts was "what a bunch of faggots". As a developer he is absolutely terrible. He'd never be able to tell you the difference between float and double. Guess how he worked his way to the position he's in... Sadly all the translations I could find were terrible but here's the least bad one [1]. It's worth a read and you will see the analogy and the problem.
[1] https://www.reddit.com/r/satire/comments/1khe87/tale_of_the_...
Peter Gibbons : This isn't so bad, huh? Makin' bucks, gettin' exercise, workin' outside.
Lawrence : Fuckin' A.
Peter Gibbons : [nods] Fuckin' A.
Sadly there are people out there calling me a 'Stack Overflow developer' in that I copy and paste code, but I find immense joy in challenging most of that code and tinkering with it to find a solution that fits my needs. In other words, I rarely use a snippet of code ad verbatim.
[0] https://en.wikipedia.org/wiki/Don%27t_repeat_yourself
[1] https://en.wikipedia.org/wiki/Reinventing_the_wheel
Maybe this depends a lot on the individual. Some might find my way of enjoying code very boring, as I'm just messing with low-level stuff and not getting that much done. To me it would feel very exhausting to be writing glue-code all the time without messing with the internals of the systems I'm working with and recreating them myself every once in a while.
As a general advise to new developers: Find out what you enjoy about coding and always keep that in mind, be it while looking for a job or starting a new private project.
If you actually care about your craft and can say no from time to time, the amount of interesting work you can do is limitless from the perspective of human capability.
A couple things to clarify:
I posted the original issue as a minor complaint about the docker cli and promptly forgot about it. I never expected it to get any traction or follow-up. At the time I posted it, I was working as a contractor for my former full time employer. I had left full-time work there in early 2017 to attend the full-time program at the (sadly now-defunct) Furniture Institute of Massachusetts[0].
I finished that program in early 2019, and split my time between commission work and part time work for other woodworkers. Like software, in woodworking there are things you learn at school and things you learn doing it for money.
In early 2020 (which now feels like a million years ago), my partner and I left the Boston area for her to take a job in the northern hinterlands of NH.
It's been an interesting year to say the least: A lot of the opportunities I was hoping to have to publicize my business have been canceled (craft shows and fairs, open studios, etc) due to the pandemic. I'm fortunate to have brought a couple of paid commissions with me when we moved. Owing to the pandemic, the schedule on them has been protracted. I was going back and forth to Boston to fulfill a teaching obligation until early March. Then the pandemic hit, and all of my suppliers and my shared shop space[1] closed down for a couple months.
Just before the shared shop closed, I grabbed my workbench and set it up in my living room. The place we're renting doesn't have a basement, garage, or anything resembling shop space, so that was the least bad option. I bought wood for a couple of house projects, and got going working entirely by hand. The first project was a desk for my partner. I built it following the design for a staked work table from the Anarchist's Design Book[2]. She's been working at it since, and we've been doing our best to manage my noise and her Zoom calls separated by perhaps as much as 20 feet.
Sometime in late May or early June things started opening up slowly. I bought wood for those projects, and the shared shop space began operating with extremely limited hours. I've wrapped up those couple of projects, and honestly, the next thing on my TODO list is to spend some time doing some business planning, re-shooting some of my earlier work, and updating my website[3]. Bad timing on the pithy github comment on my part; had I known it'd hit the top of HN, I'd have made it after I updated the website!
If you're in the Boston area and would like to see some of my work, the Cabinet on Stand shown on my website is on display at the Fuller Craft Museum[4] in Brockton, MA through November 8th. It feels a bit weird to mention it, but that piece is also for sale through the museum. Purchasing it supports not only me, but also the museum. They were closed for a long time this year as a result of the pandemic, and like a great many of our cultural institutions, they're hurting. They laid off the curator for the exhibit my piece is in due to budget issues.
If I can offer everybody only one thing to get out of this, it's that our cultural institutions live a fairly fragile and perilous existence, particularly the smaller ones. The Wharton Esherick Museum[5] in the Philadelphia area is also taking a beating. Please, please, please take some time to support these institutions. A lot of our shared culture doesn't make it to the MFA. Those headline institutions show a limited subset of stuff; there's so much of value in the smaller museums, galleries, and historical societies.
[0] http://furnituremakingclasses.com
[1] https://claremontmakerspace.org
[2] https://lostartpress.com/collections...
1. https://www.flickr.com/photos/fuller_craft/49837847346/in/al...
https://www.flickr.com/photos/fuller_craft/49837855711/in/al...
imo whether you consider it art is irrelevant. the main cost is material (wood) and labor.
Oh man, the line between "art" and "craft" is ill-defined. I think of craft as something that has to fulfill a functional need as well as satisfying an aesthetic need, and art as meeting a principally aesthetic need.
Whether you view the cabinet on stand as art or furniture (craft), I suppose depends wholly on what your needs are :-) I built it as a piece of furniture that would suits my aesthetic tastes and also hold some stuff.
The price on it is $5,200 US.
The pricing on anything is a challenge. I have a woodworker friend who is married to a pricing analyst. She works for a sizable multinational corporation, and he feels as in the dark about how to price stuff as I do.
Broadly speaking, pricing for custom work is likely to be at least at the high end of factory made furniture, and by that I mean really nice factory-made stuff. Think like Thomas Moser[0]. Whether you like their look or not, the quality is excellent and as I understand it, there's a lot more hand work that goes into it than is common these days. I'm going to use them in the discussion below, but this applies to any high end commercial maker.
The reasons for this are complicated: On the one hand, my capital costs are (a lot) lower than any factory, I don't maintain showrooms in pricey locations, and I don't have a staff I need to pay.
On the other hand, Moser is buying lumber in quantities that I couldn't store at a price I can only dream of. They have well established lines of furniture that they're set up to make in quantity, or at least know how to build, whereas virtually everything I build is a prototype in some sense.
What you don't see in the final product is the test pieces or the jigs that I built to build it. Project recursion isn't just a software thing, I assure you.
Because it's unlikely that anybody will ever want exactly the same piece, that cost doesn't get spread out over a production run, or even stuck into storage in case somebody wants one in the future. Storage is a cost, and I pay it for stuff I know I'm going to use again and again (a table saw sled, for example). Project specific stuff gets either broken down and reused or put into my wood stove. At best you get the materials back; the time is a sunk cost.
I've talked to other woodworkers about this, and some take the approach of having a line of pieces that they're jigged up to build quickly and efficiently. This is a valid approach to making money at this. Putting some thought into whether it makes sense for me to develop a line at this point is on the list of things on my business planning TODO list.
Even woodworkers who have a catalog of pieces they know how to build have to make choices about how to design and build. Christian Becksvoort has a 15 drawer chest in his catalog[1]. Every tier of drawers is a different height. That means something as simple as cutting parts to rough size involves ripping boards to 20 different widths (for each of the 10 tiers: 3 pieces full height for fronts and sides, and 1 piece reduced height for the drawer back).
And then you have to keep track of those parts. And then you have to dovetail them. I'm willing to bet that Christian Becksvoort would lose money building one 15 drawer chest with a dovetail jig because he'd have 20 different set ups (10 heights, front and back). Could you make it cheaper by making some of the tiers of drawers the same height? Absolutely! Would it retain the charm of his design? For some customers, no.
Before anybody gives up hope on owning anything Christian Becksvoort has ever had a hand in, I'd like to note that he's an author as well as a furniture maker. He's written two books for Lost Art Press[2], and I recommend both.
[0] https://www.thosmoser.com/
[1]
The price on the piece is $5,200.
When I look around, I feel woodworking now is what photography was 10 years ago to software people. A hobby that lets you get away from the computer into the physical world, but still tingles all the engineering/math/maker mindset that attracts people to software. Although I got into woodworking because of my grandfather, I see a lot online of software people doing the same just to "get away."
From an economic perspective, I hope you're able to capitalize on that trend of people with lots of disposable income willing to commission this sort of thing (or even classes), if that's partly your intention.
How do you price items?
How do you handle shipping, or is the work all local?
I'm told that shipping via specialist companies that routinely handle art and high end furniture is a much better experience for all parties.
I'm trying to keep jobs within a reasonable drive or the pieces small enough that I can double box and peanut them without driving the cost for the dimensional weight through the roof.
Secondly, if I can leave everybody with just one more takeaway (besides supporting your local craft organizations, wherever you may be), it's that the phrase "it takes a village" applies to businesses too.
Besides first and foremost my partner, I owe an enormous debt of gratitude to everybody who has taught me; everybody who was a student with me at the Furniture Institute of MA, I've learned something from every one of them; everybody I've worked for, I've learned something from every one of them; anybody who's ever written a blog article I've read; anybody who's ever made a youtube video I've watched; my suppliers, especially the knowledgeable ones who've taken the time to not just sell me something but help me learn what fits my needs; my customers, especially the early ones who have worked with me as hiccups have arisen; countless friends both in the trade and otherwise who have provided moral support, gotten me out of jams, and been all around awesome; and finally my partner, who bears thanking way more than just twice.
I don't consider myself especially brave for having taken this step or having any particular wherewithal. For most of us in woodworking, there's an enormous number of people we have leaned on and learned from to get us where we are. I suspect this is true for most of us in software as well. There's a lot of companies built at least in part on open source projects, existing infrastructure, etc.
To be clear, I've never made a contribution of any significance to an OSS project outside of working a 9-5 salaried job. Your point is spot-on, but I can't rightly claim to have been on the sharp end of maintaining anything open source. Thank you to those who do.
Lastly, this all came about because I've been following the Fusion360 news on HN and looking into alternatives. I downloaded FreeCAD, started reading docs, and found a dead link in their README.md. I filed a bug, submitted a PR, and figured if I ever wanted it to be useful, I'd better sort the email account that github sends to. I cleared out a couple thousand github notifications for projects I no longer work on, and that many more bounce messages from my former employer.
Among the several hundred remaining emails was a slew of notifications about the bug that I filed 3 years ago. I figured I should check in, and the rest is (recent) history.
I'm not far from Lebanon.
Have you tried out CNC stuff yet? It seems to be a popular thing for people into woodworking too. :)
[0] https://strobist.blogspot.com/ [1] https://strobist.blogspot.com/2006/03/lighting-101.html
Everything on my site was shot with continuous light, but I'll take a deeper look at the site and see what I can learn. Some of the photos definitely make me want to! And let's be honest, strobes are a lot less hassle to deal with than studio lights.
Two things I noticed a couple years ago:
1. There is a quite expensive furniture maker near where I grew up -- in the more "genteel" area of course.
2. If I still lived there I'd totally shell out three grand for one of their chairs!
I've never spent that much on a piece of furniture, but it sure looks like it's worth it:
http://ericksonwoodworking.com/furniture/seating/sumi-chair-...
Your work is beautiful and I hope you find many buyers. I humbly suggest you include prices on your web site, as many people have no idea what handmade furniture costs these days, and many of those can actually afford it.
Those are beautiful chairs, and I would agree that the price sure looks worth it. Thank you for bringing them to my attention
For a point of comparison, Kevin Rodel designed the side chairs I built (from plans he published in Fine Woodworking). He lists a price of $1,600 each on his website[0]. I think that's also an entirely fair price for what is a simpler chair to build. Ignoring everything else driving cost in chairs, adding arms alone adds complexity.
The question of listing price is a difficult one. Christopher Scharz of Lost Art Press addressed this an an article he wrote for Core77[1]. He's very established (and rightly so) and chooses not to, but he suggests it might be an advantage for somebody starting out.
One challenge to publishing prices that I perceive is that it fixes a price in a potential customer's mind. I wrote to somebody last week about the question of pricing, and observed that a bookshelf for a child's bedroom is a very different piece from a bookshelf for a lawyer's office. The price varies considerably between the two!
What I (and other people doing principally custom work) can offer is the ability to tailor a project to a budget (within reason) by explaining what drives cost and letting them make choices based upon what they're looking for in a piece.
At this point, I don't want to turn anybody away with a price that's outside their budget, but I'm also mindful of the adage that "if you have to ask, you can't afford it".
[0] https://www.kevinrodel.com/showroom/item/dining-chair
[1] https://www.core77.com/posts/86153/Should-You-Publish-Your-P...
I've bought a lot of furniture (some custom) on Etsy and people have been surprised by that / think there isn't necessarily high quality work there.
In addition to the larger pieces, if you have work that's easily repeatable you can make a lot with e.g. tissue boxes or cutting boards, etc...
For example this shop made these beautiful boxes with brass inlays and I was able to commission a custom box with dividers for individual tea packets: https://www.etsy.com/shop/SawdustProductionsCo/sold
I've definitely seen quality work on etsy, and I appreciate your perspective as a now former employee.
Congrats on the exciting career change, hope you're staying sane while out in the country!
Any tips would be much appreciated!
For the dust I had a pretty powerful airfilter, but I would still have clouds of dust coming out of my pillow/sheets.
I would have said that general noise during the day was ok in my case, but that was before everybody worked from home.
For chiseling you can actually do a lot without hammering. If your chisels are sharp enough, you can push them through the wood for most techniques. That's what I did when I worked in the evenings.
It helps to have a very heavy workbench that doesn't move too much. Sawing still makes noise though, and planing kinda does too.
All in all, less than ideal, but for me it was great for a while! It really depends on what size and type of things you want to make. Feel free to specify and I can give more details.
I think it makes sense to explore other options as well: renting a garage, finding a community workshop, etc.
That’s good to know you can sometimes get by chiseling without a hammer! At the moment I’m interested in making a Danish Modern style chair, likely in walnut or oak.
If not, use Fesstool tools and one of their dust extractors.
I built a wood bed for my truck in the living room some decades ago. And also a clavichord. Hand tools generate shavings, but little dust.
I have a very good collection of hand tools in a large tool chest. And, I have a very solid, large workbench. Both of these look great in the living room when not in use.
Part of my strategy for keeping dust down is to do as little sanding as possible. I generally try to get a good surface off of a cutting tool (a plane or scraper), and then sand once at the grit I want to end at. Squirrelly grain, or tearout around knots sometimes requires pulling out the sander. Still I try to limit my use of it. If I can spend 5 minutes planing, and 5 minutes sanding, I'm a long way ahead on time compared to spending 5 minutes each sanding at 4 different grits to get the same surface (numbers from thin air, but the principle applies).
Noise is a challenge. You're right that chiseling is not a quiet activity. Anybody who thinks hand tool woodworking is a quiet and contemplative activity should spend a day in a room full of people chopping dovetails and then maybe reconsider their opinion.
All that said, there are a great many woodworkers who work successfully in apartments or other tight confines. Some of them are even married :-)
> I'm going to a commune in Vermont and will deal with no unit of time shorter than a season.
I believe all of the above is public information about the named people.
If I'm honest, I haven't yet read The Soul of a New Machine, but it's on my list. I did pick up House[0], also by Tracy Kidder and read it over the winter holidays a couple of years ago. I'm not sure exactly how I'd sum it up, so I'll leave that to the author, linked below. I've also read excerpts of Among Schoolchildren[1] and can recommend it (at least the parts I've read) as well.
[0] https://www.tracykidder.com/house.html
[1] https://www.tracykidder.com/among-schoolchildren.html
“Look, the cabinet did not break down in my living room. So I’ll ship you the cabinet with the whole living room together.”
I have not read all the way down the over 800 comments, and if you shared kind words or asked a question outside this thread, I apologize if I missed it.
I'm honestly astonished at how much this seems to have resonated with a lot of people. If it's not blindingly apparent by my comment, this was the last thing I expected to see at the top of HN on a Monday morning!
If you're trying to learn woodworking or are interested in learning it, I'd encourage you to do so. We all started somewhere, and for me that was struggling mightily to get a board flat with a hand plane in an evening class. My first dovetails were as rough as anybody's. Whatever you want to build, go ahead and build it. There's room for all kinds of woodworking in the world, fancy and plain alike.
The instagram woodworking community has been a mostly positive space for folks in the field both as hobbyists and professionals. If I can take a moment to veer briefly into politics, it hasn't been universally welcoming to women and people of color. Laura Mays talked about losing followers every time she promoted a show of female woodworkers. This is, frankly, shameful. There is room in this field for anybody who wants to explore it, at whatever level they choose to. Shutting people out because they don't fit our preconceived notions of what a woodworker looks like makes us all poorer.
Lastly, there are really too many people out there sharing excellent woodworking content to hope to name without some omissions. In addition to everybody I've linked or mentioned in other comments, I'd like to add in no particular order William Ng, Richard Macquire, Paul Sellers, woodgears.ca, seejanedrill on youtube, and artofplants on instagram.
I've doubtless omitted any number of other highly worthy people I've stumbled across over the years. I'd encourage everybody to go down the rabbit hole as far as they'd like and discover those people and more.
I am lucky enough to live in TN and have access to some great local woodworkers that give classes, specifically some amazing windsor chair makers.
Good luck with everything, I got a good chuckle out of the GitHub comment.
Building software was never simple or easy. We've gained a lot of knowledge that makes it easier because you don't have to build quite as much from scratch, but we've more than made up for that by making it unnecessarily hard in every other way. Taking the simplest change from idea to production involves so many steps, and not even the steps that assure it's correct or maintainable. It's feeding the beast we built ourselves rather than the one born of necessity.
I sincerely feel bad for people who have to stay in it. Some day most of you will get over the dollar-induced Stockholm Syndrome that seems universal among junior developers, but by then you'll be stuck on that train to hell. Good luck to you.
I think it’s gotten a whole lot simpler in the past 10 years. People used to have to rack their own hardware, install PDUs, check temperature gauges, plug wires, configure the switches, setup RAID and backups, make sure you have that serial cable plugged in so you can telnet in in case the switches don’t work, and lock the data center doors without forgetting their keys back in the day. And this is before actually developing and deploying your application software.
Now you can just buy a bunch of db cycles and scale to >10000 qps without batting an eye (though you’ve got to watch your wallet).
I think because some of the hard stuff got a lot easier, the easier stuff got unnecessarily complex. And there are so many ways to scale things that some of these constructs and idioms used over time stopped being used because they mattered less if you could just turn a knob to scale your crappy code.
Yes, and other people did this job, not programmers. People that loved tinkering with hardware, low-level OS stuff, networking, etc. We even had a name for them: "system administrators" and "network administrators".
Nowadays everyone's expected to tweak CSS and configure kubernetes in parallel.
So when my job title switched away from programmer to some kind of DevOps thing and I was shoved back into the sys admin role, I was unhappy about it.
Trouble is they tended to be interesting but poorly paid jobs
What you describe is what used to be considered sysadmin work. I too did quite a bit of it, but most of it went to people who specialized in those things. And no, I don't do any of it now. On any given day I'll probably deal with machines in at least a dozen geographic locations across two continents, and if I tried to enter any of them I'd be stopped at the door - no, at the gate before I even got to the buildings. Instead, I write code to interact with the deployment system and the provisioning system and the multiple monitoring systems and the automatic remediation system and so on. Is it better? It scales better, but as a matter of personal satisfaction and avoiding fury at other people's crappy code I think I'd rather be plugging in cables and configuring switches.
> I think because some of the hard stuff got a lot easier, the easier stuff got unnecessarily complex.
There's a lot of truth to that, and I don't think we necessarily disagree on the outcome. However we got here, whichever specific things make modern software development more unpleasant, it seems that it is more unpleasant than it used to be.
But yeah it's like over time we ended up scaling the crappiness of software along with the software itself. At the same time, I'm inclined to believe that software development at large is in a much better position to solve a whole bunch of other problems than ever before. That keeps me motivated personally, though I get the frustrations for sure.
Kids in their rooms still do write the next big things. The difference now is they now raise a ton of money along with it. They scale a whole lot further, and much faster. There are more entering the engineering profession through Lambda School and bootcamps and what not. They also leave around a lot of shitty code that usually ends up building some business value. Much of this was true back in the day. It's just gained a whole lot more momentum IMHO.
But ...
I used to code for fun in my spare time and more recently I'm finding myself working on "shop" projects. I sold my pocket-cruiser (a small yacht) and I'm building a couple of small wooden boats. I have a '71 Saab Sonnett III I'm in the process of restoring and a '71 VW Karman Ghia that's next on the list. I thoroughly endorse the idea of doing something with your hands - it's so much more satisfying than sitting in front of the TV.
Also, the whole industry has been strongly commercialized. Before, people would share source code on the internet just for the fun of it. Nowadays, that is a surefire way for someone else to take your source code and sell it as theirs. I mean that's basically what Cloud providers do. They rent out access to open source software.
The insane pressure of money also makes sure that most software nowadays is not build to any reasonable engineering standard, even when it really should be (like Boeing MCAS). Instead, every piece of software nowadays is optimized for the sweet spot between sucking so bad that nobody buys it and not spending a penny more than what is necessary.
The goal of software development has changed, and I think $1 phone apps nicely illustrate the new commercial landscape. It's the bare minimum quality at the bare minimum price.
BTW, on a related note, most bicycles made in 2000 still had a much more stable frame than the 2020 models. The marked switched from costly steel to cheaper aluminum so that you can make $300 supermarket bikes. And obviously, the quality has suffered.
It appears that in general, there's always a race to the lowest possible quality in the hopes of reducing costs, thereby increasing profits. Does anyone have any suggestion how we could reverse this trend in general?
Thee $300 supermarket bike (I have one and put over 40 miles on it weekly and it's help up fine for four years) provides access to folks who otherwise can't afford the fancy $1,500 aluminium/carbon machines. Fancy bikes are still getting made and even getting better.
Newly rich kid or VC funded startups distributes money from wealthy people to an every growing software industry. It allows people like me to work in software; something that was previously only available to elite educated people who happened to live in the correct zip code.
tl;dr: The pie has increased in size and become much more inclusive. Yes, there is a lot of low-quality pie out there. But there is also plenty of high-quality pie for those who can afford it. This is good for everyone except the very elite entrenched class.
You're crazy.
I'm very grateful to be in this industry despite not having the "correct" background.
You have a very solid extremely valid counter point and I think the person you're responding too created a false dichomtomy.
Cheaper does not eliminate the quality. They can both co-exist and indeed do.
The lower tier just opens the door for a group of people who never had access before.
Thank you for your input.
> Cheaper does not eliminate the quality. They can both co-exist and indeed do.
It sometimes does, if it eliminates quality out of the market. Say a quality frame costed $500 before; then you have a new, cheaper technology that can achieve similar performance by cutting out more extreme loads / road conditions; as manufacturers jump at it to save money, suddenly the whole $100-$800 range uses just that, and the quality frame rises to $1500 due to collapsing demand. Can't say whether it's good or bad on the whole, but it annoys the hell out of me in cases where I could afford the quality product but I can't, because nobody is making it anymore.
Instead of middle range products you get low tier and high tier products and those absorb their different shares of the market from the middle.
This type of extreme seems to happen in all facets of human society over time including jobs, housing, cars, etc..
The middle becomes pushed out.
That's been a big issue for a long time.
Alot of access is given to people who previously had no access but the middle is somewhat eliminated.
A working culture tuned to movement of a minority of capital “haves” isn’t much different mathematically than a monarchy and his lords and barons, etc.
There’s a gentler temperament, but “work the jobs we will pay for, while deflating your buying power to maintain historical human narratives” isn’t exactly fostering free flow of capital, labor, and ideas.
If you don't like rich kids, don't work for them.
I was shocked that a LOT of startup founders are well-connected rich kids who have no skills or ability to lead a tech company. I learned that, while saying that you have a huge trust fund isn't very cool, saying that you're a tech entrepreneur CEO is perceived as cool. So the rich family uses their connections to raise a few million (often indirectly) and suddenly the kid is an "entrepreneur", despite lacking any relevant skill sets. It's not like there's any expectation for these companies to make a profit anyway.
Yes, you can avoid these companies, but it's worth warning younger engineers that this is maybe 50% of tech startups. It's more of a problem with NYC based companies than SF based companies (as NYC has more old money and less emphasis on tech companies actually building real tech) but I've seen it in both cities.
If you were to look back at the early 1900s, or even 1980s, its much better today than back then
While I agree with your point that hobby startups distribute money and enlarge the market, I was trying to point out that people working under management with no experience will probably not learn their craft well. In my opinion, the old apprentice system used for jobs like becoming a carpenter would be quite appropriate for software engineers. But it only works if there are enough master level programmers around to teach everyone else.
As for the pie analogy, I don't share your opinion. When the market moves towards lower quality, that usually makes high quality more expensive or even outright impossible to acquire. Case in point, I'm not aware of any bicycle that is rated for 200kg+ for driver and luggage. Not only are there no cheap bikes at that stability level, but also nothing in the $2000+ premium range. So something that used to be easy to buy for everyday folks 20 years ago is now too expensive even for rich people. And all that only to drive the price of the cheapest bikes down from $500 to $300, which I presume won't make much difference to anyone because a good bike will last you 10 years, so it's <$1 monthly in either case.
Not only will it easily take that weight, it's designed to comfortably carry a passenger and cargo. Or the Yuba Mundo, there are a few other brands. And you can get them in electric, if your thighs aren't made of steel cable.
Yuba Mundo is $1800, which sounds like a lot, but with inflation that's well under a grand at the time when more bikes were heavy and over-engineered. With the nice side effect that they could carry a lot of weight....
Like, I could make the exact same complaint except I'd situate it about 10 years earlier, around the first dot-com explosion.
And somewhat earlier than that, I remember grizzled programmers from the 1980s who hand-tuned their C and assembly and who thought we were flagrantly wasting computer resources on garbage platforms like the web.
(However, bringing it back to the 2010s and beyond, you're right that open source development has been completely co-opted.)
The purpose of a lot of software is to make software, not to solve problems.
Desktop development is the Once And Future King of computer functionality and personal productivity.
I'm 20 years behind you, and I don't know what effect that will have on my views. But I don't really recognise the picture you're painting. Compared to the first steps I took as a developer about 15 years ago, almost everything about software development seems better to me. I find developing software to be easier, more consistent, and less frustrating than it used to be. Good development practices—things like testing, CI, coding standards and so on—seem more prevalent than they used to be. It's easier to get code out to production than it ever was. Everything in the ecosystem—like tooling, libraries, and services—feel far more open, consistent, and accessible than they used to.
I am almost certain that on the whole I spend a far greater proportion of my time now actually writing code that does interesting things, as opposed to code that hacks together some junk to try and make it work with other junk.
I think I'd draw the conclusion that everybody's opinion on how the industry works is going to be heavily influenced by their individual experiences. Maybe I just enjoy software right now because I've now got the technical competence and confidence to avoid some of the frustrations that I experienced earlier in my career, and in another 20 years I'll be right there with you lamenting the state of the industry. Who knows?
The joy is in programming, not in software engineering. At least that's how I interprete the GitHub comment (and all these stories about developers that cannot take it any more and burn out).
Ultimately, we get paid to solve business problems, not to have fun with programming.
In many technical interviews, they want to talk about "scalability", using fancy big data software for horizontal scalability etc
But I also know from experience that many, many of these problems would be more elegantly solved by more traditional tools like Postgres, especially since servers have gotten more powerful, the cloud service options more plentiful and reliable, and the software more optimized. The "scalable" approach can lead to massive amounts of wasted person hours unless you're sure you really need it. But if you say, "just use RDS or CloudSQL, or maybe BigQuery", you get perceived as a newb by the 24 year old who just got his MS doing Spark work on toy problems.
Today's 'process' is no more efficient than, say, deploying rails to heroku in 2007. And even before that, you'd spend half a day writing an automatic deployment script, and then deployments would take a couple of clicks and you'd never think about it again.
> Maybe I just enjoy software right now because I've now got the technical competence and confidence to avoid some of the frustrations that I experienced earlier
Just as some but not all of my (mostly negative) perception is surely personal, might I suggest that some but not all of your (mostly positive) perception is not? Perhaps the industry really has improved in some areas that you care about during that interval. Yay! OTOH, that doesn't necessarily put your perception and mine in opposition. There are other areas and other intervals, and other priorities as well. It's great that your experience has been positive. I hope it remains so.
I'm very much aware of how bad some parts of the industry can be (particularly having recently dipped my toe into some machine learning work and discovered an entire sub-field in which nobody has ever heard of documentation, testing, coding standards, or things like releasing software that actually works).
Programming has become joyless.
There are ever-shrinking spaces where a developer gets to build something novel - something that's state of the art, that's creative, that taxes their intellect and brings the pleasure of achievement forth. It seems that for every developer working on rocket guidance systems or self-driving cars there are a hundred toiling away on yet another CRUD app, or wrestling with a hydra of microservices. It pays well, but fun it is not.
I program ever since you had to restrict arrays to 64k in Pascal's 286 real mode. It was definitely fun, but other than building really limited games and freaking text areas (that would regularly crash with out of memory errors, losing your changes), along with bad accounting software build in MS Fox, there wasn't much you could do.
And I remember people literally leaving the industry when the migration from MS-DOS to the Win API happened, which was forced around the time of Win 95. Because everything was terrible.
But I love it when seeing young, privileged, overpaid software developers complain about joy. Keep at it.
I too am relatively young. When I was a kid, Bill Gates and windows was the devil. Nowadays I realize I judged him too harshly and that he does a lot of good in the world, but at the time Microsoft was the bridge troll.
Looking back, everything seemed so simple. Programming open source things had meaning to it. People didn't program open source back then to my knowledge as part of a larger corporate strategy. They did it because it was fun.
Corporations entered open source programming as far as I'm aware en masse in the early 2010s late 2000s. Around the same time Facebook and Google reached their peak of popularity. It felt awesome to have corporations join in the fun and it felt like the software got much cleaner and much higher quality.
After a while though it just felt like corporations took over the place. Software is better now but it's tailored to corporate needs even in the open source world.
Now that our apps have millions of users, and we can see how they interact with the app in near real time, there is a constant push to manipulate the behavior of the user. Like our app? Leave a review! How likely are you to recommend our product to a friend or colleague? And so forth. To your point, we have always been asked to do things like this but in the 90s there wasn't nearly as many ways to do so. Seeing the greater capacity of our code being used for yet more greed is disillusioning.
I get it, everything is terrible, and it always has been. But I do wonder if we haven't lost something from the '90s to now. I feel like there have been several Eternal Septembers, but instead of our communities getting flooded with trolls they have been flooded with corporate interests in communities that didn't used to have these interests at play.
To try and combat this feeling, I have tried to find those communities for programming that try to get back to our indie roots. In the '90s we didn't care or need corporations to sponsor us or our open source projects. I'm still sure there are those out there that run their projects without the need for GitHub Stars or corporate funding but it's now seen as unreliable or otherwise undesirable to use projects that are simply done for fun. I think remembering that that's all I ever used to use will help me find more fun like I used to have. Preserving the space of programming is a hobby I think is really what's at stake here.
I program in Arduino where I only have 2.5 K for my variables, programming with so little memory really forces you to think about your program methods.
I built small projects using 74LSxxx chips, building logic instead of programming it can be refreshing.
When I need more space I program in C++ on a Haiku machine, 32 GB of ram and 12 CPUs gives you the power, but the lack of frameworks means it is all your own coding.
https://en.m.wikipedia.org/wiki/Haiku_(operating_system)
I think it might be possible to say that relative to the entire industry the space for novel or interesting work is shrinking – possibly. But I don't think that actually means there's less interesting stuff to work on. If anything, the spaces for that are growing – maybe more routine work is growing faster, but I can't really say. I'd wager that the majority of software for its entire history has been pretty boring.
There's a big gap between software craftsmanship and the algorithmic trivia interview expectations nowadays, and it seems to keep widening.
The people interested in doing cutting edge work will find a way to be there no matter what. The vast majority of people overestimate themselves.
But it pays for nothing. I make more money as a street musician than with my open source projects that have more than 100k users. But I got paid a lot for improving some online gambling site. This is how it is.
Total Compensation = Salary + Benefits + Intangibles
Those Intangibles can be things like working environment or commute, but they can also include your affinity for the organization’s mission. People are willing to take smaller salaries when they’re working on something they love & respect. It takes more money to convince people to work on boring or undesirable things. It’s the exception to be paid well for something you like.
work that I actualy care about is difficult to get paid for
building there is a creative process and it pays better than big tech
The onchain codebases arent that big because they cant be.
I suspect a nontrivial number of programmers in that field will find themselves making license plates or exploring harbors with concrete shoes a few years from now.
And the programmers have easily translatable skills, so nice try at making a point but it doesn’t make sense when there is a real conversation to have
But you werent actually here to debate the differences in how that could affect programmers in that industry vs other industries
Your preconceptions are a random incoherent mixture of things that are oddly excusing bad actors or bad companies by ignoring them and conflating it with blaming a specialized skillset or sector
You could have kept all that in your head because this was clearly a copypasta rebuttal prepared for any conversation about crypto
“The best minds of my generation are thinking about how to make people click ads.” –Jeff Hammerbacher
Every paying software job I've ever had was in some way involved getting people to click on ads. Either directly making a product where ad click rate is a measured metric, or products that helped people make products where clicking on ads was a metric...
I have usually been able to find a lot of joy in solving the problems in the smaller areas where I was focused, but whenever I took a step back and looked at what I was helping work towards it felt very meaningless.
I think finding a job today where you feel like the work you do does genuine good for the world is an incredibly rare and difficult thing...
I've been in the biz for coming up on 25 years and I've never tried to make anyone click on an ad.
It also may help to downgrade "doing genuine good" from "solving the world's biggest problem once and for all" to "helping people get food reliably" or "keeping this industrial process that provides value to thousands of people going" and so on. Sometimes I do lose a bit of track of what I'm doing, but in the end the jobs I've worked still end up helping people do useful things, or protecting people, not making them click on ads.
There's a lot of jobs in programming that don't involve making them click on ads. Even in the heart of Silicon Valley, there's going to be a lot of jobs that don't boil down to that.
But you may have to, you know, change jobs.
But I don't want to hate my job. I don't always love my current job... as I like to say, they're paying us precisely because this isn't what we'd be doing of our own free will... but I don't want to hate it.
Because it's more than just the hating the job. It's coming home every day to your family in a bad mood. It's your children associating you coming home with the guy in the bad mood coming home. It's being on hair trigger all the time despite your best efforts. It's living in a place I don't want to live.
The funny thing is, I look at that and I don't feel like I should be willing to pay $300,000/year for that... but apparently I am.
"The best minds that I know are thinking about how to make people click ads."
There is a considerable number of exceedingly intelligent people in pure mathematics and (theoretical) physics that don't work for Google, Facebook etc. and never would. Those that do often have nothing to do with Ads even three to four edges removed (think Martinis or the people at MSR).
Most corporations in the US that are for profit aren't about doing good, they're about making money, and publicly held corporations are even legally encouraged by US law to put the shareholders' bottom line first and foremost.
Non profits can care a lot more, but they generally (at least the ones that exist not) don't focus on something abstract like software, they generally serve an immediate need like affordable housing or surplus food distribution or job training.
Until the business climate in the US changes, about all anyone can do if they want a job where work actually helps people is either work somewhere they get paid enough to use surplus cash to help people or work for a non profit.
I think an idea that hasn't really been tried yet is building a non profit for software... not fitting a non profit base to an existing package, but building a corporation that is made to produce software for the public good.
Mozilla? Unfortunately, they weren't successful at creating new things of value (with maybe Rust being the exception).
I'm a happy low level systems developer. I solve hard and interesting problems that have nothing to do with ads.
Maybe you think banks are just as bad as advertisers but I tell myself I am enabling the tens of millions of Americans who have retirement accounts. The day-to-day is enjoyable nonetheless.
Banks as in consumer banks? Maybe not. Commercial banks, brokerages, hedge funds? Welp. I admit that some of those have made my imminent retirement possible, but from a broader view I don't see much good about how large the US financial sector is compared to the overall economy or the preferential treatment they get from our government.
> I tell myself I am enabling the tens of millions of Americans who have retirement accounts.
I'm sure many at Facebook would say they're enabling small businesses and non-profits directly through advertising, and many more "little people" through the platform(s) that those ad dollars pay for. They're also enabling some very unsavory people and behaviors, as are most in fintech. Read the news lately? ;) Everyone likes to dump on ad-funded businesses. I've done so myself. It's not entirely unjustified, but sometimes it seems disproportionate and even hypocritical.
Interesting point you make: there is definitely selection bias going on because of this, but I've honestly never thought about it that way before!
They're not really though. Ads may be the revenue stream but it's not like the top engineers at Google were on ads. They were building the search engine.
If you meant to say that Google's top engineers _used to_ work on the search engine but nowadays they work on making people click on ads because that's were the money is, then I wholeheartedly agree with you
People that hate ads love that quote because they like using it to lambast the tech industry (in general, and advertising in particular), even though only a small percentage of engineers or other tech industry employees work on ads.
People in the ad space love that premise. You know what's worse than that premise? Admitting to themselves that they're not the best minds of their generation and they're still stuck doing work trying to figure out how to optimize ad clicking - the worst combination. At least they get to pretend they're the best minds of their generation, if they buy into the quote, that's a consolation prize.
The best minds are largely not working in advertising (maybe a small share of them are). They're figuring out how to leverage CRISPR to cure and prevent disease, or trying to figure out a therapy for Alzheimer's disease, or working on immunotherapy. They're the kind of minds that were working at Pharmasset figuring out how to save tens of millions of lives by curing hepatitis C. They're designing and building the next generation of semiconductors at ARM, Apple, TSMC, Samsung or Nvidia, pushing against the boundaries of what's physically possible. They're working on electric cars at Tesla or VW. They're trying to solve our battery problems. They're launching rockets at SpaceX or Rocket Lab. They're designing the next airplanes for Airbus. They're at NASA, ESA, JAXA, CNSA, heading to the Moon and Mars, or working on James Webb, figuring out if Venus contains life, and so on. They're designing the next generation of nuclear reactors, ITER or maybe working at LHC. They're working at Illumina, Boston Dynamics, Intuitive Surgical. They're in national and university labs all over the world, trying to solve very hard problems on a daily basis. They're even working on hypersonic weapons, military drones and designing nukes. And that's not meant to exclude the rest of this giant world, as the world is filled with examples.
This is interesting, thanks for sharing that.
Of the nine organizations that have paid me to write software since 1993, only one of them would fit in your criteria.
Note: I am in no way doubting your claim, and I actually appreciate your perspective and the quote you cited.
I will more deeply consider that when categorizing companies in my mind going forward.
That's an amazing fact.
May I ask how old you are?
I've been designing SOCs, DSPs, Control Systems and a lot of software for various systems since 1985, and I can only recall one that might have been close to "clicking on ads" (it was a personalized "on hold" system for dial-in to major retailers (like JCP), to replace Muzak with offers and information and stuff). I was the VOIP-to-Enterprise-Telecom integration guy, so not directly tied to the ad-part, but the company pushed couponing to their clients pretty hard.
Everyone thinks they are productive but value is being burned all day, every day in most companies all over the world. The level of reuse is depressing and people, especially here, firmly believe we need to use the latest frontend and backend crap to rebuild what was working perfectly fine before.
More and more everything appears resume driven and to extract more hours billed or even higher LoC or commits per day. It is a nightmare and I refuse to play more and more. The over architecting for shit one off projects burning 10000$s a month ‘in the cloud’ so it probably, maybe it won’t crash with the 5 users per day it has using it.
Yes the tooling is better but the drive to use every latest tool and tech really makes no sense for almost any project.
Fitting anecdote; a company from LA was contracted to build a crud app for a big corp; they used react, typescript, node, express, aws, aws lambda, redis, dynamo and rds. For a crud app. They got $50k for it. For a crud app. Costs were through the roof running it as you need actual good people to run it. It failed a lot of times for such a setup as it was all the latest of the latest architecting wise. Brittle as hell even with all the tests and resume driven busywork. I rewrote it 1 php + bootstrap and jquery file in 1 day with a perl script to migrate the data and running on a 1.99$/mo server. Cheap, easy and no worries; handles a lot of traffic for the cost of a cup of coffee, does not need devops and they paid $2k for it to me. This is not the only story; microservices + serverless + the cloud really are excellent for making money, but as you say, no fun and in my experience, no benefit. Just added complexity.
It only looks like reinventing the wheel every time if you're completely ignorant of the subtle differences of each problem domain. And if you make a bunch of changes to create arbitrary lego bricks then now everyone has to learn your brick framework before they can make an 8x2 brick.
That's a good seam upon which to filet this analogy. A quick Google search turns up uncertainty as to how many different bricks there are. It could be in the 3000s, 6800s, or over 12000. We are all ignorant of the available lego blocks.
The authentication thingy you got as lego block did not quite fit and now you are using more code than the module has in it to add what you need for it to do, making the original module probably impossible to upgrade without a lot of work and creating a problem for maintenance. Now you can fix this by telling your client; ok, I won’t do this because your idea of auth is wrong. But then the client might kick me out (probably not a bad plan if they are doing trivial things significantly different than the rest of the world). I can just implement it like I mentioned above and make money maintaining it (risking having also to maintain the original lib). Or I can just make a new lib and for which I know it does what it was.
Then, my favourite option, is just take something that just works already, deploy that and adapt a few people their habits around it. It fits 95%, stop whining. The least popular option ofcourse, so there we are, creating slightly different wheels with millions of almost the same LoC and unused andor unmanaged libs that should not have been written or used, again, imho.
There are sometimes edge cases that are not possible to implement, but they are rarer and rarer as the service portfolio grows. In those cases the only option is to write your own container and deal with the usual package-level dependency issues in whatever programming language you use.
( * ) The only thing that doesn't work forever is Node.js, which is deprecated every few years and needs to be upgraded to a new major version. I'm looking forward to the possibility of WebAssembly/Deno replacing Node.js as an "evergreen" application platform.
Kubernetes sucks when managers need it.
Same thing is happening with mechanics. Young mechanics repairing parts less often, more handing off parts in need of minor repair to specialists and a focus on fitting parts.
And yet now OP is making wood furniture, which has been made before the same thousands of times. Some people need originality some don't. Some just like the work for its-own sake. For those who need originality they should find a job working on something that's not a CRUD app. Not everything is a CRUD app. That's on them.
Not sure how it fits wood furniture; you cannot copy a chair in a nanosecond; you can software. I am not saying there is no space or need for bespoke and unique software but if you are doing LoB apps for/in a big corp, as many of us do daily, chances are there is a) a perfectly fine version already running in your corp somewhere and b) a completely identical product in all the companies around the block.
You and I have very different experience with big corps :)
My experience is closer to "There's a half-finished version running somewhere that was cut short because of budget/deadline constraints. The team that worked on it is long gone, and it has been maintained by an outsourced team of junior resources for 3 years".
Re-writing a customer-facing system to be closer to the "modern" web experience they're used to on their everyday apps and sites _can_ make a substantial difference to customer experience, and ultimately the bottom line.
In fairness, if your web app does more than CRUD, or if you expect it will in the future, then PHP and jQuery wouldn't be my first choice. I'm very familiar with how much of a mess an app can become when pursued that way -- a nasty soup of callbacks and conflicting states. As tooling around React improves -- and it's already quite good -- it will be easier to cost-effectively write a React CRUD site.
If you just want a CRUD site that works, and you want it fast, a Rails site with scaffolding will probably give that to you in an hour or two -- with almost the whole hour being spent thinking about your data model.
I recently worked for an org that had quite a large software suite (internal system) that was 99% CRUD. For every single CRUD operation, there was a front-end call, to a back-end service, that called a specific stored procedure. So pretty much 4 stored procedures for any construct stored in the database. No ORM, very little dynamic building of queries, thousands of database tables. Releases were a nightmare, change management for database objects is its own complexity, especially with so many objects. I think people were open to change, but with a decade of existing data structures+data, and a long list of projects, nobody wanted to make a change...
My one regret, with respect to that org, is not driving the necessary change.
This seems overly cynical to me; the reason software developers are well-paid (overpaid, some would argue) is that what they build is measurably better that what was there before (at least in dollar terms. I'm not getting into the moral quagmire of automation replacing human jobs ATM)
Code reuse is often a red herring, when taken to extremes. Here's a thought experiment: all software developers are now required to implement all CRUD software in SAP or Peoplesoft (pick one). How much of the code do you think will be re-used, and how much will be in the customizations?
Can you imagine what the medical field would be like if the majority of general practitioners started complaining about the fact that they don't get to work in neurology research?
Every time I hear this quote, I remember all the small businesses and ventures that only exist because of Instagram, Facebook and Google Ads. Housewives baking cakes, a leatherworker making custom backpacks, a blacksmith restoring antique knives - those are just personal friends of mine who wouldn't be able to build their businesses if not for what those brightest minds of our generation are doing.
Is all of this really worthless to you?
(Copied over my recent comment on this exact topic, I hope it's OK with the mods).
https://exanderproject.com/spoiler-test/
The other thing that stuck me, as I was doing this, was how much the Javascript ecosystem has improved over the last 10-15 years. It was possible to do this in a very small amount of code with no dependencies precisely because of the all the bells and whistles that have been added to Javascript over the years. Maybe this isn't so obvious to someone who has been neck deep in Javascript for 15 years, but as someone who has been mainly in other languages, it was a very noticeable and dramatic improvement. The web platform is way, way nicer to develop for now than it used to be when I first got started.
Now I'm trying to figure out what other small projects I can get involved with.
Over the next year or two I hope to develop a mobile app.
After 15+ years of big messy corporate server programming I think this might be the place joy is hiding.
I accept that I will probably not make the money I have made gluing clouds together the past couple years. But maybe I can make something useful that people like to use.
If you mean this is better, I hardly agree with you:
https://twitter.com/thomasfuchs/status/810885087214637057?la...
But yes – I do think React is a pretty good approach to UIs compared with many things I've used in the past. There are good and interesting discussions to be had about the different possible techniques that can be used; this isn't an entry into one of them.
Separating the HTML, JS, and CSS is an approach that works up to a certain size/complexity app. When I’m working on some functionality, I need to be able to understand the relevant parts of the HTML, JS, and CSS. With a smaller app, one person can more or less grok the code base well enough to find everything they need. With simpler apps, you might have fairly uniform or boring styling and not a ton of CSS rules. If I’m setting something up with Bootstrap and just getting it working, I can probably ignore CSS for a LONG time.
If you’re working on something larger and more complicated, you really want to have all of the HTML, JS, and CSS for a particular piece of functionality right in the same place so you don’t have to go searching for it. It’s how you survive in large/complex apps. You’ll think, “The margins in this box are too large” and you want to be able to fix that without trying to grok some massive set of CSS rules, and when you do get the CSS rules that you want, you want to know that they’ll be delivered to the client—something that is easy if you deliver all of your CSS rules to every client, but hard if you want to split your CSS.
I think the only real tragedy here is that too many people are copying “the way Facebook does it” without wondering if Facebook might have a completely different set of priorities than they do.
I think you work for a better company than me :)
There were few and brief moments in my career as a software developer when I was truly happy at my work. Most of those involved implementing an architecture or algorithm I figured out from scratch, or took from scientific literature - either as prototype or directly in the product. Sometimes as "hold my beer, I got this" moments. But as you can imagine, this is maybe 1% of the things I've been doing at various jobs.
From where I sit (a backend developer, thoroughly burned out by webdev a couple years ago), most of coding I do is software bureaucracy. Turn this data into that data, ensuring module X and Y get paged in the process. Oh, half of the code I'm about to write is implemented elsewhere - quick, figure out how to juggle the dependency graph to somehow route control from here to there and back. This data I want to convert is not of the right colour - oh, I need to pass it through three sets of conversion layers to get back essentially the same, but with a correct type tag on it. Etc.
It's utterly and mind-numbingly boring, unless you architectured the whole codebase yourself, at which point it's somewhat fun because it's your codebase, and who doesn't like their own Rube Goldberg machines?
At this point, I've learned a coping strategy: just forget the project scope and focus on your little plot of land. Doesn't matter that the software I wrote half of is going to help people do exciting stuff with industrial robots. What matters is that the customer changed some small and irrelevant piece of requirements for the 5th time, and I now have to route some data from the front to the back, through the other half of the code, written by my co-worker (a fine coder, btw.). So a bunch of layers of code bureaucracy I'm not familiar with, and discovering which feels like learning how to fill tax forms in a foreign country. If I start thinking about the industrial robots I'll just get depressed, so instead I focus on making the best jump through legacy code possible, so that I impress myself and my code reviewer (and hopefully make the 6th time I'm visiting this pit easier on everyone).
Maybe it's a problem of perceptions. Like in the modern military - you join because you think you'll get to fly a helicopter and shoot shoulder-mounted rockets for daily exercise. You get there and you realize it's just hard physical work, a bit of mental abuse, and a lot of doing nothing useful in particular (at least until you advance high enough or quit). And so I started coding, dreaming I'll be lording over pixels on the screens, animating machine golems, and helping rockets reach their desired orbits. Instead, I'm spending endless days pushing people to simplify the architecture, so that I can shove my data through four levels of indirection instead of six (and get the software to run 10x faster in the process), and all that to rearrange some data on the screen that really should've been just given away to people on an Excel sheet with a page of instructions attached.
(Another thing that annoys me: a lot of software I've seen, and some I've worked on, could've been better and more ergonomic as an Excel sheet with bunch of macros, and the whole reason they're a separate product instead is to silo in the data, the algorithm, and to prevent the users from being too clever with it. Also because you can't get VC funding for an Excel sheet (unless you're Palisade).)
Got a bit ranty here, sorry. I guess my point is: I accept the industry is mostly drudgework, but I refuse to accept that this is all essential complexity. Somehow, somewhere, we got off track, because all this shit is way harder than it should be.
Love that. Yes, the 1% (of which I've been a part) often get to control both the structure and rate of change for a large codebase, and in perfecting the fit to themselves they almost inevitably make the experience worse for everyone else.
And yet accepting that, I still can't shake the feeling that things are more complex than they should be. That also applies to the code I'm writing myself (which is immune from the "rewrite because I could do it better" urge)!
I no longer code outside of work though & found a happy balance of learning on the job with my productivity. I find the amount I do get to spend coding also has gone down - a lot of my time is spent mentoring, in meetings, writing planning docs, and just thinking about projects, or occasionally researching what’s the best paradigm for my problem. I am ok with this, as I am taking more joy in being a leader than directly coding necessarily. I recognize not everyone shares the same perspective though.
The end goal of software I work on is to help airplanes land safely. But actually, I work on the software which presents the user interface that displays and sends configuration settings to a device on the ground that helps achieve that.
So my day to day is figuring out whether two bytes in a serial buffer an ad hoc protocol are actually transposed, or if the comments are in 20 year old code are lying about which is which. Or trying to figure out whether a Win32 font setting command from two decades ago is still interpreted the same on Windows 10.
The rabbit holes and yak shaving just go on and on. I have it in me to enjoy doing the work, but when I think about how many steps I am removed from the actual airplanes and I feel badly for filling my brain and my workday with trivia.
Yeah, I also initially felt this is some kind of failing (I'm usually the "big picture guy"), but ended up accepting this as a coping mechanism. It's not that I forget about the purpose completely - just learned to think about it more when planning and designing, where the wider perspective also affects the task in a meaningful way. When deep in the codebase, I try to put it aside, so that I don't get in a depressive session of thinking "why do I have to shovel this garbage back and forth to satisfy some low-level requirement, instead of, I don't know, talking to people who'll use this on-site and getting some real feedback from them?". Rationally, I know that shoving garbage is an important part of getting quality software that helps others do exciting things. Emotionally, I just wish I was in their shoes (probably just as much as they wish they were in mine).
You seem a bit more positive than me when facing this reality, so I'm glad you have it in you to enjoy this. I almost have it, so I find ways to cope, and enjoy the opportunities to do something less mundane that come every now and then in such projects.
I do it as well; I think organizationally it's a failure, but it is an effective personal coping mechanism. In other words, it's bad for the organization that their codebase isn't really a melting pot of different developers' ideas but instead, if you zoom in enough you notice that it's really a series of hundreds of small fiefdoms each with their own slightly different customs and semantics. This is what creates that software bureaucracy.
For employees though, it works. It's about the only way that I really derive any sense of satisfaction from software engineering. When I can stand back and say yes, this package is mine, I made it and I will take care of it. With the melting pot packages it feels more ambivalent; some portion of the code is mine. Probably not the clever bits, they're probably bugfixes. So I don't have enough mindshare to get satisfaction from achievement, I don't have the satisfaction of at least solving one of the hard problems. No, those people have come and gone, and I'm left with the shale oil of satisfaction: fixing bugs, writing unit tests, and adding documentation. Like shale oil, the joy it brings is very close to the effort it takes to extract it. This isn't the "I accidentally hit an oil vein while digging a garden" joy of really getting to solve something.
Some people derive a lot of joy from doing things that help others (like unit tests, bug fixes and documentation); I'm unfortunately not one of them. Sometimes I wonder if it isn't at least partially because it's so hard to feel the impact. I know HN hates the idea of gameification, but I wonder if it couldn't be applied to good effect here. If someone could make an integration with CI, and with major editors, we could scrape data regarding how many times your unit tests have caught bugs, and how many times your function/class documentation has been viewed. There could be a leaderboard for people that are into that. But for me, just the raw numbers is enough. "Unit tests you have written have exposed 137 bugs in PRs, and documentation you have written has been viewed 138,476 times" would be a huge motivator. It gives me that warm and fuzzy "I actually productively contributed" feeling. Right now I get nothing back; I have no idea if anyone has ever read the documentation I spent hours writing, or if my unit tests have caught any issues.
I get what your are saying and you are getting a lot of positive reinforcement about this. I would suggest to you a caveat.
I've worked in some orgs where this mentality becomes entrenched. In these new-fangled tech startups with people changing roles and even companies every two years this probably happens less. But I've seen people entrenched into their own kingdoms for decades. An individual, or small team, creates a moat around their "little plot of land" and they become intransigent. This leads to two bad outcomes: they resist any change to their systems or process, going so far as to obfuscate it to protect it. They also don't pay attention to holistic concerns, caring only about maintaining some idyllic vision for their own "plot of land" to the detriment of any larger objectives.
I think this is a real concern when divisions within a larger org compartmentalize around code or system boundaries. It is not something to shrug off as if it couldn't happen to you.
Honestly, I've used an unfortunate turn of phrase in my original comment. "Your little plot of land" indeed implies a fixed, entrenched moat. What I meant was something different - the area of code I'm currently working on. That may be a different place with every new task. My coping mechanism isn't building little kingdoms - just focusing on the code a given task involves while purposefully forgetting about the global context of the application, in order to not think about how minuscule and irrelevant the task is to the exciting things the company is doing. That context is usually not useful when doing the changes I've already planned beforehand, and it is emotionally distracting.
Me too. And all I can do is point at Javascript in webpages. Which, as a Java dev (if I can still call myself that 15 years into doing all sorts of other stuff too), I want nothing to do with but somehow get dragged into all the time.
I can really relate with the idea that we're feeding the beast we built rather than the one borne of necessity. Unfortunately, which I'm sure the latter still exists, it's the former that always seems to pay the bills.
I think it's amazing to see CICD tools which make it super easy and quick to deploy web apps-- such as Vercel, for example.
Simply by booting up a github project, and starting from a template, I can deploy a SSL-secured site within minutes-- as a frontend example.
On the backend, using infrastructure-as-code solutions, to again, "templatize" a starting point, such as an AWS service or set of connected AWS services.
Whereas up until recently, I'd typically go rent a chunk of a server to run Linux, and setup NGINX-related security features myself. Not that tough, especially the more I learned NGINX. However the 3-click deployment via tools like Vercel take away so much headache. That said, at times, I think it's can be necessary and easier to simply setup a linux server, so as to have full control over the process.
It's just nice to have the additional options.
I love how much the software-supporting ecosystem has evolved.
It lets me focus more on development, and less on devops. And that what I want, as a developer-- To get to coding ASAP, and not worry about tangential concerns-- as a matter of specializing.
(Disclaimer: I only have about 2-3 years of professional experience, but prior to that, was teaching myself for about 5 years off and on. In that timespan of 7-8 years, I feel so assured and emotionally secure given the reduction of headaches due to the fact that I no longer have to learn so much ecosystem related stuff, and can focus more on programming)
From my journey on the chart, things have only gotten better since the time I crashed a C++ compiler just because I was using std::map.
For me, tools, including languages, do matter. I can well imagine that programming in Java would be soul-deadening (although Java is still better than some languages of the past).
Incidentally, I am not dunking on languages of the past. Lisp has been around for a long time, as has Smalltalk or Haskell or ML. Many of those languages were not accessible to anyone without a mainframe or expensive workstation. This situation has improved greatly in the past decades, which to me is another reason to prefer coding today versus the past.
Obviously, most of us are not able to cherry-pick our toolset for work. We use whatever our employer says to use, or whatever the demands of our project require. This may be part of why many people find coding to be an uninspiring experience. Also, the problems that people work on might be dull, it's hard to get motivated about a basically tedious problem.
Last, it's worth acknowledging that some people just don't love coding all that much. It's hard to imagine doing really well at something you don't deeply enjoy day in and day out. And your passion can change over time: you might really enjoy something in one part of your life, and not derive much joy from it at another part.
All true points.
As an individual developer, if you are working on what you want to be working, we are in a great time. You can pick from a selection of outstanding tools and we have, for all practical purposes, access to infinite hardware.
As a developer that's part of a team... it sucks. Expectations are getting ever more unrealistic - probably because so many things are quickly done, but other things are just as slow or even slower. Most people's jobs consist of wiring together 150 libraries across 30 'microservices' (which are rarely microservices, but often distributed monoliths) and that's after spending a lot of time bikeshedding on what the tech stack is supposed to be like.
At least the UML craze seems to have died down.
Supportability, risk-mitigation, debuggability, etc. are all thrown away in most of today's environments. An awful lot of tech companies are running mostly on hope.
We aren't working hard because we just want money. We want to save up enough money so that we can retire at 55 and stop working. Then we can start spending all our time complaining that the software industry is going in the wrong direction.
Because in any other industry, the effort:earnings ration isn't nearly as good, so we'd have to work into our 60s before we could do that.
If that's what anyone takes away from my jeremiad, then I actually think that's pretty great. Except ... why not 45? Maybe if more people could use software development as a quick route to something else that created more personal satisfaction and/or social value, that would actually be a good outcome. A bit more "it's just a job" and a bit less "it's my holy calling" is a necessary ingredient in that formula.
For myself, I simply wanted to be free from financial worries and financially independent. I hit that at 35, and yes, I'll probably be able to retire by 45, but I'm a bit too frugal for my own good. For someone living a more 'balanced' lifestyle I think 50 or 55 is a fine goal.
On the engineering side we’ve fully embraced the ephemeral, disposable nature of code, which tends to run counter to business needs which may require hastily constructed code hack jobs to stick around indefinitely. Really makes taking pride in workmanship impossible. You’re allowed to feel good about what your company is doing, but if you feel good about your code then perhaps you’re indulging yourself on company time and could be more productive... so you end up feeling guilty about doing good work.
I also think over the last 20 years there’s been a concentrated movement to remove technical expertise from the product design process. Engineers are present to provide estimates and gauge feasibility, but aren’t granted much leeway beyond that. Decades ago, you needed dev skill to actively shape technical projects since there wasn’t even that much user-level experience with computers and technology to make judgements.
This loss of balance tends to mean software is driven forward almost exclusively by either new features or redesigns. Technical enhancements are rare, unless they exist to support existing features. Nobody wants to spend a few sprints on "Make this thing feel 30% faster" or "Deal with our memory usage issues in these cases" until it reaches crisis levels or customers complain. So you get bigger, bloated software that runs slowly because nobody is authorized to make anything faster or use less resources until a product market position is threatened because of such technical deficiencies.... although sometimes the answer by product leadership to such problems can be even more features.
This quote from Built to Last is going to stick with me for a while: "... many people don’t even see the preference for complex languages for what it is: an attempt to protect one’s status by favoring tools that gate-keep rather than those that assist newcomers."
I'm not leaving the industry any time soon. At least in the abstract, I do like what I do for a living, and believe that there are still some habitable spaces left in the field of informatics. But there's a part of me that is beginning to wonder if the best and most comprehensive literary (sort of) analogy for modern software engineering culture isn't the Orks from Warhammer 40,000.
[1]:https://logicmag.io/care/built-to-last/
It's never about the code. It's about getting the job done, and the code is just a tool for getting it done. And getting the job done is ultimately about domain expertise, or design skill, or engineering acumen, or any number of more abstract skills. When developers get all protectionist about complex technical tooling instead of focusing on perfecting their ability to get the actual job done, that's a moral own goal. It doesn't challenge the idea that developer skills are inherently low-value and replaceable, it takes the idea as a given, and asks, "OK, since we're inherently low-value and replaceable, how can we artificially make it harder to replace us?"
Me, I don't want to respond to the idea that I'm just a code monkey by trying to be the fanciest code monkey imaginable. I don't want to be a code monkey in the first place.
Don't forget the ones who jump onto a new language or framework so that by dint of experience they can be the gatekeepers for the next generation. This was staggeringly apparent with both Java and Go, each in their time.
I learn new languages for technical development and to stay curious and fresh. You learn new languages for job security. They want to gatekeep the next generation.
> the last thing many male computer scientists entering the field wanted was to make the field easier to enter or code easier to read, which might undermine their claims to professional and “scientific” expertise.
> Take the C programming language: it was created in 1972, but as one of the current COBOL programmers I interviewed pointed out, nobody makes fun of it or calls it an “old dead language”
> There’s an old joke among programmers: “If it was hard to write, it should be hard to read.”
> it’s perhaps no wonder that a committee-designed language meant to be easier to learn and use
And, of course, the quote from the comment to which I'm replying:
> many people don’t even see the preference for complex languages for what it is: an attempt to protect one’s status by favoring tools that gate-keep rather than those that assist newcomers.
If any of these quotes even resembles something you _might_ think about this field, maybe you'll get something out of reading the whole article. Personally, these quotes are so backwards to me that the author could just as well have written "Programmers can breathe under water" or "grass is the cornerstone of a well balanced diet".
Last year I wrote a small book called "Splash of Code", which teaches newcomers to code (in JavaScript) in a way that similar to the way I learned 30 years ago. I selected JavaScript because the barrier to entry is low, you just need a browser. Many programming ecosystems are daunting to setup these days but there are still some easy systems we can use to introduce newcomers without all the modern complexity.
Browsers have come a very long way in the last 10 years and are a pretty amazing platform for development. Once you learn a little bit you can start to write amazing software for a cross-platform worldwide audience.
I started my career as a software engineer with web development in the 90's. Everything seemed simpler. Literally.
Then, fast forward to 2020. I'll cite you an example of what happened EXACTLY yesterday. I have a web application which is complete and ready to be deployed. It's a backoffice application for one of our e-commerce sites. It's built using Phoenix, so there is a separate assets folder which contains a webpack config and its own package.json as well. The frontend updates require me to update the assets manifest as well. So, we've setup CI for it to automatically do that for each deploy. So, as usual, it simply runs npm install, but, suddenly, everything broke. Remember, this was fine until our previous deploy. It was some weird error from node about not being able to do something with Babel. I had to spend about almost an hour to figure out it was coming from some other package that was making use of Babel. (If you're interested the error is this one[1])). OK fine, we upgraded the babel version as indicated in that issue thread. However, it wasn't compatible with some other package on the OS we were running on. So, now I had to downgrade the entire node version itself to something we knew that worked.
We lost a good amount of engineering time simply because of this unwanted complexity. Remember, all I wanted to do was JUST deploy. Our backend code was perfectly fine. Just for one new added feature, we had to pay a price with our time. This is hardly an exception, this is becoming in the norm.
[1] https://github.com/nodejs/node/issues/32852
Junior engineer: thinks they know everything
Intermediate engineer: thinks they know nothing
Senior engineer: hates computers
- The arbitrary deadlines that serve no purpose. Example: we have to update our app every week/month because reasons.
- The utter lack of understanding of the concept of feature completeness. Example: operating systems that update every year for no good reason whatsoever. What's the point of updating from Mojave to Catalina as a user? What new does it bring? How does it empower the user in a way not before possible? No one knows because it does not. It merely moves things around for the sake of change.
- No one wants to understand what they're abstracting away. People keep piling abstractions upon abstractions yet can't answer the basic questions about how their operating system works at low level.
- Fashion. A lot of it. Basically, if you're doing Android, you MUST want Kotlin and Jetpack and Compose. Same for web — SSR is soooo 2010, gotta make that news website a single-page application because how come would we not use React. IMO, fashion has no place in engineering.
- This "we'll always be able to ship an update" attitude. This is the worst. No one wants to make high-quality software any more, they want to move fast and break stuff at the expense of the end-user sanity. I can't understand how this way of thinking came to exist tbh.
- Business incentives. They ruin everything, but it's especially felt in software engineering.
- Priorities in general. No one is considering what they're making a tool to help the user achieve something. They're making these monstrosities that always put their own interests before those of the user. Dark patterns, purposely inconvenient and awkward UIs, spammy notifications that don't correspond to real events, you name it. In my book, that's not the way to go.
No matter how visionary, proficient, and user-respecting you are as a developer, if you aren't complicit in earning all the money in the world at all costs, you're gonna get replaced by someone else who is.
There are plenty of small companies chasing a dream other than total economic world domination. Obviously if you look at Facebook etc that's all you're going to see.
Also, good luck running a business, any business of any size, without caring about money. Once you're responsible for the the livelihood of your employees and yourself (and maybe even SO and your progeny) your perspective changes radically.
That is until they are pressured to "grow" by their investors that they do have more often than not.
> Also, good luck running a business, any business of any size, without caring about money.
I've worked at a company that was alive and well without chasing profits. It did a bare minimum of monetization to cover its expenses and get a little extra, and that was it. Users were happy, we were happy too. Then the investors decided they've had enough of it, sold their shares to others and those forced the CEO to leave. It was then acquired by a big corporation. I quit in around two years after that when I realized there's no going back and it's only going to get worse over time. It took a lot of effort to make myself go to HR and tell them I'm resigning. I still miss the spirit that was there when I joined. And I'm not sure there are any more companies like this, especially in 2020.
Another point you are missing is that not all companies work that way either. Many people start their own business with their own money and don't have to answer to investors. Look outside of tech: restaurants, design studios, stores, etc.
Yes and you will eventually get it back if your company turns profit — any profit. That doesn't in any way imply growth at all costs which is what the world is obsessed with today because stocks. Practically, it doesn't make much sense to earn hundreds or even thousands times more money than what you spend, yet most companies do just that. It ends up laying idle on bank accounts, not benefitting the end users and society at large in any way.
> Would you be happy giving your money away?
Yes if that meant making the world better.
> Many people start their own business with their own money and don't have to answer to investors. Look outside of tech: restaurants, design studios, stores, etc.
And those usually respect their users/clients.
Truly? Or do you mean you feel bad for people who still have to work for a living? Because if you still have to work for a living I can think of 9000 jobs that suck more than working on software. Btw, I'm turning 60 next month and have been doing this for a living since about 1992, before that I did lots of other things, so I have several points of comparison.
I think it's worth mentioning that I'm 27 and almost 4 years into my career in software. I am convinced I have the best job of any of my friends, or just about anyone I meet at my age. I make more money and work less hours than >95% of my (all college-educated) friend circle. I don't feel stressed at work ever. My team supports me, my manager encourages me to expand my skillset to whatever interests me.
My career trajectory is looking phenomenal, and I find software development generally fun & rewarding (although certainly not all the time!).
But who knows, maybe that will all change by the time I'm 55 and I'll hate that I spend my career in software dev. Seems unlikely.
Startups became about flipping crud apps that try to get users addicted to them.
There are still cool and honest jobs out there! Work in a space you care about and have fun, filter out anything with VC money or FAANG. Usually older companies can be more rewarding from a career perspective, you also get to work in bigger projects with more responsibilities as well as you aren’t competing against 50k’s of software engineers to climb the ladder.
Asking for a friend.
Honestly it’s easier now to do things like that than 15 years ago when I first started.
Well, I think the big question is, are you /developing/ or /hacking/? Hacking is fun, developing is a job. Hacking is in a language and stack that's probably a bit unstable, that most shops wouldn't let you use in production. Developing is writing code at about 30% of your ability to express yourself, to avoid someone half-reading your code later from misinterpreting it.
Sometimes you can intermix the two to make the job better. Sometimes not.
Me, I'm about to turn 50, and I don't see being able to retire until... well, ever at this point.
I might change careers some time, but I doubt I'll entirely give up on software. Maybe just do it for fun.
A couple recommended talks about this subject.
Preventing the Collapse of Civilization: https://www.youtube.com/watch?v=pW-SOdj4Kkk
The Thirty Million Line Problem: https://www.youtube.com/watch?v=kZRE7HIO3vk
But I've always enjoyed tinkering on non-productive personal projects more. Exponentially so. I'm with you on most of the things sucking in software development.
I spend so much time on shit. Politics, presentations to justify spending 0.000001% of our budget on things I need, convincing others that maybe we should leverage well established best practices, not even controversial or cutting edge kind, but the actual ones people everywhere use, rather than re-inventing the wheel every time.
Right now I'm expected to inventory our software catalog, again, because someone doesn't want to get that information from the place we are using to already document it.
And it's only Monday. This week will be long, so very long.
However if you're really burnt out, and still want to exercise your skill, take a break and give open source software a try! I'm still having fun building http://www.oilshell.org/ after many years.
If you're building it for yourself, open source software can be fun, and it should have the side effect of being useful to some others as well.
I'm not saying that it's the way to spend the least time at the computer :) I'm saying it is a way to avoid being burnt out.
If you are building something for yourself, and others incidentally get some use out of it, you'll be less likely to burnt out than killing yourself for a deadline made-up by a VP. And then the whole project gets through away, and no customer ever cared about it. I've seen that a lot.
-----
Related story: Many years ago I got burnt out by my job, and I took a woodworking class at night (lol, definitely a programmer thing). It was great, and I'm typing on top of a desk I made in that class right now.
However I bought a bunch of magazines about woodworking, and I noticed that everyone had 8 or 9 fingers, so I didn't go further with it :) The thing that the OP pointed out is real!
It shocks me, just how often OOP is just not nearly the best approach to something. I certainly still lack in experience though. But why use OOP for something like putting data from a sensor onto a bus? And stuff like that.
I'm in my 50s, and I've been getting paid to build software for over 27 years now, and started programming on a near daily basis on a TRS-80 in the 1970s.
Please don't feel sorry for me. I still very much enjoy building software.
I won't necessarily disagree with the particular challenges you cite.
The total complexity is enormous now, but the tools and abstractions, which themselves have variable quality, and bring their own complexities, are tremendously powerful, and, though it often doesn't feel like it, effective.
Beyond the specifics, I acknowledge that 'the industry' has evolved in many ways and directions, not all of which are positive.
I face non-technical challenges today that, had I known about them 30 years ago, would have probably caused me to switch careers.
So, I acknowledge what you're saying, and to it I will only add this: each of us exerts a great deal of control over how we perceive the world around us. It's possible that the difference in the way you and I 'grade' the software industry is that I am, for no knowable or particular reason, more fundamentally optimistic about things than you. It's also possible that, primarily for reasons beyond our control, I've ended up working in more positive organizations.
To other people reading this far: two specific anecdotes about how the software industry has changed over three decades provides very little concrete indication for how your personal experiences are likely to go.
Whenever I get burned out on software (in my case, Vue and React) -- and build complexity -- I always remind myself of those TRS-80 days. The only learning references around were the books for sale by the TRS80's -- a couple books on TRS80 graphics, Rodney Zak's 'Z80 Assembly Language', and William Borden's Z80 books. And of course the Tandy version of Zork in the little plastic baggie hanging from a wall hook beside 'Eliza' and 'Dancing Demon' -- and then the wall of brown folders of 'Scripsit' and 'VisiCalc' on TRSDOS 1.3 (?). Maybe the editor/assembler at the time, too -- 'EDTASM'. Don't remember if that was in a baggie on the wall hook or in a Tandy brown TrapperKeeper with the cassette insert and several tapes.
Those were great days -- and everything (for me, at least) was new and exciting. Nothing was ever too daunting or too complex -- even as daunting (and as complex) as Z80 assembly seemed to me -- a 13 year old at the time.
That's a feeling I always try to recapture in very deliberate ways these days. It's good remember how it all started.
Complexity is daunting today. I believe, however, that the power available far outweighs the total difficulties.
I am still inspired by the basic possibilities that most anybody can, with nothing but access to a computer and the Internet, write some javascript and html in a simple editor and make it available to most everyone in the world.
Objectively speaking, that's simple and approachable, far more so than anything I ever did or was aware of.
A computer contains practically infinite possibilities, and people who lose interest in that are really just lacking creativity, and maybe some cognitive ability.
I don't only program though, I am creative in other ways and I build many things that have nothing to do with computers, but I do often incorporate programming into these creative pursuits, because it sometimes pushes the project to the "next level".
If someone only writes "glue code" then yeah, that will get boring. There are so many other kinds of programming though, that many never even explore. 3D is a whole entire interesting field that is far removed from "glue code". Home automation is one of my latest obsessions. The list goes on and on.
I'd love to hear a couple of examples if you have a few moments. (:
This seems a really sheltered perspective without a real idea of the kinda struggles that exist for a lot of other careers. Not unlike some doctor/lawyer/scientist/executive talking about the profession as a "train to hell" because it doesn't satisfy some sense of technical purity.
Before building software, I was stuck in dead-end sales jobs with a humanities degree that had no career prospects. Switching to software development has required a great deal of sacrifice, and I'm genuinely thankful every day I get to write code for a living I'm thankful.
- I'm thankful I can get paid well enough to live comfortably.
- I'm thankful I work in clean, climate-controlled offices.
- I'm thankful for a profession full of interesting people to work with.
- I'm thankful I can engage my mind and excercise a certain amount of creativity in my work.
I really hope 55 year old me can remember to be thankful.
It may not be perfect, but man is it better than what so many people do.
I obviously am at a different place than you but I don't think everyone who enjoys the work has Stockholm Syndrome and needs to be pitied. Some of us honestly enjoy it and I plan on working as long as possible as I really like the external supply of ideas to create.
Though had my carrier taken a different path than it did I can easily see being as burnt out as you. I worked briefly at a large enterprise company (not software makers, think greek sneakers) which was so terrible.. if that sort of job was my only option I wouldn't have lasted a decade in this business. That place was seriously depressing.
I don't think I've ever worked a day in my life.
Well, not strictly true, I've had several jobs that start out with interesting problems to solve and then became "it's another CRUD app." I quickly left those jobs to find other work.
I'm not cheap but then I'm not well compensated. I don't make FANGMAN income, but I am financially comfortable. I've found joy every day in my work, even if there are many days where the work in utter frustration, by simply seeking out the kind of work that makes me happy. With an interesting problem I will work all the hours my mind and body can muster. With a 9-to-5 "what's the point/what am I learning/this has been done eefore" regular work-a-day job there is no amount of money on this green Earth that could get me to focus or be happy. Well okay, there would be a certain amount, at which point, after 12 months, I'd quit, take the money and go do a different job that pays less but is more interesting.
This course of action isn't for everyone, not everyone has the privilege of saying "F* it! I'm out." when they are doing something they don't find joy in. I've just made sure that I never put myself in a position where I couldn't choose that course of action. The road has been hard some days, and money has been tight more often than I want to recall, and I won't die a wealthy man, but I will have had adventures along the way that keep me still striving to build software every day.
Footnote: My job last year consisted of writing kernel drivers to speed up SSDs. My job at the beginning of this year was control a radio controlled car from your cellphone. Then I built a dashboard for my home that tracks my phones and my cats and the weather. My job, right now, consists of building a stupid simple app (with a lot of screens and moving parts) on a mobile device that talks to OpenWRT to put a pretty and simplified user interface on what is a complex piece of software. I've never had to build a mobile app that tries to simplify a complex router interface before. It is a learning experience. But once I've learned that lesson, I won't be building another one. I'll go find something else to do.
Life is what you make it.
By way of contrast, I've been trying to puzzle out how to do woodworking programmatically which has been an interesting exercise, since traditional CAD/CAM is quite limited in its assumptions, and the tools which are accessible to me (in terms of them matching how I think/work and having an immediate, applicable preview): BlockSCAD and OpenSCAD are rather limited in their ability to export files (DXF, SVG, STL) --- in particular, I'd like the ability to write out a text file w/ full control over the contents, but that's not viewed as a valid request by the devs.
Making progress though:
- http://tug.org/TUGboat/tb40-2/tb125adams-3d.pdf - https://willadams.gitbook.io/design-into-3d/3d-project
I just wish it were easier to make G-Code in 3D (unfortunately, I don't find the obvious tool at tplang.org very workable with my approaches).
It isn't, it is programming. Anyway, I want to go one step further and return to a more ancient living style. I don't want things like artificial light, computers, etc, to be a significant part of my life. The best time I have ever had, even to this day, was when all of those things didn't exist.
Watch out for Rosy Retrospection [0].
[0]: https://en.wikipedia.org/wiki/Rosy_retrospection
When I take the 30K view, in the almost 40 years I've been tinkering with software, people have never had it so good. Super enterprise grade software is available to tinker with, for free, and can run on your freakin' phone. If you want to go super low level and screw with assembly language, knock yourself out.
No, it's not. But finding an interesting project to work on can be difficult.
You can somewhat get around that if you work mostly on back-end stuff. For the front-end, things might change once wasm becomes more viable.
Programming can be great, fun, challenging and profitable, but it can also be tedious, boring, demoralizing and hours can be miserable. It all depends on the company and the project you're working on.
I agree with most of the haters in this thread yet I wouldn't trade it for another kind of job :-)
> I just find aerospace boring, unimaginative, stressful and low paying,
Could you expand on that a bit? To an outsider aerospace sounds much cooler than making web widgets with questionable purpose...
Today, that is almost completely gone. Now it's Business has been forced to design a system for you that doesn't make a whole lot of sense and a bunch of stuff wasn't considered. If you push back, you'll get dragged into endless meetings where you try to explain things to people who have zero training on what you are explaining. You'll get pushback because their egos will get involved and eventually overruled on most of it. After that, you will get a week to work on a sliver on it, then next week you'll work on a different sliver but often whatever business decides, not what makes sense. You'll also get a bunch of processes to weigh you down because they hired a bunch of goobers cheap that keep breaking stuff. When this doesn't work, it will be your fault.
As with any "mental" job, I find I work best when I balance it with a "physical" job on the evenings / weekends, such as renovating my house or basically doing anything with my hands. When physical jobs were my paycheque, all I wanted to do were mental things in the down time, now its flipped. Neither is necessarily better or worse, though I do enjoy the flexibility that software allows / requires.
This means that you should clarify better what do you want in a software job. Besides working from home, what do you want? Relax workflow? Adrenaline rushes from doing fixes in live/production systems? Do you know work on technical or business features? Does the tech matter (new/legacy) for you? Do you enjoy mastering a tech or just make software work? How much payment is worth a worse job?
My suggestion is that you write down what's your ideal software job and review it several times. Then it's a "simple" tasks of reaching for it and keep your expectations in check.
Once you train your ears and learn scales suddenly you start to hear music in terms of theory.
Do this long enough to become “senior” and suddenly a whole class of music is boring - like glue-code.
You need to find outlets for your experience and not just maintain open source projects - which are highly valuable but a huge pain in the ass.
This is an interesting thread, but my advice is to never take comments on the internet as any sort of representative sample. It is unlikely someone happy with their job would comment on a thread about quitting, because it makes for a boring addition to the thread.
I sometimes wonder what my work life would be like if I switched back to mechanical engineering, but I'm very happy working purely in software. Engineering requires a ton of capital and fairly large teams to do cool things. With software, a single person or a small team on a shoestring budget can build pretty neat things. I also work 100% remote, which I'm not sure would be possible with a mech eng job.
I do wish I spent more time in the machine shop at school though. Many of my neighbors in my HOA are either "real engineers" or retired blue collar workers, and they can fix things much better than I can. I can help reset their router though! :)
Sure, I can go make furniture out of wood for $150 a month (and I did at some point in my life), but I'd rather keep my cushy lifestyle and stare at a screen for 16 hours a day, thank you very much.
I'm a programmer, my income is in the top 10th percentile, but that just means I'm in the upper middle class with the privilege to pay more taxes. I need to work until I get to retirement to secure myself financially.
That is true by definition. No matter how much or how little you make, it remains true. The question is: when do you get to retirement? Making a lot of money makes it a lot sooner.
To explain: a large chunk of our salary goes to the state's pension fund - not my fund. When I reach the official retirement age the government will allow me a pension that is scaled based on my payments while employed.
At this time I'm looking at 3 decades on front of keyboard (am 40 and the official pension age for me will be around 70).
I believe that due to market forces, engineering salaries are set as high as they can be without producing "escape velocity" for said engineers.
That said, I'm not in the US proper but in Canada, but I'm in the same position as you: highest tax band, make very good money, but unless I were to dump everything and move to an area with a much lower cost of living I will be in no position to retire before 65. Doing that (major cost of living reduction) becomes difficult once you have children.
Doesn't mean it's not true or not relevant.
When we picture our dream of doing a simple trade, we only think of the most awesome part of that trade. If I'm a car mechanic, most of it too is just trivial oil and tire changes or changing a basic part of two - not working on engines in depth.
Same with programming. We would want to build something cool from the ground up, but we are just piping stuff from a lib to another.
Comparing woodworking to corporate code is unfair anyway. I'd rather compare working at a furniture factory to corporate code, and woodworking to a solo dev project.
I bet that it feels better and more rewarding than updating a dependency and spending 2 days fixing all the errors caused by updating, especially knowing that you will have to do the same thing in a few months.
There is something that feels good when you create/fix/improve a real object compared to a software one.
It's frustrating as can be when it doesn't work, and it feels great when it finally does work.
As a human, dealing with complexity is all the same, no matter the medium.
His description of the feeling that something is going wrong, and of the emotional shift required to change frame before making the problem worse, that's saved me from more bad decisions than I could count.
And those types of jobs are the most likely to have higher margins.