Man spends entire career mastering crappy codebase
taylor.town
taylor.town
He's the guy you go to when you find some legacy code which you have no idea how the hell it works and end up getting a 2 hour history lesson into a decade of company politics and failed replatforming projects.
They're hard not to love.
All systems were working when they shut down, but ~40% of the disks failed to spin up due to worn down motors.
That's a lot of disks.
As much as I love hardware, I much prefer our current solid state wonderland.
Huh?
What I heard is what a cold drive would be a bit more magnetically stable and IMMSMV that surely worked, because I never had a drive with a stuck heads but I did had drives what would just abort the read or return gibberish, but after an hour in the freezer they would read just fine, till they heat up again. That's for the drives mfg after 2000, if that matters.
The way I had always understood it was that if you had a head crash (which was caused by the head physically contacting the platter, overcoming the resistance of the air gap between the head and platter, usually due to physical impact) that the magnetism of the head would prevent it from lifting back up on its own, and that freezing the drive would cause the metal in the platter to contract away from the head, which was restricted in movement by its armature, thereby restoring the air gap and lifting the head away. If you started the drive spinning before it heated, the head would stay out of contact and you could successfully read data (some of it, for awhile).
That said, my understanding may be incorrect.
Most of the way through backing up the 4.3 GB HD to the 20 GB HD, I heard a screech and the old hard drive twisted slightly on the desk... conservation of linear momentum. The drive was visible to the BIOS, but refused to spin up after that.
I put the hard drive in a ziplock bag, put it in the freezer to give the parts slightly more clearance from thermal contraction, and slammed the hard drive nice and hard on the desktop to free the stiction. That revived the drive long enough to finish my copy.
I did have backups of all of the really important information, but restoring from a stack of floppies is more tedious, slower, and less fun than percussive maintenance on a hard drive.
Back when I had an internship working on MEMS gyros for GPS guided mortar rounds, we had to sometimes perform similar percussive maintenance if static electricity had caused the moving parts to contact the substrate. We took the gyro, and smacked it hard on the desk in an "eyeballs out" orientation to give it something like 10 to 100 Gs of acceleration in an attempt to un-stick the MEMS gyro.
It never really worked until you gave blood to the computing gods on a sharp edge of a metal case.
Hmm, yes, true.
I, for one, haven't flayed open a knuckle on a random razor edge or burr on the inside of a case in like 15 years.
Due to absurd government requirements, we were not allowed to use any version control software other than PVCS, and PVCS could only be used for storing official releases of the models. So, the last person in the office on Friday needed to make a dated zipfile of the shared project working directory.
So, one day I convinced the project manager to just let me rename our working directory, create a new empty one in its place, and tell our sysadmins that I accidentally deleted the contents of our working directory. It turns out that the client's sysadmins hadn't set up anything to expunge the oldest backup and had dutifully ignored the alarms that the tape was full. So, the latest available backup was from about a week after they last changed tapes!
The senior sysadmin prominently had a sign on his cubicle reading "Programmers are the ditch diggers of the 21st century." Those same sysadmins were supposed to keep the server room door open while I reinstalled Solaris on a Sunfire V1280 via serial connection from my laptop, because there were cables carrying TSSCI (Top Secret - Secret Compartmentalized Information) traffic. However, the V1280 consumed so much power that the server-room was under-cooled, so the sysadmins illegally shut the door to keep their cubicles cooler. They had top-secret clearances. They knew their obligations to keep me away from those TSSCI cables. Those lazy lazy arrogant sysadmins.
Anyway, unless you have recently passed a restore-from-backup drill, you don't really have backups. Even if you pay absurd amounts of money for sysadmins with top-secret clearances and absurd amounts of money to store your backups in a bomb-proof bunker.
The I fall asleep at my desk, periodically waking up shouting "STOP-A!" and hallucinating about being bitten by thick ethernet vampires.
Going to make myself a coffin...
When the Sun 4/330 I used to have needed a RAM upgrade someone flew up from London to Edinburgh with the RAM and installed it. Fortunately we were in the Grassmarket about 10 minutes from the Castle so he had plenty of things for him to do to keep him amused until his return flight.
Edit: I checked and the max the 4/330 could take was 96MB so I suspect the upgrade was an awesome 64MB. That machine cost more than most cars I have owned - even without allowing for inflation.
I would sit there and wait for RAM hungry customers that would call me on my 3 lb cellphone lol. Each one has to buy at least a $0.39 taco so I wouldn’t get kicked out by the manager. They had armed security, who I tipped 20 dollars a day. I hung fliers all over town with tear-off tabs.
Then I went to COMDEX, it changed my life. Within 2 years I was in my early 20s and moving 2-3 million in hardware a year. It was a heady time.
Then, the business dried up overnight with online sales.
Fortunately I saw that coming and had moved into technical services and contracting, and sold the parts wholesale business to one of my competitors lol. The local wholesale distribution biz was dead within 8 months.
As prices fell rapidly at the supply level, local box stores would occasionally sell off stock at deep discounts (reflecting the real market price). Being a teenage sociopath, I would buy every last bit of it in town and then coast on the uninformed price perception for a week or two.
Prices were falling so fast at that time that the stores were always wrong footed, so I was able to keep up that racket long enough to get to the bottom of that mechanism and start ordering in bulk directly from city of industry California.
Place was called Ma labs, iirc. After that it was obvious to start moving disk drives, video cards, processors, and later everything else too. I was just exploiting basic market inefficiencies , since the only other sources were the big box stores that were constantly 2-4 months behind the price curve.
Then COMDEX happened. It got me tied directly in to motherboard and peripheral card manufacturers. I also got introduced to the cocaine and extremely friendly booth-girl shmoozefest, and NGL for naive Alaskan me it was heady stuff. The real deals and the points negotiations were made in the afterparties with piles of coke and very persuasive “account representatives”. Memorable times were had in the hedonistic environment of an exploding industry.
At that time there were a lot of small manufacturers in industrial parks. They were usually pretty small outfits usually just a shop with a few hot air stations for warranty work and a wave soldering table, 15-20 employees at jet labs, for example, which was one of our big suppliers of motherboards, video cards, modems, lan, and other peripheral cards.
My activity festered a plague of tiny pc builders selling systems, and launched the careers of at least 50 technicians and small businesses. We used to put on big public LAN parties and public PC repair clinics as promotions for our “dealers”. I worked with a training/testing outfit to get new dealers A+ certification to reduce the damage to society and actually grew into a semi responsible citizen during that time.
Fond memories but I’m glad to leave that hustle behind.
After that, I unwittingly became a software developer for a major criminal organisation. I thought they were a car dealership, but gradually it became apparent as I built out their backend that the dealership was just a small part of a very large laundromat.
It took me years to extricate myself from that and for years afterwards they would give me gentle reminders that they were keeping an eye on me. Free 500 dollar an hour lawyer’s though. They never let me get near a courtroom or a police interaction without “proper” representation showing up even for years afterwards (statute of limitations?)
The fact that they always knew when I brushed up against the legal system in any small way, even traffic tickets in rental cars, gave me great respect for the scope of their concern. That and their obvious love for mid range turbine helicopters.
I was probably lucky to leave that alive.
Owner lamented finding 4MB sticks of RAM that had fallen behind the workstations that had cost hundreds of dollars back in the day, as he was selling (and this was a while ago) laptops with 1-2GB of memory).
Nothing’s changed on that front.
You were lucky! In my computer class at school in 1979 we got one compile a week. Punched into cards which were taken to the local insurance company who actually had a computer.
They also hate each and every one of you.
Never mind that it's part of a decade old contract stipulating a quarter century support...
Greenfield is easy. :)
Because sometimes on the outside systems look confusingly written, but it could be a reflection of the scope of confusing business rules to begin with that they had to scope out
Didn’t have to reboot the others, though.
That is still possible in the modern era.
step two: plug a very cheap switch into the network
step three: have someone move their desk around, and plug a spare cable into the switch at both ends
step four: spend a day doing a binary search by unplugging banks of switches to figure out where the heck all these packets are coming from.
But they are REALLY capable of detecting bad ideas.
There are really good or valid ideas that people try to implement in terrible ways.
things like: for our app on windows, we just ship LIBRARY.DLL with it. We should do the same with linux. (ldd shows 50 inter-dependent libraries)
Do you know why I am giving you the two hour history?
First, I recognize that I need human interaction, but do not really like people.
Second, I am hoping that you will learn & understand instead of just memorize & regurgitate so in the future you can resolve it yourself instead of bothering me.
Now, go away; I had my week's fill of socializing.
/joking - or am I?
Where does all this hope come from? I’m barely 15 years into my career and I’ve nearly given up…
Hope is for the young and inexperienced. Everytime I come to your rescue, you'd best pay attention. I have an expiration date.
I'm at least going to be waiting for questions to be asked.
"Why was it done this way?"
"Circumstance combined with 'path of least resistance'."
I’m not trying to explain why you shouldn’t change it. I’m trying to help you understand what competing forces made it that way in the first place so you can decide if any of that’s still relevant.
I often search for a clearcut answer to a technical question and I'm met with a 2 hour history lesson into a decade of company politics and failed replatforming projects.
Yeah, thanks for telling me why John from accounting was a dick 10 years ago and you had to code this module in a certain way. I really don't care. I'm new to the codebase and I just want to know how it (the codebase) works.
I'm currently in this situation and a colleage never gives straight answers to anything. It's always some little rant about something and when it's done, I still haven't got my answer.
You should want to know _why_ it works that way too if you want to do any meaningful work with it. Context matters. I’ve seen many cases where the way something works seems dumb, only to learn later they had already tried the “smart” way but ran into some obscure problem which the “dumb” way solves.
Generally speaking to that person helps, although sometimes they do turn out to actually be an idiot.
Anyway, I really don't care about the past in this way. A simple "accounting needs this for that" is enough for me. No need to explain that Adam was getting divorced at the time, so he was grumpy, and, and, and...
Seems better than being a 50 year old trying to wow a 28 year old interviewer with your skills on whatever hot new framework just came out.
Karl Hackerman shows up to each meeting complaining. He seems sour that he hasn’t been given the go ahead to rewrite the system in Rust. He knows a lot about bleeding edge frameworks and best practices and always seems annoyed that he can’t use them at work. He thinks it’s because everyone else has settled in to becoming wage slaves instead of striving to be the best programmers they can be. Everyone puts up with him because they know he’ll quit in six months anyway.
Karl is 47 now. Hasn’t held a job for more than a couple of years. Has mostly been freelancing lately and trying to sell books on tech and frameworks nobody cares about anymore.
Good thing I'm not in my 40s yet, still time to recover from my wayward path.
I love this so much. I've totally been this guy :) Learning how not to be an insufferable doucheb*g was a surprisingly hard challenge for me
I've been writing a longer fiction piece about overzealous know-it-all engineers in the style of Confederacy of Dunces. Probably won't be done for a while, 'cause there's a lot more of my soul in it haha
I felt this way earlier on, but quickly learned to get fulfillment in my day job purely from shipping and contemplate the mysteries of computer science largely on my own time. Sometimes they overlap, but good day jobs are often 80% boring in my experience.
same fate
> I'd like to think I've succeeded.
possibly not
EDIT: I'll reply to my replier here because /u/Dang rate limited me (again), though I must commend him for letting me have one more comment than usual before he pushes the button ;)
> I would say the ending -- the part where you are unemployed and unable to support yourself in your old age because you invested decades of your brainpower into a highly specialised, non-transferrable skill.
I would contend that such a person, unless very reckless with finances or extremely underpaid, should have enough money saved up to make what is mentioned there very unlikely. That said, I know some high-income earners struggle to not blow their entire bank account each month
In that case, if web development is your interest, then you have many possible paths.
The primary choices are full stack, backend, or frontend.
Obviously full stack is most flexible because you can theoretically do it all. But keeping up with so many technologies simultaneously is really tiring.
Take a look at Phoenix framework. It is a fantastic way to get started, and it will grow with you into just about any future project need. Plus Elixir is an excellent language built on top of the incredibly powerful Erlang ecosystem.
Even in a bad code base you can start making things better, apply modern techniques and learn new things.
Also most of the skill you gain there is transferrable. E.g. just because you have to work with some legacy PHP project, it doesn't mean that you would suck at creating modern applications in JS. It would just take a couple of weeks to get use to it.
All th bad codebase I've seen were a result of fossils who are still with the company gatekeeping anyone from fixing their code.
A few years ago, I had one architect stubbornly refuse to use source control, rejected all PRs that didn't use his homegrown buggy C++ libs for strings, refused to let anyone do the http server bits unless they used his C++ server and so on.
If there isn't a gatekeeper, you wouldn't have the bad codebase in the first place.
I disagree; working on a legacy PHP project isn't just opportunity cost (failing to sharpen your knife), it's actively harmful (leaving the knife in salt water, accelerating the rust).
Start saving now.
I'm sure he could learn STL (standard C++ library) in a fraction of time it would take someone else to become proficient in C++ in general.
My mother was a COBOL developer and didn't work for 20 years because she stayed home. She recently returned to her old bank she worked for because they are dragging people out of retirement as they can't find anyone else. She earns more than I do now.
People are crazy to give a job like that up for generic web dev work.
I think it's fair to say this skill difference is largely from that work in the C family, where I learned a number of different paradigms for design and development in that world, with all its footguns and low-level "gotchas". It has always been easier for me to parse and understand others' code, identify subtle bugs, to use debugging tools, and to identify some optimizations by examining the code that others might spend days using profilers to find.
Some of that would come with engineering experience in general, regardless of languages used, but not all of it, but I picked these skills up faster and earlier in my career, thanks to that early work. Skill with C++ is definitely transferrable, in at least some cases.
Because that's what a lot of people think online. Maybe it's more nuanced. I'm curious how someone from that carreer sees it?
It is to help the super-rich who own hedge funds to frontrun the rich upper-middle-class people with significant disposable income.
When you have a market, you need someone to be there to provide liquidity. Imagine if you're a farmer and you show up to the market with your wheat, but all the bakers have gone home that day. Or the baker shows up and there's no farmer. The market maker stands around all day offering to buy and sell so that you don't have to wait for the guy you're really trading with. Of course this middle man wants to get paid for it, but your cost as an average Joe is next to nothing. This is trading in time.
Now imagine you want to cook a meal and your ideal meat is beef, but actually you're ok with pork, so long as the pork is cheap enough to make it worth it. How much cheaper should it be? Well your fellow who knows all the pork and beef people will be able to gauge where the balancing spread is, given the amount of interest. In fact he will from time to time do the trade when the spread is out of line. This is trading in space.
So why all the fancy tech? After all market makers used to stand around in a pit in a colored jacket, and they didn't have degrees. My first boss in the market was one of these guys.
Well, things have gotten very tech heavy because as soon as prices are out of line, there is money to be made. Or rather, lost. As a market maker, you are constantly out there with your prices, offering to buy or sell at a very small spread. If some news happens that affects prices in a big way, you can be sure that you will buy when it's going down and sell when it's going up. In order to both have tight prices and avoid this "adverse selection", you really want to be able to react as quickly as you can when your system decides that something's up.
Getting back on topic, being a software developer for an HFT shop can be a lot of fun: serious technical challenges and a rapid feedback loop in a role where you may be the revenue stream rather than just another cost center. But posters highlighting NIH syndrome are spot on: you risk pigeonholing yourself.
You don't have to be that old to remember how terrible the experience used to be, and how easily even sophisticated individuals were ripped off at every point of the process.
I guess I'm not old enough. What was the system like? How did sophisticated traders get ripped off?
> and it would save them billions per year.
This is not true.
HFTs do not take a cut out of the market, their cut comes 100% from other market makers. Those are the only folks who would benefit from eliminating HFTs, and unless you’re one of them, who cares?
I don’t care who buys when I am liquidating a position. That’s the whole point of a market. Therefore I don’t care about HFTs.
The aim of the game is to collect a small spread on a lot of transactions.
The scary thing for an HFT like that is being 'run over' by a big party selling or buying a lot over a day. If a pension fund is dumping 10٪ of their holdings of shell, it's hard to collect a spread because you need to find buyers for every stock you buy from them. Meanwhile the price is dropping as they sell off.
Hence you occasionally see 'front running' with price improvement. Instead of buying from the market at 1.02 a HFT gets to sell to you at 1.01, yielding you a better price. This is a good deal for the HFT, because a normal person isn't going to run the HFT over. And it's a good deal for the normal person because they get a better price.
Good for you I guess?
I can't fathom willingly entering the web mines if you've already sunk in the hours to master high perf native code, OSdev, dist systems etc. People usually enter web to avoid having to learn such things.
To discard that knowledge and instead compete with an endless stream of fresh grads, boot camp grinders and LLMs for less money? A madness if I've seen one.
Web tech is more immediately rewarding. With C++ (and especially with modern web dev agile processes), you can spend a week building enough framework and infrastructure crap to stand up the barest inkling of a demo of the solution you plan to implement, only to have the whole thing pivot out from under you and become wasted work.
More complicated languages and frameworks that manage memory and do UI and everything for you let you get to a prototype much faster, so you can see whether it'll work or whether you want to toss out the idea much sooner.
It's not hard to find feature support or implementation differences between browsers. But these days, that's not really the problem. I can go read the ES language specification, and generally find user agents/node/deno/bun have compliant implementations.
The problem is brittle "ecosystem" stuff. How are the create-react-apps going? How is module bundling going amidst the UMD/CJS/ESM war?
If you want interesting, go to HPC large scale simulation.
Even if the decision he made was a bad one, you don't know anything about why it made sense for him at the time.
People aren't algorithms running in complete isolation and silence. They live in nuanced circumstances you can't possibly understand by his short history in a comment.
I hope you can find understanding and peace in the future.
I'm not sure if that's intentional humour or not.
At that level of abstraction it’s all just strings
Exactly... I worry about the masses learning of this and gaining literacy over the landed gentry.
PHP/CGI basically had it solved. I emulate PHP in .NET6 today using verbatim and interpolated string operations.
If you walk into web dev with aggressive principles and a willingness to be controversial, you can get a lot of shit done and it will feel great. Watching others struggle under the various JS framework circuses has almost an opulent/aristocratic vibe in 2023.
I'm very roughly estimating that you could probably have worked in the HFT job for around two-thirds the time you're going to have spent working on generic web tech, and still been better off.
For someone who had wanted to stay an IC, I don't think the move would have been quite as wise. Being in a niche, engineer-dominated environment, and being paid extremely well for it, is nirvana for many lifelong ICs. It certainly feels very different from the experience of Arthur from the linked article.
The only reason to change such job I can imagine is to sit out your non-compete package. But I am not in this industry so maybe I’m missing something.
> It never sat well with me. Colocated systems saw latencies no mom-and-pop investor could ever dream to achieve. That is one of the reasons why the second company I joined was a non-profit that built systems to help track human rights violations, enforce labor rights, monitor democratic elections etc. Third job was in the food industry and the last one, in housing / property management. So I'd like to think I've made sufficient amends.
Ah, nevermind. Turns out they were worshipping Memnon with C++ and renounced that cult with web tech! :p
I also worked at an HFT C++ shop that used no STL. Every data structure has a weird name and API that you get used to. The whole architecture has its own idioms, and hasn't needed much upgrading in terms of language features.
Imagine you learn the grammar of English. You learn how to pluralise nouns, when to put an s at the end of a verb, how to to use commas, and so on. You then go to work at a place where they have a different word for coffee, drink, and order. Along with every other word. You end up learning where everything is and how to talk about it, and you're productive.
How do you apply for another job? Chances are you will be asked how to order a coffee and drink it.
Very real issue btw, I still have friends there.
Getting rid of weird data structures that now have STL analogs then is a productive exercise - existing devs get to learn more STL and new devs have more familiar ground. You get to delete code too.
There's at least one in the bay area though.
Would love to know of more spaces which require this level of programming - usually I feel kinda underworked at most shops.
Though, true enlightenment is combining the urge to NIH with some, light, sensible borrowing from those smarter than us :) very much a key skill unto itself.
Join us, the pay is worse and the work is harder, but also the prestige is lower.
I tip my hat to you!
Then I felt like I could spend my whole career there and decided there was a whole world out there in the web, began to learn PHP in 2004 until the mythical "blog in 5 minutes" Rails demo appeared. I switched jobs in 2007 and I have never looked back.
If you have access to key systems, you can definitely reverse-Conway to understand how an organization really works.
https://en.wikipedia.org/wiki/Conway's_law
Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.
— Melvin E. Conway
Ouch. Should have stayed in legacy C++.
Hard to be productive when you can't trust the language, the tools, or other developers to be correct.
As God intended it!
More often than not though, its not so rosy. Arthur would be overweight, riddled with medical issues, solitary guy with unhealthy attachment to XYZ (anime, gaming etc).
But if he had kid(s) and raised them well, well as a parent too I do have tons of respect for him for that alone, rest are details when looking back.
I hate the thought of my life starting in retirement. Especially if I might be 67 by then, which is the legal retirement age, where I live.
When you say "legal retirement age", what do you mean? Is this to receive some sort of retirement benefit like Social Security in the US? Or is it something else?
It might sound silly, but it's one of the main reasons I want to leave this country.
What do you mean when you say "financially unviable"? There have been similar concerns raised about the US retirement system, but AFAIK that only means less money coming in than promised going out. The income is predicted to stabilize at ~75% of expenses after the "Baby Boom" generation finishes retiring. At the worst, I'd expect a pension cut rather than a complete collapse to 0.
Why do you think Index Funds would solve the upcoming issue?
https://en.wikipedia.org/wiki/File:Gemany_population_pyramid...
- work 4 days a week only
- save 30–50% of your income and retire after 15 years
- cook your own meals to eat healthier and cheaper (bring lunch to work)
- buy used stuff from a couple years ago
- fix your own stuff and buy cheap “broken” things that are fixable
This way you might not need to die at work or wait 67 to retire.
My levels of ambition and relentlessness absolutely shifted after having kids, I used to be absolutely furious about being the best. Now I am very much "fuck you pay me" and my priority is having as much free time as possible for family and friends. I for one would be fine with Mr. Westbrook's career although thankfully I haven't had as crappy colleagues as him throughout my career.
There are people of all types who will want different things, no point in judging. As the great thinker Alicia Keys once said: 'you do you boo!'
For context, I recently wrote a tongue-in-cheek guide on how to coast in large companies.
[0] https://taylor.town/corporate-camouflage
That got me thinking about what happens when people, especially engineers, coast too much, or fail to plan out their careers.
I know plenty of smart people that are enchanted by comfort, then chain themselves to companies that take advantage of them.
If you've developed transferrable skills, this parable probably isn't for you :)
I personally think it's okay to be ambitious, and it's also okay to chill.
Edit- I was probably like Arthur Westbrook when I was working on a visa and had a family to support . As soon as I got my greencard my appetite for risk taking increased and showing my transferable skills increased . Situational context .
This is as much a tip for myself as for you: take a deep breath before reacting.
There is "I'm OK with my pedestrian job but I still try to do my best and actually like the people there" and "my job sucks all joy out of my life and provides me with nothing of value except money".
I have kids, but I somehow skipped the "I want to be the best"-phase and went straight to "I'll make do with whatever you give me" so nothing really changed. I actually work a bit harder now so my kids can see work is good - also to pay for their fancy shit.
Even stupid jobs can be sources of relative joy if you let them. Don't put up with abuse of any kind, though.
Problem with the kids is that when I tell them about that, they feel they don't have enough passion to succeed. So you see, eventhough I was on the right side of success for a while, it scares the hell out of them...
Then they should find something they are passionate enough about to succeed.
1 year of leave per child, inability to get fired while on leave, free childcare.
The only negative is that all those make advancement options for working age women 25-35 whom are expected to have kids ’soon’ nonexistent.
Here FAANG it ranges from 18 to 24 weeks for women, 12 to 18 weeks for "non birthing parent" (men, or adopting parents).
There's State-by-state paid family leaves laws, which makes it usually around 12 weeks (men or women).
The smugness of people with kids is just annoying.
I didn't read their comment as smugness.
The ability of people without kids to have a firm belief on how they’d feel with or without them is also astonishing.
I doubt people with kids are smug about it. It’s just been life changing for them, and to some extend they must regret that other people will never get to experience that, especially if they were initially hesitant too.
Anyway, fully agree it makes you appreciate your time more. I enjoy adjusting the flow of time to school age again, even if it’s not my own.
First he tells me how I feel, now you're telling me what I believe?
I don't know how I'd feel if I had kids. What I do know is that I "fully appreciate my moments without kids".
If a non-parent told you that you can't truly enjoy your free time because you have kids, wouldn't that be a bit rude?
Nah, I’d nod my head and agree, but I imagine that’s not the point you were going for xD
I feel it’s like growing up, it’s hard to appreciate childhood, or university, or any of that until it’s passed.
By the same token you start to appreciate the seas of time you had without children once you have them, but by then it’s too late of course, and you can only appreciate them in hindsight.
I’m sure the same thing will be true after my children grow up. I’ll appreciate all the time I got to spend with them more in hindsight.
In general I appreciate things a lot more in the moment than in retrospect. And I'm much happier now than I was as a child or a university student--the thing I appreciate most about those times is that they're over.
And look, it's fine we have different experiences--I'm not here to invalidate your experience. But when people say stuff like "You cannot fully appreciate your moments without kids until you have kids though" you're invalidating my experiences. That's total bullshit--you don't know anything about my life and whether or not I truly appreciate it.
If you want to talk about your experiences, that's cool, and I'm actually even interested to hear them. But don't pretend like your experience is some universal truth. It's not.
It isn't some desperate plea like you're implying.
The rational side of me tell me it is all my selfish gene in action. And I'm loving it.
I didn't need to have my own kids to appreciate the peace of not having them (although at some point I do still intend to have kids, just not soon). I just had to frequently babysit my niece and nephew.
Nowadays I visit them only for a few days every few weeks and even then it's blatantly obvious that kids would mean a sharp drop in my ability to have as many different projects and hobbies as I do right now, for at least 5-10 years. Makes me really appreicate my moments without kids, as much as I also appreciate being able to see my niece and nephew grow and develop into their own selves.
I found out that just being better than yourself takes you a long long way.
I have never competed, but just did my thing. Then found out that I've already know more and ahead of many people I'm inspired by.
Yet, this was not my aim, and still is not. I'm just one of the so-called dark developers. I just do my thing, try to do it better every time, and don't care about hall of fame of anything casual or serious.
I like the mindset of trying to be just a little better than you were, every day. It feels... correctly scaled, somehow.
Do what you're doing, a little better this time, then GOTO 10.
Once you learn woodwoorking, you're going to be good at it (until you lose strength, flexibility in your fingers, etc).
In our industry, to 'stay at the same place,' you continually have to learn new technologies, new concepts, etc.
Move more into to people skills and relationships. It could be management, marketing, sales, HR, recruiting, mentoring, training. There's a plethora of side functions. Or take a lower paying less demanding role. Do harder technical work that isn't time constrained like open source or personal projects.
Everyone has their quirks. I've got my computer speaking the time every 15 minutes and everyone I know would be driven absolutely insane by that. It helps me keep track of time.
Some people put a postit on their mirror or laptop screen.
I store a copy in my "life changing comics" folder.
Now I'm curious - what else is in your "life changing comics" folder?
Hey, C'mon: https://www.viruscomix.com/page528.html
The Human Race: https://viruscomix.com/page531.html
So Mature: https://viruscomix.com/page532.html
Sexier Th>n: https://viruscomix.com/page542.html
Copper: https://www.boltcityproductions.com/copper
There are other another honorable mentions, but I was not able to find the original URLs, so I didn't add them here.I'm intrigued by human nature and why are we the way we are, and search for a calmer, more peaceful self inside me. Apparently meditation helps a lot.
https://www.theverge.com/2014/1/30/5361210/skrekkogle-durr-t...
I have a GPS disciplined rubidium clock with a 100MHz output hooked up directly to my sinuses. The slow sensation of waves washing ashore keeps me awake long enough to interact with the rest of you when I am taking my daily luxury 3ms break to read HN. Further, I have a script that, when my break time is over, automatically terminates any conn-
Well, the code is just GPLv3 licensed small tools which I develop according to my own needs. Nothing impressive.
I don't use Twitter, Facebook and Reddit anymore. I just converse here, and with a Discord server I really like.
That resonates with me.
There is a saying where I'm from that says "most people are just kicking dirt" that basically means people are doing the bare minimum or don't care at all, and if you just do your thing and really care about your stuff, you're already ahead of the majority.
Being anxious all the time, I use that saying in the opposite way though: just relax and do your thing... you don't need to worry about not having a job, all those other people are barely doing anything and you can't be the best at everytime. Just do your thing are relax.
I usually hold vast disdain for the "self-help" genre of books, but after a recommendation from someone whose opinion I value greatly, I read Atomic Habits by James Clear. I've never found myself agreeing with and finding revelations from such seemingly mundane and obvious statements. Sometimes seeing a statement or opinion you take for granted can make you cognizant of that point.
I've since tried to adopt such "agile" methodologies in personal improvement. Clear says 1% improvement each day always sounds attainable, and such iterative improvements add up.
No there aren’t. For every Jonathan Blow, Salvatore Sanfilippo (redis) or Mike Pall (LuaJIT) there are probably thousands of run of the mill developers working at feature factories. You don’t build amazing software by being lucky. Your boss at GenericCo will never go out of their way to ask you to build that thing you’ve always been dreaming of making.
You choose to work on software you find interesting. Or, for any of 1000 totally valid reasons, you choose to be small.
If you think you’re all that, don’t blame your company for “not getting the opportunity”. Please. You already have all the tools you need to code. Make something cool!
Moral : before starting new job always ask parent commenter are this new job is important for him?
If you want to be interesting, choose to do something interesting. Luck is rarely the limiting factor in your creative output.
> If you want to be interesting, choose to do something interesting.
Interesting for who? For you or for someone else?
I think work is the same. If you go into work each day with a dream, it has life. You are there for a reason. You love your work. You want to change the world. Whatever. But if you’re going in to work each day with no dream of your own, you are a walking corpse.
Equally, there are many, many talented people out there who never achieve recognition for what they do or were capable of.
You underestimate the odds of talent in a population of 8 billion humans.
> If you think you’re all that, don’t blame your company for “not getting the opportunity”. Please. You already have all the tools you need to code. Make something cool!
There are neurosurgery robots operating with my code running in the background for several years now. I am now working on ophthalmic surgery software for sub-retinal operations. I would think that is actually kind of pretty "cool!".
However, I still know full well that I am a cog in a big machine. I still know full well that my impact is not world shattering. And I still very much think "fuck you pay me!".
My self worth is pinned by family and friends. Work is fun but it's a side quest. If you think differently that is ok, and so am I.
(whilst double-checking my memory of where that came from, I found the obligatory LinkedIn post using it as an advert for consultancy services: https://www.linkedin.com/pulse/einstein-cotton-fields-sweats...)
That’s super cool dude! Surgery robots are pretty world shattering for the people whose lives are saved by them. Contributing to that sounds like something well worth feeling proud of too.
People don't stop being talented/smart when they have kids/families/personal lives...but they will have less time and their perspectives do change.
It's a balance/spectrum where most of us end up somewhere in between two cliches: do what you love and you never work a day in your life on one end & work to live not live to work on the other.
This famous talk outlines it: https://www.cs.virginia.edu/~robins/YouAndYourResearch.html but theres a huge amount of factors that go into becoming one of those guys.
Its not just talent, or desire, or luck.
Its:
- Talent - obviously have to be really good to even do anything in the first place
- Vision - Need to have a goal of some sort to accomplish something
- Decision making - The goal needs to actually be something the world finds useful.
- Drive - Be able to take constant set backs and negative feedback and believe in yourself to an almost delusional level.
- Consistency - This means doing and thinking about your "thing" for a REALLY REALLY long time. Like weekends and holidays and ignore family and etc...
The talk above goes into it pretty in depth, but theres no mystery about it. You need ALL those things and no less. People who achieve at this level aren't accidents. They are simply not only talented in their fields, but also in areas of being able to consume volumes of information and handle failures. They're the ones getting up at 6AM every day working and thinking about their "problem" and going to bed dreaming about it, for years.You can be a 10x developer, but you also need to be 10x in several other areas to actually accomplish valuable things. Theres a grand canyon of difference between them and everyone else.
I'd recommend people really think about the costs.
Folks writing new code in the wonderfully free world without a ton of odd dependencies and corner cases ... IMO often aren't doing as much "work".
Working in an existing code base, on a team with multiple features going in, gathering requirements from stakeholders and negotiating deliverables on a timeline while refactoring is happening, libraries being upgraded and CVEs being fixed - navigating all of that while being a useful, compassionate team member - that’s priceless on a team.
Since having kids, most of these have shifted from a few months in time to a few years, but they are unambitious, poorly defined and unimportant so who cares if they take a little longer?
My main goal at work is not getting annoyed or frustrated and getting paid well for my time.
When I first had children, my pendulum swung way over to disinterest in seeking anything in my work beyond financial support for my family and time to spend with them (while still supporting and not breaking trust with my professional colleagues).
But my kids are growing and becoming more independent all the time, and I'm currently in a phase where my mental cycles and energy are on an upward trajectory over time, and now I'm back to being excited to use those cycles to do impactful work. But critically, I think, with significantly more wisdom about how to strike a healthy and happy balance for me and my family. I mean, I'm not naive, I don't think it will be easy to strike a good balance, I think it require be constant work and effort at it. But as I've emerged from the baby-brained haze, I have renewed clarity that neither focusing my energy entirely on family or entirely on work is the right path for me.
Pride, radical individualism, self-promotion. These are extremely common today, especially in the US (just compare an American resume with a European CV). Both the US and Europe have their problems, but this particular obsession tends to be more conspicuous in the US. Paradoxically, it doesn't bear the desired fruit because it misunderstands the nature of personal excellence.
This isn't a vote for collectivism or mediocrity. Only dead fish float downstream. It's a vote for the notion that the riches of society are the result of countless incremental contributions up and down the hierarchy of value for the sake of the common good. But liberalism embraces an inverted view of reality. All our relationships are viewed instrumentally and transactionally. We place desire above reason. We've become atomized, because nothing sensible unites us (perfect for those in power who view people as "human resources"). The "social contract" view of society is a disaster.
See I have the opposite take. There are so many damn facets of modern life/society, and new avenues/facets/domains coming out every year, that it is actually pretty easy to find some niche where something hasn't been done yet that is world-shattering for some specific community or niche.
World-shattering for everyone is pretty overrated.
10 years of being underpaid and yet being the most productive guy at work will do that to you.
There are better things to aspire to than predictability whilst making someone else rich.
Making someone else rich is the objection.
Having no job or income and having to worry about how to afford food or rent is surely much worse than "just" having a stable job.
Or how about a super stressful job, like the Japanese salarymen who are literally killing themselves?
https://www.zillow.com/homedetails/8057-W-Farm-Road-100-Will...
Projections, my dear Watson.
It's 2023 and today companies will quite happily lay you off the moment you aren't profitable to them.
This fictional person made it all the way to retirement and good for him. But the guy who followed this strategy for 15 years and now is job hunting because the company needed to cut 18% of its staff? He's got a huge gap in useful skills and decades left before he can retire.
That guy is in real trouble.
If I could be guaranteed I'd have the same job forever with the same tech then who cares, but I've never met anyone for whom that was true. The people that don't learn either retire early or are forced to switch careers.
You just got unlucky enough to interview them instead of someone who got laid off after 15 years and were amazing at their job and could pick up a new tech they’d never heard of and immediately be off to the races.
Arthur was happy.
My favourite passage from Camus' little known book Software Development is Existentialism
To be fair: to modify blood dialysis systems is no joke business.
When I first read this poem I thought it was sad and about a person who wasted their life on mundane, average things. But now I think it’s a positive for a person who lived an average life on the outside but likely had a rich internal life that they didn’t share with the world and that we shouldn’t expect people to have metrics that we can externally measurable as to whether they were great or not.
I think it’s fantastic they this man’s passion is Soylent cat food hybrids for human consumption. He worked all those years and finally broke free for his passion.
The concept of life as meaningless, to be happy with the drudgery, or repetition, instead to be happy with the 'journey', to be in each moment.
Very common throughout literature/history.
I'd like to think we are somehow different, that modern man with technology is reaching some new level, to find some purpose. But now, not so sure, it's still just day-in-day-out, then you die.
https://en.wikipedia.org/wiki/Sisyphus https://en.wikipedia.org/wiki/The_Myth_of_Sisyphus
It seems obvious this guy was in fact happy, despite the last lines of the poem, or else he would have acted out at work, become an alcoholic, divorced, or whatever. That or a supreme stoic.
> Our researchers into Public Opinion are content
> That he held the proper opinions for the time of year;
> When there was peace, he was for peace: when there was war, he went.
I have a friend, let's call him AP, who is a programmer in a local java shop. He's been working in the same place for 12 years since he graduated. He kind of fits the description on this article, but he is one of the happiest people I know.
He gets paid above average wage, and his work is easy and not very demanding. He knows the codebase inside out, and gets along well with his colleagues. Outside work he goes out cycling or for a beer with his friends or travels the world with his wife.
Different people have different priorities, and some are not obsessed with excelling at work.
I agree with you :) here's some more context
There are many fantastic engineers who work on otherwise boring, rotten codebases. No shame in that.
Sticking to something, through good and bad times, on the other hand, that's not something many people can do, and while it is by no means sufficient in most cases it seems to be necessary for sustainable success.
Examples: Guido van Rossum[2], Linus Torvalds, Daniel Stenberg
[1] You wouldn't even have to put the "high risk" nature of it in the fine print, because it's readily understood.
[2] I could not find the source but I remember him saying in an interview when asked about Pythons's breakthrough, that it never had one but that it constantly and steadily grew.
If you're company is building a programming language or operating system you need to make sure that is what you love doing.
Also perseverance is not the same as being stubborn and pivoting is not giving up.
why dumpster diving? and those guys cannot be replaced by any number of junior devs - that is exactly the problem with them retiring. they know the legacy stuff nobody wants to touch but everything depends on.
so, from that angle this writing reflects very poorly on the author and his work experience.
having said that - the title could fit just about any lawyer. law is the crappiest codebase that you have to spend a lifetime learning. especially the german tax law - but it guarantees a very comfortable income.
also in defense of people like that man i'd even argue that mastering a legacy codebase is mentally and motivationally not that different form mastering a game like chess.
But, there are a lot of old people that are hungry, and work as Wal-Mart greeters.
If you didn't save/plan well enough, and 30 years of cool software development ends as being a Wal-Mart greeter, that can seem equivalent to dumpster diving.
don't worry about them ... worry about yourself (if you are young and in IT) and especially about those poor junior devs put in place for this guy.
If anything, the lesson should be not to worry about yourself because the only way this man could be forced to resort to dumpster diving is if he was given too much to worry about his retirement accounts.
>It’ll take two junior devs and a Keurig to replace him.
Also out of touch. You can throw N juniors at this kind of codebase and without the mentorship of an Arthur type, they will get nowhere. They'll do a "rewrite" with 1/10 of the features.
Note: I'm all for hiring recent college grads, but they need to be paired with a senior dev, and management needs to understand that you're not speeding up the project this month. Ideally, you're investing in the robustness of your team. The challenge I face is that so many junior engineers are job hopping the first ~5 years. That's not a smear on them. It's good for them. But it's not great for me...
They can actually be quite opposite, and finances are easy to let slide, ignore as the days go by, while you are zen'd out on some cool technical problem.
If he needs to be a street performer and dumpster diver to make ends meet that isn't good. However people do those things as a hobby all the time.
I get that the post is satire but at some point in your career there are diminishing returns on learning new things. If you are somewhat specialized say in backend systems involving scaling, message queues, clustering, etc. it probably isn't a good time investment to learn whatever is new in the frontend world. And by learn I mean to become proficient professionally and get a job doing it, not just a "hello world" learning. Doing "hello world" learning on a technology is like learning how the yolk and rudders work in an airplane, you're not going to be flying professionally anytime soon.
Having hobbies where learning and applying things is not just fun but can also scratch that itch to keep your mind fresh.
I've spent 10 years as the lone dev at a small medical facility, writing database software and dealing with lab hardware etc.
I guess I've touched 100% of the codebase because I wrote it all, but I always wonder if my skillset is so niche that I'll always be at small companies.
Here's the deal though, work isn't everything and I'm at a job that recognises that.
I think devs imagine someone else out there is having a better time at their computer than they are. I definitely do.
> 3m $60k double your daily active users
He told his manager that the data access layer - consisting of 5k LOC batch scripts calling Microsoft Access - needed to be brought up to speed. Maybe they'd consider PostgreSQL this year. Containerization, he protested, isn't going to fix the problems inherent to the system's labyrinthian integrations with countless software vendors and proprietary components. He also reminded them that it's 2023 and Windows containers still don't support RDP.
They still needed a replacement for "Bob". Bob left the org back in 2008. Under duress, and impossibly tight sprint deadlines, Bob was asked to make surgical modifications to the WingdingsAbstractFactory.java class - to be deployed directly into production no-later-than-end-of-sprint. Bob complained that there were no conceivable DR plans, or QA engineers assigned to the project. After a ten hour deployment - and a highly blameful postmortem - Bob exited on record-short-notice.
Arthur was forced into an early retirement under the recommendation of his physician. It was said that his stomach issues were brought on by the stress at work. Only Soylent and tinned meat were within tolerable levels of discomfort.
Arthur will be remembered by his loved ones for his patience, steadfastness, and creativity.
I sometimes find myself pondering why I didn't cease working on it, especially given the compensation wasn't particularly impressive. It's crucial to recognize and act when you sense that a project is no longer benefiting you, and simply move on.
We get it. You're that guy. :-)
Interesting idea. It can be that everyone has different knowledge base, so everyone has individual interpretations.
For the post in question. I've seen it in real life, so it didn't seem 'extreme' enough to be obviously 'sarcasm'. Though, I could tell it was sarcasm, it was perhaps the good type of sarcasm in that it contained a lot of truth.
Coding is a craft. There is an art aspect to it and there is a lot of room for inspiration and ideas to improve things.
True but often enough great code is not needed just working code will do just fine.
> Westbrook once touched legacy code without ending the company.
probably your communication skills were too good for management to passt up the opportunity of promoting you.
I'm cool with that. I keep doing work valuable enough to pay well for, and the rest is semantics.
30 years grinding it out on a very small esoteric system.
Hard to explain to people "no, really, my skills translate".
Paid well enough, but can't move, locked in.
But, the small esoteric system is being replaced, so I'm running out of runway and might not make it to retirement.
^^^This!
Arthur was lucky to retire at 58. He probably made fat bank which turned out to be golden handcuffs. If he ever got downsized, he had been f*d.
This is a big assumption, not everyone in this field is a high earner - plenty of people make okay-ish salaries without being anywhere near highly paid.
Many of the comments seem to assume that it was written by his colleagues and that the description of his career is condescending or snarky.
Personally, I find it really funny, and that it probably describes many of us, despite the fact that we think we are way too cool to ever be like the character described in the piece.
Most of today's new tech will become tomorrow's 'legacy'. Imagine how your awsum multi lambda hairball deployment will look in 30 years. (If it's even around in three decades.)
If companies want people to work harder, they'll have to give more compensation that scales better with performance.
He's doing well
Lots of significant inventions in computer science began as a side project only the creator cared for initially and had to borrow his own time to do it.
> Arthur had a knack for working hard without learning transferrable skills. He will be dearly missed
When I was at Google during the pandemic, I noticed more and more people saying they needed to learn open source tooling so they can have skills that transfer to the outside world.
That company is full of brilliant engineers who have mastered (part of) a great code base but have to start at the beginning with popular non-Google tools.
Or, put a better way, for all the codebases you have worked with, how many were crappy and how many were not?
I'm increasingly convinced that there does not exist a large codebase in actual use that isn't crappy in some way or another.
At least a 35yo codebase probably actually does something more useful than sell a narrative whose purpose is to enrich a few random jackasses.
Politics is a helpful lens. Either you compromise and muddy the purity of the result, or you take the high risk path of being uncompromising and greatly reduce the odds of achieving any result at all.
When facing this, many individuals optimize for lower-risk self-fulfillment over great ambition.
In any case it's just a job, and anyone harboring illusions otherwise will learn the truth soon enough.
I've been this guy, sorta.
I've been afraid to even try personal projects since then... that job broke me.
It's not rocket science - it's how we made webpages in 2001. Browsers are really good at that.
That said, it is a red flag for me if most people in the team have been there for very long: it means that as a new comer I will always be bottom of the pile and have no career growth opportunity.
A few times in my career I've seen people with a decade-plus experience leave companies they would have stayed at for another two decades if it were within their control. It's sad. They struggle a bit because they often realise that they've over fit their skillsets to that single company.
One guy I knew was hired as a "web developer" in ~2005 because of his HTML/CSS knowledge. He continued to do basically just HTML/CSS until he lost his job in 2020. Lovely guy, but he saw his job as just a job and couldn't give a damn about learning new technologies. I often wonder what he's doing now... I doubt just knowing HTML/CSS is a hireable skillset anymore.
Context is always important.
What's weird about that? It's how things work in every other sector, why would our sector be any different?
I wouldn't want to be stuck in the same position for decades, but that's different than being at the same company for decades. If I found a company that treated me right, paid me enough not to worry about money, and allowed me to progress internally (at a reasonable place), I wouldn't complain.