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.
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.
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.
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.
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.
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.
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".
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.
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.
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.
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.
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.
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.
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 :-)
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.
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!
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".
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.
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.
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.
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.
"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.
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'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.
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 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 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.
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!"
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.
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!
> 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.
It seems like nowadays you just can't make money building interesting things anymore.
Most of the available programming work is really just writing glue code to make big software systems work as intended, to the point where it can feel more like writing configuration files than actual programming. Put simply, 98% of programming these days is scripting.
On the other hand, you have lots of fun things one can do with code, from building weird experimental things that lack any real-world application but are very interesting to think about to simply recreating some of the giants of the software world in creative ways or in different languages to get a better appreciation of their inner workings and the principles behind them. None of that has any value from a busyness perspective and nobody will pay you for it.
The way I feel about programming is in equal parts as an art and as engineering. The weird obsession of the IT industry with treating code as a resource that has no purpose other than create wealth is absurd and, I believe, one of the reasons why many programmers end up disillusioned and simply drop programming altogether, both as a job and as a hobby.
I can order a comfy car anywhere I am with the tap of a button.
I can order food from hundreds of restaurants and have it delivered in less than 30 mins with the tap of a button.
I can book flights and hotels with the tap of a button.
I can play with friends in virtual reality and actually sweat.
I can watch a live stream of SpaceX launching reusable rockets in space.
I could buy a car that is almost fully "self driving".
I can exchange value with anyone in the world anonymously and with no delays or censorship thanks to cryptocurrencies.
I can land in a completely foreign city and get step by step directions to wherever I need to go.
I can translate almost any language in real time, be it in writing, spoken or taken from an image.
And so on...You can (and most of the time do) get paid to build interesting things. It's just that most of us are unable to look at the big picture and not realize that the combined effort of a team is more valuable than the sum of the individual efforts. And if you do actually work on stuff you don't find interesting there is enough demand that switching is not that hard.
And if you want to solve puzzles for the sake of solving puzzles then there are plenty of resources for that.
So we've mostly solved trivial non-problems if/not regressions?
People lived in 1990 and didn't feel that bad to have to call a travel agency to get a ticket, or, god forbid, to actually meet friends and not in VR space...
I'll give you "self driving cars" -- well, I would if they could work today, which they don't...
Anyone remember spending hours at AAA getting TripTiks and a highlighted route on a vague map for a (now) simple road trip? And the ensuing argument about the passenger's navigation obligations when you inevitably miss an exit halfway into the trip? And spending significant time preparing the (unreliable 80s domestic) car for a road trip?
I recently did a ~1000 mile trip that I used to do as a kid in the 90s. Back then it was literally a weeks worth of preparation. In 2020, I did the same trip on 1 hour notice with no concerns about my transportation, navigation, food, or lodging.
Sure, we made do with what we had in the 90s, but stuff is just incredibly more convenient and accessible now.
> Anyone remember spending hours at AAA getting TripTiks
I'm glad to see someone else mention TripTiks. I went on long road trips with my family when I was a kid and TripTiks were the coolest thing. A TripTik was a custom-made flip-book assembled from pages that were map segments with everything of interest noted along the way. Your route was marked with a highlighter. It was bit like turn-by-turn guidance in handheld paper form.
>> People lived in 1990 and didn't feel that bad to have to call a travel agency to get a ticket
Travel agencies were awful; people don't realize how good they have it with online tickets. The way they worked is you'd ask for a flight from X to Y. They'd spend a whole minute typing some cryptic database query into their terminal and come up $1000 leaving at 6:45 am. You'd ask if there's a better price and they'd spend another minute typing a slightly different query before coming up with something slightly better. Repeat for 10 minutes, and you feel guilty every time you ask a question because they're doing you a favor with so much typing. Then ask if there's anything better if you leave Wednesday and the whole process repeats. Finally they obtain a semi-decent flight after a huge effort, but you're left with the feeling that you probably could have saved a bunch more if you'd known the right question to ask.
These wouldn't have been so bad if they were accurate. More than once I'd have to drive across multiple states to somewhere that wasn't a giant metropolis, and it would take me through a random field and tell me to turn left at a street that definitely did not exist.
I remember doing pretty good with a decent map book. I'm not sure traveling these days is really that much simpler. I did some pretty big trips before the age of always on and it worked just fine. Also me and my wife still argue navigation in the Tesla with its futuristic built-in navigation (that's not always perfect). My "reliable" not-80's Subaru Outback broke down on me in my last big road trip (which indirectly led to getting the Tesla, so far so good).
Not to knock down all the real progress, but things were fine 20+ years ago as well...
> I'm not sure traveling these days is really that much simpler.
I arrive in a foreign country.
My phone works as soon as I turn it off airplane mode.
I already have lodging, which didn't involve any long-distance calling or navigating foreign accents over a scratchy submarine cable.
I don't know how to get there. Is public transit an option? One short map query later, I determine that it is, but that would involve more hauling luggage than I'd like, besides, that 20 minute wait for the bus at the end looks dodgy.
Rideshare it is. They pick me up at the airport and I get where I'm going.
vs.
I arrive in a foreign country. I have the Lonely Planet guide. I circled a hotel that sounds good. A hawker comes up to me and hassles me about staying at their hotel instead; I pass.
The guide has some instructions for how to take public transit, but it doesn't sound easy, and I don't speak the language.
First, I convert some currency, and get enough change to make a local call, and call the hotel. I think I just got a reservation? I definitely have enough left over to pay for a taxi, so down to the taxi stand it is.
The first few taxi hawkers strike me as excessively aggressive, eventually I find someone calmer. Time to negotiate a rate; Lonely Planet helpfully informs me that it's one of those countries where this is how it works. Once that's done, I get my ride to the destination, and the cabbie asks for twice what we agreed on. I calmly insist on the original price, which he agrees to after a couple passes; I tip anyway, because I'm an American.
Now I'm at the hotel. I'm in luck! I either do have a reservation, or the room and price that I agreed on over the phone is the same as it was then. Not like last time...
Yes. Traveling these days is really that much simpler.
> Traveling these days is really that much simpler.
Maybe, but I'm not totally convinced the "simplicity" has really made my life any better?
I have personal experience of travelling both pre and post smartphone era. I've spent reasonable or large amounts of time in San Francisco, New York, London, Bangkok, and Singapore (from Sydney), and a day or a few days in many more places. None of the "pre smart phone era" travel I did was onerously difficult without a smartphone, and I don't seem to have started doing additional travel since smartphones "slowed" all those problems you list.
I was comfortable enough travelling using taxis, printed maps, travellers cheques, and travel agents. I would happily enough fall back on those (well, these days I take advantage of credit card/maestro ATM availability and don't even know if travellers cheques are still a thing.) I will admit the stress levels travelling in Thailand, where I don't speak the language or even read the alphabet, are lower with a globally networked supercomputer in my pocket, but I never avoided going there (or anywhere else) because "It's too hard".
(And given current climate, I'm quite likely to arrive in the US next time I visit without a phone, or perhaps with a minimal burner. Sure, my phone makes a bunch of stuff "simpler", but it also carries a fuckton of intimate personal information, and it makes for a very tempting target for badly behaved or overly invasive border control staff...)
Heh. that's all the fun in traveling... Even in the good olden days a travel agent would book you accommodations no problem. You'd book a car if you wanted one. I've done lots of trips without being online ... the world was aligned to support that.
I did spent a little bit of time in SFO trying to figure out where the rideshare pickup area was last time I was there, more time than I spent finding the train the previous time... But it did get me exactly where I wanted to go which was nice...
There are still plenty of places where the phone doesn't really give you much today. Lots of places without ride sharing...
This seems like an awfully reductionist take, and is demonstrably wrong.
> to actually meet friends and not in VR space
Nintendo released the Virtual Boy in the 90s, a (somewhat unsuccessful) attempt at a semi-VR thing; they were (and are) a pretty big business, and I don't think that they were just doing it because they thought it was cool; there was demand for something like virtual reality at the time.
> People lived in 1990 and didn't feel that bad to have to call a travel agency to get a ticket
This is also wrong; anecdata, but at least one person (my dad) hated having to call up travel agencies in the 90s to book a plane ticket. I remember as a kid him yelling at the travel agent because he (having done a lot of business travel in the past) knew how much they were marking up the ticket and they wouldn't meet him halfway. Eventually he started calling the airlines directly to purchase tickets, and he complained a lot that there was not an easy way to compare prices between airlines. To stress, this was in roughly 1995.
Obviously this is just one person, but I seriously doubt that this was a unique experience.
I actually had a Virtual Boy. My father thought it was so cool that it's the only piece of tech, let alone video games, that he ever gave me without my requesting it.
We returned it, because it sucked. It was more than somewhat unsuccessful; it is the paradigm case of overpromising and underdelivering.
The only sweat you'd work up with a Virtual Boy would be after puking because of the induced motion sickness. It was impossible to move around, wasn't designed for that, instead you'd hunch over a table and it would force you to take breaks every fifteen minutes in a futile attempt to prevent waves of nausea from ruining your experience.
Wow, "demonstrably wrong" are incredibly strong words given the lacking counter arguments you provided.
I remember when the virtual boy came out. It was a disaster. From wikipedia: "The Virtual Boy was panned by critics and was a commercial failure, even after repeated price drops."
And the second one, bringing up that one time your dad was annoyed to book a plane ticket. Not much more needs to be said.
What exactly did you demonstrate was wrong with his original take?
I agree, the Virtual Boy was a disaster, but maybe I didn't illustrate my point very well, and that is my fault; I'll give you an upvote to help counteract the downvotes because I probably didn't explain myself correctly.
What I was trying to say that clearly the was some demand for the virtual reality of some kind; I'm sure Nintendo did some level of market research; concurrently, Atari and Sega was also working on VR projects, these demos were pretty popular in expos, so my point was that it's not a recent thing to want to VR in the home.
I disclaimed that me using my dad as an example was anecdata, but (assuming I'm not lying), it does prove the existence of at least one person's demand for such a product. The post I was responding to said specifically "People lived in 1990 and didn't feel that bad to have to call a travel agency to get a ticket", and I was giving a counter-claim to that. The last time I checked, my dad was a person, and did feel "that bad" calling a travel agency. Also, it wasn't "one time", it was throughout most of the 90's, though I mostly remember this from 1995-1997 because I was previously a bit too young to pay much attention to this stuff.
Now, fair enough, I didn't link to studies proving my point, so I probably used the word "demonstrably" incorrectly, and I apologize for any confusion that might have resulted from that.
VR is also not just about recreating irl situations so you can sit at home. There is something deeply satisfying about shit talking with friends in Pavlov and then blowing their brains out with a shotgun only for them to come back 10 seconds later.
>This is also wrong; anecdata, but at least one person (my dad) hated having to call up travel agencies in the 90s to book a plane ticket.
Yeah, and I hate scratching my head when itchy. Doesn't mean an "automatic head stratcher" is the best use of our innovation, or adds anything significant to humanity...
Why does everything have to "add something significant to humanity"?
It's not like "innovation" exists in a vacuum; if I figure out, I dunno, a new motor design for an automatic head scratcher, there's no reason that it can't later be used for something you deem to "add something significant to humanity".
Also, who gets to determine what actually adds to humanity? If you really didn't like scratching your head, or it took you a really long time to scratch your head in the morning, then wouldn't having something automatically do that for you be useful?
Travel websites are an example of something that did solve a problem; despite what you said before, people didn't like having to deal with travel agents (I googled around); they didn't like having to book tickets during office hours, they didn't like how hard it was to compare prices, they didn't like how much of a cut the agents took, etc. Buying tickets online save consumers time, money, and probably helped businesses book flights more easily. Businesses that "add significantly to humanity".
I know you didn't say this, and I'm not trying to put words in your mouth, but I think that the binary mentality that you either are working on "useless" or "revolutionary" things is really harmful. I think it puts a lot of pressure on newbies with the thought that they have to change the world, and they might withdraw from STEM stuff because they don't feel like they're making significant enough contributions.
Ok. I stand by my points; innovation isn't in a vacuum. Plenty of things seem useless initially, or are just built for fun, and turn out to later be incredibly valuable later.
innovation doesn't always look like a steam engine or a polio vaccine, with immediate and obvious impact on society.
sometimes innovation looks like 1000 small improvements that only save us 30 seconds of our day, but once they're all built we suddenly have whole hours freed up that used to be taken up by things like spending an hour on the phone with a travel agent
So, I wonder how much social media use is a real choice. A lot of it feels more analogous the sort of false choice people make when they smoke or self-medicate with over-consumption alcohol.
> or, god forbid, to actually meet friends and not in VR space...
These technologies really do solve problems for some people. Ignoring the temporary problem it’s solving for most-everyone right now, VR lets quadriplegics and house-bound invalids go places that aren’t accessible, e.g. the middle of the jungle. And VR is also useful for assisted visualization in the treatment of PTSD and other associated disorders.
This is also the thing that everyone who makes fun of those “as seen on TV” products needs to be reminded of: they’re not really for you. For many products, there’s a smaller core of people who actually need the product, and then a much larger halo of people who might want the product if you sell it the right way. For the As-seen-on-TV products, the core market is usually “old people who don’t move around well, or have the grip strength/dexterity necessary to operate hand tools.”
But even the core market doesn’t like being advertised to in a way that points out their problems. They’d rather that you wrote your pitch to target the larger halo market, and then they will see that ad, and notice the particular benefits to themselves as a core-market member.
So in the end, you get things like the ad for the Snuggie (whose real point, IIRC, is that it’s a robe that someone can put on an infirm person without having to lift them to get it around them) that instead markets it as a sort of weird throw-blanket with arms; or ads for VR headsets that market them as being for Beat Saber. In both cases, the advertising is ignoring the core market with a need for the product, knowing that they’ll discover it on their own once they see the advertising aimed at the larger market.
>These technologies really do solve problems for some people. Ignoring the temporary problem it’s solving for most-everyone right now, VR lets quadriplegics and house-bound invalids go places that aren’t accessible, e.g. the middle of the jungle. And VR is also useful for assisted visualization in the treatment of PTSD and other associated disorders.
Yeah, that's a valid market. But they're touted as some ultimate revolution / need, to everybody, when they're trivial in utility (outside that niche), few asked for them or would care about them without heavy marketing, and all at the same time basic needs (like health, a job, housing, education) get increasingly shitty...
The thing nobody likes to mention in casual conversation about the benefits of VR, is that there’s a whole industry working on VR sex simulation games, with big FOSS extension ecosystems, control of modern sex toys through open-standard teledildonics APIs, etc. There’s Microsoft Flight Simulator 2020 levels of effort and detail put into these.
(And the further thing that nobody likes to mention in casual conversation, is that many people—men, almost always—have an addiction to visiting prostitutes, that can be as costly as a drug habit; and that a good VR rig, coupled with this extensible, customizable VR sex-sim software, can manage—much more-so than regular porn—to mostly sate the same psychological needs that made them retain the services of escorts in the first place; and thus save such people a lot of money over the long term. These people tend to become big proponents of VR.)
Anyone who is into this sort of thing, but doesn’t want to [or can’t] mention it by name in the social milieu that pertains, will just say they’re “really impressed by VR” and “think you should give it a try, too.” You can differentiate this sort of person, because they struggle to come up with any examples of the VR games/experiences that so impress them.
> have an addiction to visiting prostitutes, that can be as costly as a drug habit; and that a good VR rig, coupled with this extensible, customizable VR sex-sim software, can manage—much more-so than regular porn—to mostly sate the same psychological needs that made them retain the services of escorts in the first place
Two thoughts:
1- Are men really replacing flesh & bone prostitutes with VR sex sims?
2- Is this really a "good" development? At least with prostitutes there are two human beings involved. With VR sims, aren't we going to a Brave New World kind of situation, and would this be a good thing at all?
About point 2 though, prostitution and even just hookup culture is actually more BNWish than sex sims are. If you are using a sex sim, the taboo is still very much present. And that opens up having actual relationships whereas having systematic, mindless sex with random people will give you the illusion of that being all there is to it.
Everyone belongs to everyone else is the primary difference between the world of Huxley and our own, not that we don't have sex chewing-gum.
Fair enough. Though I can't see how VR sex simulations can bring us closer to the real thing. They seem more alienating to me. Prostitutes are real human beings with actual feelings and needs, at least.
How do you define "good"? One criterion that comes to my mind is: prostitution is illegal in plenty of places, so reducing the need for it reduces crime. If by "good" we think "good things are the ones where no-one gets hurt", it can also be seen as an improvement - black market for sex is probably not always a safe space (w/o even considering cases of human trafficking).
I'm not sure how I define "good", but consider this: not all prostitution results in somebody getting hurt -- if it does, that's definitely a serious thing to be addressed -- and when it's consensual, it's about two people connecting (money involved, of course). I know a cliché is to consider every customer/prostitute relationship as predatory in nature, but I'm not convinced this is always the case.
People sating their urges with some VR simulation doesn't seem like an improvement to me. It feels alienating, out of a work of dystopian scifi: people no longer even need to touch other people, they engage with simulations. I don't know, it feels terrifying to me.
Someone else mentioned Real Dolls. It made me think of the pretty good and touching movie "Lars and the Real Girl". We like and pity Lars in his delusion that his Real Doll is a real woman, but the character definitely has issues.
The main problem is that since it is illegal, there's no easy way to address abuse (victims will not want to talk because they are potentially at risk of being punished). So if VR can reduce the amount of sex workers (less demand -> less supply), it may (?) lead to less cases of abuse. That sounds to me like something Better, but maybe not as Good as some other alternatives.
It's also interesting: why is human connection considered good? People connect because it makes them feel something, but if you could achieve the same result w/o human connection, would it be that much worse? It feels worse to me, but not sure why. :-)
Yes, it feels worse to me as well, but I can't say why, except that it seems fundamentally alienating. But this is subjective. It seems to me connecting to other human beings is part of being human.
I'm definitely in that crowd and I suspect you are too, because as you said this doesn't come up in organic conversation. However I can also say I'm a big fan of Beat Saber, clocking around 20 minutes every day on average. And then obviously VR with racing games.
Most of that VR and AR stuff, which while being eminently more suitable for people with real accessibility issues (either due to physical disabilities or environmental constraints), is locked up behind almost entirely unaccessible interfaces in a gamers' world. Why? Because you can sell more that way. The technology and the people who can build it certainly exist; the desire to do something useful with it rather than something cool and highly profitable isn't.
Frustrating in the short term, sure; but it might be the optimal strategy for getting VR out to precisely those people, in the long term. Selling more VR headsets means more revenue plowed into R&D, more consumer demand for sanding off sharp edges, and a larger industry-wide push toward gradual commodification of the technology.
The cheaper, more reliable, and easier-to-build VR is, the more likely you’ll see stodgy old companies (of the kind that build and go through FDA-certification for accessibility aids) becoming interested in working with it.
Sort of the same idea as Tesla: sell people a Veblen good (fancy EV cars), to fund the development of a technology (batteries) to drive the commodification of the EV industry, such that everyone non-fancy EV vehicles will become affordable, and such that EV technology will become something “obvious” to even the stodgiest auto-maker.
Or, to put that another way: you’d never have seen a direct evolution from mainframe computers to the modern PC, because the grass-roots demand for doing what a mainframe does on your desktop just wasn’t there (until it was.) The industry needed to start with calculators, evolve those chips up into microcomputers and kit them out to play games, and sell those as whiz-bang consumer electronics. Progress in that game-playing microcomputer space then carried PC technology along for the ride, until they just-so-happened to become able to do what mainframes could do.
I agree, I've always gotten frustrated when people say "but it's mostly used for games so it's not useful", acting like games don't have huge R&D potential.
Games give a relatively straightforward "pass-fail" criteria to test out new tech. Instead of a nebulous "does this tech directly help people", it's much easier (and more objective) to say "can I get this graphics API to push N fps to make the gameplay more pleasant?". Virtually any time I learn a new programming language or toolkit, the one of the first projects I do to get my grips with it is usually a simple 2D platformer just to stress out edge cases. Is this 'useful'? Not immediately, but it is useful for me to have learned how to code well enough to make a game perform well.
It's not like these optimizations and tools can't be useful for other things after they're developed for games; Unity was primarily made for games but I have friends who use it for developing "useful" iPhone apps now.
If the technology for VR gets good enough (and cheap enough) to get into the hands of the average gamer, I cannot see how that won't be a net win for people with disabilities in the long-run.
Yeah, that argument gets used any time new technology arrises. Sure it wasn't hard, doesn't mean you need to stop working on making it even simpler.
> So we've mostly solved trivial non-problems if/not regressions?
While I agree some developments have worsened the experience of particular things. What developments would you rather have seen?
By the way. VR was already a thing in the 80's. It's hardly new, only improved as the tech came available. And popularity of sci-fi also shows the common dream for many of these technological improvements.
As a fun reference. When the mobile phone got introduced in the 90's here in the Netherlands they did surveys in the street[1]. Everybody was brushing it off as unnecessary.
- "I don't need one"
- "Oh, then you get called while riding a bike haha"
- "I have one at home, and if I'm stranded there's always a landline somewhere"
- "They can send me a letter, and if they need me urgently they can call me on my landline"
For one, advances in VR have come from hardware advances, not software.
For two - cell phones are not so much useful because they're phones, but because they're miniature computers with (near) worldwide connectivity to the internet.
Considering the amounts of flights, I'd say that being able to book your travels without calling elimited the costs of needing phone operators. And allows me, as a user, to also easily book outside of office hours.
I agree that there's a lot of useless tech around. Especially in this startup world where it seems to be all "Uber but for x".
You also haven't answered my question. What would've been a non-useless tech that should've been developed on in the meanwhile?
And just because some commercial companie (travel agencies) spent their profits streaminglining their booking process doesn't mean it's all been useless these last 30 years.
I mean people were also "fine" with washing clothes by hand until the washing machine came out. Just because it was done one way that was accepted, doesn't mean there isn't a better way.
Having navigation on my little device I can fit into my pocket and work pretty much everywhere is a huge convenience. I no longer have to plan trips carefully, drive around hoping I get to the right place or stop 3 times to ask for directions.
> So we've mostly solved trivial non-problems if/not regressions?
This. I get called a Luddite because I rant about the vastness of useless tech, but I love tech. I simply think most of what people focus on is useless and that "the immediacy to which I can do anything" now is actually very psychologically harmful.
The “trivial problems” you mention have taken hundreds of thousands of engineers three decades to solve.
As other people have mentioned, it’s awfully reductive to classify these problems as trivial. You think they are trivial because the solutions have been done well. You do not see the millions of man-hours that have gone into fixing these problems because you are not supposed to.
Life today is radically different than the 90s, and for the better. The power of the individual has significantly increased with the last three decades of technological progress.
This comment is being made in the middle of a pandemic. Does anyone believe that video chat hasn't made modern life better? You have a plan to do remote learning with 1990's technology? Talk to my parents about that, or anyone who has children that live more than an hour or two away. Talk to anyone who's wheelchair bound or who lives in a rural community.
> I'll give you "self driving cars" -- well, I would if they could work today, which they don't...
Fully autonomous cars don't work now, but the extra warning systems, backup cameras, lane shift systems, etc... are saving lives every single day. I like that my car helps me monitor my blind spot when I put my turn signal on. And if anybody ever figures out how to get self driving cars to actually work, they will save a massive number of lives in the process.
> I can land in a completely foreign city and get step by step directions to wherever I need to go.
This was such a common problem that there were entire movies based on people getting lost in tourist destinations and road trips. I grew up reading paper maps inside a car. Nobody would ever want to go back to that. I can think of at least one instance over the past couple of years where having a cell phone with almost universal reception potentially saved my life.
> ...
Netflix didn't exist until 1997, Youtube didn't exist until 2005. Imagine wanting to replace a laptop keyboard, or change an obscure car part, and not being able to find a video that explained how to do it. Ask my parents whether or not they like being able to find videos demonstrating new crochet patterns or woodworking techniques. Ask my parents whether or not they'd prefer to go back to a time when they couldn't realistically pick up any new hobbies or interests unless there was a local community that already existed in our rural town to teach them.
The parent comment here is inscrutable to me, how can anyone be this nostalgic for the early 90s? I grew up in the 90s, it wasn't good. We wanted better technology. There are a lot of problems to solve with modern technology, and a few regressions to address as well, but talk about throwing the baby out with the bathwater...
Aren't most of the examples you list kind of orthogonal to the issue at hand? They seem more related to living in a world where software exists than to actually being the one who builds it.
I think you may have missed the point that someone had to build all that stuff, and the universe of software in the business world (where people are employed to write software) is large.
Did I miss the point, or did you? Someone has to clean out the sewers too. Somebody does, and maybe they make good money to make up for the unpleasantness - I certainly hope so - but that doesn't make it a fun job. If software development has become sewer cleaning, isn't that something worth talking about?
Yes, you can get paid to build interesting things. But the work you will be doing is not going to be interesting. Working as part of a team with the 1000s of engineers on Uber or Office or Alexa is going to be tedious no matter how valuable you think the product is.
That wasn't what I meant with "interesting" though. Useful and polished products often involve tedious work. What I mean when I say "interesting" is that the programming involves something new and different. Messing around with unconventional and weird data structures, trying out new niche languages and paradigms, etc.
To be fair we could do nearly all of that before without much of an issue.
Now we inherit the overhead of the software, demand pricing, apps that are made of shit and string (uber eats I'm looking at you) and zero customer service...
I think the implication is that ride hailing, delivery ordering, and flight/hotel booking were possible to do by calling the company on the telephone. Which—if you already know precisely what you want—has almost as little friction as opening an app and tapping a button. (And to make that apply more often, these companies used to distribute fliers containing their “browsable UI.”)
“Live streams” of rocket launches were on TV :)
And driving, step-by-step directions, and translation were services provided by human beings. For the richer of us, they still mostly are services provided by humans, because the machine versions still aren’t quite as good.
There have been VR systems at arcades since the 80s. The main difference today is that they’re consumer electronics you can bring home. (Not that that’s necessarily better for everyone; not every home has the room.)
Cryptocurrency is fairly novel in the universality of the access it provides to such services. Before, you and your counterparty had to both have fancy Swiss bank accounts or Bahamian shell companies to exchange the funds through. Still possible, but you couldn’t just send the money to anybody, so it limited what you could do with dirty money. Now dirty money is almost as useful as clean money! :P
Calling has absolutely not the same friction as using an app. It's orders of magnitudes less efficient, more expensive and sometimes just impossible (good luck calling radio taxi in some countries where you don't speak the language). I think comparing what we could do 20+ years ago with what we can do now and saying "meh" is outright absurd. But, hey, everyone is entitled to their opinion.
Not to mention the experience of calling a cab as a foreigner and having the driver take advantage of you by price gouging you or taking you on unnecessary detours.
You might be overestimating the gap in efficiency. For example, last night, I ordered a pizza for pick-up, and the phone call took exactly 31 seconds. Even apps aren't instantaneous, but if they were, you're only talking about saving less than 1-2 minutes per day. In exchange for those time savings, apps introduce a lot of complexity and overhead: service fees, app updates, device storage, logins, behavioral tracking, etc.
Now, that being said, there are a few unique advantages to apps, like being able to order taxis in a foreign country (as you said), or being able to share your GPS coordinates with the taxi.
I used to buy the new Thomas Guide (the 1 inch thick paper map book to find my way around Los Angeles). Having Google Maps on my phone has massively changed that. In the middle we had Nav systems but even then I now live somewhere where public transportation is the norm and being able to ask Google Maps how to get somewhere as been a life changing experience. As one concrete example, from 2000-2010 I pretty much never took the bus except for the one that went by my house. Now, since Google Maps will tell me which bus to take it's so trivial just to take whatever it tells me.
As for VR in arcades in the 80s they were remotely as good as 4 yr old VR today. not even in the same league. That's like comparing a 1970s calculator to a smartphone.
Like I said, “getting directions” used to be a service. Specifically, back then—and still today, in many places!—you’d be expected to retain the services of a guide when you were in a foreign city/country. Who would often double as your translator, and potentially as your driver as well.
Machine directions are still not as good as the service a good guide provides in navigating an unfamiliar city. Especially, no navigation app I’m aware of has an inbuilt intuition for avoiding the “bad parts of town” in its routing, that differentiates between what’s safe to drive through vs. walk through, and differentiates between safety levels at different times of day.
> Like I said, “getting directions” used to be a service. Specifically, back then—and still today, in many places!—you’d be expected to retain the services of a guide when you were in a foreign city/country. Who would often double as your translator, and potentially as your driver as well.
So previously, travel to foreign destinations was something few could afford, since it required sourcing and hiring a local guide. It would seem our current solutions scale much better and at a lower unit cost, opening up the world to more people than could have experienced it before.
Yes, correct. But that’s moving the goal-posts, kind of: “making something available to a wider audience” isn’t the same thing as making something possible. The original claim was that we’re now in a world where these things are possible. But really, we’re “merely” in a world where they’re more widely-available. They’ve been possible for a long time.
What I wanted to highlight, was that technology making something possible, that was previously impossible, is actually quite rare.
There really aren’t all that many innovations that come along and change the world in such a way that a time-traveller from the past, would need to learn an entirely new conceptual framework to understand how we do things now. Almost always, what we do now, maps in an obvious 1:1 way to what we used to do. Hailing a cab? You could hail a cab in Ancient Greece!
In fact, it’s pretty hard to think of genuinely-novel things humans only started doing in the last 100 years, due to some technological enabler. Playing single-player interactive story-games, maybe — even the progenitor of the medium, the Choose-Your-Own-Adventure book, is AFAIK a 20th-century innovation.
The super rich framing isn't useful IMO, much of the advances in technology function to make things possible for people for whom that function was impossible for before.
> You could hail a cab in Ancient Greece!
Depends on who the "you" is. And choosing a super rich person as your point of reference is a pretty arbitrary choice (with underlying assumptions about society that are worth examining, I might add).
One might describe technology in general as the way to take the scarce resource of manpower/hired help, and make it plentiful through a narrowing of scope, formalization of the narrowed scope, and then automation of that formalization.
But this misses the finer point of how much is lost in the process of scope-narrowing, formalization, and automation. Or rather, of how losslessly you can truly make such a conversion.
For each well-established technology, it’s interesting to ask this question: given an unlimited budget, is the technology still used? Or is raw manpower used instead? Or some combination of the two?
Truly useful technologies, to me, are the ones that are still used in some capacity even by the ultra-rich, either directly, or because the manpower they hire will themselves use the technology to make their job easier.
A good example of a truly-useful technology is a washing machine. Nobody is hand-washing (cotton) clothes any more, no matter how rich you are. Even if you have a professional laundry service, they’re putting your clothes into a washing machine.
Navigation isn’t quite at that level yet. Your Uber driver uses a GPS auto-nav, but a city guide usually doesn’t, because a city guide is asking a different question — not “how to get there” but rather “which well-known route would the client favour, if I took a few hours to lay out the differences in fine detail.” Which is a question both of subjective inference of the client’s tastes, in a way that would require learned personalization in an automated equivalent; and of a bunch of context factors unique to every city, in a way that makes it hard to reproduce in a narrowed-scope app (rather requiring individual city-by-city coverage, the way only a monopolistic behemoth can achieve.)
So, theoretically possible, but not likely something we’ll see done for a long while, at least until we see some other meta-technological advance (e.g. GPT-4) that makes one or the other part dead simple.
All these apps/etc work fine in, large top tier urban cities across the world. They fail miserably everywhere else, there are huge swaths of the US, where you don't be able to hail an uber. In those cases your falling back on the same methods used in the past.
So, its still fairly common to see people hawking guiding/etc services inside or just outside of airports in central/south America, Africa, etc.
If your going to places where the cell phone service is spotty, or your going outside the the main urban areas hiring a guide/translator might be the only way to get around.
Reading this litany of technologically-enabled consumer achievements, I thought of David Graeber who visited the disappointment we sometimes feel for how things actually went from mid-century to now.
"[...]Where, in short, are the flying cars? Where are the force fields, tractor beams, teleportation pods, antigravity sleds, tricorders, immortality drugs, colonies on Mars, and all the other technological wonders any child growing up in the mid-to-late twentieth century assumed would exist by now? Even those inventions that seemed ready to emerge—like cloning or cryogenics—ended up betraying their lofty promises. What happened to them?" (https://thebaffler.com/salvos/of-flying-cars-and-the-declini...)
Kinda makes your list seem like an indictment. Today's world is the world capital wants to make. When you do open your awareness to the scale of effort and the broadest results, technological optimism in the future is deflated.
I think its nonsensical to condemn the rate of progress because we didn't achieve a vision of science fantasy grounded in what people thought in the 1950s. A lot of those ideas are "thing that exists, but more magic." We have helicopters, but it turns out zoom calls work just as good to meet people, without the air traffic control nightmare. We have the internet at our fingers, an advance so monumental that its nearly impossible to imagine life before this. Teleportation and antigravity - I mean - at a point- thats just plain magic. I will grant the space stuff though, we should have been way further along there. But this willfully ignores the mind bending amount of technological progress that we've made in the most rapidly technologically changing period in human history in computation, biotech, nanotechnology, etc etc just because we didn't achieve some of the magic that soft sci-fi or science fantasy writers envisioned.
> its nonsensical to condemn the rate of progress because we didn't achieve a vision of science fantasy grounded in what people thought in the 1950s
That wasn't really the claim. The idea is that the ends of technology have been chosen by corporations, rather than what would have been most generally useful to humankind. Hardly an earth-shattering observation.
Sure, but those examples that you gave seriously undercut that. Antigravity, teleportation, those would be wildly profitable. And we've got an entire anti-aging industry investing billions into immortality drugs. In fact, the investments into immortality drugs right now is a perfect example of your statement that the ends of technology are chosen by corporations instead of what is most useful to mankind. Curing neglected tropical diseases and investing in equitable healthcare availability is what would have one of the (if not the) biggest impacts on humankind's health. Right now, what is most generally useful to humankind isn't science fantasy, we've got a few rungs to go up the hierarchy of needs before we get there. In fact, something like flying cars would absolutely be a net negative - more pollution, a new type of congestion, more types of accidents, all to solve a problem that would be solved better by functioning public transit. And in terms of usefulness to humankind - since when are innovations that are profitable orthogonal to human benefit? There are cases where its either or, but does it really make sense to go and tell someone with a disease that the treatment for the disease can't help them because it was developed by profit motives? Setting aside questions of logistics/funding models/regulations (since if we started bringing in those real world aspects then all of those sci-fi technologies fall apart) - looking purely at the technology, commercial motives developed things that are a net good for the world. There is overlap, and an overly cynical view ends up making no sense. We have it so much better than people did 100 years ago because of technology.
Read the Graeber article I linked earlier in case you haven't and are interested. Bio-tech is one of the industries he specifically mentions as being somewhat a degenerate case with regard to this argument.
In his essay, the the particulars of technological achievement (e.g. flying cars) are rhetorical. If it isn't our current economic system with for-profit corporations driving the direction of technological evolution, what is? The question that interests me, however, is how should we, as a society, make those kinds of decisions?
How about a counterexample? Drones? Human flying (Zapata Flyboard Air, Gravity's jetpack)? Life expectancy increasing steadily? And we do have cryogenics.
The answer to "what happened to them" is the same as "what happened to curing cancer?": those things are hard. And assuming that we would have solved them by now if people had spent their valuable time on those problems instead of making ads better is just wishful thinking. Throwing more brains at a problem won't solve it more quickly, especially if those brains weren't interested in solving that particular problem in the first place (if they were they would be working on it).
>Might the cultural sensibility that came to be referred to as postmodernism best be seen as a prolonged meditation on all the technological changes that never happened? The question struck me as I watched one of the recent Star Wars movies. The movie was terrible, but I couldn’t help but feel impressed by the quality of the special effects. Recalling the clumsy special effects typical of fifties sci-fi films, I kept thinking how impressed a fifties audience would have been if they’d known what we could do by now—only to realize, “Actually, no. They wouldn’t be impressed at all, would they? They thought we’d be doing this kind of thing by now. Not just figuring out more sophisticated ways to simulate it.”
>That last word—simulate—is key. The technologies that have advanced since the seventies are mainly either medical technologies or information technologies—largely, technologies of simulation. They are technologies of what Jean Baudrillard and Umberto Eco called the “hyper-real,” the ability to make imitations that are more realistic than originals. The postmodern sensibility, the feeling that we had somehow broken into an unprecedented new historical period in which we understood that there is nothing new; that grand historical narratives of progress and liberation were meaningless; that everything now was simulation, ironic repetition, fragmentation, and pastiche—all this makes sense in a technological environment in which the only breakthroughs were those that made it easier to create, transfer, and rearrange virtual projections of things that either already existed, or, we came to realize, never would. Surely, if we were vacationing in geodesic domes on Mars or toting about pocket-size nuclear fusion plants or telekinetic mind-reading devices no one would ever have been talking like this. The postmodern moment was a desperate way to take what could otherwise only be felt as a bitter disappointment and to dress it up as something epochal, exciting, and new.
This occasionally strikes me as true when reading some of the comments in this thread about how it's easier than ever to deploy because of a new tool, easier to create a website or app because of a new framework, easier to order a car, easier to buy an airplane ticket..
I can't help but consider that we expected so, so much more.
I think a lot of HN in general is made up of programmers at big tech companies working on what seem like small problems, but from the perspective of someone working in the biotech sector, let me assure you there's a lot going on outside of silicon valley's open offices. I mean first, lets appreciate that tech companies have actually majorly impacted the world in ways sci-fi authors couldn't have imagined, and for all the negatives, there's a reason the tech sector was (prior to recent times) so widely loved - the fact that I can reconnect through facebook with a friend I haven't seen in a decade that I may never have meet again otherwise is straight up magic and that matters. And google search and smartphones - don't underestimate them! But yeah, the valley seems to have this "hardware is hard" mentality (even though it's built off of the semiconductor industry...), but just look around. We've got for the first time ever a potentially sustainable spaceflight industry blossoming, biotech is making strides like you wouldn't believe in tackling some of the most complex diseases, your inkjet printer is a marvel of microfluidics, green energy sources are becoming cost competitive to the fuels that have fueled our entire development as a species from an agrarian to an industrialized civilization, we've got vaccines that might be ready to defeat a global pandemic within a couple years of the first case recorded. I do work in the printing and inks space. There, just recently, there's been a transition away from using UV cured or dried inks that release volatile organic compounds into new inks that are cured with electron beams - i mean, the amount of technological complexity and innovation that goes into making the packaged product you pick off the shelf have the color that it does! And these have real impacts - eliminating huge sources of pollutants and improving health and the planet. There could and should be more, especially more investment into R&D, but don't underestimate what's happening outside the Silicon Valley bubble, and don't underestimate what's happening inside the bubble either.
Half of those things are simply impossible, as far as our model of physics is concerned.
The other half mostly exist in a century after the 21st, in most Sci Fi.
The nonexistence of tractor beams is no cause for pessimism about immortality drugs, since even when the trope of tractor beams was invented, we knew that physics as we know it allows for no such animal. By the same token, we know of no hard reason why effective immortality isn't in reach.
I don't expect to see it before entropy takes me. But that's just realism, not pessimism.
I don’t really see it as an indictment that we don’t yet have a short list of things from science fiction. The reason authors wrote about those things is because the are so beyond our technological capabilities—that’s why they make for interesting science fiction!
Shit I live in the #3 housing cost city in the USA and after 8pm I can get precisely zero decent restaurants to deliver in any amount of time. Domino's will deliver at 9, but the same is true in the boonies.
No, it's not. Life has been much better overall. What things are you seeing that is getting worse? I would say things are getting exposed and change is taking place. And you are just being introduced to the harsh reality that exists outside your initial bubble.
Is the world really getting worse or is the amount of negative information we digest daily affecting our perception of how good or bad things actually are?
Except it's not. Books like Factfulness show it quite clearly. We have our fair share of problems but quality of life has been steadily improving almost everywhere and almost exponentially in some areas.
I'm not entirely sure the world is getting worse, but I am certain that it's becoming more complex.
And when the finite cognitive capacity of every human being must manage that complexity just to survive (let along propser), it sure feels like it's getting worse.
- Global Warming
- Loss of topsoil
- Extinction of species
- Thawing permafrost
- Rise of far right in many countries
- Reinstated nuclear arms race
- Corrupted government and financial institutions
...
20+ years ago, a sizable chunk of the software workforce was dedicated to converting legacy systems from 2 digit year codes into 4 digits.
The notion that all the interesting work was done in yesteryear is just looking at the past through rose-colored glasses. At any time in history most software work was glue code. Because the low-hanging fruit is always going to be taking existing systems and applying small tweaks to extend their functionality to a slightly different domain.
Truly innovative software has always been done by the tip of the spear. Building something new and valuable is risky and difficult. 95% of the time the end product is worthless. And that's assuming that everyone on the team is highly competent. You either have to be willing to take a lot of personal risk, or have a good enough reputation that someone's willing to pay you to take crazy risks. In other words, work that never has and never will be done by the median engineer.
But this is pretty much true of any job in the knowledge economy. The average lawyer is just writing templated boilerplate contracts, not arguing Constitutional law before the Supreme Court. The average accountant is just filing personal and small business taxes, not uncovering high-level corporate fraud. The average doctor does the same simple procedure all day long, not working on a cure for cancer. The average academic does by-the-number meaningless research to get his publication count up, not research deep breakthroughs in his field.
20 years ago I was writing one of the first online endorsement engines for producers (independent insurance agents) to allow them to make endorsements on insurance policies over the internet rather than having to speak to an underwriter on the phone. We built a single web front end that was to be used by both the underwriters and the producers.
I remember showing off the role based permissions structure we had in place to allow an admin to control what sort of endorsements users could make. I quipped something like "this is so granular that we could even allow insureds to make endorsements to the policy." The response I got from the head underwriter was "we will never allow insureds to make endorsements on policies".
When was the last time you had to speak to an agent or underwriter on the phone to make changes to your insurance policy?
20 years ago was a very exciting time as many businesses were going online for the very first time. We were getting away from writing websites in C with CGI and using higher level languages like Perl, PHP, and ASP.
> When was the last time you had to speak to an agent or underwriter on the phone to make changes to your insurance policy?
today, and every time. Would like to switch to geico / someone else with web interface but the rates aren't as good and the customer service isn't as guaranteed
> Most of the available programming work is really just writing glue code to make big software systems work as intended, to the point where it can feel more like writing configuration files than actual programming. Put simply, 98% of programming these days is scripting.
It's that the entire purpose of programming, though? To abstract away the repetitive stuff? I personally see this as a good thing.
Even with all the configuration and scripting, there are still plenty of lower-level programming tasks involved in piecing together systems.
I'd rather save the difficult programming for the actual difficult tasks instead of re-implementing the already solved problems like CRUD.
If I had a dollar for every time I've heard the phrase "XXX is a solved problem," indicating that there's a dependency that "solves" it, I'd be rich.
People think that, just because we can google up a dependency that does what we want (sorta/kinda/mostly), the "problem is solved."
It's been my experience, that, when our "solution" is to bring in a massive dependency to address a very basic issue that we could solve, ourselves, by banging out a bit of code in a day or two, our problems are just beginning. In some cases, that's exactly what I have done. For example, I use dependencies to handle SOAP (yuck), for ONVIF work, and keychain access for login Face/TouchID validation. These are small, atomic dependencies, written and maintained by reputable authors. The SOAP thing would have taken me a couple of months to write something not as good, but the keychain thing is something I could write, myself, in a couple of days. I just find that I don't really need to, as there is an acceptable alternative.
In fact, when I have been dissatisfied with the choices, and have decided to write my own solutions, I have encountered derision.
I feel for the OP, but I am sad to hear they are leaving the industry. Maybe it's for the best, or maybe they will always look back in regret.
In my case, I have just realized that I can't look to others to validate my work, and have to work on my own. It is not my preferred choice. I worked on (often, huge) teams, my entire career. But I won't compromise my personal ethos to be "down with the kids." If writing good software is no longer in fashion, I guess I'll be unfashionable. I won't deliberately write bad software. I couldn't live with myself.
For me, I'm never leaving, but that may mean that I'll need to work on my own. I have a pretty good record of creating stuff that other people value, so we'll see how that goes.
You don't need couple of months to implement SOAP, unless you want to make a framework. SOAP is just an XML passed via HTTP. You can build everything from the ground up in a matter of few days. And if you can re-use any HTTP library and XML parser, it's a matter of few hours.
May be there's some layer above SOAP which requires more implementation. I have no idea about OVNIF. But SOAP itself is pretty simple. Basically you're firing SoapUI, figuring out protocol details and write code to deal with that particular XML-based format.
Thanks for that. I based my estimate, looking at the code for SOAPEngine[0], which is the library I use. It's pretty complete, and that guy knows his stuff.
I tend to be fairly anal about testing; especially low-level stuff. It can be a bit excruciating, working with me, as I insist on pounding away at everything. That's why it's taken a week and a half to get to the place I'm at now. I'm working on the login and initial user edit stuff. Basic (but critical) stuff, and I keep encountering edge cases. I'm also debugging the backend SDK.
For most companies where the software is the product, there is some part of the system that is the core logic. Working on that part necessarily means actually developing, not just gluing pieces together. I have always been able to find work where I could work on those core parts, instead of composing existing systems, libraries and frameworks.
This could just be an outgrowth of complexity. As the number of pieces increases by O(n), the number of relationships between pieces goes as O(n^2). As a result, any endeavor is going to tend towards the majority of people working on connecting pieces.
This is true in plenty of occupations. I've seen it in mechanical and electrical design, for instance. With that said, I know a lot of good people who actually enjoy the work of piecing things together, so I wouldn't disparage it. Something for everybody.
A pleasure of working on something for fun at home, or maybe in an R&D setting, is that it can start out a lot simpler.
Very nicely put. I mean look at a car: It's essentially a lot of 3rd party components put together coherently. I don't think any part of my Peugeot has a Peugeot label on it, rather Bosch, Autoliv, Michelin, etc.
Same thing with airplanes. Boeing is pretty much Honeywell+GE+Liebherr to name a few.
I am unsure why people find componentizing and integrating unrewarding in IT. I didn't hear my dad (a sound engineer) complain that he no longer spins a wire onto a metal to obtain a speaker. :)
Let me work with your analogy a bit. What if your dad's job was to install sound systems designed around poor quality speaker components, using expensive DSP systems that add a lot of latency to the signal and draw lots of power?
He knows he could build better components than the ones he uses if he put the time in, and create a better overall system design with a better price/performance by applying state of the art knowledge, but people prefer to pay him to combine commodity parts of questionable design in the standard, proven, but clearly suboptimal way.
Now where is his job satisfaction?
If you really wanted to stretch the analogy, maybe imagine the expensive DSPs he is expected to install all forward a record of any audio played on them to a shadowy government agency.
I imagine a lot of product engineers cringe when they are forced to make a design choice that will save 1c on the BoM but causes the device to fail sooner or be impossible to repair.
I understand your analogy, but I don't think it is that bad. Rather, instead of wiring one perfectly-sized speakers, a sound engineer might have to use two off-the-shelf speakers of a smaller size.
I understand the frustration of not doing things optimally from a theoretical point of view. However, the unoptimality is offset by using battle-tested, robust components.
One issue I've seen is that a person who devotes 100% of their time to integration can lose their quantitative engineering skill -- it's a "use it or lose it" phenomenon. The folks who manage to cling to that work end up becoming the only ones who can do it, resulting in a sort of caste system with no relation to actual productivity.
However, in my experience, the best integrators are worth their weight in gold. It requires a mental organization, patience, and discipline that I don't possess. The ones who do it badly are the ones who are racking up dependencies and technical debt.
O(m x n), where n is the number of pieces and m is the number of systems it needs to interconnect with. O(n^2) is the asymptotic upper bound, which is never reached, because a piece needn't be connected to itself: m < n for all n, but m/n can approach 1 as n goes to infinity.
It wouldn't be Hacker News without such ponderous pedantry!
I think so. That's why eventually you shatter your monolith into micro-services and then have 1000+ people work on coordinating how these services deal with each other.
I've spent the last 3 years building the whole solution suite for 2FA banking devices. We have our own hardware devices with secure elements that use your computer as an internet proxy (connected via bluetooth low energy or USB). If you find a small company doing interesting work, your job looks very different than just writing configuration files. Especially when hardware is involved and the firmware is written in house.
From my experience, if you find a post startup small business with fewer than 10 developers, you end up wearing many hats. Both times I've been at large corporate jobs, though, it's exactly as you describe.
That's the case in most industries. Find me one that isn't just about the daily grind and making money.
In construction, you could do cool stuff, and do things perfectly, but people want "normal" and time is money so you need to work fast.
If you have an auto repair shop, you could build an EV from scratch. But you're getting paid to fix other people's cars. Even if you do tuning and modding, it's all just standardized shit that you buy and install.
Woodworking, farming, networking, accounting, anything really is 90% grind, with a select few getting the chance to have fun while getting paid.
Yes, however when everything is shit, perhaps it's our mindset that needs to change. Learn to enjoy what we've got, because while you can try getting into a better position, it really might not get better. And there's nothing wrong with that.
That's a good point, in a lot of cases the major impact that you make on the world is being part of the machinery that keeps everyone's food, entertainment and housing maintained.
> It seems like nowadays you just can't make money building interesting things anymore.
Sounds like you haven't tried or you haven't stumbled on an actual issue. There are lifetimes of problems out there, and many existing solutions are poor or non-solutions.
I run into them all the time and cannot possibly dedicate my one lifetime to all of the problems I see viable commercial solutions to.
> It seems like nowadays you just can't make money building interesting things anymore.
So what? Then it becomes just a normal job. Most jobs out there arent that interesring, just problems or doing tasks that people don't want to do themselves.
Getting interesting tasks while being well-paid is not any way normal or common, and I also think hasn't been ever.
Amen. Modern software development is frankly kinda sucky. The old days pre-2000 were arguably a lot more enjoyable. Today it's just digital plumbing and dealing with all sorts of issues that are not creative. The sheer complexity is frankly absurd as well. I've thought about moving on from software many times, and I know many who have. Just because you can do something doesn't mean it's best way to spend your short life. Not to mention that sitting in front of a computer all day is not the best use of one's body.
I think a lot of the pre-2000 programming was a bit more enjoyable because most of us were not programming for the web and actually using platforms that were designed for application development. The web is a very poor fit for what most people want designed.
My guess is that it has nothing to do with pre-2000 (or non-web), it's just that people enjoy a rote activity a lot more at the start of their careers when things are still new and interesting. When you've done 50 web sites, the 51st isn't nearly as exciting as the first ten.
I got burned out badly by a string of gigs that effectively came down to helping clients fight some self-inflicted business complexity and connecting yet another stupid website to yet another stupid database, but instead of quitting the industry I decided to slowly fire clients that wanted that kind of work, and build my own products. It took a while to get things rolling since I did this as a gradual shift, and financed it by doing smaller and smaller consulting gigs, but I strongly recommend that as an alternative to quitting altogether to anyone who feels the pain outlined in the the original post.
For me, immersive coding is an activity that brings a lot of joy. Building software is the closest thing to modern magic - you turn ideas, keyboard clicks and caffeine into something that people actually use; potentially making a positive impact on someone's life/work/day.
By building my own stuff, at my own pace, I rediscovered the joy of coding. As much as it was in pre-2000 work and before web.
If you build your own stuff, then there's nobody to tell you to connect a RSS feed to a RDBMS system. For me, the key to keep programming enjoyable is to be able to control the pace and business requirements. In my case, this translated to focusing on business-to-consumer products at a very low cost to the consumer, so I'm in charge of the product, not the customers. With B2B, especially at a high single customer price, people feel entitled to ask for stupid shit, and whoever manages the product feels compelled to accept it. With low average lifetime customer value, saying no is very easy. I assume that's not the only way to keep full control of the product, but it worked for me.
This.
All SW pplz I work with that ultimately experience this I recommend to spin up their own project in order to channel their own creative energy into.
> The web is a very poor fit for what most people want designed.
The web is an application development platform that's split into two pieces with a critical security boundary in the middle, which causes basically all of its problems because every web app has to be a distributed system. If you can constrain what you want to build to either a set of pages and forms or a single client-server app that sits in a sandbox and uses the browser as its display buffer, that makes it manageable.
The default (and indeed only) language for the web not enforcing type safety is also a handicap. People will eventually build a shell inside it where compile time type safety can be mostly enforced.
On the other hand, the alternative is worse: a proprietary platform which shifts unpredictably and from which the owner can ban you.
On the other hand, the alternative is worse: a proprietary platform which shifts unpredictably and from which the owner can ban you.
I'm not sure that's the only alternative. I would actually describe the web as shifting, unpredictable at the behest of one company with the controlling browser and search engine.
I cannot tell if this is a joke or not. If it is not, there are entire industries out that that depend on software development that are NOT web related.
Embedded programming i.e. automotive, industrial, aerospace.
The problem is they pay poorly in comparison to web dev but are a lot more stable long term.
I have done almost 0 web development at 3 of the FAANGs and am quite satisfied with the pay. I don’t think web would have paid better. I’ve done OS type work (system daemons, libraries etc), embedded, mobile, etc.
Then there are people who work on compilers, image recognition, AI, browsers, server work of all kinds, etc etc. the variety, depth, and scale of work is much larger than web and can pay better as it can require a deeper level of expertise. I’m sure there exist web developers who make more than people who work in these spaces just as the converse is true. I don’t think it’s possible to say which pays more. Web dev may be an easier avenue to break into things with a low amount of experience though.
That's cool but the thing is FAANGs are absent in most countries outside of the 2 US coasts and a few major tech hubs in Europe. Everywhere else, most of the SW industry is just CRUD/build-an-API-for-this-shitty-JSON type of work.
Compiler/AI work and the rest exists where I live as well but it's strictly in academia, not in private companies and has a high barrier of entry as it's mostly PhDs or post-docs and is also paid poorly.
Web dev work you can find in pretty much any major city in the world.
For example, in a city nearby to me there's a major VR/AR headset company which I'm pretty sure solves really interesting problems. The issue is, what happens when you want to change jobs but want to stay in the same city as that city has no VR/AR hub so there's no other demand for specialists in this specific niche.
Don't know why this was downvoted. As someone living in Europe, this comment is exactly why I stay in my cushy, very well paying and super boring and frustrating backend job. In the backend world, there are dozens of employees who would be happy for me to come work for them, while market for interesting work with similar is very shallow here (a very limited selection of FAANGs, what else?). I don't want to move to the US (mostly because the US visas seem designed mainly for people in much worse situations that I currently am) and the European market is just too shallow to build any more advanced coding career - unless you're ok with low salaries, little savings and coding until you're 60+ years old. I don't love coding that much.
I'm from Poland. Of course, everything depends on the conditions of the retirement that you're comfortable with. For me, it's 5000 PLN ($1300) a month till I'm 85 years old + paid-off house. The 5k PLN should be very comfortable assuming no children, which I don't want.
Assuming ultra-safe investing to only protect the principal (i.e. no return above inflation) and wanting to retire at 40, you'd need around 2,500,000 PLN ($650,000) to achieve that + buy the house to retire in. Let's call in 3,000,000 PLN ($780k) in total.
If you look around a bit, as an in-demand (meaning - chasing the latest tech fads, maybe some tech lead experience as well) senior backend developer, you can get take home 250,000 PLN per year on a long-term (meaning usually multiple years) contract basis. Assuming 60,000 PLN of that goes to living expenses, it takes less than 16 years to save up the required 3m PLN to retire. And, if you're really hot in terms of CV, you can take home much more than 250k per year. Also, there are options to contract in Western Europe or get six figure remote US job (this one's harder than the other options) for more pay.
I was giving net numbers. Assuming I pay 19% taxes in Poland on that remote job income, the range you've given translates to 240k-310k PLN net.
Also, I myself happen to make over 400k net PLN per year, but I didn't want to use myself as an example, as I only know a handful of people who make that much - so it's perhaps not something you 100% can count, whereas the 250k per year number is absolutely attainable by any senior dev with reasonable/modern CV and good negotiating/job hopping skills.
would you mind naming the German companies paying 90K+€. I know quite a large number of people working in really big companies in Germany, which are considered very well-paying, and while 70-90K is certainly standard, anything else requires taking up management roles, which are not necessarily remote and not so many.
That’s true. Outside Silicon Valley there’s probably not as much non-web dev work. I still think it’s out there. Banks exist everywhere and my brother has worked in a European bank for a long time. FAANGS also have offices all over Europe (London, Paris, and Berlin) doing non-web work and even before COVID if you were senior and talented enough remote work was an option. Now remote work for all companies has simplified drastically.
I have worked on mobile OS, PC software development, web, machine learning problems, and now VR. I’m not particularly worried about getting pigeonholed because any company I’d want to work for can recognize the value of a generalist - I’m not going to solve hard domain-specific problems but I can architect the SW and plug all the pieces together and dive into domain-specific problems when necessary. To be fair though I’ve heard this concern from other people who want to move back to Europe, but the framing was different - how do I explain to them what I do in a recognizable manner.
However some places are 10, sometimes 20 years behind into best practices, be that in coding, tools, PM practices, innovation, etc.
There's a reason a lot of mobile phone companies closed down (as an example).
As much as I like the area I don't miss staring at a hodge-podge of C/C++ code done in weird style that might or might not have been auto generated and will as many memory bugs as possible.
And how many of those are going to let you in without at least a decade of experience in the specific domain, and real world experience with whatever guidelines or practices they use (i.e. MISRA for X).
Maybe all of them? I worked in Automotive right out of university and they trained you for everything you need to know including C programming tricks and MISRA and they hired pretty much anyone with generic programming knowledge as long as you were willing to learn.
I'd imagine embedded being relatively far away from that kind of work (that's until you've got to add WiFi and/or IoT-cloud web interface - and happen to be one of the only few software people in the company).
I can't speak for GP, but I do behind-the-scenes networking stuff for an enterprise ISP.
My team's responsibilities include configuration management, fault management, and certain KPI monitoring. We don't need to write webapps for that (though we do integrate with them) :)
Not OP but I've focused on C++
, computational geometry and graphics programming for over a decade. That field is still quite thriving. You just need to work actively to find the right employers - and they are not as common as 'more regular type' of programming gigs.
Not sure if I would make more doing webdev, but am not in US so it would be normal middle-class income anyway.
Games, embedded, desktop apps, "infrastructure" software (OSes, networking, orchestration, developer tooling), mobile apps (depending on how picky you are about using APIs being "web"), ...
Pre-2000 you actually had a hope of understanding everything your computer software was doing. These days there's no hope, everything is too complicated for the best of minds. You'll only ever know a small portion of it. Maybe that doesn't bother some people, but it's a big demotivator for me. I miss being able to truly understand my computer.
Now I feel like I'm always spinning my wheels. Even worse, I'm more capable of learning and understanding than ever, but the amount I need to know is increasing faster than my abilities to learn it.
I don't see why this should bother you. This isn't just the case with tech. Doctors work with humans that they don't have a hope of understanding even 5%. I have done web development my whole working life and I couldn't tell you how the browser actually renders a page. I just know the interface to communicate with the browser and let it be someone elses job to work out the next part.
It's human nature. You spend your life being an expert at something but as you get older you also get to watch it slowly slip away. That sucks, I don't care who you are.
It doesn't stop me from moving forward (it hasn't yet) but there are those occasional days...
Application development on the web is much more pleasant than what we were doing on any pre-web platform, and possibly even now.
I've wanted one-way data flow (React, Elm) forever.
We just have rose colored glasses because we were younger, dabbling, all tech was new and non-web tech was just what was available. And we confuse that for some sort of obvious tech superiority. I'd say those were the worst times for application development, not the best. Makes me wonder how many people actually worked on a production client application back then.
Application development on the web is much more pleasant than what we were doing on any pre-web platform, and possibly even now.
The platform that the web was designed on (NeXTSTEP) was much nicer to develop on. VB programmers had a much easier time than web development now. The web was designed as a document delivery platform and it continues to show how hard it is to get basic functionality going.
I think there is a lot of truth to this. I started programming in C++ and then Java. But for about the past decade I've done web dev. Recently I've found myself back working on some non-web projects and it's a breath of fresh air in many ways.
True, a lot of that could just be the change in scenery. But I really appreciate that just about everything about the platform exists in order to create software, rather than trying to jump through the bizarre hoops that browsers created. Not dealing with Webpack is an absolute god send.
But with all that said, I think wasm has the potential to bring us sanity again. And if not wasm, then possibly tools like Rome will make web dev a bit more sane at least.
Okay so it seems most people here on HN hates their jobs? That's sad but i think its not unique.
Web dev was especially insane during the IE era, more than today.
Most people just hate their jobs, it's nothing unique to the tech sector and i would argue that tech is still a pretty comfortable niche to work in compared to most other fields.
Doctors have extreme debt and work crazy hours, teachers get way too little, manual labor is very tough on the body, journalism is dead etc. - it seems to me that everyone i know just "has a hard time" because of information-overload, 24/7 connection, lowered real wages etc. I.e systemic issues at the core.
That said i also want to get more zen, cut back, transition to more resilience - but tech is not uniquely bad, and while i also have dreams about transitioning to more entrepreneurial roles or "moving into nature" - i still can enjoy "the chaos" of modern development / design - and this really is the key i think: to accept the mess, the imperfection, that no one knows what the hell they are doing in most sectors.
Drop the fake self imposed yuppie consumer self policing and perfectionism mindset and just accept that we live in a crazy part of history where everything is obsolete after 5 minutes, so just do what you find acceptable, try to scrape some money together and remember to appreciate the fact that at least you are in a sector where it's pretty easy to be an entrepreneur if you want to - compared to a lot of other people who have no idea about how to get started or jump ship.
Years ago if everything went awry i would stress out, be afraid of angry clients, be angry at myself - today i relax, i am interested and laugh at the complexity, and if someones angry i don't care, the world is crazy, we are monkeys living in a world not made for our biology, it's future tech dystopia/utopia right now, no one is able to piece something together that works for a long time anyway, it's mostly not my fault, but i still try to do my best. This mindset has helped more than a lot.
> Okay so it seems most people here on HN hates their jobs? That's sad but i think its not unique.
Internet comment sections have always biased toward people who hate their jobs, are unhappy with their lives, or are otherwise trying to escape into virtual distractions.
Not everyone fits this description, of course, but the negative comments are over represented relative to what the general population thinks. Never interpret any internet comment section as representative of the norm.
Growing up, my internet commenting activity was highest when I was least happy with my jobs. It was lowest or even non existent when I loved my job. (Currently I enjoy my job, but I have 10-20 minute periods of time to kill on my phone daily for other reasons now).
Also, don’t forget that HN comments are heavily biased toward cynical interpretations.
> Drop the fake self imposed yuppie consumer self policing and perfectionism mindset and just accept that we live in a crazy part of history where everything is obsolete after 5 minutes, so just do what you find acceptable, try to scrape some money together and remember to appreciate the fact that at least you are in a sector where it's pretty easy to be an entrepreneur if you want to
If you hate work, becoming an entrepreneur is the last thing you want to do. Dealing with grumpy customers directly will only make things worse.
The majority of people I meet in the real world have no problems separating their personal identity from their home life and well being. For some reasons developers are particularly bad at mixing their work and their personal identity while chasing perfectionism. I assume it’s because we grew up in front of computers and many of us spend our leisure time on computers as well.
Even the smallest bit of separation of work and personal life can fix this. In other words, learn how to disconnect from technology and do literally anything else for a few hours per week. We don’t need to go all in on quitting the industry to get a break.
Important point. I do remember the general level of cynicism and depression being several magnitudes lower 10-15 years ago though - on early HN/Reddit for example - today it seems everyone hates everything and we are 1 year from collapse every year - and i don't personally disagree that we have more than enough important things to tackle, but the "i have given up"-tone has become widespread even in MS news that i don't check very often anymore.
I miss excitement, enthusiasm and humor - and yeah the world may be plummeting into tech dystopia and climate collapse but throughout time aid workers, firefighters, war time doctors and myriads of other people have kept their humor, interest and skills despite chaos around them and so should i.
About the entrepreneurship, yeah i agree but i still think "knowing how the internet works", how to make a website and how to learn by yourself is still a pretty good "extra skill" you get to have as a tech worker than can easily work as a stepping stone into new fields.
Doctors have guaranteed work and income (the debt is only true in the US), they can walk into any hospital to get a job or open their own office, their status is protected and the job cannot be outsourced abroad. Have a look at what doctors make and what engineers make, the H1B salary data is a good sample, you will see that engineers are very pale in comparison.
Teachers have guaranteed job, good income and many benefits. Salaries are usually set nationally not adjusted per location, it's not great to live in the most expensive tech hub but it's pretty good everywhere else in the country.
Yeah, this. As a doctor, the older you get, the more valuable you become(usually) while as a SW engineer the older you get ... well you know it already.
You have no competition from abroad and no shortage for demand, like seriously, do you know any area that's lacking sick people?
Well, the grass doesn't seem to be much greener elsewhere, and it seems most of folks here are confusing hobbies (things you do at your own pace for fun) with work (things you've to do for others, at their own terms, for money/material stuff).
If you google "being doctor sucks", you will find very similar complaints (see link below), and it seems some doctors were envious of nurses, but I didn't bother googling "being a nurse sucks" because I know what to expect.
here is an interesting take away from that last thread:
"I have built maybe 6 pieces I really liked in the past 10yrs. Thats someting you’ll face in any craft business. Making crap you don’t like."
Well, welcome to modern capitalism, adulthood and work. The underlying assumption here is life supposed to be fun and easy, it is not, it has never been and perhaps it will never be.
Yes both teachers and doctors in the US are protected from competing with immigrants through licensing schemes. They are also protected from competition due to the fact that they can be paid mostly from government accounts.
I think I wrote this somewhere else too but in my opinion one of the issues is that software development is one of very few jobs that can “not suck”. Many of us are pulled in for that promise and ultimately many will end up in plain boring jobs like everybody else.
I was just starting pre 2000, but it was not much better. I had to deal with a legacy COBOL system. I had to write C++. VB6 was actually pretty great for doing quick plumbing. And C# + WinForms which succeeded it was also great. But in the end, I’m still solving problems today, just like I was back then. I still enjoy programming as much or more than I did then. Some super tedious things have gotten substantially easier, too, such as building telephony apps. I had to do things like that pre-Twillio, and I don’t miss it.
In the early 1990s and early 2000s web development was a nightmare. Having to test not just in different browsers, but different versions of different browsers, because they had substantially different behaviors. There was no "Inspect element", JavaScript debuggers were entirely absent or incredibly crude. Getting a decent looking web page to render and function correctly across all the different browsers you supported was a real achievement. You spent most of your time fighting browsers, not making actual progress.
>Not to mention that sitting in front of a computer all day is not the best use of one's body.
You can say that about all desk jobs(even bus drivers) since they all sit on a chair the whole day but at least in some cases we get paid better and have more free time to take care of ourselves. And unlike the bus driver, I can leave work or take a coffee/toilet break whenever I want.
And labor jobs that don't require sitting are usually even worse for your body long term(landscaping, plumbing, gardening) and sometimes pay worse as well. If I'm coding, I can constantly shift my body position if it gets uncomfortable while a plumber/gardner is just stuck in that straineous position until the job is done.
Maybe athlete or personal fitness instructor is the only job I can think of where you earn money while staying in shape.
Not all desk jobs, well certainly not all jobs where you are always sitting down, cause the same long-term strain on the eyes, however. A bus driver is at least focusing on the distance for most of the day, which is much more natural than staring at a computer monitor and its artificial light and small text for hours on end.
Personal trainer is fairly bad for your body and wellbeing as well. Its basically split shifts since clients want training either before or after their work. So sleep is an issue.
If work was easy then we wouldn't need to be paid for it.
>If work was easy then we wouldn't need to be paid for it.
"work" in its natural sense is indistinguishable from play. Animals play as a way to practice "work". Lions etc play hunt. The problem is that "work" in modern times has little to do with what we are genetically-inclined to want to do.
We are genetically inclined to sleep, find food, and have sex. Work in any civilization pays money, which allows you to buy food, a place to sleep, and resources to attract a partner, so I disagree.
Pre-2000 it was also plumbing, the difference was that you were mostly plumbing someone else's homegrown cruft. Occasionally you got the chance of building some framework by yourself, probably to the dismay of the developer who had to maintain it after you left.
I like today's plumbing better.
Honest question, what is a great career pivot for someone that's been in development all their life? It seems that nothing pays as well as building software, unless you go into management which most developers would enjoy even less than digital plumbing.
A very common pivot I've observed and am part of is to brewing craft beer (with the caveat that maybe that's a local/regional thing). It sure as hell doesn't pay as well as development, the hours are longer, but... you get to drink plenty of great beer! Something about brewing seems to draw the same sort of personality as development - there's a fair degree of technical knowledge and skill demanded, an attention to detail, and yet a creative aspect, too. Then, too reformed/recovering developers can always find a small refuge in automating some/some aspects of the brewing process.
I run a website that helps people. I still deal with software, but on my own terms. If I put the same content on a cookie cutter WordPress site, no one would care. Now, programming feels a lot like woodworking: a deliberately inefficient way to do something, just because it's fun.
> Now, programming feels a lot like woodworking: a deliberately inefficient way to do something, just because it's fun.
Now that is a standout line right there. It perfectly describes some of my own personal projects. Sometimes—oftentimes—they go nowhere but I had fun.
One such task was developing a secret Santa system in python with an auto mailer and “paper” backup while in Hawaii last year. It took me part of a morning during breakfast before we went out for the day. I refined it when we got home. There were others already out there and it did nothing more then putting names in a hat, but it was fun. And it’s reusable. And it had the added benefit of needing no moderator—nobody in on the secret.
The metaphor of a wood working project just seems to fit so well. Nice one.
Start your own company and build something you believe in. Few other professions are as well equipped to start their own business. Except for real plumbers, maybe.
Hate your job? Maybe it's the job, not the profession. Developers have an enviable amount of mobility; use it.
Maybe you aren't taking care of yourself in some other way? Sleep, diet, exercise, possible clinical depression: these are all things to try.
Perhaps you're burned out? It's 2020, that's a very real possibility. There's a whole literature on what to do about it, and "abandon your career" is dead last.
Both of the preceding paragraphs have a "talk to your boss" component. Don't think that's a good idea? Great, you definitely have the wrong boss, GOTO LABEL "Hate your job?".
Good reasons to stop developing software: a) there's something else you really want to do, and you have rational confidence you won't starve, and b) you're ready and able to retire.
Bad reasons to stop developing software: literally anything else.
My plan is to bank enough money from software jobs to be financially independent at a high standard of living (I'm well on my way to that). Then afterwards, just retire and do all sorts of hobbies without trying to make them into a career or earn career-equivalent amounts of money from them.
If you're currently on that trajectory (i.e. you're able to save a large percentage of your income every year) then I'd recommend it. If not, then yeah, you might need a second career if you want to get out of development soon. My plan is not to need one.
Find a smaller enterprise system integrator in the field you're familiar with. Titles such as Sales Engineer, SE, Solutions Architect. Usually the compensation plan is a 70/30 or 65/35 split between base and commission. Once you cut your teeth and are building out your professional network, then looks for an ISV to be on direct sales...
I have a cousin who is a travel welder, he is young and single. He is making over 100k but he has to relocate for work about every 6 months. It's a great gig for a young man, but ones lifestyle would have to fit how the work comes to them.
Business/System analyst is a very different role than a UX researcher.
In the agile world, the analysts were basically replaced by product owners, but I assume there are still places where they exist. I've done it for a while, it's quite cushy job if you're good at talking, writing, presenting (same as product owner but without the "ownership" part, so much less stress).
As a statistician now working as a machine learning engineer, my response is “definitely not”. It’s all the frustrations of software development, but on top of that you are now frequently dealing with clients/colleagues whose requests are now not simply impractical, but usually defy the laws of mathematics and probability, and an ever present pressure to put out work that amounts to fraud. Analytics have a lot of value to provide many organizations, but it requires planning, foresight, and a willingness to sacrifice a little now for the sake of a payoff in insights later, which very few organizations have, in my experience. So it essentially becomes a buzzword and people throw worthless data at you to wave a magic wand over so you can tell them what they want to hear. Doing so would essentially require lying, so instead, we would perform the awful, worthless analysis, it usually didn’t provide much insight, and we would include a litany of disclaimers about why the little insight it did provide wasn’t al that trustworthy, which would just disappoint and infuriate the people we were working with. We would also provide detailed guidance on how to execute moving forward to make the process much more valuable the next time around, which without fail went in one ear and out the other.
So essentially we became figureheads. Our work rarely was used in any significant way or provided much value, but we were kept around because the company wanted to be able to tout its “data driven” culture.
It was so bad that at one company I worked for, they had the data science/analytics department start putting on a yearly intracompany conference on analytics that became a huge deal. One year they got Stephen Levy, the author of Freakonomics, to be the keynote speaker. At one point he shared a story about how he was consulting with a company on their marketing, and they found that they had accidentally not been running ads in a particular metro area, and were able to leverage this to act as a control to assess the materials effectiveness. But when asked to intentionally do something similar moving forward, the company balked. It was so close to home that my colleagues and I wondered if the head of our department had fed him the need to talk about it. And yet, not a single thing changed at the company during my time there.
I currently work in a role much closer to software engineering, and I have all of the same problems described by the person in the original post and that many are describing here. But I consider it a strict upgrade over my time working as a statistician.
Seconded. I work as a data analyst in medical research (bioinformatics postdoc). I am often introduced as a statistician, even though I'm not, because I can do a bit more than a t-test.
The situation in research is exactly as you describe -- we are figureheads who are put into place and highly pressured to confirm whatever hypothesis a PI wants for their latest grant or paper. They would never ask us to commit fraud, only perhaps to "double check" an analysis 10 times until it shows what they want to see.
If I were working for a company, this would at least be understandable, as companies don't even have a theoretical commitment to truth and scientific integrity, and there are no real consequences to a faulty analysis.
But it is immensely galling to see in research. Here we are, paid by the public to supposedly pursue truth and improve human health, and instead the job is to constantly be finding ways to avoid fraud and fabrication without pissing off the collaborator. The result is, as you say, useless analyses if the analyst is honest, and fabrications if they are not.
There is absolutely no doubt in my mind that this is one of the key reasons the ROI on science has declined drastically in the last few decades. It makes me laugh bitterly every time I see (increasingly frequently) political exhortations for plebeians to "trust the science".
Thank you for sharing this, these are fair comments. My experience has been more positive, but I see the truth in many of your points. For what it's worth, I have always been involved in controlled experimentation, and never anything related to ML or modeling. Our biggest issue is usually ensuring we are getting accurate counts of events, and when I see all the challenges in that, I wonder how anything more advanced ever gets done.
I suppose, as with anything, your mileage may vary. And in this case, your mileage will depend largely on your organization. In my experience, most organizations are not equipped or prepared to do what is necessary to make most analytics efforts worthwhile. But in the instances where this is not true, working as a statistician is very rewarding. If you have had a more positive experience than I, more power to you, and kudos to you and the people you work with/for.
It seems like the only realsitc pivots are going to be adjacent business type positions, and even then there's a chance of a payout depending on company / position, etc. Like you said though I would hate these more than I do the software jobs.
Having been there per-2000, not really. It was not appreciably simpler, most of it was really plumbing (but maybe you were making up the pipes as you went along), and there were assholes abound.
I also feel that back then demand massively outstripped supply which created its own kind of stress as I felt I was working a lot more with much less experienced devs who just got into it because it good paying work, but they didn't really enjoy it.
Nowadays there seems to be a lot more software engineering skill around generally, and a big yay! to github and Stack overflow, and the thousands of developers who freely provide code/frameworks and knowledge to give all developers a leg-up.
It's good to no longer be in the thrall of the large software vendors (sun/apple/MS) to provide frameworks, tools & documentation.
There was a thread about what you learn when you get older. One thing I have learned is that nostalgia is bunk. It is just selection bias and bad memory.
Music was not better back then, people were not any more polite, educated and rational, and trying to fix bug in some big-ball-of-mud visual basic codebase on a 640x480 screen without access to Google was not any more enjoyable than debugging an overdesigned React application is today.
If you enjoy a challenge and have a great team in a well-run organization, developing is enjoyable, then and now.
There are still many many many good projects. Even with Web technologies. However in my observation Web stuff brings in a lot of people doing things they don't understand even fundamental things. Observing JavaScript or Node forums is generally a pain. Regularly there are people asking basic questions and all they want is the next library stick into their pile of things they don't understand.
Sure, one doesn't have to be able to write an operating system from scratch and there is value in high level libraries not requiring to reinvent the wheel all the time, but basic understanding of HTTP or such should be there for web developers as well as basic understanding of data structures or algorithms (while computers are fast enough and data sets small enough that so many people get away without knowing for quite some time)
Some memories of pre-2000 that were not that enjoyable:
- Most of the teams were not using SCM, but connecting to the same network drive and daily copying the whole folder as a backup. For those who did it was CVS (ugh). Even during the 2000's the best you got was SVN.
- So many Visual Basic projects
- For web projects: deploy by copying the files with FTP, getting shouted by a colleague because you override the hotfix he did using SSH and VI on the production file
Now there were good projects back in the day, and there are good projects today. You just have to take control of your career and not just follow the flow of the first company who hired you in your area.
Also remember that you can pivot within software development, there are so many different kind of software, you just have to accept to get out of your comfort zone.
My fingers, of course. Are you seriously comparing hard physical labour to typing on a keyboard? One of those is back-breaking and seriously dangerous to personal health, depending on what you're lifting/operating. The other may earn you RSI or carpal tunnel syndrome if you're not careful. There's a whole world of difference between these two.
This is a very narrow view. I've probably practiced software development longer than almost anyone on this thread - right at 40 years. I'm still a practicing software engineer, doing "enterprisey" software development in Java. Still interesting, lots of challenges, and yes, lots of complexity.
That said, I've done a lot of other things over my career, and one reason it's stayed interesting is the variety. If I wanted a change right now I'd probably look at small embedded systems work.
With all the AI, IOT, scientific, real time control, and robotics software being developed these days, I think there are a lot of interesting directions available!
I'll add a shameless plug for Julia, which I think could become a major general purpose programming language, and which makes for some enjoyable development!
(On the "best use of one's body", I have some sympathy there, but "balance in all things". Or just up your rates and work 32 hour weeks. heh)
I miss the old days from time to time. I will say though that everyone once in a while, you still get to do something "hardcore". It can still be fun, although it's not like it was. I do think we have as a field have done ourselves a disservices. Not to do the "back in my day," but I will say that with making many mundane tasks becoming easy, it's easy to slip into the mindset that there are no really complex things going on under the hood that sometimes you still need to tackle.
A lot of people just starting out don't see this immediately and it is often too late in a project when it appears. This isn't their fault, and it's sad people outside of the field don't recognize this at all. I think it puts a lot of undo stress on new people when non-developers expect them to build things effortlessly and quickly all the time and when something doesn't work, the developers ultimately blame themselves, because they've been led to believe it was easy too.
I remember fondly tasks like writing my own collections and logging pipelines. It wasn't as efficient as connecting libraries but it was more satisfying when you built your own way from the ground up.
I don't miss pre-2000 days when an admin would bounce the Linux servers and not bother to add a startup script for our JBoss or Tomcat servers in their service startup scripts. Our web servers would disappear for no reason from time to time and we would run around chasing the cause.
I feel the same way. The plumbing required has become so complex these last few years (if you use new technology).
10 years ago we uploaded the server/backend binary to a VM, installed postgres/mysql and configured nginx/haproxy as a reverse proxy/ssl termination.
Now, if you want to deploy a modern SPA while using some buzzwords like k8s and devops you need:
* complex frontend build process with things like webpack which have huge config files
* Build docker images for all components (each microservice, frontend, etc)
* Build zips for deploying your lambda functions
* Configure docker repository for storing images
* gitlab/bbpipelines/githubactions/whatever pipeline configuration for automating all this building
* Setup a production-ready k8s cluster
* Write the kubernetes yaml files for describing your services
* Figure out how to hookup a cloud load balancer to your kubernetes ingress
* Figure out letsencrypt certificate renewal and make your ingress aware
* Figure out CDN configuration (and invalidation) because apparently we don't serve the frontend from the backend server anymore
* Some network config so your lambdas can access the backend
* Since we're using microservices we're going to need some service discovery, and depending on which SD solution we choose we might need to build this into each individual microservice (Consul)
* And probably lots more as I haven't even touched service meshes, or JWT authentication, caching and cache invalidation
All this for something that can be handled by a single server. This constant waste of time and energy, both the devs' and the machines', is what bothers me the most. I'm constantly reminded of the quote "anybody can build a bridge, but it takes an engineering to build one that barely stands". Maybe I should go into games or embedded.
none of that is required. chasing fad based development would make you think that it is, but there are a lot of successful products that aren't burdened with all this cruft.
What you're complaining about is basically that certain features have become simpler to the point that it's feasible to have them in more situations--and adding those features adds a certain amount of complexity.
There are three overlapping issues in what you talk about:
* Moving from bare metal servers to VMs to containers, with cloud deployment optionally thrown in there somewhere.
* Moving from hand deployment to continuous integration.
* Moving from monolithic applications to microservices.
This systems you just described are virtually infinitely scalable.
Lambdas expand infinitely, k8's can easily autoscale stateless docker containers out forever.
All for starting under a 500 dollars a month?
150$ for EKS, lambdas first X million are free, and are cheap as hell from there, cloud LB is 50 bucks a month, etc.
Not to mention all the other benefits that containers provide Infrastructure as Code, no dev environment incompatibility problems, etc..
That is UNHEARD OF historically.
I think you may have some rose colored glasses or I'm just idealistic and naieve, but it's insanely exciting what's possible for a small enterprise nowdays.
The problem nowdays imo is management. The business people have taken over tech instead of tech people running things. And people without knowledge of tech, running a tech shop always makes the job suck.
To me, no. A significant amount of the complexity that I generally deal with is “accidental complexity” caused by the current general approach of mixing up a ton of random dependencies of unknown quality or pedigree and the subtle flawed interactions between them. Coming up with ugly workarounds is creative I suppose, but ton in a sense that makes me at all happy.
It's not a contradiction to me. Things can look like plumbing from the surface, require no creativity at all, and run some ML model below the surface that only a handful of mathematicians can understand. The upside: powerful tools that just need to plumb in place, the downside: god help you if it breaks.
Not at all. Plumbing can be very complex, digital ot otherwise. It's not as easy as "connect input to output and done", there are constraints on the system that need to be accounted for, and meaningful design decisions to be made especially with respect to expected volume.
But that doesn't mean it's creative. Plumbing, like web development, may have all of these complexities and constraints, but typically there is really only one solution that can be considered "right" and your job is to go through the steps and do the math to find it, there's not a lot of room for creative thinking, despite the complexity of the problem.
If it pays well for as a job, what else can you ask for? Unless you are independently wealthy, how can one be so picky as to complain about the nuances of software development at the tooling/dependency management level? Sheesh
Look at the broader job market. Compare the pros n' cons of any career against software development. Compare the barrier to entry, demand, and other market conditions. Software dev comes out pretty well.
I don't think it's unreasonable to want to be paid to solve software problems creatively. A lot of people get in to software for the creative challenges rather than (or as well as) the money. The problem is that most software isn't actually doing anyting new so it doesn't need much creativity to build. It just needs people to glue together the right combination of parts that have already been built to solve generic problems in order to solve the specific problem they're making software for. That's usually pretty boring.
I will complain about whatever I want. I will not force others to hear/read it or agree with me. But I will do this and I will not care about other describing it as a picky and entitled.
You must be in your twenties. Software development can be a uniquely depressing kind of work. All the complexity, which can be compensated for with youthful vigor, can eventually become so overwhelming and exhausting that you will need a break.
Money isn't everything. If you can do a job that pays less but doesn't depress you as much, you probably should go for it. You won't keep your job as a developer forever anyway, age discrimination is very real in the industry.
At the top of the requirements list of any job, is How Well It Pays.
Having comfortable amount of money frees you to to enjoy other aspects of life/personal passion/family building. That's how the global economy works, for the time being.
For a job that doesn't require overtime, consistent schedule, a solid 9-5 type position. What is there to complain? Looking at the big picture, the economy is filled with people who are barely getting by, laid off due to pandemic, and working overtime or multiple jobs, to generate enough income in attempt to sustain life.
Having a "comfortable amount" of money means nothing if you're burned out to the point where you can not enjoy the rest of your life.
If "I no longer build software" doesn't resonate with you, you just haven't "been there". Again, you're probably in your twenties. Don't expect your rationalizations to last you into your forties.
If you're still a developer at the end of your forties, chances are you will lose your job and your spouse anyway.
> That's how the global economy works, for the time being.
Curiously, people in the less affluent countries report being happier. Also, in the US, most of the money you earn goes into someone else's rent: Your lease or mortgage, your car, your insurance, your loans, your taxes, and so on. It's the American Dream!
> Looking at the big picture, the economy is filled with people who are barely getting by, laid off due to pandemic, and working overtime or multiple jobs, to generate enough income in attempt to sustain life.
If you think those are your two options, that's fine. I'm not telling you to quit your job.
The trap is that the youthful vigor leaves but you still need the money. I find myself growing tired of the constant churn and needing to learn new stuff to keep up with what's going on, and then pretending I know enough of what I barely learned to be able to talk to a room full of clients about it, but I need the money (I am nowhere near the valley so I make a mnerely average amount of money for where I am in life) so what can one do? Just keep plugging away because I can't not have the money.
Money isn't everything, but without it there isn't much that you can do to sustain yourself. I'm privileged to be where I am today, and I keep this at the forefront of my mind as I see people struggling in jobs that are all about physical labour or the service sector, if they have a job at all (or are on zero-hour contracts). Choosing a job is something that only select people have as an option, in the grand picture.
The old days pre-2000 were arguably a lot more enjoyable.
Yes. 1 monitor running the editor full screen, no constant interruptions from IM, documentation in books that actually was accurate, programming the actual machine not piecing together other people’s crapware libraries.
Frankly the tools really sucked back then. Build systems and IDEs were awful. Just go play with an autotools-based C project sometime to remind/education yourself. Visual Studio 7, horrible. No mainstream refactoring IDEs to speak of. C++ compilers across multiple platforms were horrible at standards compliance consistency, and you could barely get a working STL, practically everyone wrote their own string and containers classes. CORBA -- some nice ideas, bad in practice. Java was a dumpster fire of EJB/J2EE heavyweight, with slow an d expensive application servers. Expensive Oracle installs dominated the database world, with the rest shored up by MySQL installs that were only partially ACID. No CSS HTML, pre-HTML5 so a mess of nested tables to make things lay out properly. Most sites were a pile of spaghetti code "type 1" JSPs or ASPs or really bad PHP sites making database calls and queries right in the page source, horrible to maintain.
Then the serving or hardware infrastructure, in the world of web stuff... forget about cloud or even reasonably priced hosting services. Most shops, even small ones, I worked at ended up having their own sysadmin team managing an owned or rented fleet of expensive Sun server hardware, etc. Closets full of hot and pricey hardware etc.
And as for languages... I learned Python in 95 or 96, back when it was pretty new. But almost no shop would have considered hiring me to work in it. Erlang, Python, OCaml, various Lisps, Smalltalk, all that good stuff all _existed_ but pretty much nobody would ever consider letting you write production code in such "weird stuff" until Ruby kinda broke the barrier. Perl was everywhere, but "serious" shops started to push Java, but Java was frankly awful back then around 2000. As I allude to above C++ was painful to work in at the time. C# didn't really exist yet. Visual Basic was all over the place, but was frowned on for "serious" stuff.
I think people forget how dominant and awful "enterprise" development is/was. It's still out there, but HN in general doesn't seem as exposed to it. Back in the late 90s, early 2000s, the accepted "enterprise" stack was the aspirational crap _so_ many shops adopted... it was for that time what "microservices" and "bigdata" other dogma are today. People didn't need it, but they thought they did.
Frankly, everything took longer to get done. Simple things are quicker to get done now.
Nah, it wasn't a particularly good time to be doing software dev.
I guess if you were employed in the right place, and were lucky, you would at least get to work on pioneering work building the tools and infrastructure that we now take for granted and complain about. Being at a Google building Bigtable etc. or Sun Microsystems working on the innards of Java etc. back then would have been a dream job. But the vast majority of us never got that chance. We were plumbers, too, just with really crappy pipes.
> Just go play with an autotools-based C project sometime to remind/education yourself.
Funny you should mention autotools. It reminds me a lot of webpack, especially in the way nobody[0] really understands how it works, but you search around for examples and copy/paste what works for you.
[0] a hyperbole; i'm sure someone does, just as I'm sure some people dreamt of M4 macros back in the day
Oh it's so awful; but I recently was exposed to a project where some of the leads were trying to defend it as a reasonable tech choice. It really isn't. Not in this era. Most people never even used it correctly in the first place.
Totally agree, and let's also mention Stack Overflow and the plentiful learning resources on Youtube etc. In 2000, I was a teenager trying to learn C++ and the Win32 API, and when I got stuck I got really stuck. These days, the amount of resources to help you with a problem or learn a new technology are infinitely higher which removes one of the most frustrating aspect of software dev.
It wasn't autotools per se that was horrible. It was the the fact that you had to pollute your system with random libraries, often no longer available from the operating system vendor repositories. Docker has been a lifesaver with these older projects.
I’m in desktop development (not games, not cross platform - old school document based apps) and it’s bliss. I do 95% actual programming algorithm/data structures/domain problems and only a tiny bit of wrestling package managers, deployments and other plumbing.
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.
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 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.
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.
> 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?
$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.
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.
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.
> 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.
"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.
>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.
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.
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.
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!
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.
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.
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 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 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.
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.
"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).
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?
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 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.
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.
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.
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 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
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.
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 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).
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 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.
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 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.
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.
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.
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.
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_
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'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.
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.
> 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'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.
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.
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.
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)
> 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.
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?
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.
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.
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.
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....
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 :)
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
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.
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.)
> 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.
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.
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".
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.
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.
> "... 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.
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'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 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 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.
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 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.
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.
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.
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.
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.
> 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.
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.
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 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!
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.
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.
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'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.
>> 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.
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 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.
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.
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.
> 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.
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.
The grass is always greener on the other side. Let's see.
I have 3 degrees in unrelated field (Industrial Eng, Theology, and CompSci), and worked in on a few careers, white collar jobs like being a sales engineer at a biodiesel company, helping running a cafe for a family business, being a church administrator before the current software engineering. I also worked on low paid labor jobs such as laundry, dry cleaning, deli, restaurant. All with their own physical risk, tiredness, stress from customers, etc.
The current job which is software engineering is far better than any other jobs that I had. It is pretty stable, great income, great benefits, stress free, not limited to space and time, can WFH, more flexible schedule, etc. I like software engineering a lot so I did side projects on the side, learning various programming languages, programming techniques, reading programming books, etc.
Now I am bored of all of those as well, and right now just focusing on my hobbies. I am focusing a lot on my musical skills right now, and that's the only thing that captivates my mind daily, not programming books, programming podcasts, etc anymore. Software is just another job. I'm not changing the world, not saving lives, not helping solving global warming or pollution or the declining flora and fauna that we have, or ending wars. It's riddled with churn mentality in this industry, politics, etc.
Somedays I dream of making it in the music industry, or creating a small cafe with aquascapes that I create as decorations, or not having to work at software anymore, or not having to work because I need income.
But in the end, I still work as SWE. The grass is always greener on the other side, and that depends on one's position in life like age, economic situation, etc. Right now I don't have the luxury of leaving my SWE jobs, and no I don't do this for myself, but for my family members.
As I see it, it's mainly a question of what you look for when interviewing. If you look for money then you'll likely get more stress. If you look for calm then you'll likely get less stress. You'll also get less money but nothing in life give you everything. I've turned down multiple offers when it was visible they valued workaholism or had bad processes.
I am paid pretty well at my company right now, but there are always my colleague that I know get a higher offer for some other role. I can choose to get salty about it or just try to transition with that role but with less satisfaction and more learning.
There are more to life than just chasing money. No matter who you are, peasants or kings, you are only given a limited time to live. We trade 40 hrs of our life for some numbers on the computer that can go up or down, meanwhile the rich just gained a lot of money due to this pandemic.
Yeah. You don't need to make bad money if you want a lack of stress but generally the difference between good money and great money is going to be a lot of stress.
Every software engineering job I've had was stress-free. In 10 years, I never had to do overtime. Quite frankly, if something can't get done in 40 hours per week, that's not my problem. That's the company's problem, and I will work on that problem in the hours I agreed to sell to said company.
Software development is not your calling, it's just another job for you. A very good job, but still: just a job. I'm not critcizing you, just stating how I understood what you wrote.
Difference between something that's your calling (music, judging by what you wrote) and a job is that you don't invest emotion into the job.
When you invest emotion into what you do, when your craft is sacred to you - then you experience disappointment when you see other people in the field not caring as much as you do.
When you follow the industry and the trends and when you understand that most of what you get to read is fake - a huge pile of disappointment creeps up. I'm in the same boat as the OP, and oddly enough - I'm preparing for the same line of work - woodworking :)
Honestly, I can't wait to leave this world of software development where most of what's available is fashion or just pure bullshit sprinkled with lies, but I have to pay the bills and mortgage so I can't afford to leave right now.
It's not about grass being greener on the other side, it's about not having to put up with other people who are often dead wrong and completely impervious to any kind of reasoning. Leaving software development business does not necessarily mean one stops writing software. I can't see myself stopping writing code or thinking in code when I finally leave IT, but I can't wait when I get to stop to absorb fake content from linkedin and when I don't have to read emails that are 99% white noise and 1% useful information.
Indeed, it is not my calling. I think earlier in my career I thought that way. But I also don't know what my calling in life anyway for now.
I think I'm pretty good at my craft because I spent time after work honing it. I am in the same boat as OP and you, already went through the disillusionment, but I have other things that satisfy my creative side and physical side, besides I need the money as well.
In regards to social media, I stayed away from Facebook, Twitter, Linkedin (pretty satisfied with my current job I don't need other roles). I still use Reddit, Youtube, and probably other visual/audio social media for reasons related to hobbies.
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.
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!
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.
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.
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?
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.
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.
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."
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 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.
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.
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.
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.
'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.
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.
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...
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 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.
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!
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.
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.
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.
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.
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?
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.
>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.
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.
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.
> 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.
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.
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.
Seems to be a heavy "all modern software development sucks" vibe in this thread, when the issue is more "software I get paid to write sucks". What software would you write if you could write whatever you wanted using whatever language/technology you wanted?
Unless all the joy gets sucked out beforehand, pretty sure I'm going to move to be developing Mobile Apps after I retire. It was the most fun I've had writing Apps & my kids loved playing with them.
We're now able to target super computers in everyone's pocket with an unprecedented array of capabilities using sophisticated high-level productive languages & tools with effortless access to global distribution, we've never had it this good.
I agree - the job that one is in makes a gigantic difference that is sometimes falsely attributed to software development but really just applies to the workplace in question. I have mentioned in other threads how working at places with bad technologies and suck-driven processes brought me down so much that I used to wait in the parking lot on arrival at the workplace and contemplate the misery of the day that awaited me. I am happy I was able to pull out of that tailspin and make necessary changes, even if they made my job history look sub-optimal, and discover that software development remains a great place to be if one makes an effort to find one's niche.
Agree that the job matters a lot. I was working at a job where the domain was really fun but the tech work itself was getting repetitive for me (web and native apps, rdbs backed servers etc). It took a couple of years willing to make way less money but now I'm working in robotics and enjoy my day job technically very much, and the pay is back up to market rate (in a more lucrative field). And the journey during which I made zero (summer studying) and then 1/2 of previous pay (engineer in university lab) was both fun and rejuvenating.
I think it's important to save up some of your money as you go especially early on when you get that first software job where it feels like you are making a lot of money. Start saving for your future transition(s) as you may not be happy working in the same field for your entire career.
> What software would you write if you could write whatever you wanted using whatever language/technology you wanted?
The sort that solves problems I'm interested in. I love the idea of treating software as a home-cooked meal [1]: something you prepare with love for a small crowd of people.
For instance, I added a recipes section to my personal website. I also added achievements to it some time ago[2]. Both were completely pointless, but I enjoyed doing it the same way I enjoy cooking.
Thank you for the Robin Sloan link, I've been a fan of his ever since I read Sourdough for a book club a few years ago (incidentally while learning how to make my own by total coincedence) and his style really resonates with me. That blog was an interesting take and I've definitely experienced some of his frustration while making a small browser extension - it took an hour to code, and about 3 hours to wrangle it to conform to the chrome web store requirements before giving up and switching to Firefox ;)
Modern software development is incredible if you are able to avoid the buzzword bullshit and focus on delivering cool solutions that solve real problems.
I've never worked a development job where I get any say in avoiding buzzwords or delivering solutions I would call cool. I typically get caught up in clients bikeshedding irrelevant details and managers enabling and promoting it.
I hear so much on HN and on reddit about jobs that give programmers some level of autonomy but I just don't see it. My entire experience is very much the opposite, and I absolutely loathe this awful industry.
I would recommend finding for smaller companies to work for, or better yet, doing your own consulting. Being able to fire customers is the only reason I still enjoy what I do.
It's dramatically easier to find work than to consult. Especially if you've spent your career at 1-2 very small companies and have zero 'network' to tap into. The idea of beginning consulting is more daunting to me than switching careers is.
I hate mobile app development because of the gatekeeping store process. Apple and Google, but especially Apple, make arbitrary decisions that can have a major impact on your revenue and sanity. No thanks.
I do mobile app development and I love it. At work I do that and a little bit of backend and web frontend development and I just don't enjoy those as much. There's more overhead in getting things done there, whereas with iOS development, you have a more constrained space where there's generally just one way to do things, so you spend more time thinking about the problem you are solving vs. dealing with technology issues. Yes, there are still things you have to figure out on iOS that don't have the greatest documentation, but I find it's much more straightforward than the other spaces I mentioned.
If I could write whatever I wanted to on whatever platform, I'd do what I'm doing now as a side project: a flash card app on iOS and macOS. [1] I'm finding it lets me deal with the entire "stack" of interesting product problems: technology, user experience design, solving a real user problem, and even marketing. I'm not treating it as a serious job, so it is mostly fun to work on, although I am getting close to releasing it, so it can be a slog. (This reminds me of what I read about the author of Stardew Valley and how after working on his game for several years, he did find it difficult to keep working on it, which is a problem you really can't get away from.)
> What software would you write if you could write whatever you wanted using whatever language/technology you wanted?
What does it matter? After a 40+ hour work week developing bullshit, plus all the other demands on a modern adult's time, very few people, even those who like writing software, are going to want to sit down and write more.
I think it’s more the point that it isn’t the profession that sucks but the job.
There are a lot of writers out there but few New York Times best selling fiction authors. We can’t saying earning a living as a writer sucks because most people write for blogs.
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.
I can't relate to any of the "software sucks now" comments. I started off writing code the "old school" way. C or C++ using vanilla vim. I spent so much time wrestling with compile errors, pointer logic, memory management, looking up documentation to figure out what methods were available in a class, and using grep to figure out where/how methods were calling one another. It was a colossal mess. I had almost no interest in programming because I spent the vast majority of my time yak shaving, not coding.
Then ten years later, I discovered IDEs with inline compile warnings, autocompletions, method suggestions. I discovered stack overflow, and languages with automated garbage collection. My productivity skyrocketed. I started liking coding again, for the same reason I initially liked math and logic puzzles. I could spend more time problem solving and less time document chasing.
To anyone who thinks things have actually gotten worse, I would suggest building a toy project using a 90s tech stack, and comparing that to a modern tech stack. The kind of things I was able to build in the last few years in my free time, I can't even imagine building in the 90s. If things seem increasingly complex today, it's only because the bar has been raised so much higher.
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.
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.
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 :)
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.
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.
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.
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.
I still enjoy writing software. I mainly do mobile development on iOS.
However, after 20 years in the industry, I grow tired of the corporate life and how projects are run. I can't complain about the pay or the hours, though. I've managed to hold jobs that generally don't have crunch or any type of regular overtime.
What I grow tired of is the endless cycle of performance reviews, planning for the work ahead (short-term and long-term), discussions about what will be done and what won't be done, seeing how hard it is to come to consensus on some things, and how some of it doesn't even matter.
When you're younger, you have more of a fire in your belly and will passionately argue for certain decisions or directions, but after you've worked a while, you realize a lot of those things that don't make huge differences in how well your product actually does out in the field. There are decisions above your head that have greater effect and worrying about those is just a waste of time, and so you detach a bit.
The technical challenges themselves can also be the same ones you've encountered again and again, so that becomes sort of same-y.
As others have suggested, I highly recommend working on your own side projects if you are looking for a creative outlet. That's what I've ended up doing over the years and it's helped a lot.
I’ve been building software for around 20 years. It’s more enjoyable to me than it has ever been. One of the reasons is I have my own playground repo + site where I put all my experiments and write whatever I want.
I can now make more in a day than I could have made in a year 15 years ago.
In the past few months, I have:
- built a serverless website/ code playground that enables me to host all my experiments and costs me essentially nothing
- parsed the original zork code into typescript and then made a zork style game for my family
- made about 5 educational mini games for my kids
- learned how to do systematic math proofs with the lean language
- created a serverless and database-free user data storage service on aws
- created a serverless websocket service and a real time party game on aws.
This morning I started building a serverless mesh-like network on top of websockets and webrtc to further reduce infrastructure dependency.
Oh yeah, last year I was part of a corporate competition to build and program a self-driving RC car.
Now, of course, I do most of this on my own time by getting up at 4:30 so it doesn’t interfere with my family and my work - and at work I sometimes have to do boring tasks - but that’s life.
If you aren’t having fun, you simply are not playing with all the technology we have at our fingertips.
Can you describe more about your serverless website / code playground? Just curious.
(I'm currently re-discovering the fun of coding by writing video games and hosting them internally to my house on docker containers on a Raspberry Pi.)
Basically, this is a website all built in react. It uses a simplified version of gatsby to generate a static website with async loaded components. That is hosted on netlify which basically provides free https, simple dns management, and git deploy with auto CDN cache expiration. In addition, I use serverless framework cli to define my AWS infrastructure and deploy the serverless stuff from command line. Essentially, I can make anything and deploy it in about 30 secs.
Some interesting things:
- A text adventure called dork (it's in the console simulator in the header)
I feel like there is kinda a lot of overanalyzing in this thread. I'll steal a line from Drew Carey: "There's a club for people who hate there jobs. It's called everyone, and our meetings are at the bar on 5PM on Fridays."
If anything, I think the tech world (and indeed most of the professional world) has been fed a load of bull that work is supposed to be personally spiritually fulfilling, instead of something that pays the bills so you can get personal fulfillment outside of your job.
I think the answer is, whenever you get to any kind of scale, you leave the logical world of engineering discipline, and enter the corporate world of product infighting. Who hasn't tried a small, personal project just as a clean walled-garden-of-the-mind to relax in, free from the reality of real software. I think every SWEs dream is that all software will be just as clean.
But Companies don't create frameworks to improve or optimise, they create them to own and dominate. The airwaves are bought and sold by private concerns. specs and APIs are hidden, "amazing journeys" are had by the few on the back of the many, and we end up as the paid expert tinkerers of the war-machines of someone else's empire.
The FLOSS question is more important now than ever: How can we fix the social and economic systems of hard/soft-ware, and complex systems in general, to end up with flawless, frictionless sci-fi engineering impossibilities, rather than the janky, baroque "modern web".
I think one of the problems is that a lot of the management methods are built for the lowest common denominator. Juniors and mediocre developers who "need" direction and strict structure. Micro management is easier than creating a culture where developers are empowered to make independent decisions, based on shared goals and understanding.
At some point talented developers grow out of that role and start looking for an escape.
But I see the same everywhere at many levels. There seems to be some effort to "commoditise" development. Nice idea, but only really the committed expertise and resources of Microsoft or equivalent could achieve this - all other attempt devolve to some form of micromanagement.
I've recently wondered how the stresses of software development would compare to the stress of knowing my family might starve if the crops fail or that we could be set upon by brigands and murdered.
I mostly make this comparison in jest, and probably as a result of having read several novels in the last 12 months that deal in various ways with the decline of civilization. However, our ancestors also probably slept better than we do and dealt with the stress naturally as part of their daily physical requirements.
I'm not suggesting it would be more fun, but I wouldn't argue if you told me it was healthier, and maybe even happier.
In physical work you have a natural outlet for that stress. Confining everything to your upper body, and even one part of it (the head) is gonna cause even more stress.
Yes, I think that physical exercise helped a lot. I go the gym every weekday at 3pm, and do heavy (for me) weight lifting for an hour. That has a great way of burning off the stress and resetting the mind. I highly recommend software engineers specifically plan some time in your day to get out of your chair and get some exercise.
I think they think about this like we think about making an error which will delete whole database of our client. It happens to us, but there are some safety nets everywhere. Several families in the world may be so unlucky as to get killed, but it's not day to day worry for everyone.
I'm nearing 60 (decimal) and have spent a programming career in what we used to call supercomputing. I will spare you "old guy" stories, but I will share one insight: I've worked for companies who made money selling hardware, companies who made money selling advertising, and companies who made money selling software. It's always been the most fun working as a software guy at a company selling hardware to solve hard problems in the real world. If you're bored as a software person in a software or advertising company, consider being a software person elsewhere.
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.
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'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.
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.
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!
> 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.
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 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.
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'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 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! :)
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'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.
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 am no longer paid to build software. I was a SWE for 15 years at things from startup to a FAANG. Not I teach high school CS.
I build software anyway. Today I automated a workflow to turn zettlerkasten lesson plans into PDFs and post them to Google Classroom. I’m also upgrading the school timetable to sync everything (schools have lots of proprietary tools with their calendars) to Outlook.
In class I wrote a one page Huffman encoder with my pupils. We also turned a binary tree into ascii art. I showed another class the mypy typechecker.
Then I came home and put a final coat of Osmo 425 UV oil on my 100” garden dining table, and spent two hours designing a hardwood gazebo in the style of a mini English barn (crucks, beams, etc.)
I told my partner about this thread and she said maybe I could become a commercial carpenter. The idea of having to do this for money made my heart sink. No thanks!
This made me sad... Software is a job, so on one hand we shouldn't expect it to be all roses. And software is difficult: it's nontrivial, complex work.
On the other hand, it's sad how many people resonate with this. I'm all for following your passions and doing what you love. But it would be nice if more people were able to maintain their love for programming.
I've been writing code since I was 14, so I'm going on close to 30 years, and I still love it: the challenge, the creative outlet, the feeling when a bug is identified and a elegant fix is applied.
My question is: how do we change things? How do we keep people of all ages loving it (if that's what they're called to?)
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.
I used to build software, back in the days of MS-DOS... wrote it all in Turbo Pascal, used pkZip to make archives of the source code every day, saved them on floppy disk. Towards the end, Windows was starting to be a thing, but I didn't have to deal with it. Delphi was fun.
Then I was a system admin for about 2 decades, and only occasionally did I do the odd bit of programming.
I took a detour into making gears, until the plague hit.
I've had a side project for the past year, Initially I tried to do it in Python because where was a good charting library for it... but it turned out that building a GUI for the user was an exercise in masochism. There just was nothing like the interactive GUI builder in Delphi that I could find for python. After months of banging my head against the wall.. it worked, but changes that should take 30 seconds were taking 20+ minutes because I had to tweak all the python code for every little change in the GUI.
I tried out Lazarus/Free Pascal, since Delphi is out of my price range.... it's buggy... but it took a pretty intense weekend, and I had everything replicated, and the pace of development went back to reasonable.
The focus on C++ and the weird class factory thing, Java and the madness there... so much wasted time and effort when things USED TO BE BETTER.
GIT, on the other hand... is awesome.... way better than ZIP files. 8)
It took a while, but GUIs work much better for users, and they are almost trivial to build in Lazarus. You can bang out a CRUD app in a few hours.
After a decade of experience in the industry at 4 different companies, I quit my 6 figure devops job in 2013. I think back to all the meetings, emails, pagerduty alerts, and bruised 25 year old egos over the merits of Chef vs Puppet and have to laugh. I now run a landscaping business, make less money, have more time, and I can actually avoid working with toxic people/customers.
I stopped working at age 59 to help with an illness in the family. I was afraid that I would miss exercising my mind and interacting with people the way building software often did. I had a decent job with interesting work, good pay, and good working conditions. But I haven't regretted walking away to take advantage of our life-long prudence and hard work.
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.
I no longer build software for money or for someone else.
I still love building software for myself, so that is what I do.
I don't have any money, but nobody is breathing down my neck when I haven't made a commit in 2 days (which is rare) or if I still plan to stick to the deadlines when I have more important life events happening.
I'll seek to balance this conversation by providing another perspective. I've been working in the software industry for 10 years. I think it's a bit extreme to dismiss the industry entirely because of your experience or because it isn't what you thought it would be. It's possible to find a company that is a better fit, allowing you to do programming in a way you enjoy. It's also possible to start your own company doing it a better way. I worked as a freelancer on my own terms for awhile, and frankly, the pay was terrible and the 'freedom' wasn't all it's imagined to be; you still have to work for somebody if you want to get paid. Honestly, I've been much happier in corporations, especially ones that value teamwork, and camaraderie.
After reading a bunch of the comments in this thread, I have to wonder if people here have ever actually spent significant time outside of IT. It seems not.
I had a continuous stream of manual labour PT or FT jobs between 15 and 23, before getting my first IT job and when I started it was a fucking revelation. People would pay me $40k/y to sit at a comfortable desk and think and write?! No baking and sweating the hot sun, no threat of injuries, no freezing in the winter time, no clocking in/out, no petty criminal coworkers?! I don't think memory of that feeling will ever go away. And yes, I did do some woodworking as well.
An aside: I'd be curious to see some statistics on the number of software developers who have an interest in woodworking. I was once in a project meeting that involved two external vendors, and the topic of woodworking came up in casual conversation. It turned out that every technically oriented role in the room was not only interested, but had a wood shop in their home. Something like 8-10 people. There seem to be a number of parallels between development and woodworking, but anecdotally the number of people I've met with an interest in both is very high.
I still enjoy building software. What I don't enjoy is dealing with a barrage of tech-bro/founder types that are convinced their niche CRUD app is going to revolutionize industry X. Among other things.
I haven't even written a single line of 'code' at work in maybe six months now, everything is done in xml configuration files, a bit of sql here and there. Last job before this was more or less the same. Since I was a kid all I wanted to do was be a programmer, I don't really even feel like an engineer or a programmer anymore I just feel like I 'use' a computer all day it's weird. It's like a totally different part of the brain. I think I actually hate computers but I've no idea how to do anything else.
Seriously building software has not gotten any easier. Communication and attention has slipped and I think these two issues make development all the more challenging.
I understand this sentiment. Software can still be a lucrative and fulfilling field to work in, though perhaps not as uniformly as back in some sort of day. Perhaps the motivators for starting a tech career are different today. I work in government data transparency, and my work directly affects (hopefully positively) the communities that use our product. The code part is fun, but wouldn't be sufficient to keep me there alone. Have I taken a financial hit for taking a social-impact track vs. something else? Without a doubt. It works for me, though, in a way that optimizing for "the engineering experience" would definitely not have.
If you're feeling burnt out but want/need to stay in coding, perhaps it is worthwhile to think about how much "fulfillment" you require from coding tasks. If you find you want to reduce it, could think about:
* Mentoring other devs. It's very fulfilling to help someone grow.
* Take a pay cut and work at a nonprofit/B-corp/mission-driven regular corp. There are tons of these. There are lists (i.e., climatescape) but ask around.
* Traditional hobbies. Woodworking, painting, gardening, travel, music, etc. If you'd prefer to stay technical, some tech-adjacent hobbies with vibrant and exciting communities are retrocomputing (say, check out Adrian's Digital Basement on YouTube), cosplay/prop making (check out the Role Play Forum, there's some extremely knowledgeable people there), security capture-the-flag events, 3d printing... many choices. I feel we live in a hobby golden age - there's so many excellent online communities for seemingly every niche or mainstream hobby.
This weekend I started building a plain old server-side rendered web application.
It felt really good to stop dicking around with APIs and graphql and resolvers and other bullshit and just get a working product that's fast. Lovely.
Also write a largish project in Nim, clean and simple. Lovely.
You don't _have_ to run the hamster wheel that is modern web technologies. That's what is sapping your energy. React, webpack, thunk, memos (lmao) and other churning blog-driven-developments. Don't do it!
Reading over the comments there's a lot of "wow, I want to do that" and "wow, I'm so glad I also did that". My story is somewhat different but might also help those who want to do that but, say, need to pay bills to eat.
I left my most recent full-time (45+ hrs/wk) job coding after 9 years in the valley. When I was planning it, I was treating it as a long sabbatical and was going to travel and not do any work. However, along my travels I've found myself stuck in one country or another for various reasons (like global pandemics) and with nothing better to do, logged back online. Except, this time I knew before I started exactly what my goal was: I wanted to make enough money to pay my bills, and not a penny more. Going in with this outlook, I took freelancing gigs with a few companies, and I've now settled into a consistent relationship with a software consulting company.
I agree with many comments in this thread: what I'm doing isn't creative; it's basic operational stuff; "glue" software... But I don't need it to be interesting. I work 15 hours in a week and when I don't feel like working on a particular day--then I don't. I make just over what I spend each month. Since I have so much extra time, when inspiration strikes me, I can go and work on hobby programming projects as a creative outlet (which is why I got into programming in the first place)!
I've spent 15+ years learning these computer programming skills. If the job isn't interesting and I can do what's required in my sleep, then--to me--I should do the job in my sleep and spend my waking hours doing what I enjoy. I think in general OP and I have the same goal, but we're approaching on different tacks.
The running joke at my old company was "It will be done, assuming this time next quarter I haven't quit this job to assume this chaotic world of software development for the predictable life of the humble dairy farmer."
... the joke, of course, being that there's nothing predictable about being a humble dairy farmer... Cows get sick, years are better or worse, and the market is constantly fluctuating.
All these complaining is funny. I was building software since the later 1990's. I'm not tired of it. Sure, most of the jobs out there are your standard CRUD stuff. But I still like it.
A lot of people complain about not having interesting stuff to work on in the day job. Well, that's why it's called a job.
I was burnt out from my software job as well until I got a shift in perspective. I picked up a photography hobby and got pretty good. In fact, I was seriously contemplating changing careers and was gaining steam. But I realized the more clients I picked up, the more uninspiring crap I had to shoot. This wasn't your everyday wedding or family photos. It was fashion photography where the industry was seen as more "creative" and "edgy." But once you get down to it, it was the same crap as any other job.
Sure I shot a lot of my own personal projects as well (like open source projects for software engineering). In fact, in that industry it's more required to have a huge portfolio of test shots where you're constantly evolving. In software engineering, that's not as required. But even that became a grind since you're pressured to constantly hone your blade while new, younger, more creative people were coming up.
Is it hard dealing with your manager, product managers, changing requirements, etc. in your software job? Well it's the same stuff in commercial fashion photography. Change their minds constantly. Sometimes I doubt they know what they want either. Budgets change, scope changes, a ton of politics, and so on. It's all the same.
This is when I realized I actually liked software engineering better. I found it more fun solving "boring" problems and learning the new technology of the day instead of hustling hard in the photo industry.
I get people complaining about not doing interesting work in their job. But that's what 99% of the industry is. You'll most likely create another CRUD app or work on stuff that is the least interesting to you. Only the lucky/elite 1% (just like in other industries) gets to do cool, interesting stuff.
Grass in greener on the other side. But I've stepped my toes on the other grass, and it's the same shade of green. I learned to enjoy my job as a software engineer. I'm in the 40's, and hopefully I'll have enough energy to keep it up for 20+ more years.
I lost hours of my life last week trying to set up motioneyes + android + a pi + a vps + wireguard + ip webcam pro + tasker + an old smartphone + an online API for events for simply getting a notification when someones walks in my alley.
I should have gone the Alfred route and just shell out 15 bucks but instead I am crying tears of rage over framerate settings, screen lock issues and pro version validation.
I'd suggest finding a smaller company to work for, one that makes products, as opposed to doing integration or consulting.
The money is less, you typically have to work on older stacks, and you don't get to learn a new technology every year, but the upside is you get to work across more of the (vertical) tech stack, and you get to be deeply familiar with the technologies involved.
Well.. I've made that switch over a decade ago, and came back. Software pays better (or, a mediocre software dev like myself will do better than a mediocre carpenter like myself, because it's harder to see the mistakes I made).
It turns out any passionate activity that you do as a job will tend to get the soul sucked out of it once you do it for money. Reality of having to make a profit means you work on what pays not what you want to work on, cut corners and make compromises. Doesn't take too long before you start feeling that.
The very very few lucky among us (and I count myself in that group today) will stumble upon a situation where job and joy overlap -- and it has so much more to do with the people we work with rather than the subject matter. Seek out positions that give you autonomy of choice and creative freedom, having a playground (even if limited) helps a lot.
Every field looks mysterious and fun from the outside. Your imagination of the work in that field doesn't take into account the fact that you'll have to work with other people, there will be politics, cliques, pointless meetings, fads in the field, disagreeable coworkers, losers, unreliable people. There will also be, at the end of the day, a business that needs to keep afloat, and you'll always have to "just ship it" before it reaches your personal standards. And after you've done everything a few dozen times, on top of everything else, you'll also be bored.
That all said, software development is by far the best career and I'm pretty happy with it.
I see a lot of comments here from folks wishing they were working on something more fulfilling than a CRUD app. Maybe the problem isn’t what kind of software you work on, but what it means, and what it can help accomplish in the world.
Building easy to use software that solves real problems for real people is hard, regardless of whether it’s a CRUD app or something more exotic.
And building easy to use software that solves real problems for real people feels good and meaningful.
Those real people don’t know and don’t care about the difference between Rust, Clojure, or PHP, they just know that you’re making their life appreciably better.
Don’t find a new career. Go find work that actually carries meaning and worth for you.
My family actually has a long history of woodworking and furniture making (my last name means woodsmen, several generations of at least hobby woodworking, etc.) and as soon as I can move into a house (we were going to before the apocalypse but credit requirements shot up and being poor earlier in life has lifelong consequences) I'm going to pick up a few tools and work down Rex Kreuger's Woodworking for Humans series.
That's not to say that I've lost my joy of making computers do my bidding (yet, I suppose...), I just also really enjoy working with my hands.
As a self taught dev, looking to go back to college, I'm always debating if I should major in CS or something else like Math or Stats in case software gets old to me and I want to transition to a quantitative field.
But then I don't know what those kind of jobs are like and the chances are that I might feel the same way after n years.
I think it's good to have something that's strictly a hobby where there are no real stakes to the game, so it is play. Work always means responsibility and largely doing it how someone else wants it done, even if you are an entrepreneur.
I build my own products and I get hired to create products for others. All in various different areas: desktop, web, firmware etc. So no I do not want to stop it. Sure I get board every once in a while when all design is done and now it is time to just write a lot of code (sometime budget allows me to subcontract) but overall I am happy and not planning switching to woodworking any time soon even though I am an old fart. I do lots of physical activity though to keep in good shape and this I think helps with programming part as well.
“I'm going to a commune in Vermont and will deal with no unit of time shorter than a season.” — Tom West quoted in Tracy Kidder The Soul of a New Machine
My last full time job made me consider leaving too. Alas, since I have no other marketable skills (or any type of skills) beyond software development, for now[1], and I realized I just disliked that particular project and its process, not software in general, I'll continue for a few years more.
[1]: I'm learning and practicing creative writing, hoping to publish books some day.
I agree that software is not always glamorous or fulfilling work. The same can be said for building in the analogue world. However, you will be hard pressed to find a career that will grant a higher standard of living for yourself and your family while offering the level of flexibility that can be found in software.
To build on an idea is infinitly more complex. The supposed need for cloud architectures to save money is a fairy tale to drive the need for kubernetes/etc. They make sense for large scale deployments but for my 20k subscribers I long for a rack and a few servers vs. 20 instances and increasing monthly costs.
Keep it simple, build what you need. This is so hard to get through peoples heads, now the most simple landings page seems to need react. Im 61 and still love to code but the hoops and loops you have to jump through these days to host a web page is absurd. I can not emphasize this enough, keep it simple.
Spent the last few days building monkey bars for the kids to play in the backyard. It's really satisfying building something physical that others can use. It's similar to the feeling of building software that you see other people using and enjoying.
A naive question: is it still a real thing to be entrepreneurial software engineer?
After reading this thread, as somebody who quit comfortable and well paying job for a startup being founded from scratch, I feel like I’m alone in this sort of path now.
In a serious note, Woodworking is a great rewarding craft. It bears the same builder mentality, creating physical objects via reduction manufacturing and most importantly, you build for yourself and for the people that you care about.
Reminds me of jwz's line about leaving Mozilla to run a nightclub:
"But in 1999 I took my leave of that whole sick, navel-gazing mess we called the software industry. Now I'm in a more honest line of work: now I sell beer."
Someone mentioned this in another thread awhile back and it really hit home with me. It's a line by the Joe MacMillan character (portrayed by Lee Pace) from Halt and Catch Fire:
"The computer isn't thing. The computer's the thing that gets us to the thing."
That's how programming felt when I got into it back in the 80's and was still there when I started doing it professionally in the 90's. It felt like we were using computers as tools for creativity and exploration. For making the world a better place. Increasingly, as the valuations skyrocketed, that feeling has diminished to the point where I don't see it anywhere anymore. It's not about "getting us to the thing", it's not about making the world better. It is about making a buck.
Now, look; I don't have a problem with people earning a living or even with Apple having a $2T valuation. My problem is the influence that has had on the industry. One might suggest that such a thing is unavoidable and they are probably right, but can't we at least try to be better? Can't we at least try to keep in focus the goal of making lives better and less about showing yet another ad? People are genuinely suffering right now all over the world. I challenge anyone to suggest that health and economic hardships are less important than Facebook.
On a more practical, day-to-day matter: my job as a programmer is, well... my GOD the amount of tooling! When I got started web programming I had a text editor, and FTP client, a server, and a browser. I made a change, uploaded the files, and refreshed my browser. Don't get me wrong. Having a debugger built into the browser is great. Having a proper version control system is fantastic. I think, however, we're missing the forrest for the trees where tooling is concerned.
Here's a case in point that a good friend pointed out to me recently: https://github.com/thecreation/jquery-wizard It's a simple jQuery plugin (please let's not get sidetracked with "jQuery is so old|bad|blah blah blah"!) for building wizards. Just look at all the files needed for the various tooling in relation to actual source code. Babel, Bower, ESLint, NPM, Travis, Gulp, Karma. You have to ask yourself, how much time does the developer get to spend on making his/her product better versus maintaining tooling support?!
And _that_ is what programming is like right now. I hope it changes. I really do.
I am with him. I was a professional developer for 16 years, but last year I got tired of saving startup money and not using it, and disillusioned with the path that global productivity is exponentiating toward.
Interesting approach to issue resolution: propose workarounds, well-actuallys, and nitpicks for three years and maybe the reporter of the issue will eventually switch careers.
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.
what is the deal with the software engineering -> woodworking pipeline? is it that programmers get so fed up of working with abstract concepts that they immediately pendulum-swing to the most concrete form of building (that can still be done by only one person) that they can find?
It's likely not as common as it seems. Personally I only ever heard of some mythical software engineers from the US pursuing woodworking, but not from anywhere else. Maybe in the US it's a lucrative field and it's common for software engineers in the US to live in houses with plenty of space to do woodworking and where the products of woodworking might actually be useful, so it's something they can play with at home and consider a nice skill to have in case they get fed up with software industry.
I think that's part of the point. I intend no offense towards @ebd2 on GitHub, but ebd2 can be said to be a "noname" developer turned wood worker.
I'm guessing the reason why ebd2's story struck a chord with the HN community is that he has figured out a way to manage to do what a lot of people here aspire to be able to do with their time some day.
The working assumption (which he has graciously corrected upthread as @mauvehaus on HN) is that his software career has afforded him to switch careers to something he is far more passionate about, a trait shared by many engineers who are forced to collect paychecks from work that is considered not very meaningful or fulfilling.
The trades, specifically stuff like woodworking, metalworking, farming etc involve a certain kind of craftsmanship that can be applied on real world objects but which was honed by years of coding on imaginary software objects. It's a visceral thing to be transfer the skill of using your hands to build virtual stuff to build physical stuff.
I started doing similar changes because software became a shitshow. Corporate software shops are just a bunch of IT people trying to get their friend's products in use in the company for kickbacks. So what you have are multiple IT teams with more power than developers trying to tell everyone which tools they MUST use. Developers at the last place I worked had no access to production, could not deploy code at all, could not test their own code, could not even push code, could not see other team's code, etc, etc. But, the company had a devops team, a team called "app ops", a "SRE" team, an IT team, an "infra" team, and a security team that strangely was dictating which tools were used to deploy code. NONE of these teams did anything remotely close to what their team name did. They would do visibility projects which, oddly, sometimes involved developing software but not the kind that generates revenue. "dev ops" would deploy software to production, if they had time between their projects. "app ops" was supposed to handle support incidents, if they had time between their projects, etc...
It is useless to try to build software in this environment. It is far easier to build a hunk of wood and say, "here you fucking go, take it or leave it" than to deal with dozens and dozens of people trying to extract money from the development process while suffocating the company.
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.
>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.
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.
https://news.ycombinator.com/item?id=24541964&p=2
https://news.ycombinator.com/item?id=24541964&p=3