I no longer build software
github.com
github.com
A couple things to clarify:
I posted the original issue as a minor complaint about the docker cli and promptly forgot about it. I never expected it to get any traction or follow-up. At the time I posted it, I was working as a contractor for my former full time employer. I had left full-time work there in early 2017 to attend the full-time program at the (sadly now-defunct) Furniture Institute of Massachusetts[0].
I finished that program in early 2019, and split my time between commission work and part time work for other woodworkers. Like software, in woodworking there are things you learn at school and things you learn doing it for money.
In early 2020 (which now feels like a million years ago), my partner and I left the Boston area for her to take a job in the northern hinterlands of NH.
It's been an interesting year to say the least: A lot of the opportunities I was hoping to have to publicize my business have been canceled (craft shows and fairs, open studios, etc) due to the pandemic. I'm fortunate to have brought a couple of paid commissions with me when we moved. Owing to the pandemic, the schedule on them has been protracted. I was going back and forth to Boston to fulfill a teaching obligation until early March. Then the pandemic hit, and all of my suppliers and my shared shop space[1] closed down for a couple months.
Just before the shared shop closed, I grabbed my workbench and set it up in my living room. The place we're renting doesn't have a basement, garage, or anything resembling shop space, so that was the least bad option. I bought wood for a couple of house projects, and got going working entirely by hand. The first project was a desk for my partner. I built it following the design for a staked work table from the Anarchist's Design Book[2]. She's been working at it since, and we've been doing our best to manage my noise and her Zoom calls separated by perhaps as much as 20 feet.
Sometime in late May or early June things started opening up slowly. I bought wood for those projects, and the shared shop space began operating with extremely limited hours. I've wrapped up those couple of projects, and honestly, the next thing on my TODO list is to spend some time doing some business planning, re-shooting some of my earlier work, and updating my website[3]. Bad timing on the pithy github comment on my part; had I known it'd hit the top of HN, I'd have made it after I updated the website!
If you're in the Boston area and would like to see some of my work, the Cabinet on Stand shown on my website is on display at the Fuller Craft Museum[4] in Brockton, MA through November 8th. It feels a bit weird to mention it, but that piece is also for sale through the museum. Purchasing it supports not only me, but also the museum. They were closed for a long time this year as a result of the pandemic, and like a great many of our cultural institutions, they're hurting. They laid off the curator for the exhibit my piece is in due to budget issues.
If I can offer everybody only one thing to get out of this, it's that our cultural institutions live a fairly fragile and perilous existence, particularly the smaller ones. The Wharton Esherick Museum[5] in the Philadelphia area is also taking a beating. Please, please, please take some time to support these institutions. A lot of our shared culture doesn't make it to the MFA. Those headline institutions show a limited subset of stuff; there's so much of value in the smaller museums, galleries, and historical societies.
[0] http://furnituremakingclasses.com
[1] https://claremontmakerspace.org
[2] https://lostartpress.com/collections/books/products/the-anar...
[3] https://longwalkwoodworking.com
[4] https://fullercraft.org/event/2020-biennial-members-exhibiti...
1. https://www.flickr.com/photos/fuller_craft/49837847346/in/al...
https://www.flickr.com/photos/fuller_craft/49837855711/in/al...
imo whether you consider it art is irrelevant. the main cost is material (wood) and labor.
Oh man, the line between "art" and "craft" is ill-defined. I think of craft as something that has to fulfill a functional need as well as satisfying an aesthetic need, and art as meeting a principally aesthetic need.
Whether you view the cabinet on stand as art or furniture (craft), I suppose depends wholly on what your needs are :-) I built it as a piece of furniture that would suits my aesthetic tastes and also hold some stuff.
The price on it is $5,200 US.
The pricing on anything is a challenge. I have a woodworker friend who is married to a pricing analyst. She works for a sizable multinational corporation, and he feels as in the dark about how to price stuff as I do.
Broadly speaking, pricing for custom work is likely to be at least at the high end of factory made furniture, and by that I mean really nice factory-made stuff. Think like Thomas Moser[0]. Whether you like their look or not, the quality is excellent and as I understand it, there's a lot more hand work that goes into it than is common these days. I'm going to use them in the discussion below, but this applies to any high end commercial maker.
The reasons for this are complicated: On the one hand, my capital costs are (a lot) lower than any factory, I don't maintain showrooms in pricey locations, and I don't have a staff I need to pay.
On the other hand, Moser is buying lumber in quantities that I couldn't store at a price I can only dream of. They have well established lines of furniture that they're set up to make in quantity, or at least know how to build, whereas virtually everything I build is a prototype in some sense.
What you don't see in the final product is the test pieces or the jigs that I built to build it. Project recursion isn't just a software thing, I assure you.
Because it's unlikely that anybody will ever want exactly the same piece, that cost doesn't get spread out over a production run, or even stuck into storage in case somebody wants one in the future. Storage is a cost, and I pay it for stuff I know I'm going to use again and again (a table saw sled, for example). Project specific stuff gets either broken down and reused or put into my wood stove. At best you get the materials back; the time is a sunk cost.
I've talked to other woodworkers about this, and some take the approach of having a line of pieces that they're jigged up to build quickly and efficiently. This is a valid approach to making money at this. Putting some thought into whether it makes sense for me to develop a line at this point is on the list of things on my business planning TODO list.
Even woodworkers who have a catalog of pieces they know how to build have to make choices about how to design and build. Christian Becksvoort has a 15 drawer chest in his catalog[1]. Every tier of drawers is a different height. That means something as simple as cutting parts to rough size involves ripping boards to 20 different widths (for each of the 10 tiers: 3 pieces full height for fronts and sides, and 1 piece reduced height for the drawer back).
And then you have to keep track of those parts. And then you have to dovetail them. I'm willing to bet that Christian Becksvoort would lose money building one 15 drawer chest with a dovetail jig because he'd have 20 different set ups (10 heights, front and back). Could you make it cheaper by making some of the tiers of drawers the same height? Absolutely! Would it retain the charm of his design? For some customers, no.
Before anybody gives up hope on owning anything Christian Becksvoort has ever had a hand in, I'd like to note that he's an author as well as a furniture maker. He's written two books for Lost Art Press[2], and I recommend both.
[0] https://www.thosmoser.com/
The price on the piece is $5,200.
When I look around, I feel woodworking now is what photography was 10 years ago to software people. A hobby that lets you get away from the computer into the physical world, but still tingles all the engineering/math/maker mindset that attracts people to software. Although I got into woodworking because of my grandfather, I see a lot online of software people doing the same just to "get away."
From an economic perspective, I hope you're able to capitalize on that trend of people with lots of disposable income willing to commission this sort of thing (or even classes), if that's partly your intention.
How do you price items?
How do you handle shipping, or is the work all local?
I'm told that shipping via specialist companies that routinely handle art and high end furniture is a much better experience for all parties.
I'm trying to keep jobs within a reasonable drive or the pieces small enough that I can double box and peanut them without driving the cost for the dimensional weight through the roof.
Secondly, if I can leave everybody with just one more takeaway (besides supporting your local craft organizations, wherever you may be), it's that the phrase "it takes a village" applies to businesses too.
Besides first and foremost my partner, I owe an enormous debt of gratitude to everybody who has taught me; everybody who was a student with me at the Furniture Institute of MA, I've learned something from every one of them; everybody I've worked for, I've learned something from every one of them; anybody who's ever written a blog article I've read; anybody who's ever made a youtube video I've watched; my suppliers, especially the knowledgeable ones who've taken the time to not just sell me something but help me learn what fits my needs; my customers, especially the early ones who have worked with me as hiccups have arisen; countless friends both in the trade and otherwise who have provided moral support, gotten me out of jams, and been all around awesome; and finally my partner, who bears thanking way more than just twice.
I don't consider myself especially brave for having taken this step or having any particular wherewithal. For most of us in woodworking, there's an enormous number of people we have leaned on and learned from to get us where we are. I suspect this is true for most of us in software as well. There's a lot of companies built at least in part on open source projects, existing infrastructure, etc.
To be clear, I've never made a contribution of any significance to an OSS project outside of working a 9-5 salaried job. Your point is spot-on, but I can't rightly claim to have been on the sharp end of maintaining anything open source. Thank you to those who do.
Lastly, this all came about because I've been following the Fusion360 news on HN and looking into alternatives. I downloaded FreeCAD, started reading docs, and found a dead link in their README.md. I filed a bug, submitted a PR, and figured if I ever wanted it to be useful, I'd better sort the email account that github sends to. I cleared out a couple thousand github notifications for projects I no longer work on, and that many more bounce messages from my former employer.
Among the several hundred remaining emails was a slew of notifications about the bug that I filed 3 years ago. I figured I should check in, and the rest is (recent) history.
I'm not far from Lebanon.
Have you tried out CNC stuff yet? It seems to be a popular thing for people into woodworking too. :)
[0] https://strobist.blogspot.com/ [1] https://strobist.blogspot.com/2006/03/lighting-101.html
Everything on my site was shot with continuous light, but I'll take a deeper look at the site and see what I can learn. Some of the photos definitely make me want to! And let's be honest, strobes are a lot less hassle to deal with than studio lights.
Two things I noticed a couple years ago:
1. There is a quite expensive furniture maker near where I grew up -- in the more "genteel" area of course.
2. If I still lived there I'd totally shell out three grand for one of their chairs!
I've never spent that much on a piece of furniture, but it sure looks like it's worth it:
http://ericksonwoodworking.com/furniture/seating/sumi-chair-...
Your work is beautiful and I hope you find many buyers. I humbly suggest you include prices on your web site, as many people have no idea what handmade furniture costs these days, and many of those can actually afford it.
Those are beautiful chairs, and I would agree that the price sure looks worth it. Thank you for bringing them to my attention
For a point of comparison, Kevin Rodel designed the side chairs I built (from plans he published in Fine Woodworking). He lists a price of $1,600 each on his website[0]. I think that's also an entirely fair price for what is a simpler chair to build. Ignoring everything else driving cost in chairs, adding arms alone adds complexity.
The question of listing price is a difficult one. Christopher Scharz of Lost Art Press addressed this an an article he wrote for Core77[1]. He's very established (and rightly so) and chooses not to, but he suggests it might be an advantage for somebody starting out.
One challenge to publishing prices that I perceive is that it fixes a price in a potential customer's mind. I wrote to somebody last week about the question of pricing, and observed that a bookshelf for a child's bedroom is a very different piece from a bookshelf for a lawyer's office. The price varies considerably between the two!
What I (and other people doing principally custom work) can offer is the ability to tailor a project to a budget (within reason) by explaining what drives cost and letting them make choices based upon what they're looking for in a piece.
At this point, I don't want to turn anybody away with a price that's outside their budget, but I'm also mindful of the adage that "if you have to ask, you can't afford it".
[0] https://www.kevinrodel.com/showroom/item/dining-chair
[1] https://www.core77.com/posts/86153/Should-You-Publish-Your-P...
I've bought a lot of furniture (some custom) on Etsy and people have been surprised by that / think there isn't necessarily high quality work there.
In addition to the larger pieces, if you have work that's easily repeatable you can make a lot with e.g. tissue boxes or cutting boards, etc...
For example this shop made these beautiful boxes with brass inlays and I was able to commission a custom box with dividers for individual tea packets: https://www.etsy.com/shop/SawdustProductionsCo/sold
I've definitely seen quality work on etsy, and I appreciate your perspective as a now former employee.
Congrats on the exciting career change, hope you're staying sane while out in the country!
Any tips would be much appreciated!
For the dust I had a pretty powerful airfilter, but I would still have clouds of dust coming out of my pillow/sheets.
I would have said that general noise during the day was ok in my case, but that was before everybody worked from home.
For chiseling you can actually do a lot without hammering. If your chisels are sharp enough, you can push them through the wood for most techniques. That's what I did when I worked in the evenings.
It helps to have a very heavy workbench that doesn't move too much. Sawing still makes noise though, and planing kinda does too.
All in all, less than ideal, but for me it was great for a while! It really depends on what size and type of things you want to make. Feel free to specify and I can give more details.
I think it makes sense to explore other options as well: renting a garage, finding a community workshop, etc.
That’s good to know you can sometimes get by chiseling without a hammer! At the moment I’m interested in making a Danish Modern style chair, likely in walnut or oak.
If not, use Fesstool tools and one of their dust extractors.
I built a wood bed for my truck in the living room some decades ago. And also a clavichord. Hand tools generate shavings, but little dust.
I have a very good collection of hand tools in a large tool chest. And, I have a very solid, large workbench. Both of these look great in the living room when not in use.
Part of my strategy for keeping dust down is to do as little sanding as possible. I generally try to get a good surface off of a cutting tool (a plane or scraper), and then sand once at the grit I want to end at. Squirrelly grain, or tearout around knots sometimes requires pulling out the sander. Still I try to limit my use of it. If I can spend 5 minutes planing, and 5 minutes sanding, I'm a long way ahead on time compared to spending 5 minutes each sanding at 4 different grits to get the same surface (numbers from thin air, but the principle applies).
Noise is a challenge. You're right that chiseling is not a quiet activity. Anybody who thinks hand tool woodworking is a quiet and contemplative activity should spend a day in a room full of people chopping dovetails and then maybe reconsider their opinion.
All that said, there are a great many woodworkers who work successfully in apartments or other tight confines. Some of them are even married :-)
> I'm going to a commune in Vermont and will deal with no unit of time shorter than a season.
I believe all of the above is public information about the named people.
If I'm honest, I haven't yet read The Soul of a New Machine, but it's on my list. I did pick up House[0], also by Tracy Kidder and read it over the winter holidays a couple of years ago. I'm not sure exactly how I'd sum it up, so I'll leave that to the author, linked below. I've also read excerpts of Among Schoolchildren[1] and can recommend it (at least the parts I've read) as well.
“Look, the cabinet did not break down in my living room. So I’ll ship you the cabinet with the whole living room together.”
I have not read all the way down the over 800 comments, and if you shared kind words or asked a question outside this thread, I apologize if I missed it.
I'm honestly astonished at how much this seems to have resonated with a lot of people. If it's not blindingly apparent by my comment, this was the last thing I expected to see at the top of HN on a Monday morning!
If you're trying to learn woodworking or are interested in learning it, I'd encourage you to do so. We all started somewhere, and for me that was struggling mightily to get a board flat with a hand plane in an evening class. My first dovetails were as rough as anybody's. Whatever you want to build, go ahead and build it. There's room for all kinds of woodworking in the world, fancy and plain alike.
The instagram woodworking community has been a mostly positive space for folks in the field both as hobbyists and professionals. If I can take a moment to veer briefly into politics, it hasn't been universally welcoming to women and people of color. Laura Mays talked about losing followers every time she promoted a show of female woodworkers. This is, frankly, shameful. There is room in this field for anybody who wants to explore it, at whatever level they choose to. Shutting people out because they don't fit our preconceived notions of what a woodworker looks like makes us all poorer.
Lastly, there are really too many people out there sharing excellent woodworking content to hope to name without some omissions. In addition to everybody I've linked or mentioned in other comments, I'd like to add in no particular order William Ng, Richard Macquire, Paul Sellers, woodgears.ca, seejanedrill on youtube, and artofplants on instagram.
I've doubtless omitted any number of other highly worthy people I've stumbled across over the years. I'd encourage everybody to go down the rabbit hole as far as they'd like and discover those people and more.
I am lucky enough to live in TN and have access to some great local woodworkers that give classes, specifically some amazing windsor chair makers.
Good luck with everything, I got a good chuckle out of the GitHub comment.
I am finishing my first piece of furniture today. It's pretty scary to work without an undo button. The physical world isn't just instructions, but movements. A little twitch can ruin a cut. A clumsy movement can dent a piece of wood you spent an hour sanding. You truly experience the meaning of "measure twice, cut once". Resources also feel tangibly limited. You can't just spin up another server, you must drive across town to buy more lumber.
I still enjoy coding though. My passion for it returned once I could do it on my own time, without stakeholders, sprints, meetings, deadlines or even schedules. I sit down and work until the coffee wears off, then go do something else. It's a hobby again.
I don't think programming is the probkem. Anything you do 40 hours a week for other people will get to you just the same. Programming is a pretty sweet gig, all things considered.
From what I've heard from other sources, it's kinda like what people call being a grown up.
But, I also don't want to start a business doing woodworking. The last thing I want are clients yammering for "seven red lines"; this is something I'm doing as a hobby.
I may offer-up a few furniture items on a local for-sale app or a craft show app... but I will try and resist the urge to create a better local craft show app, or a wood inventory/cut-list app, or a simple CAD app, etc.
Okay.... I assume you're not going to talk about this because then you'll have so much competition you won't be able to pay the bills anymore, but do you have any generalized background information about this?
> "This guide contains affiliate links. When you click those links and buy something, I make a little money. The income allows me to work on All About Berlin full time. All my recommendations are genuine. I want to keep this website useful and neutral."
Isn't dropshipping extremely overcrowded since The 4 Hour Work Week popularised it?
Good to hear I was wrong :)
A decent portion of our business used to be dropshipping onto Amazon against others that were doing the exact same thing with the same terms. Margins obviously ended up tiny and the whole thing was at the whims of Amazon. Glad we don’t do that anymore.
Yet, this happens to everyone, including me to a small extent during my last internship. I think everyone can grow tired of anything given enough of it, and I think coming to terms with that is easier for some than others.
I've mentally prepared myself to branch out into different pastimes, and for some reason, it seems we all land on wood working.
Be careful with that table saw...
*in not-so-serious side projects
Sometimes, especially when I read about people leaving this industry to go work in the trades it makes me nostalgic and miss working with my hands and building real things.
But I also have enough bad memories of shitty work conditions and waking up sore day after day to give me a gut check to stay put for a little longer.
> I don't think programming is the probkem. Anything you do 40 hours a week for other people will get to you just the same. Programming is a pretty sweet gig, all things considered.
Turning my hobbies in jobs killed off a lot of fun I used to have. I think it's pretty universal and why it should probably be more common to switch industries a couple times at least through your career to keep things fun and not stay in a burned out mentality forever.
I think what it boils down to is that, generally, software engineers/coders/sysadmins like to build things. When we don't get to build the things we want, the way we want to, it leads to a desire to get into woodworking. It's building things; its success is purely merit-based; and it's building the things that you want to build. I wouldn't recommend anyone go into construction (especially not commercial construction a la Office Space) from coding. It's joy is fleeting and infrequent and it ruins your body.
> Turning my hobbies in jobs killed off a lot of fun I used to have.
Yep. I haven't really worked on any of my hobby projects like I had before.
Thank you. I have nothing else to add. I just needed to read that today.
Isn't that years of education and work to start at the bottom again? If one has a family to support doesn't seem terribly feasible.
I'd like to have another couple careers before I retire. The best part of a career is learning, getting it, then doing something as a journeyman and looking at your work and thinking, 'I got it'.
I want to add to your description and say that the design part of the work can also be hugely satisfying! I found that there is something similar to software engineering: you can make it as simple [1] or complicated as you want, but there is something magical about finding the simplest solution that gets the job done.
Consider posting some photos on the woodworking subreddit if you make something cool!
[1]: a minimalist piece that I'm personally proud of: https://www.juricho.me/zurich-table/
It's really incredible how much tacit knowledge transfer is made possible because of youtube. Definitely one of the purely positive aspects of the platform and the internet in general.
if only software were written that way...
Dents can be somewhat fixed by getting them wet and ironing them.
sawing wood these days too I cannot keep laughing alone in my beard thinking how software people just don't understand how the world used to be and how much had to be designed to work before trying .. there's no way back, or to be precise, every wrong turns costs dearly.
It's also pretty impossible to build a website that pays the bills indefinitely without maintainence or upgrades. If your website becomes popular enough to pay your bills you WILL eventually have competitors, as well as new mediums of technology, and you'll have to constantly keep up to date.
But then I also believe that technical interviews should consist of putting software developers in a woodshop (experienced at woodworking or not) with a bunch of power tools and telling them to build anything they like. Those that still have all their fingers attached we automatically hire. Everybody else we write a glowing reference so they get a job with our competitors.
P.S. This is a joke.
But making those things really well and flawless is so very, very difficult.
For example, I can whip together a new drawer, no problem. But making that drawer fit perfectly on all sides and open and close perfectly smoothly. Now that takes a whole other level of skill.
And don't even get me started on paint and varnish.
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.
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.
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. :)
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.
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 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.
It wouldn't be Hacker News without such ponderous pedantry!
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.
More will be revealed...
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.
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.
Maybe in that case you could call the core product "domain expertise" but it's not how they position themselves
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.
Plenty of choice in my honest opinion.
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...
“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
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 say this as one of those people, and still struggle to phone people when I know it will bring better results :)
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.
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.
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.
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.
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.
> 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).
> I can land in a completely foreign city and get step by step directions to wherever I need to go.
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.
Only if you were born fairly recently.
Crazy times.
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.
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...
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.
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...
(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.
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?
Considering people are already buying Realdolls. I don't doubt it.
> Is this really a "good" development?
Maybe in some niche cases. But I'd say it wouldn't be good considering how damaging porn/sex addiction can be.
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.
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. :-)
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.
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.
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.
> 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.
Why not? Technology has opportunity costs. Usuless "easier" technology makes us slaves to it and to increased infrastructure.
Opportunity costs, diminishing results -- all those are good questions to ask.
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.
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.
> 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.
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...
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
1. People didn’t mind meeting with travel agencies.
2. Actually people hated meeting with travel agencies. Never mind number 1.
3. Automatic head scratchers are a waste of time.
4. Therefore online travel websites are a waste of time.
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.
Everything doesn't have to.
A lot should have, though. Most, if possible.
And the reason is opportunity cost.
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?
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.
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.
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.
Not to knock down all the real progress, but things were fine 20+ years ago as well...
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.
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...)
Neither of those stories were made up...
Never argued that it's better, only that it's simpler.
Hard to tell if it's better since I'm older now. You only get to be a twentysomething on his first trip to Asia once.
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...
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.
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...
In 1997, you were avant garde if you listened to MP3s.
Apparently, Netflix was an online DVD rental operation then, haha.
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.
It's very hard to think of future inventions at large. We are absolutely not done and programming + Computer Science has just started.
Imagine civil engineers giving up their craft in ancient Rome because everything that will ever need engineering has already been engineered.
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.
Where do you live? I would say the same but in under an hour. Is this a little hyperbolic?
"[...]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.
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.
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?
>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.
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.
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).
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.
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.
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.
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.
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
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.
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.
LOL. What a silly comment.
The existence of Dilbert says you're wrong.
So essentially we became figureheads. Our work rarely was used in any significant way or provided much value, but we were kept around because the company wanted to be able to tout its “data driven” culture.
It was so bad that at one company I worked for, they had the data science/analytics department start putting on a yearly intracompany conference on analytics that became a huge deal. One year they got Stephen Levy, the author of Freakonomics, to be the keynote speaker. At one point he shared a story about how he was consulting with a company on their marketing, and they found that they had accidentally not been running ads in a particular metro area, and were able to leverage this to act as a control to assess the materials effectiveness. But when asked to intentionally do something similar moving forward, the company balked. It was so close to home that my colleagues and I wondered if the head of our department had fed him the need to talk about it. And yet, not a single thing changed at the company during my time there.
I currently work in a role much closer to software engineering, and I have all of the same problems described by the person in the original post and that many are describing here. But I consider it a strict upgrade over my time working as a statistician.
The situation in research is exactly as you describe -- we are figureheads who are put into place and highly pressured to confirm whatever hypothesis a PI wants for their latest grant or paper. They would never ask us to commit fraud, only perhaps to "double check" an analysis 10 times until it shows what they want to see.
If I were working for a company, this would at least be understandable, as companies don't even have a theoretical commitment to truth and scientific integrity, and there are no real consequences to a faulty analysis.
But it is immensely galling to see in research. Here we are, paid by the public to supposedly pursue truth and improve human health, and instead the job is to constantly be finding ways to avoid fraud and fabrication without pissing off the collaborator. The result is, as you say, useless analyses if the analyst is honest, and fabrications if they are not.
There is absolutely no doubt in my mind that this is one of the key reasons the ROI on science has declined drastically in the last few decades. It makes me laugh bitterly every time I see (increasingly frequently) political exhortations for plebeians to "trust the science".
Meeting users, finding out about their problems and working out how software can solve them?
In the agile world, the analysts were basically replaced by product owners, but I assume there are still places where they exist. I've done it for a while, it's quite cushy job if you're good at talking, writing, presenting (same as product owner but without the "ownership" part, so much less stress).
Now that is a standout line right there. It perfectly describes some of my own personal projects. Sometimes—oftentimes—they go nowhere but I had fun.
One such task was developing a secret Santa system in python with an auto mailer and “paper” backup while in Hawaii last year. It took me part of a morning during breakfast before we went out for the day. I refined it when we got home. There were others already out there and it did nothing more then putting names in a hat, but it was fun. And it’s reusable. And it had the added benefit of needing no moderator—nobody in on the secret.
The metaphor of a wood working project just seems to fit so well. Nice one.
Oh, and it's real plumbing...
You get to talk worth a bunch of people in sales and still exercise your problem solving skills.
If you're currently on that trajectory (i.e. you're able to save a large percentage of your income every year) then I'd recommend it. If not, then yeah, you might need a second career if you want to get out of development soon. My plan is not to need one.
Hate your job? Maybe it's the job, not the profession. Developers have an enviable amount of mobility; use it.
Maybe you aren't taking care of yourself in some other way? Sleep, diet, exercise, possible clinical depression: these are all things to try.
Perhaps you're burned out? It's 2020, that's a very real possibility. There's a whole literature on what to do about it, and "abandon your career" is dead last.
Both of the preceding paragraphs have a "talk to your boss" component. Don't think that's a good idea? Great, you definitely have the wrong boss, GOTO LABEL "Hate your job?".
Good reasons to stop developing software: a) there's something else you really want to do, and you have rational confidence you won't starve, and b) you're ready and able to retire.
Bad reasons to stop developing software: literally anything else.
Nowadays there seems to be a lot more software engineering skill around generally, and a big yay! to github and Stack overflow, and the thousands of developers who freely provide code/frameworks and knowledge to give all developers a leg-up.
It's good to no longer be in the thrall of the large software vendors (sun/apple/MS) to provide frameworks, tools & documentation.
You can say that about all desk jobs(even bus drivers) since they all sit on a chair the whole day but at least in some cases we get paid better and have more free time to take care of ourselves. And unlike the bus driver, I can leave work or take a coffee/toilet break whenever I want.
And labor jobs that don't require sitting are usually even worse for your body long term(landscaping, plumbing, gardening) and sometimes pay worse as well. If I'm coding, I can constantly shift my body position if it gets uncomfortable while a plumber/gardner is just stuck in that straineous position until the job is done.
Maybe athlete or personal fitness instructor is the only job I can think of where you earn money while staying in shape.
If work was easy then we wouldn't need to be paid for it.
"work" in its natural sense is indistinguishable from play. Animals play as a way to practice "work". Lions etc play hunt. The problem is that "work" in modern times has little to do with what we are genetically-inclined to want to do.
Which, to paraphrase Douglas Adams, has made a lot of people very angry and been widely regarded as a bad move.
Look at the broader job market. Compare the pros n' cons of any career against software development. Compare the barrier to entry, demand, and other market conditions. Software dev comes out pretty well.
Money isn't everything. If you can do a job that pays less but doesn't depress you as much, you probably should go for it. You won't keep your job as a developer forever anyway, age discrimination is very real in the industry.
At the top of the requirements list of any job, is How Well It Pays.
Having comfortable amount of money frees you to to enjoy other aspects of life/personal passion/family building. That's how the global economy works, for the time being.
For a job that doesn't require overtime, consistent schedule, a solid 9-5 type position. What is there to complain? Looking at the big picture, the economy is filled with people who are barely getting by, laid off due to pandemic, and working overtime or multiple jobs, to generate enough income in attempt to sustain life.
If "I no longer build software" doesn't resonate with you, you just haven't "been there". Again, you're probably in your twenties. Don't expect your rationalizations to last you into your forties.
If you're still a developer at the end of your forties, chances are you will lose your job and your spouse anyway.
> That's how the global economy works, for the time being.
Curiously, people in the less affluent countries report being happier. Also, in the US, most of the money you earn goes into someone else's rent: Your lease or mortgage, your car, your insurance, your loans, your taxes, and so on. It's the American Dream!
> Looking at the big picture, the economy is filled with people who are barely getting by, laid off due to pandemic, and working overtime or multiple jobs, to generate enough income in attempt to sustain life.
If you think those are your two options, that's fine. I'm not telling you to quit your job.
Is this not a contradiction to you?
10 years ago we uploaded the server/backend binary to a VM, installed postgres/mysql and configured nginx/haproxy as a reverse proxy/ssl termination.
Now, if you want to deploy a modern SPA while using some buzzwords like k8s and devops you need:
* complex frontend build process with things like webpack which have huge config files
* Build docker images for all components (each microservice, frontend, etc)
* Build zips for deploying your lambda functions
* Configure docker repository for storing images
* gitlab/bbpipelines/githubactions/whatever pipeline configuration for automating all this building
* Setup a production-ready k8s cluster
* Write the kubernetes yaml files for describing your services
* Figure out how to hookup a cloud load balancer to your kubernetes ingress
* Figure out letsencrypt certificate renewal and make your ingress aware
* Figure out CDN configuration (and invalidation) because apparently we don't serve the frontend from the backend server anymore
* Some network config so your lambdas can access the backend
* Since we're using microservices we're going to need some service discovery, and depending on which SD solution we choose we might need to build this into each individual microservice (Consul)
* And probably lots more as I haven't even touched service meshes, or JWT authentication, caching and cache invalidation
You cannot simplify something by adding overly complex layers of abstraction on top of it.
Are they not understanding costs and scaling?
But I think it would be a terrible idea to be reliant on just one server because downtown, latency are real-troubling issues.
There are three overlapping issues in what you talk about:
* Moving from bare metal servers to VMs to containers, with cloud deployment optionally thrown in there somewhere.
* Moving from hand deployment to continuous integration.
* Moving from monolithic applications to microservices.
Lambdas expand infinitely, k8's can easily autoscale stateless docker containers out forever.
All for starting under a 500 dollars a month?
150$ for EKS, lambdas first X million are free, and are cheap as hell from there, cloud LB is 50 bucks a month, etc.
Not to mention all the other benefits that containers provide Infrastructure as Code, no dev environment incompatibility problems, etc..
That is UNHEARD OF historically.
I think you may have some rose colored glasses or I'm just idealistic and naieve, but it's insanely exciting what's possible for a small enterprise nowdays.
The problem nowdays imo is management. The business people have taken over tech instead of tech people running things. And people without knowledge of tech, running a tech shop always makes the job suck.
But that doesn't mean it's creative. Plumbing, like web development, may have all of these complexities and constraints, but typically there is really only one solution that can be considered "right" and your job is to go through the steps and do the math to find it, there's not a lot of room for creative thinking, despite the complexity of the problem.
Then there are people who work on compilers, image recognition, AI, browsers, server work of all kinds, etc etc. the variety, depth, and scale of work is much larger than web and can pay better as it can require a deeper level of expertise. I’m sure there exist web developers who make more than people who work in these spaces just as the converse is true. I don’t think it’s possible to say which pays more. Web dev may be an easier avenue to break into things with a low amount of experience though.
Compiler/AI work and the rest exists where I live as well but it's strictly in academia, not in private companies and has a high barrier of entry as it's mostly PhDs or post-docs and is also paid poorly.
Web dev work you can find in pretty much any major city in the world.
For example, in a city nearby to me there's a major VR/AR headset company which I'm pretty sure solves really interesting problems. The issue is, what happens when you want to change jobs but want to stay in the same city as that city has no VR/AR hub so there's no other demand for specialists in this specific niche.
Genuinely curious as I'm open to a move.
If you look around a bit, as an in-demand (meaning - chasing the latest tech fads, maybe some tech lead experience as well) senior backend developer, you can get take home 250,000 PLN per year on a long-term (meaning usually multiple years) contract basis. Assuming 60,000 PLN of that goes to living expenses, it takes less than 16 years to save up the required 3m PLN to retire. And, if you're really hot in terms of CV, you can take home much more than 250k per year. Also, there are options to contract in Western Europe or get six figure remote US job (this one's harder than the other options) for more pay.
Also, I myself happen to make over 400k net PLN per year, but I didn't want to use myself as an example, as I only know a handful of people who make that much - so it's perhaps not something you 100% can count, whereas the 250k per year number is absolutely attainable by any senior dev with reasonable/modern CV and good negotiating/job hopping skills.
I have worked on mobile OS, PC software development, web, machine learning problems, and now VR. I’m not particularly worried about getting pigeonholed because any company I’d want to work for can recognize the value of a generalist - I’m not going to solve hard domain-specific problems but I can architect the SW and plug all the pieces together and dive into domain-specific problems when necessary. To be fair though I’ve heard this concern from other people who want to move back to Europe, but the framing was different - how do I explain to them what I do in a recognizable manner.
However some places are 10, sometimes 20 years behind into best practices, be that in coding, tools, PM practices, innovation, etc.
There's a reason a lot of mobile phone companies closed down (as an example).
As much as I like the area I don't miss staring at a hodge-podge of C/C++ code done in weird style that might or might not have been auto generated and will as many memory bugs as possible.
Not sure if I would make more doing webdev, but am not in US so it would be normal middle-class income anyway.
My team's responsibilities include configuration management, fault management, and certain KPI monitoring. We don't need to write webapps for that (though we do integrate with them) :)
I got burned out badly by a string of gigs that effectively came down to helping clients fight some self-inflicted business complexity and connecting yet another stupid website to yet another stupid database, but instead of quitting the industry I decided to slowly fire clients that wanted that kind of work, and build my own products. It took a while to get things rolling since I did this as a gradual shift, and financed it by doing smaller and smaller consulting gigs, but I strongly recommend that as an alternative to quitting altogether to anyone who feels the pain outlined in the the original post.
For me, immersive coding is an activity that brings a lot of joy. Building software is the closest thing to modern magic - you turn ideas, keyboard clicks and caffeine into something that people actually use; potentially making a positive impact on someone's life/work/day.
By building my own stuff, at my own pace, I rediscovered the joy of coding. As much as it was in pre-2000 work and before web.
If you build your own stuff, then there's nobody to tell you to connect a RSS feed to a RDBMS system. For me, the key to keep programming enjoyable is to be able to control the pace and business requirements. In my case, this translated to focusing on business-to-consumer products at a very low cost to the consumer, so I'm in charge of the product, not the customers. With B2B, especially at a high single customer price, people feel entitled to ask for stupid shit, and whoever manages the product feels compelled to accept it. With low average lifetime customer value, saying no is very easy. I assume that's not the only way to keep full control of the product, but it worked for me.
The web is an application development platform that's split into two pieces with a critical security boundary in the middle, which causes basically all of its problems because every web app has to be a distributed system. If you can constrain what you want to build to either a set of pages and forms or a single client-server app that sits in a sandbox and uses the browser as its display buffer, that makes it manageable.
The default (and indeed only) language for the web not enforcing type safety is also a handicap. People will eventually build a shell inside it where compile time type safety can be mostly enforced.
On the other hand, the alternative is worse: a proprietary platform which shifts unpredictably and from which the owner can ban you.
I'm not sure that's the only alternative. I would actually describe the web as shifting, unpredictable at the behest of one company with the controlling browser and search engine.
Linux might "shifts unpredictably" too (looking at you Gnome ;) but at least the owner can't ban you.
True, a lot of that could just be the change in scenery. But I really appreciate that just about everything about the platform exists in order to create software, rather than trying to jump through the bizarre hoops that browsers created. Not dealing with Webpack is an absolute god send.
But with all that said, I think wasm has the potential to bring us sanity again. And if not wasm, then possibly tools like Rome will make web dev a bit more sane at least.
I've wanted one-way data flow (React, Elm) forever.
We just have rose colored glasses because we were younger, dabbling, all tech was new and non-web tech was just what was available. And we confuse that for some sort of obvious tech superiority. I'd say those were the worst times for application development, not the best. Makes me wonder how many people actually worked on a production client application back then.
How is that different from MVC patterns in desktop development?
The platform that the web was designed on (NeXTSTEP) was much nicer to develop on. VB programmers had a much easier time than web development now. The web was designed as a document delivery platform and it continues to show how hard it is to get basic functionality going.
Now I feel like I'm always spinning my wheels. Even worse, I'm more capable of learning and understanding than ever, but the amount I need to know is increasing faster than my abilities to learn it.
It doesn't stop me from moving forward (it hasn't yet) but there are those occasional days...
A lot of people just starting out don't see this immediately and it is often too late in a project when it appears. This isn't their fault, and it's sad people outside of the field don't recognize this at all. I think it puts a lot of undo stress on new people when non-developers expect them to build things effortlessly and quickly all the time and when something doesn't work, the developers ultimately blame themselves, because they've been led to believe it was easy too.
Sure, one doesn't have to be able to write an operating system from scratch and there is value in high level libraries not requiring to reinvent the wheel all the time, but basic understanding of HTTP or such should be there for web developers as well as basic understanding of data structures or algorithms (while computers are fast enough and data sets small enough that so many people get away without knowing for quite some time)
Yes. 1 monitor running the editor full screen, no constant interruptions from IM, documentation in books that actually was accurate, programming the actual machine not piecing together other people’s crapware libraries.
This is my biggest concern about the state of my profession. It might not be the right analogy, but it gives me a house-of-cards type vibe.
Frankly the tools really sucked back then. Build systems and IDEs were awful. Just go play with an autotools-based C project sometime to remind/education yourself. Visual Studio 7, horrible. No mainstream refactoring IDEs to speak of. C++ compilers across multiple platforms were horrible at standards compliance consistency, and you could barely get a working STL, practically everyone wrote their own string and containers classes. CORBA -- some nice ideas, bad in practice. Java was a dumpster fire of EJB/J2EE heavyweight, with slow an d expensive application servers. Expensive Oracle installs dominated the database world, with the rest shored up by MySQL installs that were only partially ACID. No CSS HTML, pre-HTML5 so a mess of nested tables to make things lay out properly. Most sites were a pile of spaghetti code "type 1" JSPs or ASPs or really bad PHP sites making database calls and queries right in the page source, horrible to maintain.
Then the serving or hardware infrastructure, in the world of web stuff... forget about cloud or even reasonably priced hosting services. Most shops, even small ones, I worked at ended up having their own sysadmin team managing an owned or rented fleet of expensive Sun server hardware, etc. Closets full of hot and pricey hardware etc.
And as for languages... I learned Python in 95 or 96, back when it was pretty new. But almost no shop would have considered hiring me to work in it. Erlang, Python, OCaml, various Lisps, Smalltalk, all that good stuff all _existed_ but pretty much nobody would ever consider letting you write production code in such "weird stuff" until Ruby kinda broke the barrier. Perl was everywhere, but "serious" shops started to push Java, but Java was frankly awful back then around 2000. As I allude to above C++ was painful to work in at the time. C# didn't really exist yet. Visual Basic was all over the place, but was frowned on for "serious" stuff.
I think people forget how dominant and awful "enterprise" development is/was. It's still out there, but HN in general doesn't seem as exposed to it. Back in the late 90s, early 2000s, the accepted "enterprise" stack was the aspirational crap _so_ many shops adopted... it was for that time what "microservices" and "bigdata" other dogma are today. People didn't need it, but they thought they did.
Frankly, everything took longer to get done. Simple things are quicker to get done now.
Nah, it wasn't a particularly good time to be doing software dev.
I guess if you were employed in the right place, and were lucky, you would at least get to work on pioneering work building the tools and infrastructure that we now take for granted and complain about. Being at a Google building Bigtable etc. or Sun Microsystems working on the innards of Java etc. back then would have been a dream job. But the vast majority of us never got that chance. We were plumbers, too, just with really crappy pipes.
Funny you should mention autotools. It reminds me a lot of webpack, especially in the way nobody[0] really understands how it works, but you search around for examples and copy/paste what works for you.
[0] a hyperbole; i'm sure someone does, just as I'm sure some people dreamt of M4 macros back in the day
It wasn't autotools per se that was horrible. It was the the fact that you had to pollute your system with random libraries, often no longer available from the operating system vendor repositories. Docker has been a lifesaver with these older projects.
Web dev was especially insane during the IE era, more than today.
Most people just hate their jobs, it's nothing unique to the tech sector and i would argue that tech is still a pretty comfortable niche to work in compared to most other fields.
Doctors have extreme debt and work crazy hours, teachers get way too little, manual labor is very tough on the body, journalism is dead etc. - it seems to me that everyone i know just "has a hard time" because of information-overload, 24/7 connection, lowered real wages etc. I.e systemic issues at the core.
That said i also want to get more zen, cut back, transition to more resilience - but tech is not uniquely bad, and while i also have dreams about transitioning to more entrepreneurial roles or "moving into nature" - i still can enjoy "the chaos" of modern development / design - and this really is the key i think: to accept the mess, the imperfection, that no one knows what the hell they are doing in most sectors.
Drop the fake self imposed yuppie consumer self policing and perfectionism mindset and just accept that we live in a crazy part of history where everything is obsolete after 5 minutes, so just do what you find acceptable, try to scrape some money together and remember to appreciate the fact that at least you are in a sector where it's pretty easy to be an entrepreneur if you want to - compared to a lot of other people who have no idea about how to get started or jump ship.
Years ago if everything went awry i would stress out, be afraid of angry clients, be angry at myself - today i relax, i am interested and laugh at the complexity, and if someones angry i don't care, the world is crazy, we are monkeys living in a world not made for our biology, it's future tech dystopia/utopia right now, no one is able to piece something together that works for a long time anyway, it's mostly not my fault, but i still try to do my best. This mindset has helped more than a lot.
Teachers have guaranteed job, good income and many benefits. Salaries are usually set nationally not adjusted per location, it's not great to live in the most expensive tech hub but it's pretty good everywhere else in the country.
You have no competition from abroad and no shortage for demand, like seriously, do you know any area that's lacking sick people?
Not to mention status.
If you google "being doctor sucks", you will find very similar complaints (see link below), and it seems some doctors were envious of nurses, but I didn't bother googling "being a nurse sucks" because I know what to expect.
https://www.google.com/search?q=being+doctor+sucks&oq=being+...
and here is another one about being carpenter sucks http://www.bbcboards.net/showthread.php?t=828471
and this one is about how hard is it make money from woodworking https://thewoodwhisperer.com/articles/why-i-dont-offer-woodw...
here is an interesting take away from that last thread:
"I have built maybe 6 pieces I really liked in the past 10yrs. Thats someting you’ll face in any craft business. Making crap you don’t like."
Well, welcome to modern capitalism, adulthood and work. The underlying assumption here is life supposed to be fun and easy, it is not, it has never been and perhaps it will never be.
Internet comment sections have always biased toward people who hate their jobs, are unhappy with their lives, or are otherwise trying to escape into virtual distractions.
Not everyone fits this description, of course, but the negative comments are over represented relative to what the general population thinks. Never interpret any internet comment section as representative of the norm.
Growing up, my internet commenting activity was highest when I was least happy with my jobs. It was lowest or even non existent when I loved my job. (Currently I enjoy my job, but I have 10-20 minute periods of time to kill on my phone daily for other reasons now).
Also, don’t forget that HN comments are heavily biased toward cynical interpretations.
> Drop the fake self imposed yuppie consumer self policing and perfectionism mindset and just accept that we live in a crazy part of history where everything is obsolete after 5 minutes, so just do what you find acceptable, try to scrape some money together and remember to appreciate the fact that at least you are in a sector where it's pretty easy to be an entrepreneur if you want to
If you hate work, becoming an entrepreneur is the last thing you want to do. Dealing with grumpy customers directly will only make things worse.
The majority of people I meet in the real world have no problems separating their personal identity from their home life and well being. For some reasons developers are particularly bad at mixing their work and their personal identity while chasing perfectionism. I assume it’s because we grew up in front of computers and many of us spend our leisure time on computers as well.
Even the smallest bit of separation of work and personal life can fix this. In other words, learn how to disconnect from technology and do literally anything else for a few hours per week. We don’t need to go all in on quitting the industry to get a break.
I miss excitement, enthusiasm and humor - and yeah the world may be plummeting into tech dystopia and climate collapse but throughout time aid workers, firefighters, war time doctors and myriads of other people have kept their humor, interest and skills despite chaos around them and so should i.
About the entrepreneurship, yeah i agree but i still think "knowing how the internet works", how to make a website and how to learn by yourself is still a pretty good "extra skill" you get to have as a tech worker than can easily work as a stepping stone into new fields.
- Most of the teams were not using SCM, but connecting to the same network drive and daily copying the whole folder as a backup. For those who did it was CVS (ugh). Even during the 2000's the best you got was SVN.
- So many Visual Basic projects
- For web projects: deploy by copying the files with FTP, getting shouted by a colleague because you override the hotfix he did using SSH and VI on the production file
Now there were good projects back in the day, and there are good projects today. You just have to take control of your career and not just follow the flow of the first company who hired you in your area.
Also remember that you can pivot within software development, there are so many different kind of software, you just have to accept to get out of your comfort zone.
Music was not better back then, people were not any more polite, educated and rational, and trying to fix bug in some big-ball-of-mud visual basic codebase on a 640x480 screen without access to Google was not any more enjoyable than debugging an overdesigned React application is today.
If you enjoy a challenge and have a great team in a well-run organization, developing is enjoyable, then and now.
That said, I've done a lot of other things over my career, and one reason it's stayed interesting is the variety. If I wanted a change right now I'd probably look at small embedded systems work.
With all the AI, IOT, scientific, real time control, and robotics software being developed these days, I think there are a lot of interesting directions available!
I'll add a shameless plug for Julia, which I think could become a major general purpose programming language, and which makes for some enjoyable development!
(On the "best use of one's body", I have some sympathy there, but "balance in all things". Or just up your rates and work 32 hour weeks. heh)
Building software was never simple or easy. We've gained a lot of knowledge that makes it easier because you don't have to build quite as much from scratch, but we've more than made up for that by making it unnecessarily hard in every other way. Taking the simplest change from idea to production involves so many steps, and not even the steps that assure it's correct or maintainable. It's feeding the beast we built ourselves rather than the one born of necessity.
I sincerely feel bad for people who have to stay in it. Some day most of you will get over the dollar-induced Stockholm Syndrome that seems universal among junior developers, but by then you'll be stuck on that train to hell. Good luck to you.
I think it’s gotten a whole lot simpler in the past 10 years. People used to have to rack their own hardware, install PDUs, check temperature gauges, plug wires, configure the switches, setup RAID and backups, make sure you have that serial cable plugged in so you can telnet in in case the switches don’t work, and lock the data center doors without forgetting their keys back in the day. And this is before actually developing and deploying your application software.
Now you can just buy a bunch of db cycles and scale to >10000 qps without batting an eye (though you’ve got to watch your wallet).
I think because some of the hard stuff got a lot easier, the easier stuff got unnecessarily complex. And there are so many ways to scale things that some of these constructs and idioms used over time stopped being used because they mattered less if you could just turn a knob to scale your crappy code.
Yes, and other people did this job, not programmers. People that loved tinkering with hardware, low-level OS stuff, networking, etc. We even had a name for them: "system administrators" and "network administrators".
Nowadays everyone's expected to tweak CSS and configure kubernetes in parallel.
So when my job title switched away from programmer to some kind of DevOps thing and I was shoved back into the sys admin role, I was unhappy about it.
Trouble is they tended to be interesting but poorly paid jobs
What you describe is what used to be considered sysadmin work. I too did quite a bit of it, but most of it went to people who specialized in those things. And no, I don't do any of it now. On any given day I'll probably deal with machines in at least a dozen geographic locations across two continents, and if I tried to enter any of them I'd be stopped at the door - no, at the gate before I even got to the buildings. Instead, I write code to interact with the deployment system and the provisioning system and the multiple monitoring systems and the automatic remediation system and so on. Is it better? It scales better, but as a matter of personal satisfaction and avoiding fury at other people's crappy code I think I'd rather be plugging in cables and configuring switches.
> I think because some of the hard stuff got a lot easier, the easier stuff got unnecessarily complex.
There's a lot of truth to that, and I don't think we necessarily disagree on the outcome. However we got here, whichever specific things make modern software development more unpleasant, it seems that it is more unpleasant than it used to be.
But yeah it's like over time we ended up scaling the crappiness of software along with the software itself. At the same time, I'm inclined to believe that software development at large is in a much better position to solve a whole bunch of other problems than ever before. That keeps me motivated personally, though I get the frustrations for sure.
Kids in their rooms still do write the next big things. The difference now is they now raise a ton of money along with it. They scale a whole lot further, and much faster. There are more entering the engineering profession through Lambda School and bootcamps and what not. They also leave around a lot of shitty code that usually ends up building some business value. Much of this was true back in the day. It's just gained a whole lot more momentum IMHO.
But ...
I used to code for fun in my spare time and more recently I'm finding myself working on "shop" projects. I sold my pocket-cruiser (a small yacht) and I'm building a couple of small wooden boats. I have a '71 Saab Sonnett III I'm in the process of restoring and a '71 VW Karman Ghia that's next on the list. I thoroughly endorse the idea of doing something with your hands - it's so much more satisfying than sitting in front of the TV.
Also, the whole industry has been strongly commercialized. Before, people would share source code on the internet just for the fun of it. Nowadays, that is a surefire way for someone else to take your source code and sell it as theirs. I mean that's basically what Cloud providers do. They rent out access to open source software.
The insane pressure of money also makes sure that most software nowadays is not build to any reasonable engineering standard, even when it really should be (like Boeing MCAS). Instead, every piece of software nowadays is optimized for the sweet spot between sucking so bad that nobody buys it and not spending a penny more than what is necessary.
The goal of software development has changed, and I think $1 phone apps nicely illustrate the new commercial landscape. It's the bare minimum quality at the bare minimum price.
BTW, on a related note, most bicycles made in 2000 still had a much more stable frame than the 2020 models. The marked switched from costly steel to cheaper aluminum so that you can make $300 supermarket bikes. And obviously, the quality has suffered.
It appears that in general, there's always a race to the lowest possible quality in the hopes of reducing costs, thereby increasing profits. Does anyone have any suggestion how we could reverse this trend in general?
Thee $300 supermarket bike (I have one and put over 40 miles on it weekly and it's help up fine for four years) provides access to folks who otherwise can't afford the fancy $1,500 aluminium/carbon machines. Fancy bikes are still getting made and even getting better.
Newly rich kid or VC funded startups distributes money from wealthy people to an every growing software industry. It allows people like me to work in software; something that was previously only available to elite educated people who happened to live in the correct zip code.
tl;dr: The pie has increased in size and become much more inclusive. Yes, there is a lot of low-quality pie out there. But there is also plenty of high-quality pie for those who can afford it. This is good for everyone except the very elite entrenched class.
I'm very grateful to be in this industry despite not having the "correct" background.
You have a very solid extremely valid counter point and I think the person you're responding too created a false dichomtomy.
Cheaper does not eliminate the quality. They can both co-exist and indeed do.
The lower tier just opens the door for a group of people who never had access before.
Thank you for your input.
> Cheaper does not eliminate the quality. They can both co-exist and indeed do.
It sometimes does, if it eliminates quality out of the market. Say a quality frame costed $500 before; then you have a new, cheaper technology that can achieve similar performance by cutting out more extreme loads / road conditions; as manufacturers jump at it to save money, suddenly the whole $100-$800 range uses just that, and the quality frame rises to $1500 due to collapsing demand. Can't say whether it's good or bad on the whole, but it annoys the hell out of me in cases where I could afford the quality product but I can't, because nobody is making it anymore.
Instead of middle range products you get low tier and high tier products and those absorb their different shares of the market from the middle.
This type of extreme seems to happen in all facets of human society over time including jobs, housing, cars, etc..
The middle becomes pushed out.
That's been a big issue for a long time.
Alot of access is given to people who previously had no access but the middle is somewhat eliminated.
A working culture tuned to movement of a minority of capital “haves” isn’t much different mathematically than a monarchy and his lords and barons, etc.
There’s a gentler temperament, but “work the jobs we will pay for, while deflating your buying power to maintain historical human narratives” isn’t exactly fostering free flow of capital, labor, and ideas.
If you don't like rich kids, don't work for them.
I was shocked that a LOT of startup founders are well-connected rich kids who have no skills or ability to lead a tech company. I learned that, while saying that you have a huge trust fund isn't very cool, saying that you're a tech entrepreneur CEO is perceived as cool. So the rich family uses their connections to raise a few million (often indirectly) and suddenly the kid is an "entrepreneur", despite lacking any relevant skill sets. It's not like there's any expectation for these companies to make a profit anyway.
Yes, you can avoid these companies, but it's worth warning younger engineers that this is maybe 50% of tech startups. It's more of a problem with NYC based companies than SF based companies (as NYC has more old money and less emphasis on tech companies actually building real tech) but I've seen it in both cities.
If you were to look back at the early 1900s, or even 1980s, its much better today than back then
While I agree with your point that hobby startups distribute money and enlarge the market, I was trying to point out that people working under management with no experience will probably not learn their craft well. In my opinion, the old apprentice system used for jobs like becoming a carpenter would be quite appropriate for software engineers. But it only works if there are enough master level programmers around to teach everyone else.
As for the pie analogy, I don't share your opinion. When the market moves towards lower quality, that usually makes high quality more expensive or even outright impossible to acquire. Case in point, I'm not aware of any bicycle that is rated for 200kg+ for driver and luggage. Not only are there no cheap bikes at that stability level, but also nothing in the $2000+ premium range. So something that used to be easy to buy for everyday folks 20 years ago is now too expensive even for rich people. And all that only to drive the price of the cheapest bikes down from $500 to $300, which I presume won't make much difference to anyone because a good bike will last you 10 years, so it's <$1 monthly in either case.
Not only will it easily take that weight, it's designed to comfortably carry a passenger and cargo. Or the Yuba Mundo, there are a few other brands. And you can get them in electric, if your thighs aren't made of steel cable.
Yuba Mundo is $1800, which sounds like a lot, but with inflation that's well under a grand at the time when more bikes were heavy and over-engineered. With the nice side effect that they could carry a lot of weight....
Like, I could make the exact same complaint except I'd situate it about 10 years earlier, around the first dot-com explosion.
And somewhat earlier than that, I remember grizzled programmers from the 1980s who hand-tuned their C and assembly and who thought we were flagrantly wasting computer resources on garbage platforms like the web.
(However, bringing it back to the 2010s and beyond, you're right that open source development has been completely co-opted.)
The purpose of a lot of software is to make software, not to solve problems.
Desktop development is the Once And Future King of computer functionality and personal productivity.
I'm 20 years behind you, and I don't know what effect that will have on my views. But I don't really recognise the picture you're painting. Compared to the first steps I took as a developer about 15 years ago, almost everything about software development seems better to me. I find developing software to be easier, more consistent, and less frustrating than it used to be. Good development practices—things like testing, CI, coding standards and so on—seem more prevalent than they used to be. It's easier to get code out to production than it ever was. Everything in the ecosystem—like tooling, libraries, and services—feel far more open, consistent, and accessible than they used to.
I am almost certain that on the whole I spend a far greater proportion of my time now actually writing code that does interesting things, as opposed to code that hacks together some junk to try and make it work with other junk.
I think I'd draw the conclusion that everybody's opinion on how the industry works is going to be heavily influenced by their individual experiences. Maybe I just enjoy software right now because I've now got the technical competence and confidence to avoid some of the frustrations that I experienced earlier in my career, and in another 20 years I'll be right there with you lamenting the state of the industry. Who knows?
The joy is in programming, not in software engineering. At least that's how I interprete the GitHub comment (and all these stories about developers that cannot take it any more and burn out).
Ultimately, we get paid to solve business problems, not to have fun with programming.
In many technical interviews, they want to talk about "scalability", using fancy big data software for horizontal scalability etc
But I also know from experience that many, many of these problems would be more elegantly solved by more traditional tools like Postgres, especially since servers have gotten more powerful, the cloud service options more plentiful and reliable, and the software more optimized. The "scalable" approach can lead to massive amounts of wasted person hours unless you're sure you really need it. But if you say, "just use RDS or CloudSQL, or maybe BigQuery", you get perceived as a newb by the 24 year old who just got his MS doing Spark work on toy problems.
Today's 'process' is no more efficient than, say, deploying rails to heroku in 2007. And even before that, you'd spend half a day writing an automatic deployment script, and then deployments would take a couple of clicks and you'd never think about it again.
> Maybe I just enjoy software right now because I've now got the technical competence and confidence to avoid some of the frustrations that I experienced earlier
Just as some but not all of my (mostly negative) perception is surely personal, might I suggest that some but not all of your (mostly positive) perception is not? Perhaps the industry really has improved in some areas that you care about during that interval. Yay! OTOH, that doesn't necessarily put your perception and mine in opposition. There are other areas and other intervals, and other priorities as well. It's great that your experience has been positive. I hope it remains so.
I'm very much aware of how bad some parts of the industry can be (particularly having recently dipped my toe into some machine learning work and discovered an entire sub-field in which nobody has ever heard of documentation, testing, coding standards, or things like releasing software that actually works).
Programming has become joyless.
There are ever-shrinking spaces where a developer gets to build something novel - something that's state of the art, that's creative, that taxes their intellect and brings the pleasure of achievement forth. It seems that for every developer working on rocket guidance systems or self-driving cars there are a hundred toiling away on yet another CRUD app, or wrestling with a hydra of microservices. It pays well, but fun it is not.
I think it might be possible to say that relative to the entire industry the space for novel or interesting work is shrinking – possibly. But I don't think that actually means there's less interesting stuff to work on. If anything, the spaces for that are growing – maybe more routine work is growing faster, but I can't really say. I'd wager that the majority of software for its entire history has been pretty boring.
There's a big gap between software craftsmanship and the algorithmic trivia interview expectations nowadays, and it seems to keep widening.
The people interested in doing cutting edge work will find a way to be there no matter what. The vast majority of people overestimate themselves.
But it pays for nothing. I make more money as a street musician than with my open source projects that have more than 100k users. But I got paid a lot for improving some online gambling site. This is how it is.
Total Compensation = Salary + Benefits + Intangibles
Those Intangibles can be things like working environment or commute, but they can also include your affinity for the organization’s mission. People are willing to take smaller salaries when they’re working on something they love & respect. It takes more money to convince people to work on boring or undesirable things. It’s the exception to be paid well for something you like.
work that I actualy care about is difficult to get paid for
building there is a creative process and it pays better than big tech
The onchain codebases arent that big because they cant be.
I suspect a nontrivial number of programmers in that field will find themselves making license plates or exploring harbors with concrete shoes a few years from now.
And the programmers have easily translatable skills, so nice try at making a point but it doesn’t make sense when there is a real conversation to have
But you werent actually here to debate the differences in how that could affect programmers in that industry vs other industries
Your preconceptions are a random incoherent mixture of things that are oddly excusing bad actors or bad companies by ignoring them and conflating it with blaming a specialized skillset or sector
You could have kept all that in your head because this was clearly a copypasta rebuttal prepared for any conversation about crypto
“The best minds of my generation are thinking about how to make people click ads.” –Jeff Hammerbacher
Every paying software job I've ever had was in some way involved getting people to click on ads. Either directly making a product where ad click rate is a measured metric, or products that helped people make products where clicking on ads was a metric...
I have usually been able to find a lot of joy in solving the problems in the smaller areas where I was focused, but whenever I took a step back and looked at what I was helping work towards it felt very meaningless.
I think finding a job today where you feel like the work you do does genuine good for the world is an incredibly rare and difficult thing...
I've been in the biz for coming up on 25 years and I've never tried to make anyone click on an ad.
It also may help to downgrade "doing genuine good" from "solving the world's biggest problem once and for all" to "helping people get food reliably" or "keeping this industrial process that provides value to thousands of people going" and so on. Sometimes I do lose a bit of track of what I'm doing, but in the end the jobs I've worked still end up helping people do useful things, or protecting people, not making them click on ads.
There's a lot of jobs in programming that don't involve making them click on ads. Even in the heart of Silicon Valley, there's going to be a lot of jobs that don't boil down to that.
But you may have to, you know, change jobs.
But I don't want to hate my job. I don't always love my current job... as I like to say, they're paying us precisely because this isn't what we'd be doing of our own free will... but I don't want to hate it.
Because it's more than just the hating the job. It's coming home every day to your family in a bad mood. It's your children associating you coming home with the guy in the bad mood coming home. It's being on hair trigger all the time despite your best efforts. It's living in a place I don't want to live.
The funny thing is, I look at that and I don't feel like I should be willing to pay $300,000/year for that... but apparently I am.
"The best minds that I know are thinking about how to make people click ads."
There is a considerable number of exceedingly intelligent people in pure mathematics and (theoretical) physics that don't work for Google, Facebook etc. and never would. Those that do often have nothing to do with Ads even three to four edges removed (think Martinis or the people at MSR).
Most corporations in the US that are for profit aren't about doing good, they're about making money, and publicly held corporations are even legally encouraged by US law to put the shareholders' bottom line first and foremost.
Non profits can care a lot more, but they generally (at least the ones that exist not) don't focus on something abstract like software, they generally serve an immediate need like affordable housing or surplus food distribution or job training.
Until the business climate in the US changes, about all anyone can do if they want a job where work actually helps people is either work somewhere they get paid enough to use surplus cash to help people or work for a non profit.
I think an idea that hasn't really been tried yet is building a non profit for software... not fitting a non profit base to an existing package, but building a corporation that is made to produce software for the public good.
Mozilla? Unfortunately, they weren't successful at creating new things of value (with maybe Rust being the exception).
I'm a happy low level systems developer. I solve hard and interesting problems that have nothing to do with ads.
Maybe you think banks are just as bad as advertisers but I tell myself I am enabling the tens of millions of Americans who have retirement accounts. The day-to-day is enjoyable nonetheless.
Banks as in consumer banks? Maybe not. Commercial banks, brokerages, hedge funds? Welp. I admit that some of those have made my imminent retirement possible, but from a broader view I don't see much good about how large the US financial sector is compared to the overall economy or the preferential treatment they get from our government.
> I tell myself I am enabling the tens of millions of Americans who have retirement accounts.
I'm sure many at Facebook would say they're enabling small businesses and non-profits directly through advertising, and many more "little people" through the platform(s) that those ad dollars pay for. They're also enabling some very unsavory people and behaviors, as are most in fintech. Read the news lately? ;) Everyone likes to dump on ad-funded businesses. I've done so myself. It's not entirely unjustified, but sometimes it seems disproportionate and even hypocritical.
Interesting point you make: there is definitely selection bias going on because of this, but I've honestly never thought about it that way before!
They're not really though. Ads may be the revenue stream but it's not like the top engineers at Google were on ads. They were building the search engine.
If you meant to say that Google's top engineers _used to_ work on the search engine but nowadays they work on making people click on ads because that's were the money is, then I wholeheartedly agree with you
People that hate ads love that quote because they like using it to lambast the tech industry (in general, and advertising in particular), even though only a small percentage of engineers or other tech industry employees work on ads.
People in the ad space love that premise. You know what's worse than that premise? Admitting to themselves that they're not the best minds of their generation and they're still stuck doing work trying to figure out how to optimize ad clicking - the worst combination. At least they get to pretend they're the best minds of their generation, if they buy into the quote, that's a consolation prize.
The best minds are largely not working in advertising (maybe a small share of them are). They're figuring out how to leverage CRISPR to cure and prevent disease, or trying to figure out a therapy for Alzheimer's disease, or working on immunotherapy. They're the kind of minds that were working at Pharmasset figuring out how to save tens of millions of lives by curing hepatitis C. They're designing and building the next generation of semiconductors at ARM, Apple, TSMC, Samsung or Nvidia, pushing against the boundaries of what's physically possible. They're working on electric cars at Tesla or VW. They're trying to solve our battery problems. They're launching rockets at SpaceX or Rocket Lab. They're designing the next airplanes for Airbus. They're at NASA, ESA, JAXA, CNSA, heading to the Moon and Mars, or working on James Webb, figuring out if Venus contains life, and so on. They're designing the next generation of nuclear reactors, ITER or maybe working at LHC. They're working at Illumina, Boston Dynamics, Intuitive Surgical. They're in national and university labs all over the world, trying to solve very hard problems on a daily basis. They're even working on hypersonic weapons, military drones and designing nukes. And that's not meant to exclude the rest of this giant world, as the world is filled with examples.
This is interesting, thanks for sharing that.
Of the nine organizations that have paid me to write software since 1993, only one of them would fit in your criteria.
Note: I am in no way doubting your claim, and I actually appreciate your perspective and the quote you cited.
I will more deeply consider that when categorizing companies in my mind going forward.
That's an amazing fact.
May I ask how old you are?
I've been designing SOCs, DSPs, Control Systems and a lot of software for various systems since 1985, and I can only recall one that might have been close to "clicking on ads" (it was a personalized "on hold" system for dial-in to major retailers (like JCP), to replace Muzak with offers and information and stuff). I was the VOIP-to-Enterprise-Telecom integration guy, so not directly tied to the ad-part, but the company pushed couponing to their clients pretty hard.
Everyone thinks they are productive but value is being burned all day, every day in most companies all over the world. The level of reuse is depressing and people, especially here, firmly believe we need to use the latest frontend and backend crap to rebuild what was working perfectly fine before.
More and more everything appears resume driven and to extract more hours billed or even higher LoC or commits per day. It is a nightmare and I refuse to play more and more. The over architecting for shit one off projects burning 10000$s a month ‘in the cloud’ so it probably, maybe it won’t crash with the 5 users per day it has using it.
Yes the tooling is better but the drive to use every latest tool and tech really makes no sense for almost any project.
Fitting anecdote; a company from LA was contracted to build a crud app for a big corp; they used react, typescript, node, express, aws, aws lambda, redis, dynamo and rds. For a crud app. They got $50k for it. For a crud app. Costs were through the roof running it as you need actual good people to run it. It failed a lot of times for such a setup as it was all the latest of the latest architecting wise. Brittle as hell even with all the tests and resume driven busywork. I rewrote it 1 php + bootstrap and jquery file in 1 day with a perl script to migrate the data and running on a 1.99$/mo server. Cheap, easy and no worries; handles a lot of traffic for the cost of a cup of coffee, does not need devops and they paid $2k for it to me. This is not the only story; microservices + serverless + the cloud really are excellent for making money, but as you say, no fun and in my experience, no benefit. Just added complexity.
It only looks like reinventing the wheel every time if you're completely ignorant of the subtle differences of each problem domain. And if you make a bunch of changes to create arbitrary lego bricks then now everyone has to learn your brick framework before they can make an 8x2 brick.
That's a good seam upon which to filet this analogy. A quick Google search turns up uncertainty as to how many different bricks there are. It could be in the 3000s, 6800s, or over 12000. We are all ignorant of the available lego blocks.
The authentication thingy you got as lego block did not quite fit and now you are using more code than the module has in it to add what you need for it to do, making the original module probably impossible to upgrade without a lot of work and creating a problem for maintenance. Now you can fix this by telling your client; ok, I won’t do this because your idea of auth is wrong. But then the client might kick me out (probably not a bad plan if they are doing trivial things significantly different than the rest of the world). I can just implement it like I mentioned above and make money maintaining it (risking having also to maintain the original lib). Or I can just make a new lib and for which I know it does what it was.
Then, my favourite option, is just take something that just works already, deploy that and adapt a few people their habits around it. It fits 95%, stop whining. The least popular option ofcourse, so there we are, creating slightly different wheels with millions of almost the same LoC and unused andor unmanaged libs that should not have been written or used, again, imho.
There are sometimes edge cases that are not possible to implement, but they are rarer and rarer as the service portfolio grows. In those cases the only option is to write your own container and deal with the usual package-level dependency issues in whatever programming language you use.
( * ) The only thing that doesn't work forever is Node.js, which is deprecated every few years and needs to be upgraded to a new major version. I'm looking forward to the possibility of WebAssembly/Deno replacing Node.js as an "evergreen" application platform.
Kubernetes sucks when managers need it.
Same thing is happening with mechanics. Young mechanics repairing parts less often, more handing off parts in need of minor repair to specialists and a focus on fitting parts.
And yet now OP is making wood furniture, which has been made before the same thousands of times. Some people need originality some don't. Some just like the work for its-own sake. For those who need originality they should find a job working on something that's not a CRUD app. Not everything is a CRUD app. That's on them.
Not sure how it fits wood furniture; you cannot copy a chair in a nanosecond; you can software. I am not saying there is no space or need for bespoke and unique software but if you are doing LoB apps for/in a big corp, as many of us do daily, chances are there is a) a perfectly fine version already running in your corp somewhere and b) a completely identical product in all the companies around the block.
You and I have very different experience with big corps :)
My experience is closer to "There's a half-finished version running somewhere that was cut short because of budget/deadline constraints. The team that worked on it is long gone, and it has been maintained by an outsourced team of junior resources for 3 years".
Re-writing a customer-facing system to be closer to the "modern" web experience they're used to on their everyday apps and sites _can_ make a substantial difference to customer experience, and ultimately the bottom line.
In fairness, if your web app does more than CRUD, or if you expect it will in the future, then PHP and jQuery wouldn't be my first choice. I'm very familiar with how much of a mess an app can become when pursued that way -- a nasty soup of callbacks and conflicting states. As tooling around React improves -- and it's already quite good -- it will be easier to cost-effectively write a React CRUD site.
If you just want a CRUD site that works, and you want it fast, a Rails site with scaffolding will probably give that to you in an hour or two -- with almost the whole hour being spent thinking about your data model.
I recently worked for an org that had quite a large software suite (internal system) that was 99% CRUD. For every single CRUD operation, there was a front-end call, to a back-end service, that called a specific stored procedure. So pretty much 4 stored procedures for any construct stored in the database. No ORM, very little dynamic building of queries, thousands of database tables. Releases were a nightmare, change management for database objects is its own complexity, especially with so many objects. I think people were open to change, but with a decade of existing data structures+data, and a long list of projects, nobody wanted to make a change...
My one regret, with respect to that org, is not driving the necessary change.
This seems overly cynical to me; the reason software developers are well-paid (overpaid, some would argue) is that what they build is measurably better that what was there before (at least in dollar terms. I'm not getting into the moral quagmire of automation replacing human jobs ATM)
Code reuse is often a red herring, when taken to extremes. Here's a thought experiment: all software developers are now required to implement all CRUD software in SAP or Peoplesoft (pick one). How much of the code do you think will be re-used, and how much will be in the customizations?
Can you imagine what the medical field would be like if the majority of general practitioners started complaining about the fact that they don't get to work in neurology research?
Every time I hear this quote, I remember all the small businesses and ventures that only exist because of Instagram, Facebook and Google Ads. Housewives baking cakes, a leatherworker making custom backpacks, a blacksmith restoring antique knives - those are just personal friends of mine who wouldn't be able to build their businesses if not for what those brightest minds of our generation are doing.
Is all of this really worthless to you?
(Copied over my recent comment on this exact topic, I hope it's OK with the mods).
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.https://exanderproject.com/spoiler-test/
The other thing that stuck me, as I was doing this, was how much the Javascript ecosystem has improved over the last 10-15 years. It was possible to do this in a very small amount of code with no dependencies precisely because of the all the bells and whistles that have been added to Javascript over the years. Maybe this isn't so obvious to someone who has been neck deep in Javascript for 15 years, but as someone who has been mainly in other languages, it was a very noticeable and dramatic improvement. The web platform is way, way nicer to develop for now than it used to be when I first got started.
Now I'm trying to figure out what other small projects I can get involved with.
Over the next year or two I hope to develop a mobile app.
After 15+ years of big messy corporate server programming I think this might be the place joy is hiding.
I accept that I will probably not make the money I have made gluing clouds together the past couple years. But maybe I can make something useful that people like to use.
If you mean this is better, I hardly agree with you:
https://twitter.com/thomasfuchs/status/810885087214637057?la...
But yes – I do think React is a pretty good approach to UIs compared with many things I've used in the past. There are good and interesting discussions to be had about the different possible techniques that can be used; this isn't an entry into one of them.
Separating the HTML, JS, and CSS is an approach that works up to a certain size/complexity app. When I’m working on some functionality, I need to be able to understand the relevant parts of the HTML, JS, and CSS. With a smaller app, one person can more or less grok the code base well enough to find everything they need. With simpler apps, you might have fairly uniform or boring styling and not a ton of CSS rules. If I’m setting something up with Bootstrap and just getting it working, I can probably ignore CSS for a LONG time.
If you’re working on something larger and more complicated, you really want to have all of the HTML, JS, and CSS for a particular piece of functionality right in the same place so you don’t have to go searching for it. It’s how you survive in large/complex apps. You’ll think, “The margins in this box are too large” and you want to be able to fix that without trying to grok some massive set of CSS rules, and when you do get the CSS rules that you want, you want to know that they’ll be delivered to the client—something that is easy if you deliver all of your CSS rules to every client, but hard if you want to split your CSS.
I think the only real tragedy here is that too many people are copying “the way Facebook does it” without wondering if Facebook might have a completely different set of priorities than they do.
I think you work for a better company than me :)
There were few and brief moments in my career as a software developer when I was truly happy at my work. Most of those involved implementing an architecture or algorithm I figured out from scratch, or took from scientific literature - either as prototype or directly in the product. Sometimes as "hold my beer, I got this" moments. But as you can imagine, this is maybe 1% of the things I've been doing at various jobs.
From where I sit (a backend developer, thoroughly burned out by webdev a couple years ago), most of coding I do is software bureaucracy. Turn this data into that data, ensuring module X and Y get paged in the process. Oh, half of the code I'm about to write is implemented elsewhere - quick, figure out how to juggle the dependency graph to somehow route control from here to there and back. This data I want to convert is not of the right colour - oh, I need to pass it through three sets of conversion layers to get back essentially the same, but with a correct type tag on it. Etc.
It's utterly and mind-numbingly boring, unless you architectured the whole codebase yourself, at which point it's somewhat fun because it's your codebase, and who doesn't like their own Rube Goldberg machines?
At this point, I've learned a coping strategy: just forget the project scope and focus on your little plot of land. Doesn't matter that the software I wrote half of is going to help people do exciting stuff with industrial robots. What matters is that the customer changed some small and irrelevant piece of requirements for the 5th time, and I now have to route some data from the front to the back, through the other half of the code, written by my co-worker (a fine coder, btw.). So a bunch of layers of code bureaucracy I'm not familiar with, and discovering which feels like learning how to fill tax forms in a foreign country. If I start thinking about the industrial robots I'll just get depressed, so instead I focus on making the best jump through legacy code possible, so that I impress myself and my code reviewer (and hopefully make the 6th time I'm visiting this pit easier on everyone).
Maybe it's a problem of perceptions. Like in the modern military - you join because you think you'll get to fly a helicopter and shoot shoulder-mounted rockets for daily exercise. You get there and you realize it's just hard physical work, a bit of mental abuse, and a lot of doing nothing useful in particular (at least until you advance high enough or quit). And so I started coding, dreaming I'll be lording over pixels on the screens, animating machine golems, and helping rockets reach their desired orbits. Instead, I'm spending endless days pushing people to simplify the architecture, so that I can shove my data through four levels of indirection instead of six (and get the software to run 10x faster in the process), and all that to rearrange some data on the screen that really should've been just given away to people on an Excel sheet with a page of instructions attached.
(Another thing that annoys me: a lot of software I've seen, and some I've worked on, could've been better and more ergonomic as an Excel sheet with bunch of macros, and the whole reason they're a separate product instead is to silo in the data, the algorithm, and to prevent the users from being too clever with it. Also because you can't get VC funding for an Excel sheet (unless you're Palisade).)
Got a bit ranty here, sorry. I guess my point is: I accept the industry is mostly drudgework, but I refuse to accept that this is all essential complexity. Somehow, somewhere, we got off track, because all this shit is way harder than it should be.
Love that. Yes, the 1% (of which I've been a part) often get to control both the structure and rate of change for a large codebase, and in perfecting the fit to themselves they almost inevitably make the experience worse for everyone else.
And yet accepting that, I still can't shake the feeling that things are more complex than they should be. That also applies to the code I'm writing myself (which is immune from the "rewrite because I could do it better" urge)!
I no longer code outside of work though & found a happy balance of learning on the job with my productivity. I find the amount I do get to spend coding also has gone down - a lot of my time is spent mentoring, in meetings, writing planning docs, and just thinking about projects, or occasionally researching what’s the best paradigm for my problem. I am ok with this, as I am taking more joy in being a leader than directly coding necessarily. I recognize not everyone shares the same perspective though.
The end goal of software I work on is to help airplanes land safely. But actually, I work on the software which presents the user interface that displays and sends configuration settings to a device on the ground that helps achieve that.
So my day to day is figuring out whether two bytes in a serial buffer an ad hoc protocol are actually transposed, or if the comments are in 20 year old code are lying about which is which. Or trying to figure out whether a Win32 font setting command from two decades ago is still interpreted the same on Windows 10.
The rabbit holes and yak shaving just go on and on. I have it in me to enjoy doing the work, but when I think about how many steps I am removed from the actual airplanes and I feel badly for filling my brain and my workday with trivia.
Yeah, I also initially felt this is some kind of failing (I'm usually the "big picture guy"), but ended up accepting this as a coping mechanism. It's not that I forget about the purpose completely - just learned to think about it more when planning and designing, where the wider perspective also affects the task in a meaningful way. When deep in the codebase, I try to put it aside, so that I don't get in a depressive session of thinking "why do I have to shovel this garbage back and forth to satisfy some low-level requirement, instead of, I don't know, talking to people who'll use this on-site and getting some real feedback from them?". Rationally, I know that shoving garbage is an important part of getting quality software that helps others do exciting things. Emotionally, I just wish I was in their shoes (probably just as much as they wish they were in mine).
You seem a bit more positive than me when facing this reality, so I'm glad you have it in you to enjoy this. I almost have it, so I find ways to cope, and enjoy the opportunities to do something less mundane that come every now and then in such projects.
I do it as well; I think organizationally it's a failure, but it is an effective personal coping mechanism. In other words, it's bad for the organization that their codebase isn't really a melting pot of different developers' ideas but instead, if you zoom in enough you notice that it's really a series of hundreds of small fiefdoms each with their own slightly different customs and semantics. This is what creates that software bureaucracy.
For employees though, it works. It's about the only way that I really derive any sense of satisfaction from software engineering. When I can stand back and say yes, this package is mine, I made it and I will take care of it. With the melting pot packages it feels more ambivalent; some portion of the code is mine. Probably not the clever bits, they're probably bugfixes. So I don't have enough mindshare to get satisfaction from achievement, I don't have the satisfaction of at least solving one of the hard problems. No, those people have come and gone, and I'm left with the shale oil of satisfaction: fixing bugs, writing unit tests, and adding documentation. Like shale oil, the joy it brings is very close to the effort it takes to extract it. This isn't the "I accidentally hit an oil vein while digging a garden" joy of really getting to solve something.
Some people derive a lot of joy from doing things that help others (like unit tests, bug fixes and documentation); I'm unfortunately not one of them. Sometimes I wonder if it isn't at least partially because it's so hard to feel the impact. I know HN hates the idea of gameification, but I wonder if it couldn't be applied to good effect here. If someone could make an integration with CI, and with major editors, we could scrape data regarding how many times your unit tests have caught bugs, and how many times your function/class documentation has been viewed. There could be a leaderboard for people that are into that. But for me, just the raw numbers is enough. "Unit tests you have written have exposed 137 bugs in PRs, and documentation you have written has been viewed 138,476 times" would be a huge motivator. It gives me that warm and fuzzy "I actually productively contributed" feeling. Right now I get nothing back; I have no idea if anyone has ever read the documentation I spent hours writing, or if my unit tests have caught any issues.
I get what your are saying and you are getting a lot of positive reinforcement about this. I would suggest to you a caveat.
I've worked in some orgs where this mentality becomes entrenched. In these new-fangled tech startups with people changing roles and even companies every two years this probably happens less. But I've seen people entrenched into their own kingdoms for decades. An individual, or small team, creates a moat around their "little plot of land" and they become intransigent. This leads to two bad outcomes: they resist any change to their systems or process, going so far as to obfuscate it to protect it. They also don't pay attention to holistic concerns, caring only about maintaining some idyllic vision for their own "plot of land" to the detriment of any larger objectives.
I think this is a real concern when divisions within a larger org compartmentalize around code or system boundaries. It is not something to shrug off as if it couldn't happen to you.
Honestly, I've used an unfortunate turn of phrase in my original comment. "Your little plot of land" indeed implies a fixed, entrenched moat. What I meant was something different - the area of code I'm currently working on. That may be a different place with every new task. My coping mechanism isn't building little kingdoms - just focusing on the code a given task involves while purposefully forgetting about the global context of the application, in order to not think about how minuscule and irrelevant the task is to the exciting things the company is doing. That context is usually not useful when doing the changes I've already planned beforehand, and it is emotionally distracting.
Me too. And all I can do is point at Javascript in webpages. Which, as a Java dev (if I can still call myself that 15 years into doing all sorts of other stuff too), I want nothing to do with but somehow get dragged into all the time.
I can really relate with the idea that we're feeding the beast we built rather than the one borne of necessity. Unfortunately, which I'm sure the latter still exists, it's the former that always seems to pay the bills.
I think it's amazing to see CICD tools which make it super easy and quick to deploy web apps-- such as Vercel, for example.
Simply by booting up a github project, and starting from a template, I can deploy a SSL-secured site within minutes-- as a frontend example.
On the backend, using infrastructure-as-code solutions, to again, "templatize" a starting point, such as an AWS service or set of connected AWS services.
Whereas up until recently, I'd typically go rent a chunk of a server to run Linux, and setup NGINX-related security features myself. Not that tough, especially the more I learned NGINX. However the 3-click deployment via tools like Vercel take away so much headache. That said, at times, I think it's can be necessary and easier to simply setup a linux server, so as to have full control over the process.
It's just nice to have the additional options.
I love how much the software-supporting ecosystem has evolved.
It lets me focus more on development, and less on devops. And that what I want, as a developer-- To get to coding ASAP, and not worry about tangential concerns-- as a matter of specializing.
(Disclaimer: I only have about 2-3 years of professional experience, but prior to that, was teaching myself for about 5 years off and on. In that timespan of 7-8 years, I feel so assured and emotionally secure given the reduction of headaches due to the fact that I no longer have to learn so much ecosystem related stuff, and can focus more on programming)
From my journey on the chart, things have only gotten better since the time I crashed a C++ compiler just because I was using std::map.
For me, tools, including languages, do matter. I can well imagine that programming in Java would be soul-deadening (although Java is still better than some languages of the past).
Incidentally, I am not dunking on languages of the past. Lisp has been around for a long time, as has Smalltalk or Haskell or ML. Many of those languages were not accessible to anyone without a mainframe or expensive workstation. This situation has improved greatly in the past decades, which to me is another reason to prefer coding today versus the past.
Obviously, most of us are not able to cherry-pick our toolset for work. We use whatever our employer says to use, or whatever the demands of our project require. This may be part of why many people find coding to be an uninspiring experience. Also, the problems that people work on might be dull, it's hard to get motivated about a basically tedious problem.
Last, it's worth acknowledging that some people just don't love coding all that much. It's hard to imagine doing really well at something you don't deeply enjoy day in and day out. And your passion can change over time: you might really enjoy something in one part of your life, and not derive much joy from it at another part.
All true points.
As an individual developer, if you are working on what you want to be working, we are in a great time. You can pick from a selection of outstanding tools and we have, for all practical purposes, access to infinite hardware.
As a developer that's part of a team... it sucks. Expectations are getting ever more unrealistic - probably because so many things are quickly done, but other things are just as slow or even slower. Most people's jobs consist of wiring together 150 libraries across 30 'microservices' (which are rarely microservices, but often distributed monoliths) and that's after spending a lot of time bikeshedding on what the tech stack is supposed to be like.
At least the UML craze seems to have died down.
Supportability, risk-mitigation, debuggability, etc. are all thrown away in most of today's environments. An awful lot of tech companies are running mostly on hope.
We aren't working hard because we just want money. We want to save up enough money so that we can retire at 55 and stop working. Then we can start spending all our time complaining that the software industry is going in the wrong direction.
Because in any other industry, the effort:earnings ration isn't nearly as good, so we'd have to work into our 60s before we could do that.
If that's what anyone takes away from my jeremiad, then I actually think that's pretty great. Except ... why not 45? Maybe if more people could use software development as a quick route to something else that created more personal satisfaction and/or social value, that would actually be a good outcome. A bit more "it's just a job" and a bit less "it's my holy calling" is a necessary ingredient in that formula.
For myself, I simply wanted to be free from financial worries and financially independent. I hit that at 35, and yes, I'll probably be able to retire by 45, but I'm a bit too frugal for my own good. For someone living a more 'balanced' lifestyle I think 50 or 55 is a fine goal.
On the engineering side we’ve fully embraced the ephemeral, disposable nature of code, which tends to run counter to business needs which may require hastily constructed code hack jobs to stick around indefinitely. Really makes taking pride in workmanship impossible. You’re allowed to feel good about what your company is doing, but if you feel good about your code then perhaps you’re indulging yourself on company time and could be more productive... so you end up feeling guilty about doing good work.
I also think over the last 20 years there’s been a concentrated movement to remove technical expertise from the product design process. Engineers are present to provide estimates and gauge feasibility, but aren’t granted much leeway beyond that. Decades ago, you needed dev skill to actively shape technical projects since there wasn’t even that much user-level experience with computers and technology to make judgements.
This loss of balance tends to mean software is driven forward almost exclusively by either new features or redesigns. Technical enhancements are rare, unless they exist to support existing features. Nobody wants to spend a few sprints on "Make this thing feel 30% faster" or "Deal with our memory usage issues in these cases" until it reaches crisis levels or customers complain. So you get bigger, bloated software that runs slowly because nobody is authorized to make anything faster or use less resources until a product market position is threatened because of such technical deficiencies.... although sometimes the answer by product leadership to such problems can be even more features.
This quote from Built to Last is going to stick with me for a while: "... many people don’t even see the preference for complex languages for what it is: an attempt to protect one’s status by favoring tools that gate-keep rather than those that assist newcomers."
I'm not leaving the industry any time soon. At least in the abstract, I do like what I do for a living, and believe that there are still some habitable spaces left in the field of informatics. But there's a part of me that is beginning to wonder if the best and most comprehensive literary (sort of) analogy for modern software engineering culture isn't the Orks from Warhammer 40,000.
It's never about the code. It's about getting the job done, and the code is just a tool for getting it done. And getting the job done is ultimately about domain expertise, or design skill, or engineering acumen, or any number of more abstract skills. When developers get all protectionist about complex technical tooling instead of focusing on perfecting their ability to get the actual job done, that's a moral own goal. It doesn't challenge the idea that developer skills are inherently low-value and replaceable, it takes the idea as a given, and asks, "OK, since we're inherently low-value and replaceable, how can we artificially make it harder to replace us?"
Me, I don't want to respond to the idea that I'm just a code monkey by trying to be the fanciest code monkey imaginable. I don't want to be a code monkey in the first place.
Don't forget the ones who jump onto a new language or framework so that by dint of experience they can be the gatekeepers for the next generation. This was staggeringly apparent with both Java and Go, each in their time.
I learn new languages for technical development and to stay curious and fresh. You learn new languages for job security. They want to gatekeep the next generation.
> the last thing many male computer scientists entering the field wanted was to make the field easier to enter or code easier to read, which might undermine their claims to professional and “scientific” expertise.
> Take the C programming language: it was created in 1972, but as one of the current COBOL programmers I interviewed pointed out, nobody makes fun of it or calls it an “old dead language”
> There’s an old joke among programmers: “If it was hard to write, it should be hard to read.”
> it’s perhaps no wonder that a committee-designed language meant to be easier to learn and use
And, of course, the quote from the comment to which I'm replying:
> many people don’t even see the preference for complex languages for what it is: an attempt to protect one’s status by favoring tools that gate-keep rather than those that assist newcomers.
If any of these quotes even resembles something you _might_ think about this field, maybe you'll get something out of reading the whole article. Personally, these quotes are so backwards to me that the author could just as well have written "Programmers can breathe under water" or "grass is the cornerstone of a well balanced diet".
Last year I wrote a small book called "Splash of Code", which teaches newcomers to code (in JavaScript) in a way that similar to the way I learned 30 years ago. I selected JavaScript because the barrier to entry is low, you just need a browser. Many programming ecosystems are daunting to setup these days but there are still some easy systems we can use to introduce newcomers without all the modern complexity.
Browsers have come a very long way in the last 10 years and are a pretty amazing platform for development. Once you learn a little bit you can start to write amazing software for a cross-platform worldwide audience.
I started my career as a software engineer with web development in the 90's. Everything seemed simpler. Literally.
Then, fast forward to 2020. I'll cite you an example of what happened EXACTLY yesterday. I have a web application which is complete and ready to be deployed. It's a backoffice application for one of our e-commerce sites. It's built using Phoenix, so there is a separate assets folder which contains a webpack config and its own package.json as well. The frontend updates require me to update the assets manifest as well. So, we've setup CI for it to automatically do that for each deploy. So, as usual, it simply runs npm install, but, suddenly, everything broke. Remember, this was fine until our previous deploy. It was some weird error from node about not being able to do something with Babel. I had to spend about almost an hour to figure out it was coming from some other package that was making use of Babel. (If you're interested the error is this one[1])). OK fine, we upgraded the babel version as indicated in that issue thread. However, it wasn't compatible with some other package on the OS we were running on. So, now I had to downgrade the entire node version itself to something we knew that worked.
We lost a good amount of engineering time simply because of this unwanted complexity. Remember, all I wanted to do was JUST deploy. Our backend code was perfectly fine. Just for one new added feature, we had to pay a price with our time. This is hardly an exception, this is becoming in the norm.
Junior engineer: thinks they know everything
Intermediate engineer: thinks they know nothing
Senior engineer: hates computers
- The arbitrary deadlines that serve no purpose. Example: we have to update our app every week/month because reasons.
- The utter lack of understanding of the concept of feature completeness. Example: operating systems that update every year for no good reason whatsoever. What's the point of updating from Mojave to Catalina as a user? What new does it bring? How does it empower the user in a way not before possible? No one knows because it does not. It merely moves things around for the sake of change.
- No one wants to understand what they're abstracting away. People keep piling abstractions upon abstractions yet can't answer the basic questions about how their operating system works at low level.
- Fashion. A lot of it. Basically, if you're doing Android, you MUST want Kotlin and Jetpack and Compose. Same for web — SSR is soooo 2010, gotta make that news website a single-page application because how come would we not use React. IMO, fashion has no place in engineering.
- This "we'll always be able to ship an update" attitude. This is the worst. No one wants to make high-quality software any more, they want to move fast and break stuff at the expense of the end-user sanity. I can't understand how this way of thinking came to exist tbh.
- Business incentives. They ruin everything, but it's especially felt in software engineering.
- Priorities in general. No one is considering what they're making a tool to help the user achieve something. They're making these monstrosities that always put their own interests before those of the user. Dark patterns, purposely inconvenient and awkward UIs, spammy notifications that don't correspond to real events, you name it. In my book, that's not the way to go.
No matter how visionary, proficient, and user-respecting you are as a developer, if you aren't complicit in earning all the money in the world at all costs, you're gonna get replaced by someone else who is.
There are plenty of small companies chasing a dream other than total economic world domination. Obviously if you look at Facebook etc that's all you're going to see.
Also, good luck running a business, any business of any size, without caring about money. Once you're responsible for the the livelihood of your employees and yourself (and maybe even SO and your progeny) your perspective changes radically.
That is until they are pressured to "grow" by their investors that they do have more often than not.
> Also, good luck running a business, any business of any size, without caring about money.
I've worked at a company that was alive and well without chasing profits. It did a bare minimum of monetization to cover its expenses and get a little extra, and that was it. Users were happy, we were happy too. Then the investors decided they've had enough of it, sold their shares to others and those forced the CEO to leave. It was then acquired by a big corporation. I quit in around two years after that when I realized there's no going back and it's only going to get worse over time. It took a lot of effort to make myself go to HR and tell them I'm resigning. I still miss the spirit that was there when I joined. And I'm not sure there are any more companies like this, especially in 2020.
Another point you are missing is that not all companies work that way either. Many people start their own business with their own money and don't have to answer to investors. Look outside of tech: restaurants, design studios, stores, etc.
Yes and you will eventually get it back if your company turns profit — any profit. That doesn't in any way imply growth at all costs which is what the world is obsessed with today because stocks. Practically, it doesn't make much sense to earn hundreds or even thousands times more money than what you spend, yet most companies do just that. It ends up laying idle on bank accounts, not benefitting the end users and society at large in any way.
> Would you be happy giving your money away?
Yes if that meant making the world better.
> Many people start their own business with their own money and don't have to answer to investors. Look outside of tech: restaurants, design studios, stores, etc.
And those usually respect their users/clients.
Truly? Or do you mean you feel bad for people who still have to work for a living? Because if you still have to work for a living I can think of 9000 jobs that suck more than working on software. Btw, I'm turning 60 next month and have been doing this for a living since about 1992, before that I did lots of other things, so I have several points of comparison.
I think it's worth mentioning that I'm 27 and almost 4 years into my career in software. I am convinced I have the best job of any of my friends, or just about anyone I meet at my age. I make more money and work less hours than >95% of my (all college-educated) friend circle. I don't feel stressed at work ever. My team supports me, my manager encourages me to expand my skillset to whatever interests me.
My career trajectory is looking phenomenal, and I find software development generally fun & rewarding (although certainly not all the time!).
But who knows, maybe that will all change by the time I'm 55 and I'll hate that I spend my career in software dev. Seems unlikely.
Startups became about flipping crud apps that try to get users addicted to them.
There are still cool and honest jobs out there! Work in a space you care about and have fun, filter out anything with VC money or FAANG. Usually older companies can be more rewarding from a career perspective, you also get to work in bigger projects with more responsibilities as well as you aren’t competing against 50k’s of software engineers to climb the ladder.
Asking for a friend.
Honestly it’s easier now to do things like that than 15 years ago when I first started.
Well, I think the big question is, are you /developing/ or /hacking/? Hacking is fun, developing is a job. Hacking is in a language and stack that's probably a bit unstable, that most shops wouldn't let you use in production. Developing is writing code at about 30% of your ability to express yourself, to avoid someone half-reading your code later from misinterpreting it.
Sometimes you can intermix the two to make the job better. Sometimes not.
Me, I'm about to turn 50, and I don't see being able to retire until... well, ever at this point.
I might change careers some time, but I doubt I'll entirely give up on software. Maybe just do it for fun.
A couple recommended talks about this subject.
Preventing the Collapse of Civilization: https://www.youtube.com/watch?v=pW-SOdj4Kkk
The Thirty Million Line Problem: https://www.youtube.com/watch?v=kZRE7HIO3vk
But I've always enjoyed tinkering on non-productive personal projects more. Exponentially so. I'm with you on most of the things sucking in software development.
I spend so much time on shit. Politics, presentations to justify spending 0.000001% of our budget on things I need, convincing others that maybe we should leverage well established best practices, not even controversial or cutting edge kind, but the actual ones people everywhere use, rather than re-inventing the wheel every time.
Right now I'm expected to inventory our software catalog, again, because someone doesn't want to get that information from the place we are using to already document it.
And it's only Monday. This week will be long, so very long.
However if you're really burnt out, and still want to exercise your skill, take a break and give open source software a try! I'm still having fun building http://www.oilshell.org/ after many years.
If you're building it for yourself, open source software can be fun, and it should have the side effect of being useful to some others as well.
I'm not saying that it's the way to spend the least time at the computer :) I'm saying it is a way to avoid being burnt out.
If you are building something for yourself, and others incidentally get some use out of it, you'll be less likely to burnt out than killing yourself for a deadline made-up by a VP. And then the whole project gets through away, and no customer ever cared about it. I've seen that a lot.
-----
Related story: Many years ago I got burnt out by my job, and I took a woodworking class at night (lol, definitely a programmer thing). It was great, and I'm typing on top of a desk I made in that class right now.
However I bought a bunch of magazines about woodworking, and I noticed that everyone had 8 or 9 fingers, so I didn't go further with it :) The thing that the OP pointed out is real!
It shocks me, just how often OOP is just not nearly the best approach to something. I certainly still lack in experience though. But why use OOP for something like putting data from a sensor onto a bus? And stuff like that.
I'm in my 50s, and I've been getting paid to build software for over 27 years now, and started programming on a near daily basis on a TRS-80 in the 1970s.
Please don't feel sorry for me. I still very much enjoy building software.
I won't necessarily disagree with the particular challenges you cite.
The total complexity is enormous now, but the tools and abstractions, which themselves have variable quality, and bring their own complexities, are tremendously powerful, and, though it often doesn't feel like it, effective.
Beyond the specifics, I acknowledge that 'the industry' has evolved in many ways and directions, not all of which are positive.
I face non-technical challenges today that, had I known about them 30 years ago, would have probably caused me to switch careers.
So, I acknowledge what you're saying, and to it I will only add this: each of us exerts a great deal of control over how we perceive the world around us. It's possible that the difference in the way you and I 'grade' the software industry is that I am, for no knowable or particular reason, more fundamentally optimistic about things than you. It's also possible that, primarily for reasons beyond our control, I've ended up working in more positive organizations.
To other people reading this far: two specific anecdotes about how the software industry has changed over three decades provides very little concrete indication for how your personal experiences are likely to go.
Whenever I get burned out on software (in my case, Vue and React) -- and build complexity -- I always remind myself of those TRS-80 days. The only learning references around were the books for sale by the TRS80's -- a couple books on TRS80 graphics, Rodney Zak's 'Z80 Assembly Language', and William Borden's Z80 books. And of course the Tandy version of Zork in the little plastic baggie hanging from a wall hook beside 'Eliza' and 'Dancing Demon' -- and then the wall of brown folders of 'Scripsit' and 'VisiCalc' on TRSDOS 1.3 (?). Maybe the editor/assembler at the time, too -- 'EDTASM'. Don't remember if that was in a baggie on the wall hook or in a Tandy brown TrapperKeeper with the cassette insert and several tapes.
Those were great days -- and everything (for me, at least) was new and exciting. Nothing was ever too daunting or too complex -- even as daunting (and as complex) as Z80 assembly seemed to me -- a 13 year old at the time.
That's a feeling I always try to recapture in very deliberate ways these days. It's good remember how it all started.
Complexity is daunting today. I believe, however, that the power available far outweighs the total difficulties.
I am still inspired by the basic possibilities that most anybody can, with nothing but access to a computer and the Internet, write some javascript and html in a simple editor and make it available to most everyone in the world.
Objectively speaking, that's simple and approachable, far more so than anything I ever did or was aware of.
A computer contains practically infinite possibilities, and people who lose interest in that are really just lacking creativity, and maybe some cognitive ability.
I don't only program though, I am creative in other ways and I build many things that have nothing to do with computers, but I do often incorporate programming into these creative pursuits, because it sometimes pushes the project to the "next level".
If someone only writes "glue code" then yeah, that will get boring. There are so many other kinds of programming though, that many never even explore. 3D is a whole entire interesting field that is far removed from "glue code". Home automation is one of my latest obsessions. The list goes on and on.
I'd love to hear a couple of examples if you have a few moments. (:
This seems a really sheltered perspective without a real idea of the kinda struggles that exist for a lot of other careers. Not unlike some doctor/lawyer/scientist/executive talking about the profession as a "train to hell" because it doesn't satisfy some sense of technical purity.
Before building software, I was stuck in dead-end sales jobs with a humanities degree that had no career prospects. Switching to software development has required a great deal of sacrifice, and I'm genuinely thankful every day I get to write code for a living I'm thankful.
- I'm thankful I can get paid well enough to live comfortably.
- I'm thankful I work in clean, climate-controlled offices.
- I'm thankful for a profession full of interesting people to work with.
- I'm thankful I can engage my mind and excercise a certain amount of creativity in my work.
I really hope 55 year old me can remember to be thankful.
It may not be perfect, but man is it better than what so many people do.
I obviously am at a different place than you but I don't think everyone who enjoys the work has Stockholm Syndrome and needs to be pitied. Some of us honestly enjoy it and I plan on working as long as possible as I really like the external supply of ideas to create.
Though had my carrier taken a different path than it did I can easily see being as burnt out as you. I worked briefly at a large enterprise company (not software makers, think greek sneakers) which was so terrible.. if that sort of job was my only option I wouldn't have lasted a decade in this business. That place was seriously depressing.
I don't think I've ever worked a day in my life.
Well, not strictly true, I've had several jobs that start out with interesting problems to solve and then became "it's another CRUD app." I quickly left those jobs to find other work.
I'm not cheap but then I'm not well compensated. I don't make FANGMAN income, but I am financially comfortable. I've found joy every day in my work, even if there are many days where the work in utter frustration, by simply seeking out the kind of work that makes me happy. With an interesting problem I will work all the hours my mind and body can muster. With a 9-to-5 "what's the point/what am I learning/this has been done eefore" regular work-a-day job there is no amount of money on this green Earth that could get me to focus or be happy. Well okay, there would be a certain amount, at which point, after 12 months, I'd quit, take the money and go do a different job that pays less but is more interesting.
This course of action isn't for everyone, not everyone has the privilege of saying "F* it! I'm out." when they are doing something they don't find joy in. I've just made sure that I never put myself in a position where I couldn't choose that course of action. The road has been hard some days, and money has been tight more often than I want to recall, and I won't die a wealthy man, but I will have had adventures along the way that keep me still striving to build software every day.
Footnote: My job last year consisted of writing kernel drivers to speed up SSDs. My job at the beginning of this year was control a radio controlled car from your cellphone. Then I built a dashboard for my home that tracks my phones and my cats and the weather. My job, right now, consists of building a stupid simple app (with a lot of screens and moving parts) on a mobile device that talks to OpenWRT to put a pretty and simplified user interface on what is a complex piece of software. I've never had to build a mobile app that tries to simplify a complex router interface before. It is a learning experience. But once I've learned that lesson, I won't be building another one. I'll go find something else to do.
Life is what you make it.
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.
My broader family is almost entirely working class though, so maybe it's just a matter of perspective.
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.
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.
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.
Just curious: is this income 100% passive?
The draw to these seemingly not-so-adjacent fields is strong.
Or was there some kind of restriction on taking it at your school? Or maybe your parents didn't let you?
Genuinely curious as to why someone with a professed interest would not have taken shop?
Lots of schools don't have the classes though, probably mostly because of funding.
This was the last year before the school reform. They ended that program. In fact they ended shop class altogether.
Largely we had to choose -- take the college prep classes (AP whatever, languages) OR trades classes. There was definitely classism -- "trade classes are for poor kids". =(
I would much rather schools require things like: financial literacy, and building/repairs/cooking. They are lifelong skills and very useful. There's no reason its an either or proposition.
But it irks me to this day that the language I opted for, Latin, was dropped that annus, because not enough others signed up.
You can't please everyone. (I did like wood/metal work though, just not as much by far as electronics. I'd be much more interested now though - I watch an awful lot of it on YouTube.)
I really enjoyed it and it made me love working with materials and building physical things.
Still writing software...But renovating my house was a nice way to remember all that lost skills.
Source: am a mechanical engineer who works on my industry's software
eta: Admittedly I did a bunch of design/architecture consulting and teaching tech courses for the first decade or so to pay for the farm. Consulting is a good way to keep your hand in, and teaching serves as a great marketing platform for the consulting work.
the downside is you have to 'install' and continuously 'run' a shovel
That said, a small hobby farm with goats and chickens doesn't take much work. But going on vacation can be problematic.
I mentioned this to an actual "rock star" developer London session musician with a doctorate in music who moved to development after teaching themselves after an accident.
I think any hobby is less enjoyable when you have it as a job, since you sometimes need to do things you don't like doing or aren't interested in.
The above is one of the major reasons I’m such a fan of basic income. I think we’d see a lot more cottage industry shops, used bookstores, cafés, and the like, if we all had basic income to cover our basic needs.
Heck, even software developers can get in on the game by working on their own passion projects. Whether it’s indie gaming or retro computing, a new photo editor or CAD software, or perhaps a new sort of application never before seen. There’s just so much cool stuff people can do with computers when they aren’t trying to build a startup aimed at a big exit.
Lots of biology, perhaps a little bit of tech thrown in, if it helps.
I'm the OP on that github issue, and while my partner and still have some IKEA furniture I'd like to replace, we also have a couple of pieces of mine that don't fit readily into our lives that we just have around the house. The chandelier on my website[0] was a spec piece built for a show at the Wharton Esherick Museum[1]. It didn't sell at the show, and I don't really have a place for it. It's now sitting in a crate in a corner of our bedroom.
Likewise, the Federal period shelf clock[2] is without a shelf and is also sitting in a crate until I get a chance to mount a shelf for it. How hard can it be, you ask? Surprisingly difficult in a log cabin. If the pandemic ever ends and I get my workbench out of our living room, I might have a place for it!
[0] https://www.longwalkwoodworking.com/#/chandelier/
I wouldn't make so light of that.
The tech is truly something incredible. It uses a disposable cartridge with a shotgun-sized charge to ram an aluminum matrix into the bottom of the spinning blade if it detects current (oily skin touching the blade closes the circuit). It stops it in thousandths of a second and your left with a nick instead of maimed. It ruins the blade and the cartridge. You’re out ~$150 if you trigger it. Small price to pay for keeping a finger.
You can also trigger it if your wood is too wet. That was one of reasons given against using it everywhere.
I think it's more like if you understand the tech well enough that you are willing to risk it you likely understand how not to stick your hand in a saw in the first place, don't see the value add and don't wind up working for these people.
Also there's probably a pretty big social aspect of it. The guy willing to stick his hand in the saw for the demo video is gonna get shunned by most of the kind of people who want to work on tech like this.
I wonder how well this would work in a real life scenario. My dad does autobody work, and his hands are like dry, cracked stone. They probably have very high electrical resistance. I'd imagine a wood worker's hands to be similar.
> That alone is enough for me to turn down the offer
> I take chopping off my finger in a heartbeat
You would rather lose a finger that work in a company that has strict very rules around offensive behavior?
...
It's none of their concern and the fact that they even try this shit is a massive red flag. If they don't respect your privacy before they hire you, they won't magically start respecting it afterwards.
Even setting that aside, a company policing what employees say in private, regardless of whether or not they find out about it actively or passively, is absurd. An employer does not get to decide what you say, do or think in your free time.
-----
EDIT: As a small extra, here in Germany something like this would be very much illegal, as you're not allowed to discriminate against job applicants based on their political opinion.
Same here but laws are a subject of interpretation. I'm sure there is a loophole somewhere in there and it can be used against you.
I fully agree. I would not work there.
> It's as if they'd call your friends and family
Not at all: they would be alarmed by the call.
Yet, comparing this to "reign of terror" or "having a finger cut off" it's a huge and dishonest exaggeration.
People living under oppressive regimes have much bigger issues than not being hired by this company.
As I said, in a heartbeat. I was born behind the iron curtain and still live in a place where it casts a dark shadow. There's a fine line between "strict rules" and full on dictatorship. Frankly I never understood the fuss around the so-called "offensive behavior". I spent 5 years of my life studying abroad. As an eastern European, if I had a cent for every time someone called me a car thief ALONE, I would have made enough money to buy the entire VW group(and never have to steal a car again ho-ho-ho). Do(/did) I care? No.
I have a relative who was fired from their job in the 80's because he said a joke about the dictator at the time and wasn't hired up until the entire regime collapsed almost a decade later. Do you not see the problem with this? It's a question of self-respect and dignity. I don't care what anyone at work does or says, so long as work is being done. Their personal lives are none of my concern. A several-hundred page report which contains likes of a tweets like "A priest, a rapist and a pedophile walk into a bar… He orders a drink." with an "inappropriate" flag is a gross violation if you ask me.
There's a very big line between a company's silly hiring policy and a government. I doubt the company will send goons to kill you.
The fact that you can't tell the difference says a lot.
> Frankly I never understood the fuss around the so-called "offensive behavior".
There you go.
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.
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.
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.
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 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.
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.
Love the achievements section too, neat idea!
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.)
[1] See https://www.ussherpress.com/blog/ for some posts about it if you are curious
Took me a few years to get here, but now I never want to leave.
When we picture our dream of doing a simple trade, we only think of the most awesome part of that trade. If I'm a car mechanic, most of it too is just trivial oil and tire changes or changing a basic part of two - not working on engines in depth.
Same with programming. We would want to build something cool from the ground up, but we are just piping stuff from a lib to another.
Comparing woodworking to corporate code is unfair anyway. I'd rather compare working at a furniture factory to corporate code, and woodworking to a solo dev project.
I bet that it feels better and more rewarding than updating a dependency and spending 2 days fixing all the errors caused by updating, especially knowing that you will have to do the same thing in a few months.
There is something that feels good when you create/fix/improve a real object compared to a software one.
It's frustrating as can be when it doesn't work, and it feels great when it finally does work.
As a human, dealing with complexity is all the same, no matter the medium.
His description of the feeling that something is going wrong, and of the emotional shift required to change frame before making the problem worse, that's saved me from more bad decisions than I could count.
And those types of jobs are the most likely to have higher margins.
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.
I don’t think that is just a symptom of more developers, but of the quality of development employers and such want to pay for.
Suppose that is an issue of software becoming a commodity.
Sure, I can go make furniture out of wood for $150 a month (and I did at some point in my life), but I'd rather keep my cushy lifestyle and stare at a screen for 16 hours a day, thank you very much.
I'm a programmer, my income is in the top 10th percentile, but that just means I'm in the upper middle class with the privilege to pay more taxes. I need to work until I get to retirement to secure myself financially.
That is true by definition. No matter how much or how little you make, it remains true. The question is: when do you get to retirement? Making a lot of money makes it a lot sooner.
To explain: a large chunk of our salary goes to the state's pension fund - not my fund. When I reach the official retirement age the government will allow me a pension that is scaled based on my payments while employed.
At this time I'm looking at 3 decades on front of keyboard (am 40 and the official pension age for me will be around 70).
I believe that due to market forces, engineering salaries are set as high as they can be without producing "escape velocity" for said engineers.
That said, I'm not in the US proper but in Canada, but I'm in the same position as you: highest tax band, make very good money, but unless I were to dump everything and move to an area with a much lower cost of living I will be in no position to retire before 65. Doing that (major cost of living reduction) becomes difficult once you have children.
Doesn't mean it's not true or not relevant.
As I told a friend yesterday: this is fashionably called "event sourcing" these days :).
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 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.
(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.)
So, almost all my content is hidden, but if you like text adventures you might have a go with the header bar.
It's pointing at my repo which is a mono-repo full of whatever I feel like: https://github.com/ricklove/rick-love-master
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)
- A doodle game for parties (using serverless websockets with AWS Api Gateway, Lambda, and DynamoDB): https://ricklove.me/games/doodle-party?room=hacker-news
- A bunch of educational games I made for my kids (using AWS lambda and S3 for storage): https://ricklove.me/games
- A code relationship visualizer: https://ricklove.me/tests/code-space/
- Components Testing (e.g. Stripe: https://ricklove.me/tests/stripe/)
I'd even say I enjoy adding a RSS feed to anything. There are not enough RSS feeds out there.
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.
Peter Gibbons : This isn't so bad, huh? Makin' bucks, gettin' exercise, workin' outside.
Lawrence : Fuckin' A.
Peter Gibbons : [nods] Fuckin' A.
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".
At some point talented developers grow out of that role and start looking for an escape.
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.
For most people you have the reality of needing a 40 hour week job to live, and there's plenty of people who spent the 4 years to get a bachelor's in compsci and nobody cares to hire them. Software is volatile, you can spend plenty of time making something that will not work and won't be at all useful.
Reality is the software job market sucks, and people have to learn how to build their own houses or else become stuck as rent slaves.
I had a plumber quote me $1300 to replace a $250 part that just screws on/off. I did it myself in a few hours.
Since I work on salary, one of the best ways for me to get more money is to save mine by not paying overpriced contractors to fix things around my house.
Besides, if you're already working 40 hours a week, the remaining time is much more valuable, because it's relatively scarce. Not everyone is comfortable spending their evenings doing extra work.
What does the plumber do? Exactly what I would have done after watching a couple youtube vides -$500 in labor.
He didn't even try to repair the pipe he just cut it and used push on PEX connectors something I could have done myself.
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.
This is actually becoming more and more of an option. At my last (small) company, we hired several individual remote developers from various parts of the world that most would consider "third world".
We were introduced to them via referrals from contract work done elsewhere, and we did a paid trial period at first.
Not all of them worked out, but the ones that did were quite good, and we were paying them an excellent wage for their cost of living.
> This is actually becoming more and more of an option.
To do this though, you generally have to know how to market yourself, put together proposals, gather requirements, design and project manage, on top of coding. Not every coder is good at this or wants to be.
You have to be able to interview well of course, but do design and project management? I'm not talking about a freelancer who delivers an end-to-end project here, I'm talking about hiring a remote developer to join an existing team and deliver features.
In my home town called Rostov-on-Don (10th largest city in Russia) I have friends who make $2500-3000 after tax for their software engineer and devops positions. Some of these people are far from being a rockstar developers, just have well-paid positions at large companies. Average salary is somewhat lower, but it's still good money here since living costs are low.
PS: Family of 3 can basically live there for $1500 / month with rent, food and entertainment and if you single even $600 is quite sufficient.
And there is even lower tax rate options available if you work alone and earn between $10,000-80,000 / year. You just pay fixed amount of taxes every year for special "patent" which cost e.g $400 / year in my home city. Then efficient tax rate gonna be like 1-5% depend on how much you earn. Though unlike when paying 7% of income this might require more detailed accounting since tax department can always ask you to show some documents. Officially "patent" allow you to pay $400 just once for income up to $600,000 / year but obviously in real life you gonna get some tough questions from tax department.
In any case tax rates for freelance software developers in Russia are very very low. Also unlike what western person might expect all government services are available online and accounting is no-brainer because Russia have some of the best fintech in the world.
TLDR: Russia's IRS/HRMC equivalent digitized VAT collection (similar to sales tax). Basically every 90 seconds all tills/cash registers across the country report back the sale to the taxman, so you don't even have to manually submit any VAT returns.
Russia started with 20% tax gap between revenue due and revenue collected (while e.g. UK is at 9.1%), and now after this they are on 1%.
My understanding it's almost real-time tax reporting with millions of tills acting as IoT devices sending data up.
For fintech there is Tinkoff bank which is more advanced than Monzo / Revolut / N26 / etc as well as two "virtual" B2B fintech banks that even do accounting for entrepreneurs on their own. And to be honest even Russian largest state-owned Sberbank is far more advances than most of institutions in US and EU.
So as long as your business can't be forcefully taken away and there are no political risks it's quite comfortable to be freelancer when it's come to taxes.
A developer making even a small salary working remotely from a "third-world" country is still making much more money than the average person. Just as an example, on my first remote position I was making as much money as each of my parents who were on 10+ years careers in corporate sales. It's nuts.
Of course the quality of life outside work made it worth moving to Europe, but to this day I still wonder if I should move back to stay closer to family while keeping a great salary.
We ran through a budgeting exercise a couple of years ago before I made the career change, and besides housing, our single biggest expense is health insurance.
I've always lived cheaply, and it's let me take advantage of opportunities as they come up (I paid for school with money saved from working in software), but it's still a big transition going from two white collar jobs to one. I'm grateful that my partner and I both value the flexibility we get from living frugally.
By way of contrast, I've been trying to puzzle out how to do woodworking programmatically which has been an interesting exercise, since traditional CAD/CAM is quite limited in its assumptions, and the tools which are accessible to me (in terms of them matching how I think/work and having an immediate, applicable preview): BlockSCAD and OpenSCAD are rather limited in their ability to export files (DXF, SVG, STL) --- in particular, I'd like the ability to write out a text file w/ full control over the contents, but that's not viewed as a valid request by the devs.
Making progress though:
- http://tug.org/TUGboat/tb40-2/tb125adams-3d.pdf - https://willadams.gitbook.io/design-into-3d/3d-project
I just wish it were easier to make G-Code in 3D (unfortunately, I don't find the obvious tool at tplang.org very workable with my approaches).
No, it's not. But finding an interesting project to work on can be difficult.
You can somewhat get around that if you work mostly on back-end stuff. For the front-end, things might change once wasm becomes more viable.
Programming can be great, fun, challenging and profitable, but it can also be tedious, boring, demoralizing and hours can be miserable. It all depends on the company and the project you're working on.
I agree with most of the haters in this thread yet I wouldn't trade it for another kind of job :-)
> I just find aerospace boring, unimaginative, stressful and low paying,
Could you expand on that a bit? To an outsider aerospace sounds much cooler than making web widgets with questionable purpose...
Today, that is almost completely gone. Now it's Business has been forced to design a system for you that doesn't make a whole lot of sense and a bunch of stuff wasn't considered. If you push back, you'll get dragged into endless meetings where you try to explain things to people who have zero training on what you are explaining. You'll get pushback because their egos will get involved and eventually overruled on most of it. After that, you will get a week to work on a sliver on it, then next week you'll work on a different sliver but often whatever business decides, not what makes sense. You'll also get a bunch of processes to weigh you down because they hired a bunch of goobers cheap that keep breaking stuff. When this doesn't work, it will be your fault.
As with any "mental" job, I find I work best when I balance it with a "physical" job on the evenings / weekends, such as renovating my house or basically doing anything with my hands. When physical jobs were my paycheque, all I wanted to do were mental things in the down time, now its flipped. Neither is necessarily better or worse, though I do enjoy the flexibility that software allows / requires.
This means that you should clarify better what do you want in a software job. Besides working from home, what do you want? Relax workflow? Adrenaline rushes from doing fixes in live/production systems? Do you know work on technical or business features? Does the tech matter (new/legacy) for you? Do you enjoy mastering a tech or just make software work? How much payment is worth a worse job?
My suggestion is that you write down what's your ideal software job and review it several times. Then it's a "simple" tasks of reaching for it and keep your expectations in check.
Once you train your ears and learn scales suddenly you start to hear music in terms of theory.
Do this long enough to become “senior” and suddenly a whole class of music is boring - like glue-code.
You need to find outlets for your experience and not just maintain open source projects - which are highly valuable but a huge pain in the ass.
This is an interesting thread, but my advice is to never take comments on the internet as any sort of representative sample. It is unlikely someone happy with their job would comment on a thread about quitting, because it makes for a boring addition to the thread.
I sometimes wonder what my work life would be like if I switched back to mechanical engineering, but I'm very happy working purely in software. Engineering requires a ton of capital and fairly large teams to do cool things. With software, a single person or a small team on a shoestring budget can build pretty neat things. I also work 100% remote, which I'm not sure would be possible with a mech eng job.
I do wish I spent more time in the machine shop at school though. Many of my neighbors in my HOA are either "real engineers" or retired blue collar workers, and they can fix things much better than I can. I can help reset their router though! :)
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 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!
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?)
It isn't, it is programming. Anyway, I want to go one step further and return to a more ancient living style. I don't want things like artificial light, computers, etc, to be a significant part of my life. The best time I have ever had, even to this day, was when all of those things didn't exist.
Watch out for Rosy Retrospection [0].
Please, do what you truly want. Many if not the majority of individuals on this forum have the opportunity to do so.
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.
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.
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 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 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.
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.
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.
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!
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 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.
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 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.
/rant
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.
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.
That all said, software development is by far the best career and I'm pretty happy with it.
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.
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.
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.
You just have to work on things you like, instead of what's fashionable or high paying.
The lesson: things are not much greener on the other side, work is not fun, it is not a hobby, and adult life is not easy :)
[1]: I'm learning and practicing creative writing, hoping to publish books some day.
— Josh Rosen in The Soul of a New Machine
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.
"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."
"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.
But a wife, two daughters and a mortgage… I love them more than my life, but think a lot about your life before you attach a millstone to your feet.
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.
Software ate software.
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.
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.