> You know what the best part of being a software engineer is? You can meet and talk to people who think like you. Not necessarily the same interests like sports and TV shows and stuff. But they think about problems the same way you think of them. That’s pretty cool.
That hasn't really been my experience, for every 50 people I meet maybe 1 is here for the craft, the rest want to do 9-5, have a visibility at work, work on impactful projects but actually talk about their problems, their opinions in a deeper way - almost never.
I'm not really sure how that's exclusive to software engineers either. But OP was drunk at the time of writing so I guess they were feeling a bit lovey-dovey.
> The most underrated skill to learn as an engineer is how to document.
Document why. I can read code. I want to know _why_ this nebulous function called "invert_parameters" that is 200 lines long even exists. Which problem did you have that this function solved? Why was this problem there in the first place? Write some opinions on maybe its intended lifetime of the codebase. Hell, I write comments that apologize, just so that a future reader knows that the code I wrote wasn't meant to be great but that I was in a time crunch or a manager was breathing down my neck, or that some insane downstream/upstream thing did something... well, insane.
Paint some picture of your mindset when writing something, especially if it's non-obvious, as that'll give all the additional context not captured in code, when reading the code.
Obviously this isn't the only good documentation rule, but I wish people - juniors and seniors alike - would do this more often, especially at the workplace.
I think the real underrated skill to learn as an engineer is how to test.
Documentation can take many forms: ADRs, system diagrams, specs, JIRA tickets, commit messages and descriptions, PR descriptions, code comments, idiomatic/intuitive code, etc. etc. and much of that requires maintenance or review to ensure it's still up to date.
Outdated tests quickly become broken tests, and they serve a purpose as documentation as well, but aside from throwing around buzzwords like TDD and BDD and all that, it's rarely a skill that is explicitly developed. Or maybe it's handed over to an SDET or something.
Build a decent set of tests that can survive the implementation being refactored, rather than coupling them to the runtime code or filling them with mocks and stubs, and you can get a good way to documenting complicated routines simply because you are explaining how it works through numerous well-described assertions.
That means you never need to bother with the 'how' or 'what' when commenting code, and you have multiple levels of 'why' as you go up from the code to commits to the issue tracker and beyond.
I don't know. I suppose it depends on what we're optimizing for, but from what I've observed, the most underrated skill is bullshitting.
I have seen countless engineers just while away the years modestly building and documenting incredible systems. Systems that "just work" for years on end. They never get fired because they're recognized for their value, but they also never get to the top.
Bullshitters, on the other hand, have no ceiling. They are never out of their depth because they transcend skill or accountability. They'll tell you they know everything, they'll tell you nothing is impossible, they'll gossip and disparage everyone else. The best bullshitters are full-on psychopaths and these are the guys that run the world.
I strongly agree. I try to urge coders to document intent, that’s how I put it.
Sometimes the intent is obvious and doesn’t need explanation, you’re implementing the feature.
But if the intent is not obvious - like compensating for some out of band failure, or responding to some not obvious business need, or putting in something temporary that will be fixed later, then the reader needs to know.
It’s frustrating that so few think about the perspective and needs of the reader or reviewer, not just the machine.
Sadly I have rarely seen people doing this. These shadow knowledge usually went away with their owners when they left the company, left other people scratching their heads.
> Sadly I have rarely seen people doing this. These shadow knowledge usually went away with their owners when they left the company, left other people scratching their heads.
Some of that's inevitable, but I'm continuously surprised about how unconcerned people are about it day to day.
I document why stuff in comments, commit messages, and other documents all the time. It's super easy since 1) I've been there when that shadow knowledge goes away, 2) I can think about future-me when I write that stuff, because I know I'll forget a lot of it. I don't know why so many people have a problem with doing the same, and need to be constantly reminded to do it.
Probably a big part is letting the perfect be the enemy of the good. I don't consider anything to be definitive, it's all clues to be pieced together later, and I just like to leave as many clues as possible.
I think people simply stop caring once it's just a 9-5 job, plus it is never rewarded anyway. So you get random results.
That's why I always believe the following two points:
1. Engineers are trained on-job. This means, if you want to be a good engineer, a really good one. You need to be very picky about what you do. Most of the "engineer" positions out there, like 95% of them, do NOT promote, or even go against the best principles of true engineering, so you are basically fighting against the objective that is to be the best engineer you can be.
2. Engineers should NOT deal with complicated business rules -- that is, it can exist in code, but the stakeholders are the one to provide and explain it. We should want NOTHING of it.
Serving business interest, and keeping our jobs ≠ doing whatever the business stakeholders want, that means we have to be very picky about the kind of job we do, the kind of team and company we want to be part of it.
Why would anyone ever do this? You run the risk of losing your job. I've yet to work at a single corporation where they truly cared about documentation, best practices, mentoring, rigorous testing; everyone always rewards the wrong incentives (pumping out features) and this is the result you get.
Frankly I don't blame workers either, it's not their fault they have to play a stupid game that helps no one so they can continue to have health insurance and not become homeless.
AI (and humans) know why something was done if it was for technical reasons as it would be necessary to have those technical reasons described in the test suite/type system.
It wouldn't be able to reverse engineer why something was done when the "why" is some arbitrary decision that was made based on the engineer not having had his morning coffee yet, but those "whys" aren't an important property of the system, so who cares? Even in the unlikely event that someone documented that they zigged instead of zagged because it was just the vibes they were feeling in that moment, nobody is going to ever bother to read it anyway.
If something could be important and a decision about it was arbitrary, it's valuable to capture that. "There are three viable algorithms here and I don't know which will perform best with our live data so I picked the one that's mathematically beautiful for now" tells whoever is optimizing that system a couple years later that they should try the other two.
Wouldn't the intent of that be captured in your benchmark tests? And especially now that code generation is essentially free, wouldn't you include all three with the benchmark tests showing why a particular choice was chosen? This reads like an important property of the system, so tests are necessary.
> wouldn't you include all three with the benchmark tests
Maybe. If I know that the performance of this particular code path is going to be critical to the project's future success, sure. It's more common for something like that to be premature optimization though and the extra code is dead weight. I am not convinced by the idea that LLMs make that kind of dead weight much less undesirable.
If a choice comes down to simply guessing about the future then it isn't an important property of the system and therefore it makes no difference which algorithm was chosen or why. You are right about that being a premature optimization, but that equally applies to trying to decipher "why". When the future comes and an important property emerges, the historical "why" won't even matter as it wasn't rooted in anything relevant.
The load-bearing word in my original comment is could.
An experienced developer will often have a good intuition about what might deserve attention in the future but isn't worth the effort now.
It's also useful for social reasons. Maybe the CTO wrote the original code and a junior developer working on the optimization thinks they know a better way but isn't sure about questioning the CTO's choice of algorithm. A comment saying it was arbitrary gives them permission.
> Maybe the CTO wrote the original code and a junior developer working on the optimization thinks they know a better way but isn't sure about questioning the CTO's choice of algorithm.
If changing the algorithm is going to negatively affect the program then the CTO would have written tests to ensure that the important property is preserved. There is really no reason for the junior to be concerned as if he introduces an algorithm that is too slow, for example, then the tests aren't going to pass.
Yes, it is most definitely possible the CTO was a hack who didn't know how to build software and the junior was brought in to clean up his mess. However, in that case the information is simply lost. An LLM will not be able to recover it, but neither will a human.
You're assuming a perfect system in which all relevant properties are tested for. That doesn't match probably 99.9% of real world systems.
The issue with AIs reverse engineering code is that context is very important - in fact knowledge and understanding of the context is one of the few things humans can still bring to the table.
Unless every relevant fact about that context has been encoded in a recoverable way the system and tests, AIs can only do so much. And there are essentially no non-trivial systems where that's the case.
You would test all important properties. That matches all real world systems you are responsible for. There is no reason to accept a lower standard for yourself.
Absolutely you have no control over what others have written, but you also have no way to access their lost context, so you are no further ahead than an LLM in that situation. The available information is the same for you as any other system.
Another way to think about it: An electrical design should contain a schematic, a parts list, a board layout, and a theory of operation. Do the same in software. Don't just give me the code. Don't give me the code plus a bunch of UML. Write a theory of operation. What are the major components? Why are they the major components? How do they interact? Why do they interact that way? How does the system perform the most common actions? How would a new developer make the most likely changes?
> Don’t meet your heroes. I paid 5k to take a course by one of my heroes. He’s a brilliant man, but at the end of it I realized that he’s making it up as he goes along like the rest of us.
As a child and adolescent I always imagined that something would click when I became an adult and I would become good at things and understand the world. That never happened, and then I realised it never happens for anyone. We're all just large children walking around figuring things out. Some of us figure things out faster, some of us stop trying to figure things out, but we're all just as clueless in the grand scheme of things. It's a miracle and a testament to our perseverance and ambition that things still work as well as they do.
On the other hand, I've contacted several of my heroes (not been able to meet as many of them in person) and that's always been an exhilerating, formative experience. I strongly recommend it if you can think of a good reason. (I have a list of heroes I have yet to reach out to because I haven't yet encountered an interesting enough problem to offer them. Several of them unfortunately have an actuarial deadline not too far into the future.)
I once worked with someone well renowned in my circles who gave talks, ran a blog, was cited/edited other peoples books.
His code did not match the hype, to say the least. His SDLC even less so.
There is probably an ego associated with being renowned that doesn't align with team-based work. He likened basic things like code reviews or PRs to being brought before The Hague and that the rest of the team was a bunch of bureaucrats.
I am not sure which profession they are in (software development?), but no. Not everybody is guessing. If they were you would have half of the buildings and bridges collapsing and the other half on fire by bad electrical wiring.
You can legitly learn how to do things properly and people who learnt to do that do the polar opposite of guessing. It is just that the world of software development has yet to be made liable for their results in the same way as civil or electrical engineers. So in software development many are just guessing because guessing wrong won't ruin their life.
> Hacker news and r/programming is only good to get general ideas and keep up-to-date. The comments are almost worthless.
I've been rate limited by the HN mods and knowing I can only reply a few times a day now I don't bother reading the comments anymore because I can't participate.
It also feels icky to continue when you're no longer welcome somewhere, but they're trying to be nice by slowing you down rather then an outright ban.
I was worried that means I'll miss out but maybe that "pull" I feel to check the comments might not be such a bad habit to break as I might not have been getting the value I thought from it (at least I hope so)
Some perspective: I feel that I participate here, yet most days I don't write even a single comment. When I comment I rarely write more than two comments a day.
This happened to me so I emailed hn and got a response that stated that at one point I had a cluster of down-votes for bad behavior and since that period had no issues so they lifted the ban. Simple.
I don't know, I never got an invitation to Lobsters and yet I still go through it regularly. You find some interesting links and comments even if you can't participate.
If there's any 20-somethings here that make 6 figures, listen carefully:
1. Max out your 401k, and invest all of it in a target date retirement fund. (Some companies are douches and will assign you mostly their own stock, which when it tanks, there goes your retirement... so check your allocation)
2. Get an HSA and max that out. Invest it all in a target date retirement fund. Do not use any of it, pay for medical expenses with cash and save your receipts. Get reimbursed for the receipts when you retire.
3. Contribute to an IRA and max it out (or backdoor roth when you make enough that that's necessary). Invest it all in a target date retirement fund.
4. Keep 6-12 months of living expenses in a high yield savings account.
If you start when you're 23, and you make $100k/yr, you can retire at 45. That may sound very old right now, and you might think, I'll just save later. But consider that when you turn 45, you may realize you have 20 more years of this shit job before you can retire.
It takes planning but you can get your money out early via SEPP 72t disbursements and Roth conversion ladders. You can also just straight up pay the early withdrawal penalty. Depending on your effective tax brackets pre/post retirement - you may very well still come out ahead compared to a non-tax advantaged account.
If you’re the kind of saver that’s on target for an early retirement thru high retirement savings then you should have a pretty good idea of what your annual expenses are. Throw in a buffer + known liabilities (roof needs replacing, aging car, health issues, etc).
There’s a few methods here - and it’s going to depend on your mix of retirement accounts (ROTH vs Trad vs HSA vs non-tax advantaged). There’s lots of tools to help plan scenarios - I particularly like ProjectionLab. I would also recommend hiring a professional that can assist in the planning and especially taxes during early retirement.
For SEPP 72T you need to make similar withdrawals every year for at least 5 years or until you hit 59.5 of age. My plan is a mix of SEPP 72T + non-tax advantaged accounts for 5 years. During those 5 years I will also be making ROTH conversions from my Trad accounts. Once the 5 years are up - I will continue my ROTH conversions but can finally start withdrawing the money I converted 5 years ago (this is a ROTH conversion ladder).
I was a bit of a late bloomer and spent my 20s working my way into tech - so I won’t retire at 45 - but am on target for 50ish.
Yeah exactly. This is what makes RRSPs/401ks the absolute worst place to park your money. You are locking away your funds, and deferring taxes to 1) the stage in your life you probably want to pay the least tax possible, and 2) a time when the tax rate will probably be higher than it is now (after all, tax rates pretty much exclusively go up).
If your employer offers a match, you should absolutely contribute up to the maximum match (it's free money after all), but not a penny more IMO. There are much, much better vehicles for parking your money than retirement funds.
I used to agree with you, but then I learned about 401k/roth conversion ladders. Basically, you can convert everything in a 401k to a roth (taxable event) and after 5 years you can withdraw all of that money penalty free and tax free (except the gains made in those 5 years). The key thing is that you want to strategically do the conversion when you have a very low income, for instance if you're already retired and living off of Roth contributions or taxable brokerage investments, so your only income for the year is the amount you convert. So basically, you just need enough funds to retire for 5 years before you can start withdrawing from the 401k->Roth.
I started doing this when I got a raise and realized pretty much half of my raise was going straight to taxes, whereas I could invest it all if I just upped my 401k contributions.
My friend, I'm not sure you've thought through this all the way.
Historically, tax rates have gone down over time, not up. Especially in recent history.
You do pay a reduced tax in retirement because you're able to blend your income. You defer taxes on the 401k until requirement, but you pre-pay taxes on a mega backdoor/roth, so if you need 100k of income in retirement you pull 50k from 401k and 50k on the roth and only pay taxes on half of it, putting you in a lower bracket.
Having the pretax money to grow before paying taxes on it is greater than having post tax money and having less to compound.
The alternative to tax advantaged places to park your money for retirement is strictly worse than non-tax advantaged. In a 401k you pay taxes only in retirement, for roth's you pay taxes only with your paycheck. In a brokerage, you pay taxes at your paycheck and then you pay taxes on withdraw for your cost basis.
A SEPP plan let's you get the money early and penalty-free from a 401k and an IRA. And the saved medical receipts let you take some money out of a HSA at any point for reimbursement, also penalty-free.
Even with this strategy, you're not retiring at 45 unless you are frugal, have cheap hobbies, and never have kids or a non-working spouse. Also take care that you don't have any parents, siblings, or extended family that come to rely on you. Also don't forget expect to live anywhere even remotely expensive, unless you like camping.
My wife and I have kids and live on a single income, and we're on track to retire in between ages 45 and 50.
We live in Ohio, and I suppose we would qualify as frugal and having cheap hobbies. But I certainly don't feel like we're missing out on a lot.
We also set aside over $1,000 a month for giving, with some of it going to various individuals and organizations automatically and some of it just waiting for when we see a need.
You're not wrong, a family is more expensive. But if both parents pull the same (or similar) salary, it is enough to still retire at 45. Requires using more tax-advantaged plans to play for college, and may not work well in expensive cities.
Re: cheap hobbies, I used to date a public school teacher. She would save to go on guided trips to Antarctica, Peru, the Galapagos, New Zealand. You can live an amazing life if you plan for it.
The median household income in the US is $83,730 [1] - half of households are on less than that.
If you earn $100k and are willing to have the median lifestyle, and you can find a spouse that's willing, then the numbers work just fine.
Challenges include lifestyle inflation; housing costs if your six-figure job is in an expensive area; and finding a partner who's willing to be put in what is often a vulnerable and low-status position.
I feel like this is a bit snarky, it simply means plan for your retirement and invest in your own future, take advantage of government / employer backed savings plans. Plenty of these exist over here. Don't waste your money.
Everything is not perfect in the singular country of Europe, I sure as hell don't want to be relying on only what the state decides it can give me in my old age.
All is fine in Switzerland, there is state part (1st pillar) where people give blindly and then during retirement get some payment; and then mandatory private part where employer contributes too, often the same amount (2nd pillar) which is the most important one. Also another optional private 3a pillar which otherwise behaves like 2nd. Obviously all of this is pre-tax, 2nd and 3rd can be used for purchasing primary property or start business etc. State is always a miserable manager of longterm funds. One can pick investment profile for those savings, or is voted by employees' assembly in case of 2nd.
No complaints, I know how much I saved, projections on how my pension will look like if I retire in year X, Y or Z. I don't expect more from a good social security system if one wants more it should be on them.
So far plan is retiring at 60, already I work on 90% and thus sporting 10 weeks of paid vacations yearly. That way, I don't thread the knife edge of burnout, in contrary and have plenty of time to unwind, have adventures (just came back from 2 weeks road trip in Dominican republic) and spend literal months on vacations with my kids and wife. There is no salary achievable in our field that would force me to consider it a better setup and instead working hard... these are best years of my remaining life and waste them just working would be tremendously stupid and shortsighted. To retire in 45, seeing my skills atrophied and being at the mercy of things like inflation... doesn't sound that great.
So there is another perspective to just chasing biggest paycheck at all costs.
At this point I am losing faith in my (european) pension system; state pensions will get emptied out for the boomer generation currently enjoying the returns of the good times, private / employer paid for pensions will likely get raided and tanked by big investors / capitalism. I don't feel like I can trust or rely on them for when I might be able to retire in my 70's.
(that's the other thing, state pension age is being pushed back as life expectancy increases. Not for the main boomer generation of course, they were already retired when the age started to creep up or only had to work a few months longer)
they're pointing out that the US is insanely stupid when it comes to healthcare and retirement. the stuff we do in this country is so much extra work/effort/cost and all of it comes at the worker's cost.
My reading was that nothing of that applies in Europe. No earning 6 figures, no way to invest pre-tax or in any other tax advantaged way, no way to optimize healthcare costs, early retirement unlikely.
UK has the state pension which comes from NI (National Insurance) contributions which in a way acts like a Defined Benefit pension in that you work for X number of years and get state pension of Y in return(currently adjusted for inflation, wage growth, or 2.5% annually, called the 'triple lock'). Not based on income so you don't get a massive state pension by earning 6+ figures.
Then more recently (as in, as of around 2012 and up to 2018) we got auto-enrollment into private pensions, which are more like Defined Contribution (DC). Employer has to pay a percentage into the pot and so do you. Usually 5% employee and 3% employer by default but many will offer better (or contribution matching) as a perk. I think this is probably the same or similar to the 401k in US terms. The employer chooses the pension provider but you need to proactively switch to a high risk scheme to see any growth from it.
At a certain point the tax rebate from the government doesn't cover your whole income so you have to file a tax return to get the rest of the rebate. You can instead choose to 'salary sacrifice' which means you are lowering your income on paper but the sacrifice is put directly into pension (or otherwise can be used to get a car on lease or a bicycle via another scheme). Salary sacrifice is used by a lot of higher earners to bring their gross income down in order to avoid being cut off on certain benefits like child-care.
After all that you have SIPP (Self-Invested Personal Pension) which gives you more control over what you can invest it. Not just stocks, ETFs, and all that, but can also be commercial property (so the pension itself owns that asset). This gets the same tax treatment for pensions.
Finally there is the ISA and LISA. The first is a savings account where any interest or capital gain is free of tax, the second gets a 25% boost by the government to help buy a house or flat, but you can only use that money for a mortgage deposit.
Most people won't see all that much from their auto-enrollment given they could just opt-out to get the extra cash in their paycheque (especially when a low earner), or might not know to switch to the high risk fund, so the state pension and other benefits for OAPs will be there still. Those with more disposable income or a long term view (e.g. doing FIRE) are likely to max out the various vehicles available to them but at that point you're gonna be earning too much to care.
No need to optimise healthcare costs or any of that unless you want to go private.
Retirement accounts are a thing in Europe though. In Poland for example there's IKE and IKZE. IKE is a bit simpler of the two. If you hold your money on IKE until you're 60 you're not paying taxes on that. Can invest in stocks or bonds.
There are options to save extra for retirement, if you take a private pension or a bank account that you can't withdraw from until retirement for example; in that case, you don't pay wealth tax and only pay taxes when it starts paying out. Sometimes the money you put into it is tax deductible, too. But, that's in NL, I don't know anywhere else. Source: https://www.nibud.nl/onderwerpen/pensioen/pensioen-opbouwen/
6 figures is possible, there are/were some software companies (VC backed, US based, US startup style, FAANG) that pay that much, otherwise there's highly paid jobs like management, doctors/dentists, landlord, public motivational speaker, drug dealer, etc that can earn you that much. But it's not handed to you like it feels like it is in the US / SF, but I realize that's very much a unique bubble.
So yeah, basically none of your comment is true, it's just not talked about as much because our basic systems are alright for most people and few have the extra income to think about doing more with it.
The investment taxation was already discussed in a sibling comment. As always in Europe, it depends on a country. Good for you if that's possible in Netherlands.
Of course some roles can earn six figures or more, hopefully everyone knows there isn't a hard cap on earnings. Should've been obvious that wasn't my claim.
I don’t think these methods are possible anymore in this modern economy of “fire everyone because of AI and then rehire them a few months later at half the salary”.
If you’re not one of the senior managers, I don’t think these kinds of long term investments are feasible anymore.
This assumes a lot of things that may not be true and would not map to whatever mental model you formed with this.
People are often quick to dispense technically correct (or mostly correctly) financial advice but rarely is financial mangement simply a technical problem to be solved in someone’s life
> 2. Get an HSA and max that out. Invest it all in a target date retirement fund. Do not use any of it, pay for medical expenses with cash and save your receipts. Get reimbursed for the receipts when you retire.
Good advice on saving HSA reimbursements until later. Also, after 65 there's no penalty for withdrawing from your HSA; its just taxed at regular income at that point.
Ah yes, the good old US of A where a 23 year old can start out making $100k/yr.
While here I am, 39yo, having been in this field for 17 years and worked my way up to a lead, and having worked at banks, fintechs, medtechs and consultancies, am 'only' making roughly €76k/yr.
And this is with pouring personal time into studying and applying latest tech in side projects to stay relevant.
Honestly if the financials of the US tech scene ever normalize to what the rest of the world has, you guys are in for a rude awakening.
Not really the case in any of the high cost of living cities - when I graduated undergrad in the mid 2010s, my peers where getting offers from Microsoft for 100-120K for their standard out of school dev positions, Amazon was better as was Apple from what I recall. Plenty of 23 year olds making that much?
$1.8M-$2.2M. Assumes 6%-7.5% annual return. Does not include employer contribution. Provides $72k-$88k /yr income. Assuming you pull social security at 67, your continued gains exceed your draw, and your fund perpetuates until you die.
It just means you draw ~$2500/month instead of ~$3800/month. That makes your $77k/yr income into $107/yr, but more importantly it helps your retirement account keep growing so it outlives you.
- Drinking wine solo is odd. Whiskey, vodka, or beer (and if you Russian) is the standard. Spelling mistakes like 'ever thing' support the idea of alcohol induced unordered thoughts, that's good.
- Webdevs would one of the last to consider to be experts.
- While I don't use darkmode, browser extensions solve the unsupported web pages. Dark mode used to be the only possible option on a black/green screen, glad that changed.
- Pharmacist require a degree and quite a few years of studies and exams with tons of organic chemistry.
- HN comments being worthless is an awkward one. Lots of posts (e.g. Apple CEO change) had tons of useless stuff but it's very often the comments would bve better than the post itself.
IMO drinking is a very personal thing so I almost always drank solo. Like playing piano — I always thought playing in public very weird, almost equaling naked in public…
What do you mean? 2021-22 was peak of the employment market. At least here in Europe. To get a job all you had to do was be breathing. It was insanity. SQL was and still is highly relevant. Especially in data related fields.
I would argue quite the contrary. NoSQL DBs got through their hype cycle and are now a standard part of stacks, but SQL (especially via Postgres) has re-emerged as the golden standard for the bulk of data needs.
Especially when companies over-provision their databases. Partially because the jump from cheap-ass to mid-tier is a massive increase in capacity.
Then you can offload stuff to the DB engine (as it should be), making everything more efficient, less data going between DB and App layers is good for everyone.
Also you get to do cool SQL shit nobody understands and you become invaluable =)
Unless your role is DB-specific, at which point people stare at you blankly as you’re raging about B+trees and sort buffers, and then ignore you when you tell them for the Nth time that they should refactor their schema.
> The best way I’ve advanced my career is by changing companies.
This is interesting. At my employer we see job hopping as a bad thing.
I think there's a unique perspective you get by seeing your 5+ year old code in production. I can kinda tell when someone only does short stints based on the way they talk about other people's code.
If you can't hold something down for more than a year then it looks rough to anybody.
18-24 months generally seems to have been the sweet spot in terms of improving your income. Especially because the promise of equity after 4 years often means fuck all and you almost never see a promotion or a decent pay increase either for inflation or performance.
If an employer is going to ding you for taking advantage of the market then they better be offering enough above market to keep you around for longer.
They probably also take home more income since they are getting raises more often which allows them to purchase free time to further hone their skills, rather than collecting a fixed wage and minimal equity from a corporation and the satisfaction of their work being minimally rewarded for five years.
Maybe it should be almost a Fibonacci thing: Change after one year is fine, the first time. Maybe the second. After that, the length of the jobs had better start going up, or it's an alarm bell (unless they're contracts).
> Algorithms and data strictures are important — to a point. I don’t see pharmacist interviews test trivia about organic chemistry. There’s something fucked with our industry’s interview process.
Pharmacists have to get a special degree before they can even get an interview, and I've heard that the education is heavy on organic chemistry. Then you get a job as a cashier selling pills.
> Hacker news and r/programming is only good to get general ideas and keep up-to-date. The comments are almost worthless.
You got me.
> Once, someone asked me who I looked up to and I said Conan O’Brien [...]
He wrote for SNL and studied literature at Harvard, so there's probably plenty going on up there.
> on his last show on the Tonight Show, he told his audience to be kind and work hard
Conan really handled that disaster with tremendous grace and it paid immediate dividends. I can’t really think of a similar situation in popular culture. It is a good reminder of how to handle oneself especially during turmoil.
"If you’re not sure what you want to do, just do Java. It’s a shitty programming language that’s good at almost everything."
- I agree, 100%.
And here's a take that a lot of the folks will disagree, and categorically state that these both belong to two entirely different domains: "Rust, is the evolution of Java. Not Kotlin, not Scala, not clojure, but, Rust".
I hadn't thought about Rust that way before, but I think you might be on to something here. Rust and Java both lean heavily into keeping developers from doing anything dangerous with expressiveness and power being pretty far down the list of concerns.
The context dependency injection is so so so good. Once we switched over to json & Jax-rs, it made such a great simple direct backend. Good throughput. Just, a bit high memory.
I did TDD properly the first time in my Masters Degree (ongoing). It was an eye-opener. Write your program in two different ways to make sure you know the requirements by making their outputs match. That's not me being snarky. It actually works well. Just make sure you can type quickly.
My biggest lessons I've learned as non-senior non-engineer:
1. You'll never be as smart as the smart guys. It's okay to give up.
2. Most likely you'll work with incompetent fools, get used to that.
3. Workplace is the best place to make friends. If someone tells you otherwise it's a psyop to turn you into a robot.
4. Minimize your output while trying to maximize your salary because mythical "job satisfaction" doesn't exist and it makes much more sense to redirect your energy elsewhere.
5. Luck is the most important factor.
There is nothing I've done at work I'm truly proud of. Everything I'm proud of is completely unrelated to work.
> I don’t know why full stack webdevs are paid so poorly. No really, they should be paid like half a mil a year just base salary. Fuck they have to understand both front end AND back end AND how different browsers work AND networking AND databases AND caching AND differences between web and mobile AND omg what the fuck there’s another framework out there that companies want to use? Seriously, why are webdevs paid so little.
Mood. Like yeah, everyone at the moment is criminally underpaid with relation to productivity gains and cost of living, but generalists in general are woefully underpaid compared to narrow specialists.
I come from the IT space, where I've got to fight tooth and nail to keep my job versus the race-to-the-bottom mentality of MSPs and outsourced sweatshops overseas. I'm a generalist who builds globe-spanning networks while memorizing VLAN schemas across dozens of sites, while also owning IAM across Entra and Okta for the Enterprise and the associated JAMF/InTune MDM profiles for mobile and desktop endpoints, and the SME for Windows server environments and VMware VCF datacenters and the AWS/GCP/Azure tenant, all while forecasting and budgeting for future CapEx and OpEx projects within the IT space for long-term planning relative to corporate needs and strategy. I own storage, identity, server, endpoint, networks, physical security, infrastructure, cyber security, hardware, software, licensing, architecture, support, and on-call, in orgs ranging from 20 to 80k people in size. I've saved companies 20x the TC they paid me through cost-effective infrastructure.
You know what employers feel that skill set is worth right now, with 15 years experience? $130k, exactly what I made in 2019 before COL doubled. Not even enough to make median rent in my metro (~$3500) on a standard 50/30/20 post-tax budget scheme.
It's disgusting out there. Nobody wants to pay the people who do the actual work.
Sure, there are alcoholics in the past. But sitting with the intention of sounding drunk, interspersing deliberate typos with "pour another drink" and "take a sip" because someone thought that was a cool premise is weird.
It's one thing to write drunk, it's another thing to get drunk to write about being drunk
He wasn't drunken rambling though, he was getting drunk to do it. I think there's a real difference in message there - as much as it was probably fake.
Lost me at dynamic languages. Don't build anything of any significance in dynamic languages! ;)
Some good points. Laughed at TDD is a cult. I mean a lot of software orgs/cultures are cultish (Agile, Scrum, whatnot). At work I often feel I'm part of a cult.
> Don't build anything of any significance in dynamic languages!
Posted on a significant website built in a dynamic language.
I tend to disagree. Static typing can catch some bugs, but most serious errors are not type errors, and the common situation where the type system disallows just enough invalid states for developers to get complacent is the worst of both worlds.
On the contrary, I find "The older I get, the more I appreciate dynamic languages. Fuck, I said it. Fight me." is exactly my sentiment too, with a caveat. I really like gradual typing, like python has. And not like ruby has (where it's either RBS files and it's tucked away, or it's sorbet and it's weird).
The worst code base I had to work in by far was a Python code base. Extremely difficult to refactor. Many bugs that were completely avoidable with static typing. I think maybe more modern Python is a little bit better but wouldn't be my choice for large projects. It's not just about correctness. It's also about performance. That code was so slow and that impacted our business.
One rebuttal to that is that with the benefit of hindsight, to a first approximation zero percent of the code I've written in my career turned out to be "of any significance" really.
Same. That line about "your legacy is your family and friends" hit hard.
I've been coding professionally for >30 years. I don't think any of my code has survived 5 years in production.
I don't think code quality affected that at all - I know the really, really, shitty code I wrote when learning OOP in the 90's survived for a looong time, while the amazing code I wrote for a startup 2018-2021 died with it.
One of the projects I'm most proud of is still running ten years later, and has processed over a billion AUD through it in that time, with very minimal maintenance. I recently consulted on it, and sure enough it's still ticking along nicely! The code is honestly quite good too, even if it is PHP (though in a very nice microframework we wrote on top of Silex: removed all magic that a lot of these systems relied on. No annotations!)
I haven't doing this forever (only 10+ years) but surprisingly I think a majority of what I've written is still running. Probably a fair bit will continue to run for a while yet too I think (again, surprising for CRUD web apps).
Most code I wrote over my career got pretty decent use and produced value for customers. Some was used by millions of people. What I work on today is used by thousands. It's important that it is of reasonable quality with less bugs, decent performance, functionality users are looking for etc.
A lot of code makes a difference but I guess there's a lot that doesn't?
I'd guess, on average, code I've written has a half-life of maybe 3 or 4 years. There's pretty much none of my code (with a few surprising exceptions) that's still been running or in production anywhere for more than 8 or 10 years.
At the time, a lot of it felt "important" and "significant". And some of it probably was at the time, to the businesses I wrote it for. But whether I sweated blood and tears to craft the most elegant and efficient software I was capable of, or I phoned it in and just copy/pasted Stack Overflow answers together until I met some interpretations of a requirement to be able to leave the office on time - really made no difference.
I've been pondering lately, thinking about GenAI and vibe coding, with the very real risk of creating completely unmaintainable codebases - whether that matters, if the code is likely to be retired or rewritten in 3-4 years anyway? My current gig is on to the 4th rewrite of it's web/mobile app backend platform in 15 years, which started out as a Groovy on Grails app, which got rewritten in Java, then rewritten again in Java, and now it's being rewritten in Python. Each rewrite had fairly good reasons at the time, but a huge amount of code here gets thrown away every 4 years or so - which looking back makes me seriously question whether any of it was "of any significance". To be honest, the 2026 Python code really isn't doing anything notably different or more complex than the Perl and JavaScript code I was writing in 1996 - web work is CRUD apps all the way down.
As a person who started in a dynamic language (PHP; don't laugh, it's actually really good for web dev) and worked in an infrastructure team which had to do a lot of refactoring... I can't agree with the sentiment either. Dynamic languages _look_ good, but lightly typed languages like Go strike a much better balance in my opinion
TDD is a cult. But knowing your pre-conditions an post-conditions for your isolated parts of your code is important. I think all your AI codegen will work better with this.
The entire AI ball of wax is built on python (dynamically typed) - or at least a large part of it. It probably needs to move to rust to save on power and compute cost.
The heavy lifting of AI is done by GPUs that are not running Python. But yes, a lot of orchestration and glue work is done by Python. Python can be a decent glue language and it has its place. But if the core/high performance logic of inference and training was written in Python then we wouldn't have today's AI. I imagine there are other languages in the mix.
Python is also the choice of non-programmers for simple work. Nothing wrong with that. But I wouldn't want e.g. my car's ABS system to be programmed in Python (or my browser or my OS or many other examples).
> But knowing your pre-conditions an post-conditions for your isolated parts of your code is important.
Design-by-Contract[0] is a formalization of this concept and well worth considering when working in code using mutable types. In addition to pre/post conditions, DbC also reifies class invariants (which transcend method definitions).
A lot of startups are cults. Tesla maybe the final form of a culted startup where the stock owners don't care about anything anymore.
That said, the people who change companies aren't the ones that believe that management ever had the best ideas, or are able to push back on the cult thinking with clarity. Unfortunately, though, it's not necessarily evidence that wins arguments, it's charisma, which is how the cult is started in the first place.
This genuinely looks like that I wrote it...until I saw that LISP line, definitely not me. But do agree with a lot of items in the list, and I happen to be a DE, too.
I am a big fan of learning LISP, at least once. Going through SICP after more than a decade of writing code for a living was probably the single best thing I did to deepen my understanding of a lot of compsci concepts, data structures, and how to think about software. For me, at least, it was very much a seeing the matrix for the first time kind of moment. My LISP use has quickly declined, but I've dabbled in dozens of programming languages since then, and I do attribute not feeling lost to that experience.
> The most underrated skill to learn as an engineer is how to document. Fuck, someone please teach me how to write good documentation. Seriously, if there’s any recommendations, I’d seriously pay for a course (like probably a lot of money, maybe 1k for a course if it guaranteed that I could write good docs.)
Good docs are docs that make it easy to implement the next feature.
From an AI perspective, it's my observation that LLMs often write code with lower quantity / quality docs. At the same time, they are reasonably good at synthesizing / inferring meaning from code that lacks good docs. They often do so internally by forming a chain of thought / reasoning around how the code works. The docs that should be written as part of the code are probably the same things that an LLM would reasonably come to by spending tokens when modifying that code. I believe that this should be trained into model so that future LLM work starts with not having to build up context.
In the absence of that being built in, something I've been experimenting a little with is tuning what I want to see in docs that actually help source control / development. Currently that's at https://github.com/joshka/skills/tree/main/doc-steward - still needs a bunch of work, but it's generally better than nothing. YMMV
> The most underrated skill to learn as an engineer is how to document. Fuck, someone please teach me how to write good documentation. Seriously, if there’s any recommendations, I’d seriously pay for a course (like probably a lot of money, maybe 1k for a course if it guaranteed that I could write good docs.)
Totally agree - it’s not at all the same. White boarding and the camaraderie you build in person are the things I miss. Thankfully my team still gets together for a week once a quarter. I think that’s an pretty ok balance.
> A lot of progressive companies, especially startups, talk about bringing your “authentic self”. Well what if your authentic self is all about watching porn? Yeah, it’s healthy to keep a barrier between your work and personal life.
this is probably the best truth. after a while it's easy to recognize people that are consistently being their "authentic self" and they're usually the worst.
"HR" does not set your professional obligations. If you need to be drunk to talk this honestly, you are not a "senior" nor a mentor, but an incipient alcoholic and a coward.
Then again, this person is obviously also lying to claim the engineer title - sit down, "data science!" You're only even here because Product prefers being lied to - so that really sets an ironically honest baseline on how seriously anyone should be taking any of this farrago.
That hasn't really been my experience, for every 50 people I meet maybe 1 is here for the craft, the rest want to do 9-5, have a visibility at work, work on impactful projects but actually talk about their problems, their opinions in a deeper way - almost never.
> What’s the [worst] that can happen? He fire me? I’ll just pick up a new job in 2 weeks.
https://www.reddit.com/r/ExperiencedDevs/comments/nmodyl/dru...
> He fire me? I'll just pick up a new job in 2 weeks.
And... yeah... the reddit post is from 5 years ago when the job market was very, very different.
Document why. I can read code. I want to know _why_ this nebulous function called "invert_parameters" that is 200 lines long even exists. Which problem did you have that this function solved? Why was this problem there in the first place? Write some opinions on maybe its intended lifetime of the codebase. Hell, I write comments that apologize, just so that a future reader knows that the code I wrote wasn't meant to be great but that I was in a time crunch or a manager was breathing down my neck, or that some insane downstream/upstream thing did something... well, insane.
Paint some picture of your mindset when writing something, especially if it's non-obvious, as that'll give all the additional context not captured in code, when reading the code.
Obviously this isn't the only good documentation rule, but I wish people - juniors and seniors alike - would do this more often, especially at the workplace.
Documentation can take many forms: ADRs, system diagrams, specs, JIRA tickets, commit messages and descriptions, PR descriptions, code comments, idiomatic/intuitive code, etc. etc. and much of that requires maintenance or review to ensure it's still up to date.
Outdated tests quickly become broken tests, and they serve a purpose as documentation as well, but aside from throwing around buzzwords like TDD and BDD and all that, it's rarely a skill that is explicitly developed. Or maybe it's handed over to an SDET or something.
Build a decent set of tests that can survive the implementation being refactored, rather than coupling them to the runtime code or filling them with mocks and stubs, and you can get a good way to documenting complicated routines simply because you are explaining how it works through numerous well-described assertions.
That means you never need to bother with the 'how' or 'what' when commenting code, and you have multiple levels of 'why' as you go up from the code to commits to the issue tracker and beyond.
I have seen countless engineers just while away the years modestly building and documenting incredible systems. Systems that "just work" for years on end. They never get fired because they're recognized for their value, but they also never get to the top.
Bullshitters, on the other hand, have no ceiling. They are never out of their depth because they transcend skill or accountability. They'll tell you they know everything, they'll tell you nothing is impossible, they'll gossip and disparage everyone else. The best bullshitters are full-on psychopaths and these are the guys that run the world.
Sometimes the intent is obvious and doesn’t need explanation, you’re implementing the feature.
But if the intent is not obvious - like compensating for some out of band failure, or responding to some not obvious business need, or putting in something temporary that will be fixed later, then the reader needs to know.
It’s frustrating that so few think about the perspective and needs of the reader or reviewer, not just the machine.
Some of that's inevitable, but I'm continuously surprised about how unconcerned people are about it day to day.
I document why stuff in comments, commit messages, and other documents all the time. It's super easy since 1) I've been there when that shadow knowledge goes away, 2) I can think about future-me when I write that stuff, because I know I'll forget a lot of it. I don't know why so many people have a problem with doing the same, and need to be constantly reminded to do it.
Probably a big part is letting the perfect be the enemy of the good. I don't consider anything to be definitive, it's all clues to be pieced together later, and I just like to leave as many clues as possible.
That's why I always believe the following two points:
1. Engineers are trained on-job. This means, if you want to be a good engineer, a really good one. You need to be very picky about what you do. Most of the "engineer" positions out there, like 95% of them, do NOT promote, or even go against the best principles of true engineering, so you are basically fighting against the objective that is to be the best engineer you can be.
2. Engineers should NOT deal with complicated business rules -- that is, it can exist in code, but the stakeholders are the one to provide and explain it. We should want NOTHING of it.
Serving business interest, and keeping our jobs ≠ doing whatever the business stakeholders want, that means we have to be very picky about the kind of job we do, the kind of team and company we want to be part of it.
Frankly I don't blame workers either, it's not their fault they have to play a stupid game that helps no one so they can continue to have health insurance and not become homeless.
It wouldn't be able to reverse engineer why something was done when the "why" is some arbitrary decision that was made based on the engineer not having had his morning coffee yet, but those "whys" aren't an important property of the system, so who cares? Even in the unlikely event that someone documented that they zigged instead of zagged because it was just the vibes they were feeling in that moment, nobody is going to ever bother to read it anyway.
Maybe. If I know that the performance of this particular code path is going to be critical to the project's future success, sure. It's more common for something like that to be premature optimization though and the extra code is dead weight. I am not convinced by the idea that LLMs make that kind of dead weight much less undesirable.
An experienced developer will often have a good intuition about what might deserve attention in the future but isn't worth the effort now.
It's also useful for social reasons. Maybe the CTO wrote the original code and a junior developer working on the optimization thinks they know a better way but isn't sure about questioning the CTO's choice of algorithm. A comment saying it was arbitrary gives them permission.
If changing the algorithm is going to negatively affect the program then the CTO would have written tests to ensure that the important property is preserved. There is really no reason for the junior to be concerned as if he introduces an algorithm that is too slow, for example, then the tests aren't going to pass.
Yes, it is most definitely possible the CTO was a hack who didn't know how to build software and the junior was brought in to clean up his mess. However, in that case the information is simply lost. An LLM will not be able to recover it, but neither will a human.
The issue with AIs reverse engineering code is that context is very important - in fact knowledge and understanding of the context is one of the few things humans can still bring to the table.
Unless every relevant fact about that context has been encoded in a recoverable way the system and tests, AIs can only do so much. And there are essentially no non-trivial systems where that's the case.
Absolutely you have no control over what others have written, but you also have no way to access their lost context, so you are no further ahead than an LLM in that situation. The available information is the same for you as any other system.
Ha yup - I've felt this one before :D
On the other hand, I've contacted several of my heroes (not been able to meet as many of them in person) and that's always been an exhilerating, formative experience. I strongly recommend it if you can think of a good reason. (I have a list of heroes I have yet to reach out to because I haven't yet encountered an interesting enough problem to offer them. Several of them unfortunately have an actuarial deadline not too far into the future.)
His code did not match the hype, to say the least. His SDLC even less so.
There is probably an ego associated with being renowned that doesn't align with team-based work. He likened basic things like code reviews or PRs to being brought before The Hague and that the rest of the team was a bunch of bureaucrats.
some are just a bit better at guessing
You can legitly learn how to do things properly and people who learnt to do that do the polar opposite of guessing. It is just that the world of software development has yet to be made liable for their results in the same way as civil or electrical engineers. So in software development many are just guessing because guessing wrong won't ruin their life.
I've been rate limited by the HN mods and knowing I can only reply a few times a day now I don't bother reading the comments anymore because I can't participate.
It also feels icky to continue when you're no longer welcome somewhere, but they're trying to be nice by slowing you down rather then an outright ban.
I was worried that means I'll miss out but maybe that "pull" I feel to check the comments might not be such a bad habit to break as I might not have been getting the value I thought from it (at least I hope so)
If there's any 20-somethings here that make 6 figures, listen carefully:
If you start when you're 23, and you make $100k/yr, you can retire at 45. That may sound very old right now, and you might think, I'll just save later. But consider that when you turn 45, you may realize you have 20 more years of this shit job before you can retire.Kinda hard to do that when you've locked all your money up in a retirement vehicle that doesn't let you withdraw until age 59.5.
There’s a few methods here - and it’s going to depend on your mix of retirement accounts (ROTH vs Trad vs HSA vs non-tax advantaged). There’s lots of tools to help plan scenarios - I particularly like ProjectionLab. I would also recommend hiring a professional that can assist in the planning and especially taxes during early retirement.
For SEPP 72T you need to make similar withdrawals every year for at least 5 years or until you hit 59.5 of age. My plan is a mix of SEPP 72T + non-tax advantaged accounts for 5 years. During those 5 years I will also be making ROTH conversions from my Trad accounts. Once the 5 years are up - I will continue my ROTH conversions but can finally start withdrawing the money I converted 5 years ago (this is a ROTH conversion ladder).
I was a bit of a late bloomer and spent my 20s working my way into tech - so I won’t retire at 45 - but am on target for 50ish.
If your employer offers a match, you should absolutely contribute up to the maximum match (it's free money after all), but not a penny more IMO. There are much, much better vehicles for parking your money than retirement funds.
I started doing this when I got a raise and realized pretty much half of my raise was going straight to taxes, whereas I could invest it all if I just upped my 401k contributions.
Historically, tax rates have gone down over time, not up. Especially in recent history.
You do pay a reduced tax in retirement because you're able to blend your income. You defer taxes on the 401k until requirement, but you pre-pay taxes on a mega backdoor/roth, so if you need 100k of income in retirement you pull 50k from 401k and 50k on the roth and only pay taxes on half of it, putting you in a lower bracket.
Having the pretax money to grow before paying taxes on it is greater than having post tax money and having less to compound.
The alternative to tax advantaged places to park your money for retirement is strictly worse than non-tax advantaged. In a 401k you pay taxes only in retirement, for roth's you pay taxes only with your paycheck. In a brokerage, you pay taxes at your paycheck and then you pay taxes on withdraw for your cost basis.
We live in Ohio, and I suppose we would qualify as frugal and having cheap hobbies. But I certainly don't feel like we're missing out on a lot.
We also set aside over $1,000 a month for giving, with some of it going to various individuals and organizations automatically and some of it just waiting for when we see a need.
Re: cheap hobbies, I used to date a public school teacher. She would save to go on guided trips to Antarctica, Peru, the Galapagos, New Zealand. You can live an amazing life if you plan for it.
Does that mystical creature still exist? Or is it perhaps more likely if one of the pair has a high yield income?
If you earn $100k and are willing to have the median lifestyle, and you can find a spouse that's willing, then the numbers work just fine.
Challenges include lifestyle inflation; housing costs if your six-figure job is in an expensive area; and finding a partner who's willing to be put in what is often a vulnerable and low-status position.
[1] https://fred.stlouisfed.org/series/MEHOINUSA672N
Everything is not perfect in the singular country of Europe, I sure as hell don't want to be relying on only what the state decides it can give me in my old age.
No complaints, I know how much I saved, projections on how my pension will look like if I retire in year X, Y or Z. I don't expect more from a good social security system if one wants more it should be on them.
So far plan is retiring at 60, already I work on 90% and thus sporting 10 weeks of paid vacations yearly. That way, I don't thread the knife edge of burnout, in contrary and have plenty of time to unwind, have adventures (just came back from 2 weeks road trip in Dominican republic) and spend literal months on vacations with my kids and wife. There is no salary achievable in our field that would force me to consider it a better setup and instead working hard... these are best years of my remaining life and waste them just working would be tremendously stupid and shortsighted. To retire in 45, seeing my skills atrophied and being at the mercy of things like inflation... doesn't sound that great.
So there is another perspective to just chasing biggest paycheck at all costs.
(that's the other thing, state pension age is being pushed back as life expectancy increases. Not for the main boomer generation of course, they were already retired when the age started to creep up or only had to work a few months longer)
they were being sarcastic.
Then more recently (as in, as of around 2012 and up to 2018) we got auto-enrollment into private pensions, which are more like Defined Contribution (DC). Employer has to pay a percentage into the pot and so do you. Usually 5% employee and 3% employer by default but many will offer better (or contribution matching) as a perk. I think this is probably the same or similar to the 401k in US terms. The employer chooses the pension provider but you need to proactively switch to a high risk scheme to see any growth from it.
At a certain point the tax rebate from the government doesn't cover your whole income so you have to file a tax return to get the rest of the rebate. You can instead choose to 'salary sacrifice' which means you are lowering your income on paper but the sacrifice is put directly into pension (or otherwise can be used to get a car on lease or a bicycle via another scheme). Salary sacrifice is used by a lot of higher earners to bring their gross income down in order to avoid being cut off on certain benefits like child-care.
After all that you have SIPP (Self-Invested Personal Pension) which gives you more control over what you can invest it. Not just stocks, ETFs, and all that, but can also be commercial property (so the pension itself owns that asset). This gets the same tax treatment for pensions.
Finally there is the ISA and LISA. The first is a savings account where any interest or capital gain is free of tax, the second gets a 25% boost by the government to help buy a house or flat, but you can only use that money for a mortgage deposit.
Most people won't see all that much from their auto-enrollment given they could just opt-out to get the extra cash in their paycheque (especially when a low earner), or might not know to switch to the high risk fund, so the state pension and other benefits for OAPs will be there still. Those with more disposable income or a long term view (e.g. doing FIRE) are likely to max out the various vehicles available to them but at that point you're gonna be earning too much to care.
No need to optimise healthcare costs or any of that unless you want to go private.
For investments, you invest post-tax and pay capital gains when withdrawing.
6 figures is possible, there are/were some software companies (VC backed, US based, US startup style, FAANG) that pay that much, otherwise there's highly paid jobs like management, doctors/dentists, landlord, public motivational speaker, drug dealer, etc that can earn you that much. But it's not handed to you like it feels like it is in the US / SF, but I realize that's very much a unique bubble.
So yeah, basically none of your comment is true, it's just not talked about as much because our basic systems are alright for most people and few have the extra income to think about doing more with it.
Of course some roles can earn six figures or more, hopefully everyone knows there isn't a hard cap on earnings. Should've been obvious that wasn't my claim.
The GP described tax optimizations for the highest earners. The idea that they would be better off in Europe is plainly ridiculous.
If you’re not one of the senior managers, I don’t think these kinds of long term investments are feasible anymore.
People are often quick to dispense technically correct (or mostly correctly) financial advice but rarely is financial mangement simply a technical problem to be solved in someone’s life
Very important detail, FSA is not HSA lol.
While here I am, 39yo, having been in this field for 17 years and worked my way up to a lead, and having worked at banks, fintechs, medtechs and consultancies, am 'only' making roughly €76k/yr.
And this is with pouring personal time into studying and applying latest tech in side projects to stay relevant.
Honestly if the financials of the US tech scene ever normalize to what the rest of the world has, you guys are in for a rude awakening.
Most jrs in America are working jobs like this - https://www.indeed.com/viewjob?jk=0dcd3d05ab694ba8
Holy crap, you can do this? I always assumed for some reason you had to pay for expenses with an HSA in the year they were incurred.
Funny to read from someone else who noticed :) maybe broad appeal of the topic had a big impact
Then you can offload stuff to the DB engine (as it should be), making everything more efficient, less data going between DB and App layers is good for everyone.
Also you get to do cool SQL shit nobody understands and you become invaluable =)
Goddamn right!
Drunk Post: Things I've Learned as a Sr Engineer - https://news.ycombinator.com/item?id=27333260 - May 2021 (494 comments)
This is interesting. At my employer we see job hopping as a bad thing.
I think there's a unique perspective you get by seeing your 5+ year old code in production. I can kinda tell when someone only does short stints based on the way they talk about other people's code.
18-24 months generally seems to have been the sweet spot in terms of improving your income. Especially because the promise of equity after 4 years often means fuck all and you almost never see a promotion or a decent pay increase either for inflation or performance.
If an employer is going to ding you for taking advantage of the market then they better be offering enough above market to keep you around for longer.
Pharmacists have to get a special degree before they can even get an interview, and I've heard that the education is heavy on organic chemistry. Then you get a job as a cashier selling pills.
> Hacker news and r/programming is only good to get general ideas and keep up-to-date. The comments are almost worthless.
You got me.
> Once, someone asked me who I looked up to and I said Conan O’Brien [...]
He wrote for SNL and studied literature at Harvard, so there's probably plenty going on up there.
Conan really handled that disaster with tremendous grace and it paid immediate dividends. I can’t really think of a similar situation in popular culture. It is a good reminder of how to handle oneself especially during turmoil.
- I agree, 100%.
And here's a take that a lot of the folks will disagree, and categorically state that these both belong to two entirely different domains: "Rust, is the evolution of Java. Not Kotlin, not Scala, not clojure, but, Rust".
Rust has a similar role to C++ but reads more like Python and Elixir's lovechild.
1. You'll never be as smart as the smart guys. It's okay to give up.
2. Most likely you'll work with incompetent fools, get used to that.
3. Workplace is the best place to make friends. If someone tells you otherwise it's a psyop to turn you into a robot.
4. Minimize your output while trying to maximize your salary because mythical "job satisfaction" doesn't exist and it makes much more sense to redirect your energy elsewhere.
5. Luck is the most important factor.
There is nothing I've done at work I'm truly proud of. Everything I'm proud of is completely unrelated to work.
Mood. Like yeah, everyone at the moment is criminally underpaid with relation to productivity gains and cost of living, but generalists in general are woefully underpaid compared to narrow specialists.
I come from the IT space, where I've got to fight tooth and nail to keep my job versus the race-to-the-bottom mentality of MSPs and outsourced sweatshops overseas. I'm a generalist who builds globe-spanning networks while memorizing VLAN schemas across dozens of sites, while also owning IAM across Entra and Okta for the Enterprise and the associated JAMF/InTune MDM profiles for mobile and desktop endpoints, and the SME for Windows server environments and VMware VCF datacenters and the AWS/GCP/Azure tenant, all while forecasting and budgeting for future CapEx and OpEx projects within the IT space for long-term planning relative to corporate needs and strategy. I own storage, identity, server, endpoint, networks, physical security, infrastructure, cyber security, hardware, software, licensing, architecture, support, and on-call, in orgs ranging from 20 to 80k people in size. I've saved companies 20x the TC they paid me through cost-effective infrastructure.
You know what employers feel that skill set is worth right now, with 15 years experience? $130k, exactly what I made in 2019 before COL doubled. Not even enough to make median rent in my metro (~$3500) on a standard 50/30/20 post-tax budget scheme.
It's disgusting out there. Nobody wants to pay the people who do the actual work.
That did not age well.
It's one thing to write drunk, it's another thing to get drunk to write about being drunk
I would again see Bukowski.
Perhaps he also had fun doing it.
Some good points. Laughed at TDD is a cult. I mean a lot of software orgs/cultures are cultish (Agile, Scrum, whatnot). At work I often feel I'm part of a cult.
Posted on a significant website built in a dynamic language.
I tend to disagree. Static typing can catch some bugs, but most serious errors are not type errors, and the common situation where the type system disallows just enough invalid states for developers to get complacent is the worst of both worlds.
I've interop'd with JS from Haskell and you can just go full dynamic property access. And gradually add phantom typed APIs around it.
console.log also still works fine
I've been coding professionally for >30 years. I don't think any of my code has survived 5 years in production.
I don't think code quality affected that at all - I know the really, really, shitty code I wrote when learning OOP in the 90's survived for a looong time, while the amazing code I wrote for a startup 2018-2021 died with it.
A lot of code makes a difference but I guess there's a lot that doesn't?
At the time, a lot of it felt "important" and "significant". And some of it probably was at the time, to the businesses I wrote it for. But whether I sweated blood and tears to craft the most elegant and efficient software I was capable of, or I phoned it in and just copy/pasted Stack Overflow answers together until I met some interpretations of a requirement to be able to leave the office on time - really made no difference.
I've been pondering lately, thinking about GenAI and vibe coding, with the very real risk of creating completely unmaintainable codebases - whether that matters, if the code is likely to be retired or rewritten in 3-4 years anyway? My current gig is on to the 4th rewrite of it's web/mobile app backend platform in 15 years, which started out as a Groovy on Grails app, which got rewritten in Java, then rewritten again in Java, and now it's being rewritten in Python. Each rewrite had fairly good reasons at the time, but a huge amount of code here gets thrown away every 4 years or so - which looking back makes me seriously question whether any of it was "of any significance". To be honest, the 2026 Python code really isn't doing anything notably different or more complex than the Perl and JavaScript code I was writing in 1996 - web work is CRUD apps all the way down.
The entire AI ball of wax is built on python (dynamically typed) - or at least a large part of it. It probably needs to move to rust to save on power and compute cost.
Python is also the choice of non-programmers for simple work. Nothing wrong with that. But I wouldn't want e.g. my car's ABS system to be programmed in Python (or my browser or my OS or many other examples).
This gets more terrifying if you've ever experienced spurious ABS activation. It's the third scariest thing that's happened to me in a vehicle.
Design-by-Contract[0] is a formalization of this concept and well worth considering when working in code using mutable types. In addition to pre/post conditions, DbC also reifies class invariants (which transcend method definitions).
0 - https://en.wikipedia.org/wiki/Design_by_contract
That said, the people who change companies aren't the ones that believe that management ever had the best ideas, or are able to push back on the cult thinking with clarity. Unfortunately, though, it's not necessarily evidence that wins arguments, it's charisma, which is how the cult is started in the first place.
Good docs are docs that make it easy to implement the next feature.
From an AI perspective, it's my observation that LLMs often write code with lower quantity / quality docs. At the same time, they are reasonably good at synthesizing / inferring meaning from code that lacks good docs. They often do so internally by forming a chain of thought / reasoning around how the code works. The docs that should be written as part of the code are probably the same things that an LLM would reasonably come to by spending tokens when modifying that code. I believe that this should be trained into model so that future LLM work starts with not having to build up context.
In the absence of that being built in, something I've been experimenting a little with is tuning what I want to see in docs that actually help source control / development. Currently that's at https://github.com/joshka/skills/tree/main/doc-steward - still needs a bunch of work, but it's generally better than nothing. YMMV
Just wait till he hears about Claude Code
Literally the only thing I miss
Or was the point a shared whiteboard? If your Teams-or-equivalent doesn't have it, there's still an app for that.
Sure there's software for "whiteboarding" but it's just not the same. And until everyone has drawing tablets it won't be as freeform
this is probably the best truth. after a while it's easy to recognize people that are consistently being their "authentic self" and they're usually the worst.
FFS, be professional at work.
Then again, this person is obviously also lying to claim the engineer title - sit down, "data science!" You're only even here because Product prefers being lied to - so that really sets an ironically honest baseline on how seriously anyone should be taking any of this farrago.