Same Stop: Life after 26 years as a programmer for Apple
engineersneedart.com
engineersneedart.com
So I'm a software dev/architect again, working in esoteric and interesting spaces, and will continue to do so until I "retire" (meaning that I switch to full time on my open source projects).
I wish I was one of those people who could just forget the problems at home, etc. when they sit in front of the computer and start coding, but I can't, and as a result my ability to focused work has gone down a lot, and nowadays I do more "people work" simply because that's easier to do when my head is not in it 100%.
Reading the comments on vjk800's comment led me to focus on my state of mind today (I'll be 75 on June 8) as I work on my blog in its nineteenth year.
Though I spend perhaps 2-3 hours/day 3-5 days/week on it now (I post 3x daily, 7 days/week, down from 8x daily 7 days/week when I started), my flow state is as automatic as it was at the beginning.
I feel fortunate to have found something so reliably rewarding that has persisted throughout the ups and downs of everyday life.
> How does the theoretical world of quantum physics create our everyday life? "Quantations" explains this with wit and clarity, making the imaginary real.
I also took a peek into the book. I'm sorry to sound negative, but this is just full of fluff that has nothing to do with actual quantum physics. It's all pseudo-philosophical fluff and that stuff is the reason my aunt thinks she is a "medium" and communicates within some kind of "sixth dimension". Sorry to say, but this is all BS.
I ended up going on a self-funded sabbatical to focus on sorting out my personal and internal life, and the #1 change that has led to rediscovering deep focus was starting a mindfulness meditation and yoga habit each morning. These core habits led to changes in how I was relating to the worries and created space for me to sort through the underlying stressors.
YMMV, but I realized that some of the things I was worrying about were just consuming energy (despite being legit concerns), and I started actively reframing worries using some of the exercises in the book “Learned Optimism” (Martin Seligman, 2006). This book also made me realize how deeply hardwired my pessimistic defaults were, and these defaults were the source of a lot of my daily rumination and worry.
All of this to say, if you are at all similar to me, it might be worth considering the lack of ability to find flow a big red flag worth actively investigating. I don’t know if I could’ve avoided burnout, but I’m sufficiently convinced now that internal work is one of the most important (and accessible) ways of addressing this.
Don't you worry, I have plenty of other red flags besides inability to concentrate to keep me worried :).
I've tried meditation before, but didn't really "get" it. The instructions always tell me to let go of my thoughts and concentrate on a mantra or my breathing, but not a single time during the two months I followed a meditation program was I able to do so properly.
Exercising is one of the few things that even remotely work for stress relief. I've also done yoga and it works, but not any better than jogging or weight lifting.
I suppose that the differences might be subtle. For one example, for the condition that you have a sense of doing a good job, your metric for good job might have changed: it might no longer be simply make an algorithm to do X, but include larger context, including the reason X is being done.
BTW, keeping in mind that techbro ageism is a thing, especially in YC-type circles (that's how YC started), I suppose that HN comments by over-30 people can be fodder for confirmation bias by 20yos.
One thing I’ve noticed, though, is that my difficultly in getting into a flow state is more often than not because of a subconscious hang-up about the approach that I haven’t articulated yet.
I’ve learned to recognize and lean into this, and actively look for what’s bothering me about a design. Usually while doing other things.
I suspect it’s actually saved effort overall.
I recently tried playing some video games adjacent to ones I've loved before, and I found it really hard to get into them. The games are Red Dead Redemption and SimCity 4, so the graphics and gameplay mechanics are ok. It's just been hard to really get into them.
I predict you'll have more, just not as frequently as you used to. :)
FWIW, many of the things I used to have to spend long periods of focus on are now simple/common libraries that just didn't exist 30 years ago. Or, if they existed, there wasn't any convenient way of discovering them. So I find my productivity is still comparatively high, even with fewer number of flow states.
When I code, there's always so much stuff I don't know that I have to look up or so many big design/refactoring questions that I'm discovering in real time and have to grapple with. It's as flowy as your car getting stuck in the mud every 2 miles and having to get out and push. It's as productive as having a bipartisan Congressional hearing on the best posture to use every time you have to push it out of the mud. Incrementalism and time management are my friends cuz it's exhausting to do that for too long without breaks!
Nevertheless, programming remains my favorite professional and hobbyist activity.
I love coding and problem solving, but during my career I noticed that I'm _really_ good at getting technical people to communicate with each other and integrating their work.
I try to do both, but I still don't know which I like more. I tried the full manager / chart drawing architect -route and I hated it. Just coding was a bit boring too in the long run, because I want to make an impact on the org-level and I'm incapable of shutting up if I see any inefficiencies that could be improved by communication.
This is one of my biggest struggles. I see so much flawed work and I can't help but voice my opinion, but I can't possibly dedicate time to try to fix it all, so I'm often afraid of just coming across as a complainer.
You could try being a manager for a while and see how it goes - you can always go back to what you know.
Ofc you have to find a company where it allows for such options.
After looking at my current manager and previous managers in my previous jobs I decided to never become a manager.
Being a manager means that I'll have to fill my day with nothing but meetings I cannot skip, keep talking on and on and on, deal with delivery headaches, respond to requests even while on PTO, do a lot of context switching between Slack, email, calendar, documentation, and other things. I used to like that level of being "busy" but now it seems that having my focus time is the best thing ever.
I wish I had not. it relegated my time to many tasks other than tech implementation.
FN having to train CFOs on financially managing cloud environs, managing people, pestering people for status reports, c-level presentations on this that and the other thing, etc...
My biggest mistake in my career was thinking I was "climbing the ladder" when accepting a position as a manager, director etc...
find a cross-section of what is valuable for the company and what you like doing
Grass is always greener.
However, I see a constant push from people around me to focus on creating a pipeline of ideas and let others implement them. Unfortunately, I do not see the same level of enthusiasm I have in implementing some of those ideas - could be due to lack of recognition since it is not their original idea.
Once I retire, I will just go back to where it all started. Come up with an idea followed by implementation. The sheer pleasure of seeing your idea working in a reasonable timeframe is exhilarating!
I want to earn enough money from my business ideas to spend the rest of my time on hacking on niche languages, distributed/anonymous networks, etc. and as I grow older, to use computer and programming just to maintain a modern off-the-grid life (so working on my smart grid, automating my cabin-in-the-woods life)
Computers and the Internet have gone from being a lifestyle, to just a tool.
When I’m done coding all day I want to do other things like exercise, climb mountains, learn instruments, etc. My motivation to do other things isn’t due to a lack of curiosity, but curiosity channeled into other activities.
> Programming is beginning again to be to the exclusion of all else in my life. (The table saw sits slowly rusting. The bike hangs on the wall in the garage.)
This in particular hits home. Programming, to the exclusion of all else in life.
> What am I trying to say? I have a programming addiction? (Maybe.)
There are times that I feel pulled in every direction by life, family, work, being alive, and it keeps me from this software ambrosia, even though I know that spending my life in front of a CRT/LCD/TFT/whatever they are these days is in a way wasted. I've spent 23 years doing it and I'm 33 now, and it feels like life has flown by in the glow of a terminal prompt.
Putting things in neat little boxes, solving little puzzles... it's kind of hard to describe, but at least personally there are other things that give me the same sense of satisfaction.
Engineering is a wonderful tool but also a form of art. It’s ok to indulge your passion with some balance to the rest of life without calling it addiction.
The happiest I’ve been is in the past few months, in a new role. There are several reasons, but one of them is definitely that i have ann excuse to get back to code.
I find myself waking up early, and having work to finish, on a Saturday - that I enjoy. It’s feeding my ability to work on other personal projects, that make me happier and I learn new things.
> To be consumed by (personal) work, working late into the night only to wake up and continue, uninterrupted and enjoying the bliss of focus, well, it can't be beaten.
I pose that such people shouldn’t be devs or managers, but “manager” is a role that tends to be forgiving of under-qualification… because ultimately the good devs don’t need to be “managed.”
It’s important to respect that other people are bringing different things to the table. Everyone’s got different strengths and weaknesses.
It is also important to respect that there are a lot of people that may bring something to the table, but not necessarily a whole lot. Sure, they'll have strengths and weaknesses and they are whole human beings with lives and people that love them, but this doesn't mean they are good at their job. And it also doesn't mean that they're good in a management or dev setting.
What role is that?
Where I get my fun is that I live to increase my understanding of something. This code should be doing "this", but it's doing "that" instead. Is there something I'm missing in my basic understanding of this particular topic? When I follow it through and get that "Ahh, I get it!" moment, it's like a drug for me. All is suddenly right with the world again. It's why I gravitate to lower level languages and languages that give me more control.
The rest is building scaffolding and applying standard recipes and carefully laying things out as I go. I still enjoy it, but I don't get the happiness that I get from getting one of those "aha!" moments. Or being told my stupid Word macro saved someone hours of work in some random meeting somewhere, I guess.
Anyway in IT there are loads of different jobs other than programming. There's QA, application support, databases, project management, team leads, all sorts and it's pretty easy to switch tracks once you're on the inside.
We'd hang out in each other's offices (the "open floor plan" trend hadn't quite taken hold, we actually had private/semi-private offices back then) and talk about old computers and stuff. I was starting to get into hardware hacking as a hobby. He gave me a Tektronix oscilloscope and an Apple IIe (both still work, they're sitting on my shelves and I'm looking at them right now!) which was amazingly generous of him. He wanted to give me a big box full of helium-neon lasers and optics and power supplies, but had to decline due to my lack of space. Hope you're doing well, John!
Fast forward a few years, after taking on more mentorship roles, then staff responsibilities, then slipping into project oversight roles… She was so right. Coding was a great stepping stone.
Several years ago my father got promoted to some leadership role. In our conversation about it, he told me he had asked to get back closer tech, but his boss declined and said tech specialists are a dime a dozen. Technical leadership is very expensive to find though, and once you find one you don’t let them go back to the production line.
I still occasionally answer an SO question or make a few commits on personal pet projects, but lately I’m just as likely to go fishing instead or make edits to OpenStreetMap.
Programming really is a special kind of career. I can’t imagine making it the only one I ever tried though.
Ah, the foundational myth of middle management.
"But my manager sucks!" Yes, probably. Part of the reason managers have a bad reputation is that there are so few good ones, and so many bad or mediocre ones, that most people deal with bad ones their entire career. And, since a good manager looks a lot like leadership material if you squint, the great ones often get Peter Principled into being mediocre bosses.
But when you do find a good manager, you realize they have a very specific skill set that is incredibly rare and difficult to master. They multiply the effectiveness of everyone on their team, including those good technical leads, but also the juniors and seniors.
IMO there's an awful lot, they just ask for mid 200,000s.
"My father, an Inquisitor himself, told me of the time when the Grand Inquisitor promoted him. Ordinary priests are a dime a dozen, the great man said, but it takes special skill to be an Inquisitor. And that's why you never let them go back to the pulpit when you do find a good one."
I have a friend at our company who is a gifted programmer. He was moved into a management position. He discovered that he hated working in a leadership position. He tried to get them to move him back to an individual contributor position. They refused. He said, move me back or I quit. It took them more than a year to transition him back to an individual contributor role. That was a few years ago and he has been happily plugging along ever since. He says that even after he transitioned back, they kept coming to him to get his opinion on issues, the only way he got them to stop was to completely refuse to respond.
It's acceptable to want to stay in a specific role, but I am not certain I feel it's acceptable to eschew an increasing responsibility or mentoring role as you gain experience. That way lies the "genius programmer that works alone and writes code no one else wunderstands".
It’s the same as not solving chat request bypassing prioritization.
The company is full of incentives to ask that guy for guidance/things, if he doesn’t say no most or all of the time, he simply won’t have time for his IC role, and would remain a lead just not in name.
It’s hard that it comes to that extreme measure, but if his requests aren’t being heard, it’s either that or leaving. The company has to let him be an IC or explicitly tell him that he can’t stay there as IC, are at least negotiate some timme allocation for those requests and log them
I think there's mentoring and leadership. These are different. I sure can mentor and help people to better think/program but don't ask me to push a team to meet a deadline they don't want to meet because they warned the marketing department 2 months before that they wouldn't do it. Been there, done that. Once in that position, you're pushing people, you become the bad guy and you have to explain that it's "for the good of the company, because they have to see the big picture, etc", IOW "screw you, I'm the boss". For that you need to be crazy enough to think that what you want is more important than what other humans-like-you are. OK, leadership is not always that and most often, you have to gather enough trust from your team so that from time to time, you can be a pusher. But if you don't have trust and you are always pushed to push, well, welcome to hell, and say goodbye to your health.
It's very different than "let's work together to find the best possible way to solve a problem, taking all the necessary time to produce something reliable".
I think it depends on how much time they expected him to take out of his days. My girlfriend resigned from a job after becoming a go-to person for everything and everyone. It caused her to not have time for her own work, effectively being way underpaid, and being stressed all the time.
Also, "acceptable"? By whom? Why should I care what they think? I want to be engineering software. If they don't like that, they can either deal with it or let me go. Good thing there's plenty of developer jobs as well as corporate bozos to take the coveted management positions.
It is important though to not compensate for the humiliation with smugness to those who are good at their job.
Who can tell?
A lot of corporate places I've worked at are always pushing you to progress in to leadership positions; if you aren't moving upwards then you are "managed out" which I always find really sad, the idea that simply being good at your job is now no longer enough. Good on Apple if they don't follow this type of thinking.
If every developer moved "up" to management after a few years, only mediocre programmers would be actually writing code (which is partly true). I've become chief engineer recently, but I had already been leading other developers for a while... but I keep writing lots of code, despite frequent interruptions to assist others... I can see how others often go in undesired directions if not guided back to focus on what is important. I am very glad my company has recognized that I can do that but knows me well enough to understand my strong point is coding, not managing. I am sure Apple and many other companies are also aware that a very experienced developer still writing code with others is worth a lot more than in some miserable (for them) management position.
Also, Apple, presumably being a very siloed organization, probably benefits more from tribal knowledge of the elders more than your typical organization.
This is the role of the senior engineer in a nutshell: herding the cats, but from the technical side.
That experience was very eye opening to me. As a result, despite being offered lead positions several times, I’ve always declined. I know where my talents and interests are, and they most certainly aren’t in “people problems” or managing someone else’s career. Thankfully my employer still has a very robust career track for people like me.
https://www.ft.com/content/356ea48c-e6cf-11e6-967b-c88452263...
You will see it mentioned in context of poorly performing staff, but it can also be used when you have someone who is perfectly capable at their role but has no desire to climb the ladder. In many corporate environments that is viewed very negatively.
I wonder how common this is in tech companies where IC is a valid career path and terminal levels exist?
What out of reach concepts do you have? I've found that, with time, I could code almost anything (barring ultraspecialized programs like FEA analysis etc.). The only thing between me and the finished program is hundreds or thousands of hours of work. I don't see magic in that.
"Programmers have such a sunny job, full of rainbows and unicorns, that they've taken to leaving little love notes in the form of sardonic comments within their code. It's their way of whispering sweet nothings to the universe about the sheer joy of tracking down that one pesky, elusive bug at 3 AM, or the pure elation they feel when the system crashes for the hundredth time for no apparent reason. They do it with such grace, wearing a smile that's as bright as their computer screens in a dark room. Indeed, who wouldn't want a slice of that pie?"
Sometime later, something triggers it or an idea related to it. You can instantly jump back to it. You think "Hmm, I wonder if I can try X on it..."
Where X is a technique, method, or process you may have done before, but in a different context.
I worked through Columbia doing user support for the university's Unix systems group. I got a job on Wall Street like many classmates, but for which the hiring person (an equity analyst covering software companies) was specifically looking for a CS major; I was able to demonstrate that I had the equivalent background thereof.
I have been successful with computers because I enjoy working with them. I enjoy computers because it's a hobby, albeit one that has affected my entire working life. I suspect that I would not enjoy computers as much were it actually my job. Since it isn't, I have the freedom of being able to (for example) write Elisp[1] to improve VM, the Emacs-based email client I've used for almost three decades. While I may contribute my code back to the VM project someday, meanwhile I report to no one and have no deadlines other than my own. That's freedom.
[1] I well remember the epiphany the day in Logo class I realized what recursion is. I still feel like giggling when I find an Elisp task for which recursion is an effective solution.
I share this sentiment. I pursued computer science because of the romanticized notation of tracking every bit and byte and talking directly to the hardware. I know I'm not alone given the popularity of old-school fantasy consoles and consumer microcontrollers, like Arduino.
It saddens me to say but if I were starting over today I might not enter the field professionally. Most modern development is gluing components together and wrangling packages. It's so far removed from the machine and the distance is only growing.
I don't know what's sadder: That this kind of programming is becoming a lost art, or that nobody seems to care. I got my first job out of college partially because in the interview when I was asked to implement some algorithm XYZ in "any language I choose" I went with X86 assembly and nailed it. Well-performing code was highly valued at that company. Knowing how to ensure your code fit into the cache and your memory accesses stayed on one page were considered critical programming skills.
Now, outside of a few rare embedded or game engine jobs, nobody seems to give a shit about any of this. It's just "glue these APIs and libraries together and ship the resulting crap as soon as it barely runs." Nobody cares about the size of the resulting executable. Nobody cares about or even knows their code's runtime heap footprint. Nobody cares or even measures how many cache misses they're encountering. I feel like an old grandpa even typing this stuff out.
The worst part is that end users are the ones that end up losing. It's their system resources that are ultimately being wasted.
I think it will remain niche to care deeply about these things but they aren't forgotten. In my late 30s and finding this type of thing more and more fascinating despite working for companies building criminally inefficient software using Ruby and Python and dozens of microservices.
I think there are real costs if the level of incompetence adds up over a stack/system. But as a general rule, I don't think this is a sad phenomenon at all. Well, actually, it's fair to feel sad about it, but it should be understood as a form of growth for our society. (Growth is often painful.)
Writing low-level code should be viewed like blacksmithing or any other technology. At one time, it was the cutting edge that enabled new tools to exist. But over time, it's become well understood and abstracted and it's possible for us to build factories that automatically output many of the steel products we need. And now we can mass-produce steel components for more advanced machines that would have been impossible if they had to be forged by hand.
Not to mention most of my time as a "Developer" is spent managing busted CI/CD pipelines, container crap, whatever cloud-yaml things, fighting broken dependencies/build issues, cargo-culting test suites.
I program way more on weekends/nights on toy/tutorial stuff than I do at work, ironically.
That’s actually what I love most about things today. Hard components I might want to use probably already have a ready to made library I can start with. Time from inception to prototype to production is so short that it really removes a lot of the tedium. I wish it could be even shorter but a lot of the time I’m writing code is because there isn’t something that meets my specific requirements. I wish AI could fill that gap but it feels like we’re an extremely long way away from that. In other words, the part I enjoy most is the high level problem solving or even coming up with what new requirements might be to solve a problem. The mechanical aspect of realizing the vision can be fun but it can also be quite frustrating / repetitively tedious.
I really enjoy being a web developer despite most of us being the new butt of the so many programmer-centric jokes.
Being a _user_ of code doesn't appeal to me at all. I work at a big pharma and know lots of biologists and especially chemists who are proficient programmers. They use code (more than craft it), but they're impassioned by the science itself. Coding is merely a tool to them, the means to a more compelling end.
I don't share their perspective, nor do I want to compete in that space, so I get my jollies by learning the info extraction process and diving into the cool, underserved, often complicated parts, like image quantification and pattern enhancement/recognition in raw and dirty data. That often requires some math and some low level bit twiddling, in code and in signals. I can't imagine cutting and pasting my way through that world, nor would I ever want to.
NPM is fine but too many people add what should be 20 straightforward copy-pasted lines as an external dependency (lodash being an extreme example).
Isn’t computer science mostly math? Figure people in computer science would be more at home with the abstract stuff like Haskell where you can’t even see the underlying hardware and your programs are expressed as a bunch of (declarative) functions where sequential execution of instructions is a very small part of your programs.
I have a project that only builds in one version of Visual Studio on my machine. I know it's bad, I know I should get to the bottom of it before it becomes a real problem, but it's soul crushing work.
I tend to pick only stuff that is packaged in a distribution, if at all possible. They usually do a decent job at gatekeeping the countless libraries created by people that have no idea on how to make a library.
I say that to contrast with 'application' languages like java, nodejs, or whatever. I'm not saying hobbiest stuff doesn't get written in those but you're a lot less likely to see an OSS spring or react app on someone's github than you're likely to see some cool little command line program that does one small thing.
To me, the draw of programming being that it is both a logical puzzle and a constructive endeavor, brings me a lot of joy to be able to see my stuff work. Whether that's manipulating memory bytes or using a package someone else wrote to do something I want, there's little difference in terms of satisfaction.
Or maybe today's CS grads speak a different language too.
But my immediate post high school plans fell through I spent a year working crappy jobs until I eventually figured “you know I bet I could get a job as a software developer if I tried”. It surely would do a lot better for paying the bills.
Nowadays I mostly tell people: I didn’t get into programming for the money, but that’s sure as hell why I entered the industry.
Of course, it looks like my little stint is over, but I don’t know what to do now. On paper it’s the only thing I’m qualified for that’s not unskilled labor.
On top of that, the jobs I still see seem want want increasingly obscure specializations I don’t have. I haven’t had a job for over half a year, and there doesn’t seem to be any sign of that changing. The recruiters dried up a while back and I’ve only had sparse interviews, which have been some of the most antagonistic I’ve ever had.
It’s not any particular “type” of company either. Both the tech profit center companies and the tech cost center companies don’t want me.
It's worked out OK, for me.
My first exposure to Apple personnel, were the MacHack conferences, of the late 1980s. Back then, Apple was still pretty "scruffy." Some of the T-shirts that showed up at MacHack are now silk-shirts at Apple.
Over the years, because of the companies that I've worked at, we have had pretty close relationships with Apple, and I have enjoyed interacting with many of their staff. I actually had a fairly decent window into their culture.
A few years ago, I finally left my last company (after almost 27 years), and started looking for work. During that time, I was contacted by Apple, and did a couple of interviews. They were probably the only company that I would have relocated for, in my fifties.
It didn't work out. As it turned out, and, quite surprisingly, I didn't mind that it fell through. The interviews made me aware that the culture was nothing like what I expected, and, I suspect, taking the job would have probably been a very bad move for me. I'm sure that the money would have been great, but I don't think I would have found the environment to my liking.
I'm one of those folks that isn't particularly interested in bucketloads of money. I really enjoy writing software as a craft. I'm quite aware that many folks, hereabouts, despise people like me, and that's sad. I feel as if a bit of the "soul" of software has been leached out.
But, at the same time, some very cool stuff has been accomplished (often, motivated by all that money), and I look forward to the future.
I wonder though if you can develop a superb product and company with just money alone. In a way you probably need evangelists rather than just hired guns.
In my experience as a product manager, the evangelists are much more creative than the hired guns. You can throw lots of money toward the development of a product but that doesn’t mean you’ll get innovative solutions from your team.
You need a mix of believers as well as hired guns.
I'm always curious about people's willingness to uproot their lives, and move away from family and friends for a job. Especially at older ages where one has 'made it' and money is no longer the top priority.
There's only one organization that's on that list for me, and that's JPL, especially if I got a chance to work on their sat / rover stuff.
Smart kid –like, really smart. I think he got his Ph.D from CalTech, or maybe it was his undergrad. He’s a math professor at Penn State, these days.
Not sure what teams he worked with.
Yes, absolutely!
A few students of mine would show me little games they were working on, or websites they were building. Sure, they might be doing this a bit for resume-fuel, but it was abundantly obvious to me that they were doing these things largely because they thought it was cool.
And you know what? It is cool! I tried my best to encourage them to keep at it.
I definitely do not think these will benefit my resume in any way.
It didn't occur to me that I was old until your comment. Thanks!
I'm in the same boat and I definitely still feel young. I mean, I'm fundamentally unchanged from when I was 16, and still like the same stuff like video games, computers, and so on. I have also always looked kinda young, which probably allowed me to propagate my youth until very recently. The biggest change I've noticed is not anything internal to me but how other people act around me; they talk to me like I'm an adult (which can be either good or bad depending on the situation), and the cashiers at the stores have stopped asking for an ID when I buy liquor (before 30 they still did!). Also, people don't give unsolicited advice as much as they used to; I suppose they think I know what I'm doing or don't care. This is definitely bad, because my modus operandi for life has always been to try weird stuff my own way and count on other people to stop me if I'm doing something completely stupid.
Perhaps at some point there will be very few older than you and perhaps then the sliding window will be offset accordingly, but at least for me (almost, almost 40) I'm still well within the "define young" range from my own point of view.
There's honestly nothing wrong with that. It's perfectly valid to do something purely for the pay (so long as what you're doing is ethical, obviously). I suspect there are plenty of young people who see the bloated salaries that software engineers get and decide to learn programming for purely economic reasons.
This probably contrasts somewhat to the 80's and 90's, where it was substantially more difficult to "get into" computers, and as a result there was a strong selection bias towards really passionate people.
There are the circles in which the nerds cluster who are really in the tunnel about whatever subject it is, here it's programming or CS in general. They do it for fun, they come home and sit at the computer all evening and half the night. Occasionally they do the homework assignments, and if those are interesting, they nerd out about them endlessly. And they are really good at it. They don't really go to parties and are a tad (or a lot) anti-social. But they don't care. Typical minor subjects are math or physics. It's beautiful.
Then there are the circles of the in-it-for-the-moneys. They do homework assignments because they have to, they go to classes because they have to, they read business news, go to parties, feel important and have dollar signs in their eyes every time they think about graduating and finally making big bucks. If lucky then they get help by some of the nerds (see above). But they actually detest the nerds, just as the nerds detest them.
There are more circles and I don't want to deep-dive here, but I actually this also reflects at the workplace 10-20 years later. It's easy to see from which of those two groups the high-performing ICs (some of them a bit socially awkward) come, and from which their managers, and why there is tension between those.
It’s important not to internalize the fear response of having to shoot down everything that makes you feel threatened.
I expect that when I eventually retire, I will end up writing code for Arduino devices and other things because it is what I truly love to do, and I never want to stop learning something new.
It is a bit more abstract than making music or painting or messing with materials (wood, stone, metal etc), but it pushes the same pleasure buttons. Its the simple joy of building and sharing stuff.
In a professional context programming mutates and becomes what organized society and economies want it to be. Another cog in the machine.
Coding for money is no more or less happy than cooking, making music or applying any other intrinsically pleasurable dexterity for money.
What is intrinsically fun and something you would do "for free" becomes draining, stressful and devoid of purpose. The "purpose" in organized work is dictated by large scale patterns of supply, demand, monetisation games and organizational structures.
In a sense what we are missing are meta-tinkerers who would (for free and for fun) hack society and its economy to be a more meaningful place, one that does not make us to need to "retire from".
My father is a retired doctor. I’ve never known him to play golf, but he works 60 hours a week in the emergency room of the clinic on the local Indian reservation. He claims only working 60 hours a week is retirement for a doctor.
But, it really does need to be in a language and platform I enjoy. I also notice that if you have a job with a more niche language all your collegues will be passionate about the work too.
This is why I personally do not care much about language comparisons. It might be that the language of my choice is only marginally better and in some case worse as a more mainstream language. But there are cultures around languages and you need to fit with that culture to get the most joy out of your work.
I think those that choose to go into programming purely because it can earn well (I have nothing against this by the way) will choose to invest in one of the more popular languages because there are more job opportunities in it. Also there would be any, let's say, Common Lisp bootcamps so it is more likely that the people that know it have picked it up because of some passion.
When focusing on nice languages it is very easy to get hired for positions that need it because there is less competition. Though, contrary to what I would have expected usually it pays a little bit less. The highest paying jobs I had so far were in Java.
http://macscene.net/home/features/news-archives/item/intervi...
As someone who went into software development because it was my passion and my hobby, its always disappointing how often that isn't the case for so many people in this industry. It's draining actually; The lack of enthusiasm and genuine interest is replaced by a clock-in and clock-out mentality. Bootcamps have just become farms for people who need a job, but not those who really want this job.
I want to work with more people who LOVE software and find the development of machines and the code that runs on them as fascinating as I do. Unfortunately, its less and less these days.
Above and beyond that, I love software, but I don't love Zoom calls, on-call shifts, unnecessarily annoying processes that I'm not allowed to automate, Slack messages, KPIs, objectives that combine vagueness about what we're doing with strict rules about what we're not allowed to touch, horrific dynamically typed JS code where half the arguments to a function are obscure mashed-together objects, over-specified tickets that leave no room for creativity, trying to jam my code into a service where it doesn't fit because leadership wants to encourage code reuse but doesn't understand DRY, or anything else that makes up the actual profession of software engineering.
My interest in computers and programming hasn’t waned. But with every passing year, I have become more invested in my relationships, obligations, health, and other hobbies. So programming is a much smaller slice of the pie these days.
I still think of myself as an interested and enthusiastic programmer, but I will admit that my interest and enthusiasm pales in comparison to my hobbyist coworkers.
I started as a software engineer who was "passionate about software" and could see my life revolving around it. The change in my mindset towards this, that gradually happened few years ago, i.e. the "clock-in and clock-out mentality" is one of the best changes in my life!
It always shocks me to see such sentiments from people. I mean how difficult is it for people to comprehend that that are too many kinds of people out there and hence too many kinds of software engineers out there!
Clock-in, clock-out doesn't mean these software engineers don't like the work they do, or do not write software that is good, or that they do not take pride in, or they do not feel responsible for it. Anyway that doesn't mean every other free hour, or any free hour in their lives, away from that day job (which is software engineering) have to be about software or code, or hell even an hour have to be about software.
Your job, your profession doesn't have to be your passion! Not everybody needs to be an artist, or a software artist (if I can say so)! There is a work that needs to be done and there are people who can do this and they do this and it can be just that, nothing more.
Did you every think about yourself, how you got into software engineering? Did you really always want this trade - truly? Was this genetic in some way? Or some kind of divine intervention? I mean I know I am getting facetious here with this analogy but just look at it before pointing a finger to a whole new generation of people who are maybe just different.
I kinda disliked it, at the beginning of my career, when I saw my engineering peers moving into finance, MBAs and what not, but slowly I have started to appreciate it as I am getting this idea sunk into me deeper - work is work, nothing else. There is whole lot of rest of the life out there. Go where you want, how you want to, immerse yourself into something only as much you want, there doesn't have to be a scale of "passion" you have to conform to.
It is so tiring and frustrating to keep encountering this mindset so often. Luckily my generation is genuinely starting to stop giving a fuck about this and the newer generation is more vigorous in rejecting of "your work has to be your passion" regressive mindset.
If you're passionate about the mission/coding you will just produce a lot of impotent anger, because there's no way an IC is going to restructure the program given the layers of bureaucracy in the way. Maybe if you went management and then spent a decade or two climbing the corporate ladder, and even then you'll run into brand new managerial constraints. So if you're going to stick around, you learn to detach. It's one of the many reasons I plan to have a new job by Christmas :)
A surprising number of acquaintances of mine have failed at retirement[1]. That has never been my problem :-). That said, I still do consulting because it lets me play with equipment that I might not otherwise decide to buy (like million $ RF labs :-)) However I've structured it to take a back seat to my own projects and the opportunities as they present to go camping or on other adventures.
I also know a bunch of people who never wanted to see a computer again after they didn't need to work, one of whom actually went back and got a degree in creative writing because they really wanted to be a writer all along.
It is also super helpful to have a spouse or partner you like to hang out with. One friend of mine opened an office so that he could be out of the house sometimes when things got too hectic.
All good problems to have.
[1] To fail at retirement is to have the resources to pay all the bills and do fun things without "working" but getting bored from the lack of interesting challenges and so going back into the workforce anyway.
How can a child fall into programming when the computer yells at you, with cryptic messages, uncomprehensible for a child, moreso since I was French-speaking only. “ERROR!” It even accuses you: “YOU are about to reformat this DISK. Do you want to proceed?” (7-year-old me looking up “proceed” in the dictionary, missing “reformat”. Ah, fdisk, so many nights crying that I had lost my computer).
But, speaking from experience: At least it’s your fault. You can do something about it.
Now compare to the sand pit at school: You play marbles with a girl, if she loses she goes crying to the teacher. It’s not your fault, you followed the rules, teacher tells you off, ah, gotta learn the rules of life. “Girls have cooties” is the most funny self-reflection on my childhood. There was no way as a child to learn navigating that complex rules of social precedence, implicit expectations, social cues, untold obvious rules. Even today: I’m bad at office politics, so I’m a CEO and make a million a year.
At least, with computers, when it doesn’t work: It’s my fault. I can do something about it. Same with business. It’s my fault. A provider defects? Still my fault. Economic crisis? Still more my fault than playing by the rules in the sandpit and being told off.
But people? I need five times my IQ.
When people didn't know what to do in the 90's, they went into e.g. advertising or banking. They just wanted a job, advertising was big, seems fun, let's do that. Now those kinds of people "get into tech because you can earn a lot". So you get people who focus more on what they can extract rather than the craft. They arrive, do a job, pretend to be value adders because it's good for bonuses, go home to do what they really want to do.
I guess that's ok, it takes all kinds and it's a big world. But the passionate, the people who love to create and love to refine and want to contribute and make a mark, those are my people. I think they're more likely to be there when you're in the first part of a company's life, before the extractors arrive. Right now I work with many of the builders and it's just wonderful.
I also think that as companies change, get more sluggish and require more paperwork, passion goes out the window and the organisational imperative drives the experience.
There have been plenty of times where I have felt that utilizing formal methods would benefit some problematic patch of code, but when I suggest something like TLA+ or Isabelle, every engineer in the room will wince at me and act like I asked them to solve the wave equation. It'll usually be dismissed in some form of "we don't want to force every engineer to learn all that math".
It's frustrating to me because, I mean, we're engineers. Any high school kid can learn to program for free on YouTube these days. If we're not utilizing theory, then what exactly are we doing to earn our ridiculous salaries?
While I like software I'm beginning to see it as a rather bad career. While you make more money early in the career, you stop doing so rather fast and other jobs catch up quite quickly and surpass you.
I guess there's always the exception company, etc. but as a non-US career, it can get taxing to see de-growth.
https://whoisnnamdi.com/never-enough-developers/ was a neat read along the same lines.
But canceled projects, inept managers and deadend startups led by brain dead CEOs knocked it all out of me. I’m heading into my 40s and I’m officially a clock puncher. Could not care less who knows it.
I wish I could work somewhere that would just get the fuck out of my way and let me build, fix and make, but tech is full of people riding on the coat tails of engineers now, pretending we’re all on equal footing. We’re not. We don’t need the middle managers and HRs and dozen VPs. We just need some good designers and some good engineers and we can blow peoples’ minds.
But makers making things makes people who can’t make anything uncomfortable.
It might be different if they have some other personal/skill issue, but I've seen anyone doing a decent job for a few years get a path to either management, PM or something more "businessy", and in effect many PMs around me started as programmers. That's where I see the natural filtration of those who actualy saw it as a career and not just as a starting job (pay is usually not that different, or better when you go to a businessy path).
Now, that doesn't mean they (we) don't have a clock-in/clock-out mentality. E.g. I want to have multiple hobbies, and programming is only one of them. I deeply respect people who breath programming day-in day-out, but don't see it as an ideal or something to long for everyone. That's where I'm a bit sad it actively disappoints or drains your energy. I hope you'll find a happy place with people you enjoy working with !
Only when I got into those meeting rooms, did I have a rude awakening. I realized the value of shipping software. I rolled up my sleeves and started getting back into building software, reluctantly initially but then I fell in love with the craft eventually.
Today if I find anyone who is getting disillusioned as I was, I try to educate them and help them find the joy in shipping software. Am not sure if it has really helped anyone, but I think it's the right thing to do.
The reality is that this industry operates with a factory worker mentality. It is no surprise to me that young people don't care about programming. It just isn't valued.
The past few years have seen salaries climb to what could even be claimed as crazy levels, when compared to what other professionals make, esp non CS engineers. Compounded even more by the portrayal of the software dev lifestyle. Working from home, or being in an office with lots of free perks.
This naturally led to lots of people wanting in.
I like you, originally got into programming as a career as it was what I loved doing, it was a given I would go that route. This was at a time where engineers made far less than they do today.
Personally, I like learning how things work and doing things at my own pace. Expecting passion for integrating SaaS apis and working with legacy code is not the tech that got me interested, I want to clock out of that ASAP.
> Bootcamps have just become farms for people who need a job, but not those who really want this job.
This isn't exclusive to bootcamps - they just happen to be the most expedient way to act on particular desire. The real problem is how LOUD money has become in 'tech' in the last several decades. When I started undergrad ~10 years ago, at a small school not known for anything Math or CS, there were still a lot of students who entered the CS program because they heard, from their family the internet or the world at large, that it was "a good job". (This also stems from college being seen as 'job prospect' improvement as opposed to something for learning, but that discussion lies elsewhere.)
I got lucky that I liked it. Most of them would drop out of the program / transfer to a different area of focus within a year or so. There were probably somewhere around 50-60 people in my low level CS courses. My graduating CS cohort was 9.
Despite liking it, I still find little desire to tinker on things outside of work. A large part of it is that it _is_ my job. I don't want to work, then go home and 'work' for 'fun'.
The other part of it is, as mentioned by others here, the parts of software a lot of us enjoy the most aren't usually what we get to focus on, in one way or another.
> I want to work with more people who LOVE software and find the development of machines and the code that runs on them as fascinating as I do. Unfortunately, its less and less these days.
I get the impression most of this is going to be exclusive to small projects, teams, and in particular startups. Bigger operations are going to prefer prioritizing the more 'stable' or boring sides of software.
You can't expect to work with people who LOVE their work. That's just not how the world is set up. People gotta eat, so they take the least bad path to that. I can entirely understand why someone would pragmatically choose this career regardless of their lack of enthusiasm for it.
Especially if you're overweight, spending more time sitting behind a desk is just a poor life choice.
Luckily for me, before I got too far down the road into choosing a major, it became clear to me that I would never love getting paid to program. Writing code as a career was not going to appeal to me. Being able to keep it as a hobby, where I can choose how much time I put into it, has kept me happy.
I will always wonder about "the road not taken", but I do think others are coming to that realization.
People aren't always passionate about the projects we work on at work, but most are passionate about things like software craftmanship, quality, or maybe just technology itself, or the problem solving aspect, or some are perpetually in love with how software allows you to create almost anything out of nothing.
In my experience people who treat programming as a job rather than a passion often build better apps (note that this is different to saying they write better code..). They don't try all the latest shiny things, they treat things like tests and docs as a boring necessessity rather than something they can ignore, they go for simple solutions they can think about less over complex abstractions that require lots of time. They're also happy to stick with something a bit dull like maintaining an old app so long as their pay keeps coming.
Passionate and enthusiastic devs are definitely more fun to work with, but if I'm going to be on a team with 6 or 7 others for a couple of years I would rather not come in to work to be faced with someone's 'clever' idea that they opened a PR for at 2am every day.
Think esports pros, playing games used to be a break, but after working 8+ hours a day. It's no longer that relaxing fun activity.
There's nothing incompatible about those two things.
I think all of us do, to some degree. You have to to endure hours on end staring at a glowing screen and banging your head against a mechanical keyboard.
But I think everyone who enjoys the process of squeezing their thoughts through the rigors of a machine is at least a little bit funny in the head. I love it, but it’s bonkers.
Do you mean you coded for fun before graduating and not since, or ever?
Like you never coded a little game or a shell function to make your commandline usage easier or anything like that just for your own use, for fun?
Honestly it’s a double edged sword to like coding because then you get opinions about languages.
I could never be a mercenary in anything though. If I didn’t like coding I’d be a destitute individual.
I know I’ve felt “withdraw” symptoms on extended holidays after intense work sprints. And I consider myself a lazy bastard.
I prioritize better. Or try to.
And I'm more efficient during sessions at keyboard / in terminal/shell. Effectiveness is king.
I do things in a different order, too. More likely to order my sequence of tasks/milestones so I achieve the most de-risking upfront. Test my assumptions. Flush out those "dark spots" on my mental map of the problem or solution space.
Age sucks. Experience rocks.
But at 50, I'm feeling burned out about doing anything for 40+ hours per week anymore. I'm embarking on an adventure with cancer right now, and if I survive it then I'll do my best to find a way to wind down so that I work half-time or zero.
I'd rather be somewhere warm and bleak, nailing houses together for Habitat for Humanity.
But once I retire I will go back at writing games.
This is one reasons I got disillusioned with FIRE and the concept of early retirement. Programming was my first love. There might be phases where I just get sick of technology, but most of them have proven to be temporary. It's the best, the most versatile medium of my creative energy. I don't plan to stop doing it ever. What I actually dislike is the corporatisation of programming—JIRA Tasks, PRD, Stand-up meetings, Stakeholder meetings.
I don't want early retirement. I want to work in a small team with a good product vision and a strong shipping culture. But it has proven to rare in my professional experience. For me, alternative is to keep taking breaks. Few months, once in a while, to work and experiment on my own ideas. This allows me to keep my creative spirit alive and (possibly) to make money that gives me the freedom to explore them more.
I think it's totally reasonable to be disillusioned with the "retire early" part of FIRE, but the "financial independence"? That part is golden for everyone.
Being financially independent means you're not scared of being laid off. It means you can walk away from bad bosses or bad companies. It means you can try out a startup if your heart tells you it's the one, but the money they're offering is too far below market.
Of course, getting there through austerity isn't for everyone. I get that. But quite a lot of people think the juice is worth the squeeze.
It's really easy for companies to just look at programmers as people working on a car assembly line (no disrespect meant). I.e. you just sit at your station and put the wheels on as the next car body comes by. Skill and passion are not in sync with that reality. The number of projects where success depends on skill and passion, and this is actually understood/realized by anyone, isn't large. Starting your own company/business is hard for people that are more of the maker type and less of the business type (not to mention the other risks).
Going to work for a startup isn't necessarily a fix. Lots of startups where you are still a product line worker. That's partly because it's also risky for a startup to rely on being able to find skilled and passionate people.
EDIT: Also happy to read the author has re-kindled his love of programming. I tend to worry that my industry "PTSD" is going to make it such that I can't have fun programming again. As a kid I used to spend endless nights coding with nobody paying me. Somehow money makes it a lot less fun.
Those companies create worse software and not more reliably or quickly. You can't micromanage into good software.
Now that I’m more than a decade removed from my undergraduate years, I find myself disillusioned with the state of computing and research these days. Neither Apple nor Microsoft seem to care about pushing personal computing further anymore; it’s about maintaining and strengthening their cash cows. Google, Meta, and Amazon don’t impress me like they did a decade ago, when I used to joyfully study the research papers describing the interesting infrastructure they built. The days of places like Bell Labs and Xerox PARC where researchers generally had free reign to pursue their ideas are long gone; industrial research today is very business-focused, where researchers are required to put the interests of the company ahead of their personal research interests. Academia is no better; the competition is high (especially at research universities), the pay is low (especially at teaching universities), and there are pressures not only to publish regularly, but to raise grant money, which naturally curbs research freedom. This is the world I find myself navigating; I found myself training and striving for a career that no longer exists.
I’m still thinking about long-term plans for me to pursue the type of career that I want despite today’s environment. America’s high cost of living makes FIRE difficult for me unless I decide to “grind Leetcode” and join a FAANG to optimize my compensation, and even that strategy may be obsolete in 2023 due to layoffs and hiring freezes. Alternatively, I’m thinking about one day starting a bootstrapped business, one that is profitable enough to be able to fund my living expenses and to provide healthy wages and benefits for my staff. One day I’ll make enough money to where I can enough savings to be able to pursue my own research projects without having to worry about publish-or-perish pressures or about business matters. I’d like to also teach on the side, though due to low adjunct wages I don’t want to pursue that as my main job.
This coming age of AI is really going to displace a lot of jobs, and make a lot of people unhappy- those who found meaning in their work. But, I feel we need to keep our joy of doing our work, and have that be the driving force, even if a computer can do something better. And this is what they say will be the "artisanal" things that will exist, and be popular to buy.
In the end, I think we just need to enjoy what we do. That's all this life is about.
That’s really hard to find. Especially if you still want to work regular hours
s/work in a small team/lead a company
That's the ideal for me.
I suspect one issue is that this kind of thing is more common in smaller organizations that haven’t evolved a bureaucracy.
The catch is that they also aren’t paying high salaries and just finding their way…
Maybe the RE part, but definitely not the FI part. In fact if I achieve the FI part I may not even have to go through the RE part and I can keep working for as long as I want at my own pace, conditions, and comfort.
The place I left gave ICs a high degree of agency, and you run projects yourself, get the resources you need yourself. So the issue was never too much red tape or process. So now doing all that stuff just feels like work again. The programming is ok (just ok) but seriously building something involves all that project stuff. Coordination, setting timelines and milestones, design, testing and on and on.
I think it’s ok to acknowledge that there are other things in life besides programming and software projects, and to therefore move on. I love lots of things!
Sometimes the gum loses flavor. But there’s lots of flavors to try.
Many family members didn't make it to an age that they could enjoy retirement. The certainly didn't have the financial sense to make much of it.
Also congrats for releasing a game in C/SDL in the days of _insert engine here_. A game that appears to have sold some copies.
Once you become good at talking to the computer (coding), it's a very hard habit to lose I feel. I too have never stopped tinkering outside the office clock. I have plenty of little projects that tickle my fancy, but above all keep me interested.
Computers are fascinating and always at the ready for a play: Player 1, $~: _
That's not it for me. For me is I can create things. I always wanted to create machines, but even simple machines required enormous amounts of time in a machine shop, and once I left college I no longer had any machine tools available.
But with programming, I could create all kinds of machines, limited only by my imagination, at no cost.
I'm sure there are, but I don't know any. I have the passion (obsession as my mother called it). I've been fascinated with computers since before 3rd grade when my public elementary school installed a computer lab with TRS-80s. They soon invited me to help teach the "adult" computer class (as a 3rd grader) they offered in the evening to the local community. It was then discovering the world of BBS, then running my own, then coding it to my taste. In college came the internet and the rest is history. I have the theory that it was the timeframe when microcomputers just started to come and grow their legs is what birthed such passion in so many people. I'm not sure how much of it still exists to the current youth generations, but it sure existed in mine.
PS: I do miss those cigarettes.
Why do programmers tend to enjoy woodworking? They have interesting parallels.
A while back, I tallied all the languages that I had programmed in and it was like 36 (if I can count the machine languages produced by compilers I worked on). There are a few more, like Snobol and Prolog, that were part of coursework. These days, almost all of what I do is in Common Lisp.
Your System 6 looks quite cool.
And no, I don't plan to actually retire--I'll always be programming.
*sigh* It's 5AM and I'm out of coffee and cigarettes. At least I found a stupid bug tonight.
early morning coding fresh after sleep is good for bug-hunting
I have bookmarked many tech blogs, but find it hard to get the time to read or catch up with them. There are so many interesting stories out there. I hope to collect as many cool stories throughout my life and career.
Great programmers are the ones who have side projects they're doing for the fun of it.
Let me tell you… the Apple developer ecosystem is sooooooo convoluted! Is it just me or does anyone else feel that way?
Don’t get me wrong. The company is innovative and a trailblazer. It has done so much in terms of hardware-software integration. And I am not even talking about anything before MacOS X or iOS.
I mean … Objective C. XCode. The hodgepodge of a million different things smashed together. I have seen many people say it is elegant… I have seen many ecosystems. Apple’s one is, well, kludge upon kludge.
First there was [foo bar] but then you got also foo.bar and foo.setBar. You null, NULL but also nil, you had YES and NO but also got true and false later. You could swizzle but also you could have C++ features alongside Objective C for a while, for the ultimate in language law degrees. You got #include #import but also @import because hey, @ gave you random superpowers. You had protocol but later got NS versions of everything (like NSCopying) and then ARC bolted on and auto draining pools that worked some of the time.
Swift was much nicer and tried to go back to simplicity. It even helpfully renamed all your methods. But then it had things like exclamation points that you were never supposed to use, and a weird try/catch syntax that could crash your app anyway. And when Swift came out you also got YourApp-swift.h generated magically by XCode to bridge to Objective C, because of course you did. After all, you have to rely on XCode for so many things. Assets go in a special Package format, you see. They used to live on a Resource Fork but the filesystem got changed.
Apple’s class system is also a hodgepodge. You have NS from the good old days, you have Foundation framework, but then you also have a ton of others which duplicate some of the functionality.
But that’s just the start. You’ve got nib, make that xib, make that storyboards, and they are all different. You’ve got constraints of 10 different types but they don’t work as you’d expect with all the various tools. (Man I miss Visual Basic, that was 20-25 years ago!).
The buttons are tiny and functionality like dragging an IBOutlet are hard to discover when clicking does nothing. As a teenager I was on the Apple Human Interface Developers mailing list, and their Guidelines (anyone remember those?) said “no hidden modes”. Well, that is so quaint now, for the last 20 years the new Apple has violated all their HI Guidelines. Oh, and did I mention, you only had a couple page transitions, one of which was a curled page turn, and one was sliding up from the bottom — but sliding down from the top is just not a thing! Write it yourself! If you can.
But that’s not all. Not by a long shot. You have to work with CocoaPods as a package manager along with other ones, and put up with arcane error messages with each new OS version as things break because things that used to be OK are now not. And if that error comes from any of the hundreds of random build settings — good luck, buddy. Here is a video from an expert in the trenches … who is glad to discover someone else has been cataloguing all these build settings for years:
https://www.youtube.com/watch?v=xJLBTIWE-yQ&t=57s
No wonder Apple is trying to move towards an all-Swift future.
Did I mention Apple FORGOT TO RENEW THE CERTIFICATE ON ITS OWN MAC APP STORE — not once but twice?
I imagine it is better actually inside Apple. But hey, I worked inside Bloomberg and I can tell you, that codebase is … idiosyncratic to put it mildly. I guess it is like that inside many companies, but when you build a platform for developers to use, you need to make it clean and cut down on the number of concepts that have to be used, or at least make the concepts all consistent, like BSD.
On the bright side, Apple did usher in the Mac, the iPod, iPhone, Apple TV, many innovations. It did absorb NeXT, try to bridge with Darwin, change CPU architectures a bunch of times, make Grand Central Dispatch, create secure enclaves, and more. So we can give them a pass I guess as a company. But boy does their development ecosystem feel a lot of kludges that accumulated over the years!