For 23 years, every time a discussion like this the same answers come up:
- People aren't craftsmen like the used to be. (new gen is worse) - Young people learn faster. (youthful vigor has advantages) - The industry changes so fast. (tech is like that) - People are only in it for the money. (as always)
The older I get the more I feel like nothing actually changes besides the colors of our IDE.
But it wasn't a common one earlier than that.
Seems like the folks around in the 80’s were standing on the shoulders of the original researchers who pioneered the whole shebang, there was no “old blood” to really complain.
When I entered it, there were already graybeards, and I was the young whippersnapper.
All said, some things are easier. There will be restarts/reboots/refactors/refreshes and new tooling that makes the old tooling easier to live with. Docker made LXC better... Rust makes WASM easier (and so much more).
I do think that too many places have jumped too many sharks along the way. You don't always need kubernetes and five 9's of up time. You also don't always want to break every minute action into a separate lambda/function. I feel so much for the gray beards from when I was in my 20's. Keep it as simple as you can. If you must add complexity, make sure you wrap it in such a way that makes everything else simpler. Don't create a large application for what you can do with a small script. Automate anything you have to touch more than a couple times.
There will be times where you are slogging, and times where it is easy. You will work with brilliant people and certifiable idiots along the way. Such is life.
If you are passionate about the work, and love to constantly learn. You'll be okay. If you aren't, then find that balance in life, and do what you need to in order to keep up.
Honestly, I think it's time for me to find another line of work.
An analogy to the car industry holds very well, I think. Early in the automotive days, people built cars because they loved to build cars. As it became an industry, and then a mature industry, that was largely lost. Now, the people who "build cars" are factory workers, punching a clock and putting in their hours. The industry stopped being about excellence and started being about maximizing profit.
That's where software is now.
I'm not saying that's a bad thing. It's clear that's a natural progression of new industries. However, that's not the sort of work that I want to do, and not what fulfills me.
I'm increasingly suspecting that there is no longer a role for the likes of me in the software industry.
I've been successfully doing that for most of my career, actually! But even as a small independent, you can't ignore the nature of the industry. Especially if you're selling to the industry. So it doesn't shield you from the market forces very much.
I fantasize about there being a market for high-end, boutique tools, libraries, and such -- but I don't think it exists. I'm not sure that it can exist given the nature of the industry overall.
Thanks for sharing. What kind of "ethical issues" are you referring to?
But the ones that bother me the most are the ones where we abuse our customers for the sake of profit. Issues like data collection and use, "move fast and break things", removing customer autonomy, etc. are all things I struggle to be OK with, but are all things that are heartily embraced by the industry these days.
And don't even get me started on the acceptance of overt law-breaking. Companies like Uber (only an example, they're not the only ones that have done this) achieved success by breaking the law, and overall as an industry, we tend to accept this and even celebrate it -- as long as a successful, profitable business is the result.
Much like you put up hand rails on stairs, you will put guardrails on your CI/CD pipelines and processes. Do you do this from the start, or along the way. It really depends on what state things are in. Most industries cannot tolerate the development of software as more of an engineering discipline. This is disappointing when the likes of the auto industry doesn't. But it's largely expected otherwise.
Software development is a craft discipline, not an engineering one more often than not. Most systems are not life and death critical. It's more akin to making a dog house than a sky scraper most of the time.
Of course, there's also times where intentionally breaking something is the best solution to getting the fix done. From literally deleting the code/class/library that you are replacing and dealing with all the compiler errors as part of the fix. Or similarly, actually shutting off the non-secure protocol servers when the company decree has been to only use secure channels (TLS or similar) for communications, and breaking the systems that are still using the insecure channels after remaining up for years, "just in case."
Yes. The original sense of the term was fine and expressed a reasonable thing. Since then, it's been taken much too far and has been applied far outside the development process itself.
This attitude is, in my opinion, one of the things that has turned the software industry from being mostly a force for good into a very mixed bag.
> the quality of the software being produced is decreasing
I feel these two are related. I mean, one could say the same looking at companies like Boeing post McDonald Douglas merger.
There are lots of great reasons to pursue work in computers, and not wanting to clean toilets for a living is a perfectly valid one.
It's just not what motivates me, and I'm commenting about why I don't feel like there's a role for me in the industry anymore.
Just spitballing, but I wonder if that’s in part because theres not much monetary incentive to go above and beyond.
Companies don’t seem to give out raises or promotions for good work as much as they do for more political reasons. And I’m sure we’ve all heard stories about the new guy getting hired on for much better pay than the loyal veterans. Personally, this is why I think job hopping and resume driven development are so popular.
If I’m someone primarily motivated by money, and there’s no monetary incentive to go above and beyond, why would I waste my time trying?
Genuine interest in the technology? That'll boost my competence leaps and bounds (through the experience I have pre-cached from my time off of work alone) for no extra pay!
In other words, at dev level,
> someone primarily motivated by money
is likely far too up Maslow's hierarchy for extra pay to make up for the problem of having pure "hired guns".
Count me in when you find it!
What I miss from technology is the group of people I used to collaborate with during my university years. We used to work on one thing and one thing only (UNIX Philosophy anyone?) and there was no way we would not master our craft back then or the subject we were given to work on.
Nowadays everything feels like work on bleeding edge and don't care about the quality of code nor the security of your own libraries.
I feel so awful with myself for choosing such a wrong direction.
Those who work with the legacy codebase, it really depends of the type of legacy infrastructure.
If it's a mad chaos, they prefer not to discuss it with me because they get anxious knowing they will work on that monstrosity the very next day and don't want to ruin their evening lol!
Else if it's rather clean comparing its legacy status, they don't mind, but worry about their future; they don't want to stay outdated from a tech point of view, in case they need to look for a job.
I don't know anything else apart from technology and I feel doomed -_-
There’s just no where else to go that isn’t just less of the stuff I like about it and more of the stuff I hate about it. I had a plan to go back to school and switch fields, but the more time passes, the more I realize this isn’t going to happen. Everything keeps getting more and more expensive, both in terms of money, and more notably time.
Yeah, that's a problem. This is literally the only marketable skill I have.
I thought I had my head set on something, but it was, funny enough, all predicated on having a well paid software job to fund the jump. I planned on starting this year, using community college along with statewide transfer programs to get started as quickly and as affordably as possible, but the layoff and current economic/financial situations rocked me, and I’m not sure I have the capability brains, or money to pull it off anymore.
Using tools to do these things for me means that my skills and abilities will suffer.
It tells me I need to get out because it represents a shift to a higher level of abstraction in programming. In the ideal I hear expressed, instead of programming you'd be just describing the code you want and letting someone/thing else do it for you.
That's management, not programming. I want to program.
Understand that I'm not even saying there's anything wrong with that. It's just that it indicates that the things that I enjoy about being a programmer are the things that are being optimized away.
To me, LLMs are just "advanced" (read: statistical) codegen, unlike compilers and interpreters that are deterministic (should generate functionally equivalent code). But there's as much novelty there as there was when the C compiler or LISP repl was introduced.
That's fair, although I would disagree with the notion that compilers are code generators.
But using code generators is not something that is interesting to me even a little. They remove much of what interests me about programming. So your explanation -- while it makes sense and I wouldn't argue that you should feel any differently -- underlines that I need to get out of this industry.
It's hard enough to keep up with PR reviews of a half dozen developers while doing my own work now. Hard to imagine that with 3-4x the output.
Even so, quite frankly I love computing and I don't want to leave it behind, even if I feel disillusioned about the tech industry. Some of my thoughts include becoming an independent researcher and also starting a non-profit software company that is devoted to improving the personal computing experience, but I have to figure out how to make a living while pursuing these ideas, and it seems that the cost of living is outpacing my ability to keep up (especially housing costs, which jumped over 30% since 2020 where I live).
The commentary here has allowed me to reach an interim decision (subject to change in the future as I ponder these things more deeply).
I am going to find another line of work. That way, rather than leaving it behind, I can make it a hobby again and do the sort of projects that improve my life.
Perhaps that way, I can honor and maintain my love of computing, and earn a living doing something else. I'm perfectly OK with taking a large pay cut if I can live a happier life in exchange for that.
Thank you John, you gave me hope that I am not alone, that feels this way.
I do DirectX Graphics and native programming for fun on the side, but it doesn't seem like there's any good money in it. I look up DirectX jobs but a lot of them are AI using GPU pipelines, and AI is really uninteresting to me
Young dudes are way more respectful of other engineers' actual skill, and less likely to ask female coworkers on dates or do other weird things that drive them away. My mom has actually seen a few younger guys step up and defend her after like forty years of handling these dickbrains on her own. The social side of things, at least in most companies we've seen, has become moderately better for everyone who isn't at work to get a date.
> Old people who don't even know anything about programming are running everything and refuse to retire and let us get on with actually doing stuff.
and
> Young dudes are way more respectful of other engineers' actual skill
Directly contradict each other. Those "old people" you're insulting probably know more than you think. I'll admit that I'm biased, being a graybeard myself, but I don't know of any engineers my age that are still working who don't have a modern skillset.
That's another thing that makes me think I need to get out of this industry.
The existence of Visual Basic and VBA support in the Microsoft Office Suite made it possible, and even practical, for most domain experts to build usable applications that allowed everyone to get their jobs done. If there were performance problems, or it needed to be made more reliable, professional programmers would be brought in to rebuild things in a more properly designed manner.... it was at this point that we almost shifted to being actual Software Engineers, and professionalized.
Since then VB was cast into the pyre as a sacrifice to the very unnecessary migration to .Net, and the bloat that ensued as desktop programming lost a decade of productivity, people decided to just shove everything onto the web.
It was only as this was starting to happen that Steve Jobs further crippled programming by introducing the iPhone, and suddenly GUI applications were expected to work on tiny screens (in either orientation) without proper input hardware like 3 button mice and keyboards, connected across a slow and unreliable network connection.
Needless to say, the last 2 decades have been a total loss as far as programmer productivity goes, with one shining exception.... GIT. Git has its flaws, mostly arising when people don't realize it's a set of snapshots that fake storing deltas, and not the other way around.
GIT/GitHub, et al... are fantastic. The ability to just keep multiple machines up to sync without hassle in seconds is sooooo good. I used to keep stacks of floppy disks with ZIP files of source code, all manually managed.
In the future, we need to recover to the point where you can drag/drop GUI elements and have them work anywhere, like we were with VB/Delphi/Hypercard.
When we get there, we'll let users build basic applications, and we can finally professionalize and apply actual engineering practices to the art of programming.
Until then, please stop calling it engineering. We don't put in anywhere near the effort that Margaret Hamilton (the first actual Software Engineer) and crew did, in safely getting men to the moon. We're programmers, not Engineers. As Uncle Bob said, we don't profess anything. We certainly don't use engineering practices as described by The Engineer Guy.
---
Example: You can plug a lamp into an outlet, and in the US, it can draw up to 15 amperes, and under almost all circumstances, you can't damage the wiring in the house via a fault in the load.
We have no equivalent in software. Chroot, sandboxes, etc... are far too unsafe. We have no standard way of letting the user choose resources to give to applications at run time.
The worst part is, most people don't even see the deficiency. Imagine the current power grid with no fuses or circuit breakers.... the first wiring mistake would crash civilization.
We can do better, we must do better.