> 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 did find this, but also the fact there is a huge sharing community. When I was in marketing, most of the people would show up, do their work and go home. Lunch was spent complaining about this new report or some new algo the sales team wanted us to be using.
On the flip side when I became a developer, it really felt more like being a part of a real community. People would show up at my desk and say, "Dude, have you seen this new plugin?" or "Man, I just found the coolest logic game, you'd love it!" or "I just started playing around with this new JS framework, have you tried it yet?"
As in, all the people I met were so genuinely interested in my opinion. Lunches were suddenly brainstorming sessions. Or someone had a problem and we'd all sit around frantically scribbling on napkins trying to solve it. Or talk about the latest conference or when DefCon was and who was going. You really felt a part of a culture in every way. The devs I got to be friends with genuinely loved what they did. It wasn't just a job, it really was something they were all passionate about. Something that consistently extended beyond the 9-5 jobs we had. Side projects were always a hot topic at gatherings and lunches.
For the first time in my career, I really was proud to be apart of the developer community at a time when everything was (and still is) changing so rapidly. Without those friends and mentors, I have no idea where I would be. It was kind of like landing at college and finally finding a place you felt you finally belonged and fit in with like minded folks.
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.
> There’s not enough women in technology. What a fucked up industry. That needs to change. I’ve been trying to be more encouraging and helpful to the women engineers in our org, but I don’t know what else to do. Same with black engineers. What the hell?
See what the current thought leaders in tech believe and say out loud and this makes a lot more sense.
> 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.)
Could this be from adults not being honest to children when they don’t know something? I’ve personally seen this happen a lot. Many adults try to save face about not knowing things with other adults, let alone with children. So it might be a cultural issue that could be fixed.
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.
> 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 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.
> 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.
I can kind of see that, if you're so disengaged you don't care if your job is hard or easy. Then you just see it all as slogging for a certain number of hours a day.
But I don't get that. I don't like things being unnecessarily hard, and writing stuff down makes it easier to actually get things done in the future. And at some point you're going to get judged on your performance, so wasting a bunch of effort uselessly slogging doesn't make you look good if someone paying attention to if you're actually getting things done or not.
The biggest reward is me making my own life easier, and when I do that I can always later pretend to slog a big to grab some time for myself.
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.
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.
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?
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.
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.
Not sure if there's a US equivalent, but in Canada, "having the pretax money to grow before paying taxes on it" is a worse deal. In an RRSP/401k you pay full tax on any investment earnings. Meanwhile a normal non-registered investment account is classified as "capital gains" and only taxed at 50% of your marginal tax rate.
At the end of the day though, I'm sure it boils down to having both instead of trying to minmax it. Being able to liquidate a portion of your investments to, say, purchase a house is probably a good idea, which you can't do if you've been putting everything you have into a retirement account.
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.
Very cool. I'm Canadian (which is why I mentioned RRSPs above), and I don't think an equivalent exists for us. Our alternatives to an RRSP (which is equivalent to your 401k) basically boil down to:
TFSA: you pay standard income tax up front, but no income tax on investment earnings. Annual contribution room is added. You can withdraw anytime and get the contribution room back.
FHSA: you do not pay income tax up front, you do not pay income tax on investment earnings. But you can only withdraw for a first home purchase (or convert into RRSP), and there's yearly and lifetime limits on contributions.
Non-registered investment account: you pay standard income tax up front. Investment earnings as capital gains are 50% of standard income tax. Withdraw anytime, no limits obviously.
With RRSPs: you do not pay income tax up front, but you pay standard income tax when you withdraw, and pay standard income tax on investment earnings (no capital gains rate). You cannot withdraw until retirement age.
Those are effectively your only four options here. When they're broken down that way.. does it make more sense?
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.
Do you understand you are very likely in the top 15% of the country in income earners, how do you expect people making less than $80k (of which there are plenty of programmers that make this amount)?
Do you understand that your extreme massive privilege is something very few people will ever able to obtain? What should they do? Work until they're 80 and die on the job?
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.
> 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.
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.
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.
- 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.
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.
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.
> 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.
I'm not a fan of dynamic typing at all (currently maintaining a decade's old e-comm monolith written in Ruby on Rails), but instead of arguing about what bugs are caught where, I've instead switched to arguing from a position of developer experience. The _tooling_ that statically typed languages have is levels above those found in dynamic languages. Runtime errors are runtime errors, but knowing at typing-time that the shape of thing A is what thing B needs is a huge benefit.
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.
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.
> 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.
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.
> 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 did find this, but also the fact there is a huge sharing community. When I was in marketing, most of the people would show up, do their work and go home. Lunch was spent complaining about this new report or some new algo the sales team wanted us to be using.
On the flip side when I became a developer, it really felt more like being a part of a real community. People would show up at my desk and say, "Dude, have you seen this new plugin?" or "Man, I just found the coolest logic game, you'd love it!" or "I just started playing around with this new JS framework, have you tried it yet?"
As in, all the people I met were so genuinely interested in my opinion. Lunches were suddenly brainstorming sessions. Or someone had a problem and we'd all sit around frantically scribbling on napkins trying to solve it. Or talk about the latest conference or when DefCon was and who was going. You really felt a part of a culture in every way. The devs I got to be friends with genuinely loved what they did. It wasn't just a job, it really was something they were all passionate about. Something that consistently extended beyond the 9-5 jobs we had. Side projects were always a hot topic at gatherings and lunches.
For the first time in my career, I really was proud to be apart of the developer community at a time when everything was (and still is) changing so rapidly. Without those friends and mentors, I have no idea where I would be. It was kind of like landing at college and finally finding a place you felt you finally belonged and fit in with like minded folks.
My trick is to go to Emacs meetups. Nobody is using Emacs for money.
That sounds like a bit of a where you're choosing to work problem
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.
I had more luck finding "similar minds" in academia.
I'll second that.
I’m with you. I find 1 or 2 people in each place, but that’s it. Quite deep connections are rare
> There’s not enough women in technology. What a fucked up industry. That needs to change. I’ve been trying to be more encouraging and helpful to the women engineers in our org, but I don’t know what else to do. Same with black engineers. What the hell?
See what the current thought leaders in tech believe and say out loud and this makes a lot more sense.
“a new job in two weeks.” heh, yeah everyone was opining expertise back then when employees had control of the market.
What are you quoting, because I can't find that text in the article!?
The two weeks reference was in the reddit post the blog post linked to.
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.
FTA:
> What’s the [worst] that can happen? He fire me? I’ll just pick up a new job in 2 weeks.
It was about getting fired (your manager stuff) and then moving to another job very shortly afterwards (the two weeks is correct)
> 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.
Ha yup - I've felt this one before :D
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.)
Could this be from adults not being honest to children when they don’t know something? I’ve personally seen this happen a lot. Many adults try to save face about not knowing things with other adults, let alone with children. So it might be a cultural issue that could be fixed.
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.
everyone is guessing
some are just a bit better at guessing
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.
> 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 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.
> 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.
I can kind of see that, if you're so disengaged you don't care if your job is hard or easy. Then you just see it all as slogging for a certain number of hours a day.
But I don't get that. I don't like things being unnecessarily hard, and writing stuff down makes it easier to actually get things done in the future. And at some point you're going to get judged on your performance, so wasting a bunch of effort uselessly slogging doesn't make you look good if someone paying attention to if you're actually getting things done or not.
The biggest reward is me making my own life easier, and when I do that I can always later pretend to slog a big to grab some time for myself.
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.
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.
Even more important now with AI, AI is happy to read and explain any piece of code, but they can't easily reverse engineer why something was done.
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?
> Max out our 401ks
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.> you can retire at 45
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.
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.
How do you plan that? Particularly for an age 45 retirement?
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.
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.
Not sure if there's a US equivalent, but in Canada, "having the pretax money to grow before paying taxes on it" is a worse deal. In an RRSP/401k you pay full tax on any investment earnings. Meanwhile a normal non-registered investment account is classified as "capital gains" and only taxed at 50% of your marginal tax rate.
At the end of the day though, I'm sure it boils down to having both instead of trying to minmax it. Being able to liquidate a portion of your investments to, say, purchase a house is probably a good idea, which you can't do if you've been putting everything you have into a retirement account.
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.
Very cool. I'm Canadian (which is why I mentioned RRSPs above), and I don't think an equivalent exists for us. Our alternatives to an RRSP (which is equivalent to your 401k) basically boil down to:
TFSA: you pay standard income tax up front, but no income tax on investment earnings. Annual contribution room is added. You can withdraw anytime and get the contribution room back.
FHSA: you do not pay income tax up front, you do not pay income tax on investment earnings. But you can only withdraw for a first home purchase (or convert into RRSP), and there's yearly and lifetime limits on contributions.
Non-registered investment account: you pay standard income tax up front. Investment earnings as capital gains are 50% of standard income tax. Withdraw anytime, no limits obviously.
With RRSPs: you do not pay income tax up front, but you pay standard income tax when you withdraw, and pay standard income tax on investment earnings (no capital gains rate). You cannot withdraw until retirement age.
Those are effectively your only four options here. When they're broken down that way.. does it make more sense?
I’m sorry but this is just bad financial advice
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.
Do you understand you are very likely in the top 15% of the country in income earners, how do you expect people making less than $80k (of which there are plenty of programmers that make this amount)?
Do you understand that your extreme massive privilege is something very few people will ever able to obtain? What should they do? Work until they're 80 and die on the job?
Yes, I absolutely understand that. I'm refuting the idea that it's not possible to do with a family and kids.
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.
> non-working spouse
Does that mystical creature still exist? Or is it perhaps more likely if one of the pair has a high yield income?
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.
[1] https://fred.stlouisfed.org/series/MEHOINUSA672N
I know multiple coworkers in their late 30s to mid 40s, none of their wives work.
Not sure why this was downvoted; it doesn't say you shouldn't do all those things, only that they're no guarantee you'll be able to retire at 45.
Kind of crazy the negative feedback you’re getting from this. This is extremely valuable guidance for a fresh college grad into a good paying job.
What does any of this mean? Greetings from Europe.
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)
Retirement and health savings accounts.
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.
they were being sarcastic.
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.
Yes, as always it depends on the country. Germany and a bunch of others have nothing except completely useless insurance/capital guaranteed options.
For investments, you invest post-tax and pay capital gains when withdrawing.
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.
Or, very smart for the establishment.
> the stuff we do in this country is so much extra work/effort/cost and all of it comes at the worker's cost.
The GP described tax optimizations for the highest earners. The idea that they would be better off in Europe is plainly ridiculous.
Save money for retirement early
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.
Very important detail, FSA is not HSA lol.
It's incredible how out of touch this place is sometimes.
Are there any retired 45yos who were making around $100k and can attest to this advice being accurate?
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.
It's an outlier, even in America. I live in the US and no 23 year olds at my company are making 100k/year, lol.
Most jrs in America are working jobs like this - https://www.indeed.com/viewjob?jk=0dcd3d05ab694ba8
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?
Eh, I kind of disagree. Contributing until you hit the maximum employer match makes the most sense for quality of life.
And this will get you like $1M at 45? You can’t retire on that.
$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.
If you retire at 45 won't that significantly impact social security?
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.
I definitely could. An american maybe couldn't.
You can't live on $40,000 a year?
What about property taxes, the occasional $40k visit to the ER for a few stitches?
Does that happen often to you?
> Get reimbursed for the receipts when you retire.
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.
That's for an FSA (which is similar to but distinct from an HSA).
lol good luck following any of this advice and also paying for basic living expenses.
> 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.
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.
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.
Quite a few major issues with the post:
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…
>Lots of posts (e.g. Apple CEO change) had tons of useless stuff
Funny to read from someone else who noticed :) maybe broad appeal of the topic had a big impact
your comment on drinks is odd.
their comments on HN comments is funny as well in light of the original claim
Tongue-in-cheek
POV you don't live anywhere near Sonoma.
Related:
Drunk Post: Things I've Learned as a Sr Engineer - https://news.ycombinator.com/item?id=27333260 - May 2021 (494 comments)
Wow, this is 2021? Feels like 2014. SQL, getting a new job in 2 weeks, etc.
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.
Has SQL somehow become less relevant?
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.
> Also you get to do cool SQL shit nobody understands and you become invaluable =)
Goddamn right!
> 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.
I feel like Go has a similar role to Java. Although it's mercifully free of inheritance and the functional stuff they've bolted on.
Rust has a similar role to C++ but reads more like Python and Elixir's lovechild.
Yeah Go is a new Java essentially. Also arguably it's a much better alternative because of static linking and no JIT
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.
“Hacker news and r/programming is only good to get general ideas and keep up-to-date. The comments are almost worthless.” In full effect as per usual.
Dan Luu has an amazing collection of great comments from HN that are worth the read: https://danluu.com/hn-comments/
Reading all the Sam Altman glazing from 10 years ago, knowing what i know now...
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.
> Hacker news and r/programming is only good to get general ideas and keep up-to-date. The comments are almost worthless.
For a drunk post it's damn long!
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.
> What’s the worse that can happen? He fire me? I’ll just pick up a new job in 2 weeks.
That did not age well.
Can we get more elaboration on "Qualities of a good manager share a lot of qualities of a good engineer"?
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.
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.
Refactoring is a young mans game. I either nuke it and start over or treat it as a black box.
You can just as easily take a static language dynamic - in userland.
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.
Debugging Haskell and JS in the same stack? You kids are brave. And/or I'm a coward and a simpleton.
I debug in ghci mostly
console.log also still works fine
> 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.
I'm not a fan of dynamic typing at all (currently maintaining a decade's old e-comm monolith written in Ruby on Rails), but instead of arguing about what bugs are caught where, I've instead switched to arguing from a position of developer experience. The _tooling_ that statically typed languages have is levels above those found in dynamic languages. Runtime errors are runtime errors, but knowing at typing-time that the shape of thing A is what thing B needs is a huge benefit.
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?
Please elaborate
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).
Your car's ABS is probably programmed in something more error-prone than Python, like C or the assembly language of whatever microcontroller runs it.
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.
> 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).
0 - https://en.wikipedia.org/wiki/Design_by_contract
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.
I feel strange about someone deciding an interesting use of their time is getting drunk alone to write a blog post.
You thought that was real? I assumed it was a literary device. This wasn’t journalism.
Getting drunk and reflecting on one's life is not that uncommon
Wait until you hear about Bukowski, Faulkner or Kerouac.
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
> It's one thing to write drunk, it's another thing to get drunk to write about being drunk
I would again see Bukowski.
Is Bukowski generally seen as a role model?
I don't think the dude drunken rambling on reddit was aspiring to be a role model, just share what he perceived as wisdom he's gained in life.
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.
I'm not sure I follow, what's the difference in message between drunken rambling and, getting drunk and rambling?
He's certainly more famous that most HN posters :)
Perhaps he also had fun doing it.
> 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.
Cheers! From an ex bartender and current red team. This rounds on the house.
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.
Oh I do agree with that. It's just my interest is on another field so I can be confident to say that I didn't write it.
> 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.)
Just wait till he hears about Claude Code
"Work from home is the tits. But lack of whiteboarding sucks."
Literally the only thing I miss
Do you know that you can just buy a whiteboard?
Or was the point a shared whiteboard? If your Teams-or-equivalent doesn't have it, there's still an app for that.
I read it as collab. I hate in-office work, but I'll admit it is just easier to walk over to a whiteboard with a coworker to hash things out.
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
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.
Shared white board. It was nice being in a room with a bunch of other salty people brainstorming an idea and doodling on a board
Me? not much. Ive learned more in the streets...
> 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.
FFS, be professional at work.
"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.