IT people just drop out. The simple cases become managers or architects. The more advanced cases start a bakery, go work in a call center. One of the most extreme cases was a very intelligent, very cynical, very anti religion guy who just quit without warning and joined the hare chrisna. We got photos from him in red clothes doing some kind of ritual. Huh?
A big part for me is that IT just doesn't learn. Every 5 years, a new generation pops up, invents completely new tooling, and makes all the mistakes from the previous generation. Now your knowledge is obsolete, and after you relearn everything your tooling is worse than where you started. Enter a few years of slow tooling maturisation with a very predictable outcome, after which a new generation pops up, declares the existing stuff too complicated, and reinvent everything again. 35 is 4 or 5 of these cycles, bringing to front the huge wastefull uselessness of it all. Learning your whole life is a nice slogan, but becomes very pointless.
The survivors that continue in IT, deal with it somehow. You enter a new cycle knowing it will be change but not much advancement, and don't learn the stack as deep as you used too. You get a life outside IT: Kids, hobbies, social events. You let the youngsters run before you, smile when they do better than your old tech would, and compare with older tools when they get stuck. And you keep some of your tech enthousiasm just for the hell of it.
I wonder about this one. I became a manager because the organizational problems can be so frustrating and I wanted to fix them. However, what you get is pretty much only the aspects of tech work that the author calls out as burning people. A few days ago I wrote a simple Rails app for a young relative's hobby. Most satisfaction I've had with anything related to tech in years.
The biggest "carrot" held out to idealistic people wanting to become a manager is exactly this: the (fake) opportunity to "fix things". Only after you've become a manager does it become apparent that long-lasting problems are long-lasting for a reason and that none of the choices low-level managers are allowed to make can meaningfully move the needle. Sometimes they fall for it a second time, but being a manager of managers is often even worse since now you don't even have direct reports to effect change.
In the more optimistic case, you would need an independent and irreverent labor union with a lot of buy-in and pretense to try to call the shots, in order to do that. In the less optimistic case you would need a social revolution. It's generally more the structure of companies that creates these situations than the individual composition of management.
I kinda understand why. Programming as a craft, the excitement of mastering it, plateaued around 5 years into this profession. Not saying there isn't specific domain that requires many more years, even life long devotion, but for the generic bunch, that would be it. The challenge is going away, and mundaneness of labor kicks in, and you start questioning yourself, what is the point of all this?
For me, I pivoted to some of author's recipes of reading technology history to reignite that romantic aspect, and it does work. Still, I think courage is needed to switch track and makes yourself uncomfortable every now and then, in new fields of tech. I was working in AdTech space, now I am in more pure ML application space, and I am happy I made the jump, and it is pretty rewarding.
Regardless, for fellow engineers, and I would say, to embed the curiosity for ever new technology into your belief system is critical, and it takes time to realize curiosity is indeed a blessing rather than a giving.
Maybe one plateaus after 5y of mainstream every-noun-a-class and endless-design-patterns-forced-in kind of stuff. I guess I would, if I did not look for more elsewhere. I think such kind of job is also why there is a disillusionment. One suddenly realizes, that at the job one might never apply all the cool things one knows. Then it is up to oneself to either find interesting side-projects, or deal with it in some other way, or quit.
The last 5 years have been a struggle, there are days, _weeks_ when I just can't code the simplest thing. The irony is that I have the tools to build most of the things I want, both technical and product related (design, UX, marketing), but now my brain takes 10x time to apply them and it just feels almost physically painful. At first, it was weird and scary.
Therapy and moving from a big tech hub to a small town in a different country helped a lot. But, I feel like I have to re-learn so much because most of my life revolved around IT.
I grew up poor and I'm aware of how privileged this sounds, but that's also one of the reasons for my problems: it's hard to make decisions that are good for you and your loved ones if you keep constantly second guessing/judging yourself/overthinking. There are still days I'm terrified of ending up alone and homeless, although I know, rationally, how much I have and how happy I am in my relationships with people.
You see, for me "pure IT" was never enough. But, it was a good way of creating a constant stream of problems I could solve, then get rewarded for solving them, rinse and repeat... This includes dopamine (I solved "the <small design or CS> problem"!), a sense of progression ("I can solve more difficult problems now"!).
Another issue is that in our trade often it's very hard to see the actual results of our work. I mean, actually, physically interact with people and see their happy faces when we do something for them. At a very basic level, this is something that humans need to keep going. I sometimes mentor or just chat with random people in our trade via "office hours" and this is brought up very often, regardless of age and expertise.
On a positive note, I'm aware that with enough work and patience this will get easier, and will make me a better person. Most of the days I feel happy, more than before. At the age of 25 it was easier to work 80-100 h per week to brute force your problems, instead of slowing down and learning how to live with the ape you are.
I just think that the nature of our work enables an unhealthy pattern of avoiding problems. It's easy to get lost in it.
I never did it for anything other than solving puzzles for fun, and because being a musician doesn't pay the bills. But the joy of code and music are both more about keeping your brain in shape than anything else.
My position is slightly different - I can juggle much more stuff now and I have far more threads running in the brain at the same time. I can see much further ahead and I can do much bigger things right now. But one person cannot code such large stuff no matter how productive he or she is. The only way seems to be working as a team. Or with larger teams.
I started my career just a couple years ago. In my first company, they used 10+ year old tooling and imo it was terrible. A very old legacy mess monolith that made adding features pure torture. Trunk-based development with a "who needs tests" mindset, resulting in horrendously buggy code, 50:50 chance pulling newest version would break something. Several instances of files with over 10k lines of code and deep nesting, absolute nightmare. Absolutely no mindset for performance. They wrote quadratic complexity code in the backend to fetch data because hash-based data structures already seemed too advanced to many of my coworkers and then they wondered why their frontend was so terribly slow. Not that they had a lot of pressure to deliver a great product, because they are / were market leader in their B2B niche. I left within a year.
Now I'm working in a company that uses all the latest gitlab CI/CD shenanigans, code reviews and heavy use of unit, integration and end to end tests. Everything is hosted in the cloud with a microservice architecture. We actually need it as we scale to millions of customers and have performance and reliability requirements.
The difference is not just the tech stack that was horribly outdated and imo extremely tedious to work with, but also the mentality is completely different.
In the first company, you couldn't change anything, there was a strict hierarchy and everything stayed as is because "it works". You totally got the feeling that there's some old people up in the hierarchy that were way too lazy to learn new things and didn't want to endanger their meaning in the company. When I left, I spoke with the Head of HR and he told me that basically all people that leave do so because of the mentioned reasons. So that company drives away motivated talent with their crap mentality. Pay wasn't very good either, but a first job is a first job after all.
Now mind you, both companies are a couple decades old, but imo one always kept up and the other didn't. Both companies have 10+ year seniors. Personally, the people in the current company are way more competent and excited about work. Much more fun to work with, I learn more and I absolutely don't get the feeling the tooling is reinvented in any way. It's improved in all possible aspects I could think of and makes the development experience much better.
I started out my career thinking best practices with agile, code review, CI and "shared ownership" and stuff were the way to go.
But in the end I like the old siloed do-your-stuff way more. It works and gives you actual ownership and freedom. It turns out that it is easier to cooperate when you can say no.
A large part of the work surrounding the Docker ecosystem has simply been re-creating features that were already around in the JVM ecosystem 10 years ago. In the same decade, we also had the move from server-rendered webpages, to browser-rendering, back to server-rendering.
I started programming with basic and then DOS and assembly. I have very fond feelings and deep knowledge from both of them, but the UNIX generation rightly looked down on them as 2 turing tarpit hellholes.
Onward to C, with Mix, Watcom and DJGPP. Better programs, but you live with some stupid inefficiencies that wouldn't fly in x86 asm.
Onward to Win3.1 and Win32. The end user experience is much better, but as a programmer you now have to accept control by the OS over your work. You can't just e.g. write to VRAM anymore. First serious dark clouds appeared for me when I realized Microsoft cynically used us all to extinguish all competition. Politics had entered my IT life.
Then came the web. In one way, it was glorious, but programming it in javascript was a serious hellhole. jQuery brought some sanity, but the user friendlyness from windows was almost impossible to reach.
Serverside was java, which was dog slow until hotspot appeared. It eats memory like there is no tomorrow. Sun dictated the very shape of your program. There was some war going on between EE which was horribly verbose, and Spring which was geassroots and looked down upon by the architects, as if it smoked weed or something. Whatever camp you chose, pain would follow. Ir you could go to the PHP camp and spend more time debugging than programming .
There was some python here in my life, good but dog slower than even Java.
Then nodejs. If you thought Java gobbled up memory, you'd just die working with that abomination. End user usability had still not recovered from the win95 days (it never did). You had no type safety with javascript. In fact, every decent tool and technique was sacrificed on the altar of equal back and front end language. Then came frameworks like angular where v2 managed to commut ecosystem suicide, and react. Meanwhile transpulers packers etc managed to undo much of the noneedtocompile of javascript.
In the mobile world, 2 massive companies appeared, and their app stores killed any liberty of publication.
There us more, but I ran out of time ;-)
All of this is quite ranty, partially deserved but there is also quite a lot of good in here. Even so, programming for me was most fun on DOS, and user experience on win95 to xp.
Monkey paw curls.
My story is complete opposite. Three years ago joined a startup. We use relatively new Java, branches everywhere, microservice architecture, +85% branch coverage, integration tests, end-to-end, performance, you name it. CI/CD integrated and self hosted. Heaven, right?
It was an absolute shit show. Because of microservice architecture you had no way of running +50 necessary microservice on your machine.
Tests are mandated but brittle. Mocking libraries break whenever you refactor a method. Integration tests are flaky and inconsistent (behaves differently on local vs remote). End to end test takes hours to complete. There are 20 different environments, each with different configuration, each divided into dev/qa/prod.
In how long I was on we didn't have two successful deploys on main branch. But you have to keep adding features because one customer said it might. Oh security found that library is 20ms too old. Have to replace it asap, despite the convoluted nest of dependencies between microservices.
It had good pay though. Taught me to really hate mocks and that tests need to be applied at right level.
Any tool can be used to do good or evil. They were using old tools to do evil things-- namely, writing bad code.
The only caveat here is that if I had to maintain bad bash scripts or bad koobieboobie cicd automated shlalala, I'd always choose bad bash scripts, as the blast radius is smaller and easier to reason about.
Everything becomes like that, legacy, torture, mess. New things comes along, clean, new, solves some problem. Mess dissapears from one place but starts popping out somewhere else but still better than before you think. Wait 10 years and you and you’ve got a completely different mess, lots of people who built it have now left, few know it all but have stopped caring. A new you joins the group. Sees a crazy unweildy legacy system. Sees new technology that solves these problem. Starts over.
If you're working on some humdrum mobile or web app, it's hard to stay excited. Making apps that clearly do not need to exist takes its toll. I saw the writing on the wall and got out early. For me the solution was to go back to graduate school. I figured that I would be able to find an application area to work in with some real depth and let that drive the programming, instead of working on something dull where I would need to find my excitement in the programming itself. Now that I've done this (I have my PhD by now), the programming I do is quite dull, but the applications are fascinating. What's more, what I work on now has so much more depth to it compared to programming (I do computational math). To attain technical mastery simply requires dramatically more time and effort than programming. I think in this way the proper balance is restored between the tool and its use---a hammer is simple and understandable, building a house is deep and complicated. My hope is that one day people will have more opportunities to use programming for the powerful computational tool that it is, rather than as a means to make a quick buck.
Not at all. As a senior, you note that even if you can do a lot of things - almost everything - right now, you are still just one person. Even if you are a mythical creature that can put out code dozens of times more than others, you note that what you can physically produce is always far behind the possibilities that you can see on the horizon. Then you realize - you need to cooperate and work as teams. For only by collaborating you can make happen all those things that you can envision. Which obviously takes you towards leading people one way or the other.
This is in general true for life not just IT. The timescales may be more along one generation say between 30 and 50 years.
It doesn't learn, because it's chasing a fad or just considers everything before it crap.
As I said, those those that don't understand old systems are doomed to reimplement them.. Badly.
As someone approaching this 35 year limit, I never once had this problem. Jobs are kinda meant to suck. If you want enjoyment, start a hobby.
History repeats
itself. You see, it has to.
Nobody listens.There is something magical in watching the software you wrote sling full size wood logs around (industrial automation), control and maintain a positive pressure in painting chamber, take off and fly away somewhere.
And even the greater cost of failures/mistakes or the insane hours to debug a single bit set incorrect somewhere deep in SoCs RAM controller is not enough to offset it- you learn so much about the way world works (or doesn't- but that's something to learn as well).
An off-by one error crashing and snapping conveyor belts, too large a P coefficient in pressure controller bending the doors, missing the requirement of closing the shutters for an outdoor heat exchanger leading to freezing and bursting it- though frustrating at the time leads to much better memories than debugging a PHP file deployed on a VPS with logging disabled.
Past two companies hired me specifically for UAV projects, so my professional experience has been in this field- however, it is so wide, that you can easily branch out:
* design one-off test hardware for various bench/field tests where an off the shelf solution doesn't fit (custom thrust stand, spring constant measurement jig to determine properties of vibration isolation solutions, simple blackbody for QA to determine if the LWIR payload meets specifications)
* like physics/control systems? Lot of work on tuning PID controllers, implementing simulators for pure SWEs to not crash your expensive prototypes
* hmm, it looks like we have excessive vibrations on the frame- whip up a small battery powered, WiFi enabled high-frequency accelerometer logger to dig deeper into it.I went straight to embedded after grad school. I enjoy it well enough, more than I think I'd enjoy pure software/web stuff. But at the end of the day it's a job not a passion. If I won the lottery I think I'd be perfectly happy never touching it again. I wonder if I should have gone the software route and taken a job I might even actively dislike for 1.5-2x the the money and remote work which would put more time and money into the rest of my life.
If you still want to go down that path look into embedded Linux for IOT type applications. My product has both microcontroller firmware and a Linux SBC. Hiring for the Linux side is difficult, currently we farm it out to a good but not great team overseas. If you have solid Linux skills, a good handle on build systems, and the ability to bring up modern software best practices in testing and deployment from scratch (most embedded shops are way behind the curve here) you'll be seen as a rockstar. Can probably command a higher salary than the average firmware dev since you're "software" but still a hit compared to FAANG/Unicorn web programming.
I still love embedded, and I think it's great for all the reasons mentioned in the thread. As for your question, firmware is quite broad, and there are lots of different routes people take to break into it as a career. At its core, it's a lot of writing systems code, or feature code that runs on constrained systems. Something like CS undergrad systems programming + OS or equivalent should be enough.
After that, I would make sure you have decent breadth: knowing how to read datasheets, bringing up parts, writing a linker script, using peripherals, grokking some standard protocols like I2C/SPI/SDIO, basic circuits knowledge, basic comparch knowledge, etc. The nice part of all this stuff is that you can totally get there with just hobby projects and Adafruit boards. If you find yourself using the batteries included in the Arduino or Adafruit libraries, maybe push yourself to write more of it from scratch. eg. write an SDIO driver to read from an SD card and parse a FAT filesystem.
People with solid software engineering backgrounds are pretty valuable in embedded, so I'd emphasize that as well. Knowing that git exists, unit tests, API design, CI tooling, etc. If you're a Linux kernel hacker, embedded linux is also kind of its own separate world, so that might be a good direction if you have experience there.
It pays very little, there's very few opportunities to move around, you need to have relatively good practical electrical/electronic skills and the technical skills you do get don't contribute at all if you're trying to bootstrap side-projects.
Years in industry had conditioned me to seek validation from my peers in the form of completing projects quickly, positive code reviews and just generally being thought of as a "smart" programmer. That isn't really my job though, my job is to create something. If I don't suck I will understand the essence of what I am creating, whether it should be pretty, easy to use, flexible, fast, or whatever and make sure it embodies all those qualities. I know it is a really obvious thing but realizing it brought back a bit of my passion. We as engineers are so often called upon to assess feasibility and make estimations around projects, but it is really important to take a second and forget about coding entirely and picture why a user would be impressed with what you made, and then making sure you deliver that.
Maybe this is why I lost interest in video games. They have zero relevance off screen.
That's a successful startup.
That does help a LOT. Interacting with actual people who are going to use the software puts everything into perspective like nothing else can. It doesnt matter whether those people are end-user customers or stakeholders inside the organization or another team. People make it worthwhile.
PerfectTablePlan: Event seating plans.
Hyper Plan: Visual task planner.
Easy Data Transform: Data wrangling.
I think one reason people get disillusioned is not simply because those things are depressing, but because those things exist at the same time that there's a strong disconnect between what's the right thing to do and what will bring the company most _money_.
The depressing part is having to go through all of these hoops and realize that it was all for nothing, because the end result is either not what the user truly needs or outright evil. I just want to build things that helps others.
(I don’t have any work experience yet)
• Microsoft made it impossible to install Windows 11 Home Edition without a Microsoft online account. I know of no FOSS with the nerve to try something like that.
• Non-Free games that charge real money for in-game cheats, and are of course designed to prevent you from manipulating your own game-state
• Mobile apps that request clearly unnecessary permissions, for reasons never revealed
• Mobile apps that sell your location data, and any other data they can get their hands on, with minimal regard for how this might impact your physical security
• Lies of omission about fixes to security flaws, and their specifics
• Intrusive telemetry that can't be disabled (although FOSS doesn't offer a total guarantee against this, see Firefox)
• Lies about security properties that are hard to verify without access to source code, such as falsely claiming proper end-to-end encryption
• For more see [0]
- Crypto being used to scam People
- Doorbell cams providing the police with a neighborhood cctv system (2)
I could go on :(
1)https://en.wikipedia.org/wiki/Uyghur_genocide#Use_of_biometr...
2)https://en.wikipedia.org/wiki/Ring_(company)#Police_partners...
There are so many other things to pursue in life besides computers. It’s ok to leave computers behind. It’s not a sad thing, it’s a happy thing. If it’s time to move on, realizing that is healthy and good. You don’t have to hate it to move on, just decide that there’s more to life.
There's scientific computing, embedded work, game development, tool development, industrial stuff, robotics, UAVs, software work in any number of tech-heavy industries that might themselves be interesting - just to speak of things I personally might find of interest. There's even Web development and enterprise software. And a zillion other kinds. All of which will have their own differing mix of problem type and day-to-day work and just "look and feel".
My current work means solving complex issues with a high degree of autonomy, new projects arriving at a comfortable pace, never the same thing twice (but enough similarity in projects not to be starting from zero all the time), a decent pace of new technologies to learn but without pointless hamsterwheeling, and so forth. We have genuinely good folks on the team with a good mix of experience levels, and great management who view their job as clearing obstacles from our path so we can do our thing. In short, I love where I'm at and what I do. Which has not always been the case in my career.
For a different person, my life at work would probably be an agonizing slog into burnout, or maybe just pure sheer boredom. I dunno. But the point is there are just so many different work situations available out there - many of them nothing like the ones you hear about on tech sites - and it's possible to find a different work situation that's a lot closer to what you need to thrive.
Software developers, on the other hand, are in this weird limbo where some consider themselves as professionals and others do not. I am using the term "professional" in the wikipedia sense https://en.wikipedia.org/wiki/Professional.
Similarly, some organizations treat software engineers as professionals, and other consider them closer to manual labor.
The result is there is no shared understanding what it means to be a software engineer. Therefore it's quite hard to discuss software engineers as a single body of professionals, as the loose definition of the field means there won't be a single definition everyone could fall into.
What I read from the article is that the author defines his "professionalism" as "inhabiting the monastery". That is fair and good, but there is no reason this definition and feeling should be shared with anyone else in the field. This lack of shared definition probably drives a lot of disillusionment.
Someone thinks they are entering a monastery, but the next guy is there just to sweep the floors for a living.
In monasteries most people are there to search for the higher purpose. But in software industry, "sweeping floors" is the most plausible job description, where no holy insight is expected to be gained.
The described disillusionment might not be because the business is pathological (which it may very well) but because the practitioner entered the field with false expectations, imagining perhaps grand technological projects to move humanity forward, but founding themselves in the "sweeping factory".
Another thing that comes to my mind - generally once you've been in the industry for a decade or so you are middle aged, and probably entering your middle age crisis where steretypically people re-evaluate their priorities and life goals. Which, given generally sofware people are not the dumbest people around, means there are lot of displeased people trying to search more meaningful careers, and given their general aptitude in complex tasks, can find lot of other fields (that don't need years of complex studioes) where they are quite good as well.
From their perspective I'm supposed to do what they said exactly as they said it, and from my perspective they are clearly not qualified to be making decisions on how the floor should be swept.
https://www.computer.org/education
I think a lot of people just don't understand the terminology. One can be a professional software developer, but for the most part software development isn't a true profession. It's more like a trade. There is a difference.
https://en.wikipedia.org/wiki/Profession
https://www.pearson.com/en-us/subject-catalog/p/professional...
Being a software developer can often feel little different from being in a high school programming class. Paradoxically, this feeling can have a positive correlation with years of experience. Looking back, I should have cherished my time as a junior developer because, frankly, I got to do more interesting things, write more original code, and actually have more say as to how work was going to be accomplished. By the time of being a high-tier mid-level or a senior engineer, the work not only becomes less interesting but is entrenched in a company's way of doing things. Somehow, senior engineers find themselves really not having as much power or influence over what they're working on. Hell, even lead developers often have limited power and are more or less supervisors with the responsibility of writing code. While the senior engineer's non-programmer friends get their own office or cube, he's sitting at a "shared" desk that's more or less a glorified high school computer lab with no personal touches.
Few software developers manage to distinguish themselves or obtain a semblance of prestige. Those who do usually don't entirely deserve it, in my opinion. Software developers with name recognition today either are in the business of shilling books or founded a company that makes some parasitic social media product that makes the world a worse place. Or they're promoting some paradigm as gospel. Some exceptions include language and framework inventors; I think people have generally good opinions of Guido van Rossum, DHH, Ryan Dahl, Rich Harris, and so on. These people are still largely nobodies outside of software developer circles, despite the impact their creations have had on the world as a whole and on the careers of countless others.
I think a major part of the disillusionment that goes unsaid is that "tech" today is far more associated with cyber dystopias than any sort of positive view of the future where software and humanity work together to solve real problems. This isn't to say the pessimistic view is a new one, because it's been around since time immemorial, but I do think that the institution of Silicon Valley isn't seen as favorable by the mainstream as it used to. When I got into software full time, programming as a career was in a bit of a renaissance after the recovery from 2008 and the easy money started really flowing. Joining an "innovative" startup was considered really cool, even by people who weren't programmers. Today, working in software and being a part of this industry is much closer to being seen as selling one's soul to the devil. When people think "tech", they think of cryptocurrency scams, Mark Zuckerberg, useful features disappearing on sites like YouTube, devices like Echo/Alexa that fail to live up to their promise, apps like TikTok warping the minds of young people, Tesla cars with their false advertising and shoddy production quality, the increasing prevalence of ads on streaming services... the list goes on and on. It all comes off as a giant swindle.
The health care industry is a swindle too, but it still solves life and death problems. Most "tech" doesn't, but is a psy-op to dupe people out of their time and money. Doctors and surgeons don't completely change their toolset every 5 years because of the opinions of other doctors. Gee, I can't imagine why frustrated doctors stay in their field while programmers throw in the towel so often.
Finally, I do think there's an unshakable taintedness to being a programmer while there's simultaneously an unshakable romanticism around being a doctor, or a lawyer, or even a starving artist. Programmers invest a ton of time and effort into learning their craft, and some end up sacrificing their social lives in their 20s with the belief that they'll really start living in their 30s after they've made a lot of money and have that senior title. They come to find that half their paycheck goes to the state, the women they're romantically interested in think programmers are "eww grody", and they've become pseudoautistic from a lack of healthy social interaction. A woman programmer may feel even more disillusioned because of biological reasons, and without the sort of respect they'd have had if they went to medical school.
Some part of you has to love the field of software in order to stay in it. Unless you make beyond the average six-figure paycheck, you probably won't find fulfillment from anywhere but within.
To any programmers feeling similarly disillusioned with the "world of corporate politics": there is a war going on (the War to Liberate Ideas). Join the fight.
The phrase "War to Liberate Ideas" gets you nothing on google/bing/ddg, with or without quotes. I think I know what you are referring to, but others don't.
But the reason I got into this wasn't because I had some idealistic reason behind it. I got into this because it provides a job that gives you the salary, mobility, and time to yourself that lets you do anything you want when you walk out of the office.
I love my job, I like doing software development, but for me it's never been about the ideals behind it. It's always been about what being a developer lets me do with my life.
Looking at it that way, there's really nothing to be disillusioned by.
I think too many get into software because of that magic feeling but then end up doing plumbing. Of course that’s not going to be as fulfilling as what you did on your ZX. But people plumb along or think that maybe it’s just time to go into management, they feel “done” with development. And that’s sad.
Are there others than:
Game dev
Research programming?
Startups/greenfield projects?
Almost everything except “web development” I’d say.
At least our customers just don't know what they want; theirs straight up lie about what they do.
They have a quiet chuckle.
As an engineer that became a manager, and then went back to being an engineer, I know the process well.
I was a very good manager, and I'm a very good engineer, but I love engineering, and hate management.
However, there was no one else that I could trust to do the job, so I took up the mantle.
It's hardly exclusive to programming. My father was a plumber in love with the craft and even the art of it, and by mid 90s the industry had crushed the love right out of him. Happens everywhere.
There's an upside to disillusionment in that we are stripped of all the ego and false beliefs we hold, as painful as it is. If you're one of the few who genuinely care/love, you'll come to the realizations you did. But the way out of the valley of disillusionment is to realize it doesn't matter how others approach it, because they are irrelevant. You get to do what you love and that's all that matters.
Only the creator will ever truly understand the labor and love that goes into his creation, to expect that level of appreciation or care from others is unwise and irrational. In fact, holding that expectation might even reveal hidden motives that imply one's "love for the craft" is not as genuine as they'd think.
Now I gotta read this. (link: https://www.gutenberg.org/ebooks/1268)
1) I work at an early stage startup, and besides the tech challenges, what brings me most joy is our mission and vision of the product: to reduce the amount of time healthcare professionals are stuck doing administrative work, in turn allowing them to more effectively deliver care. I admit I was lucky to find a place building a product I can care about, and that it's a privilege. But for the love of god, please (try to) work on something you actually care about. For me that means building something that adds value to society, instead of e.g. trying to make [big corp] more money by ad optimization. I don't think I would feel fulfilled working on something like that, even if the engineering challenges of working on such a project could be great and fun.
2) The author mentions that doctors avoid leaving the sector, because they can see the impact they're having on their patients. It seems to me he missed the obvious analogy to us developers and the users of our software. If you never engage with the users of your product (which I do believe happens a lot, especially at larger companies), how will you know what value and joy it brings them? Staying close to the user, trying to understand them, is imo one of the most important (and fulfilling) things we can do as developers. It also allows us to do a better job, not in the least as a result of actually caring how your software will affect people.
TL;DR try to work on something you actually care about
Also, electronic health record systems (EHRs) like Epic generally have horrible UX, e.g. navigating to a specific page might take 6+ clicks. We'd like to improve that by for example enabling navigation by voice, filling in forms by voice, etc.
For me it's losing the challenge/being disillusioned with the remaining goals
It's even worse if the patients in question don't just suffer from "unjust" illnesses that just happened by accident but are instead stubborn alcoholics or something like that. You can treat someone for the symptoms of liver failure, but you already know they'll be in again next week because they can't leave the bottle alone. And when this patient dies there will be hundreds more next week.
- money
- job security
- experience
Moreover, the pace of innovation in tech can burn people out for sure; trying to upskill all the time is no way to live as your brain changes and family life competes for time and attention. But more than that, the constant mini-revolutions in tech shorten history and reveal to anyone who cares to look the graveyard of innovation in miniature. It takes a strong will to consider without flinching that years of effort, success, and failure were transient curiosities to the world.
In a tech career you must plan for your own obsolescence unless you move into the 'stable' trajectory of management. That's rough on the ego of any healthy person. That's not even to mention the challenges of soulless bureaucracies that constitute most of the job options these days. The solution is to find sources of power and leverage for oneself. This is admittedly hard to do in management-dominated jobs unless you also have the skills for management. If you have management skills, you can avoid burnout by avoiding notions of 'fixing organizations' or 'improving processes'. These are dead ends. Find opportunities of expanding the things you control and minimizing the things that control you. If you are a technician who is loath to become a manager, understand you also need to maximize your leverage. This comes with control through skill and ownership, not skill alone. People who want to see this advice as cynical are narrow-minded. Nothing about having leverage means you can't help people succeed, or be a team player, or be a 'good' person. In fact, unless you are a sociopath, you must have friends and allies and be committed to their well-being to be happy. What it does mean is you having the power to do all those things and not be helpless. Helplessness is the mind killer. The whole 'beginner mind' business is, paradoxically, a hack to put yourself back into an expansive state of power (the opposite of powerless). But it cannot last. Unless you are a happy hermit you will want to be in the world, with people, with organizations, with politics, with friends, with enemies, with family. Technical competence, among its many uses, is a kind of armor you put on to conquer, but it isn't terribly useful to hold on to what you've gained for long.
Zero Credibility is a weekly column of essays ... on engineering the future
HR marketing pitches to attract talent by suggesting the prospect of important work are used because they work. Especially with millennials. Maybe the newest hires are mercenary, transactional zoomers and we can finally put the aspirational mission statements to bed.
The author's article does resonate with me but to add, I think the software game has changed a lot since the dot-com era. It has changed for worse, we are disconnected from the hardware and the users.
We are just middleware integration specialists, depending on an ever decreasing amount of pioneers building systems, frameworks or low level processes.
I want to build Dijkstras algorithms not write integration tests for APIs made terribly by Stripe
It was always so? It is so in every single technology: A layer is built and its complexities are solved, enabling the people and society to move to the next level and build another layer on it. With every step, more layers are put in between the lowest level and where we are. But every layer pushes us up one level more, allowing us to do things that were unimaginable before.
Technology has always been middleware. Somewhere someone discovers a pioneering, new implementation or tech. The rest of the process is doing middleware to bring that tech to the people.
I also keep a Fred Brooks quote taped to the wall behind my monitors:
The programmer, like the poet, works only slightly removed from pure thought-stuff. They build their castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures.
The magic of myth and legend has come true in our time.
Fred Brooks, The Mythical Man Month
It doesn't fix alienation, but it helps. I particularly like to share it during interviews to get the vibe of the people I'm talking to and potentially going to be working with.That kind of actual positive impact isn't the norm in tech.
The AI revolution can't come soon enough. We'll all be out of a job, but perhaps we'll all be better off.
It's so much more satisfying that the tedious, unfulfilling, run-of-the-mill software development crap that I was doing prior to this. The nice thing about this switch is that all my previous experience in the field comes in very useful, unlike if I changed careers to something entirely different.
I left software engineering because I just couldn't see myself doing it for another 20 years, especially if it was going to involve even more meetings (ie. management). I chose patent law because it seemed tech-adjacent.
I'm in biglaw now. Too early to say if this was a wise move or not, but I do find myself fondly reminiscing about my cushy life as a SWE often, already. I have work much, much harder as a patent attorney and have much less free time and time off. Yes I get paid more, too. This is partially a function of biglaw, and partially a function of the legal world in general that is tethered to the billable hour.
I guess my point is to take careful stock of the lifestyle being a SWE affords you relative to the workload and compensation before making any drastic moves.
My day job(web dev) is like everyday the same house is flooded with sewage and I need to clean it quickly and also put a smile on my face and tell how great is that and that I managed to do it all today and suggest new ways of cleaning sewage better.
cf "what is the little man there for?" https://books.google.ch/books?id=V3ByEAAAQBAJ&pg=PA575&lpg=P...
But in the end the old tech is still there for you.
> Yet I haven't heard of a single doctor who quit his practice and moved to Colorado to run a ski lodge.
How many doctors do you know?
Then I got banned and all of that came to an abrupt end.
Now I’m using Wikishootme to document South-West Sydney as it’s unloved by politicians and those from the East and North Shore of Sydney. I’ve discovered the area I live in through the act of taking photos of the place I live in. It’s fantastic again!
A little late on this one, but I've been recapping and fixing an old SE/30 I've had since '98, and it's been rewarding to do. I've also connected with old friends while doing it. Doing things in meatspace that are tied to computing has been really fun and running System 7.5.5 on an SE/30 also reminds me of how far things have progressed from back then while still some things seem timeless. It used to run NetBSD and run as a server ages ago.
I also collect Roman and Ancient Greek coins (there are cheap ones), have a Roman emperor list filled out, and have a lot of lovely Greek art I've picked up over the decades. I just started a new Byzantium & the Middle Ages building out an eastern Roman emperor list. Holding each coin and learning about the era depicted and the people of that time is fascinating for me. Won't save you from burnout over tech, but it's always good to have hobbies that keep your spirits up.
I laughed, goddamn this is funny. An article about how exhausting this shit is and there’s fucking dark patterns shitting all over it. It’s so perfect, like a grand satire. Performance art done in software, but fully unintended and shockingly cynical.
>The default in engineering is different. We don't have a daily ritual built into our jobs that reminds us why we got into the field.
This is just https://en.wikipedia.org/wiki/Marx%27s_theory_of_alienation
The difference between doctors and software engineers is just that it's easier for us to be alienated due to the nature of our work.
It's by design. Employers want only young people because they are still gullible and don't question the politics.
Surviving Disillusionment - https://news.ycombinator.com/item?id=24896650 - Oct 2020 (170 comments)
- I think part of this is related to this era. even MIT reopened glass smelting fabs. People need more stimuli than digital projections inside chips
- All we really want is to contribute to others. Do something nice that is never gonna be of use to anybody and you'll feel down, do something super trivial that gives someone his smile's back and you're proud of your day.