I was down there recently on a helicopter-based expedition and they set up a forward base of operations with a few days of emergency rations in case of unexpected weather that prevents you from returning to ship. I asked them what happens if the blizzard lasts more than a couple of days. Someone somewhere has a recipe book for penguins.
As best I can tell we've never sold the same product twice. Product roadmap is "whatever the last person I spoke to asked for." And tech debt maintaining a grab bag of 5,000 almost-but-not-quite-entirely-production-grade "must have" features that the customers rarely if ever use despite claiming that not having it was a deal breaker, is, well, debty.
The best decision I ever made was moving from a company that acted on the whims of whomever the sales team spoke to last, to a company that had a strong product vision and was happy to say no to their customers on occasion.
It's a lot less exhausting when you're not changing priorities every quarter.
You also avoid the soul crushing experience of working really hard, crunching to get a feature out, only to realise your time was given away free to land a deal. Sometimes a deal that fell through anyway.
This is one of the things I try to suss out when I interview somewhere. Do you have a product team (or at least someone in leadership) with a stable requirements vision, or do you just haphazardly develop based on whoever your sales team last talked to. Having a stable roadmap is an absolute requirement for me. I may not agree with the roadmap or priorities, but I'd rather have them than not have them.
I've worked in both types of companies, and the ones where sales dictated what we worked on this week were universally awful.
Another thing to be wary of is a product where there are a small number of customers, maybe even just one, who contribute the vast majority of the revenue. Because then, even with a good product vision, it's going to be very hard to say "no" to what they ask for.
Even if you weed out the willy nilly stuff, you will bump into Enterprise users that are actually correct.
They will mention something you know you should have added but always wrote off as "bloat" or "not really really really needed". Those things start happening more and more the moment you are doing $100K plus deals.
Are you talking about structural fundamentals or product features?
Because I agree about the fundamentals, the things enterprises tend to care about:
- SSO / SAML / auth integrations
- ISO Certifications
- Regular Pen tests
- Localisation support
- APIs ( that they'll never use )
- Bulk operations
- Self-hosting ( or at least isolated / non-shared application cloud hosting )
Get these and similar right and it's the difference between landing enterprise or not.
But if you're talking about features specific to a product, or custom products for a platform, that's a very different thing, and that's where the great distraction can come in. That's where you'll end up developing features that go unused, and it's these which aren't so consistent across customers.
Imagine you make washing machines and get a request for:
" This Washing machine must have a pre-set button for a 57deg 38.5 minute wash. Without that, I couldn't consider this machine ".
You try to argue that you let users define their own pre-sets, and that they can set up their own pre-set for that cycle. But you're denied by the person in sales who insists that they need exactly that as a first-class button on the front of the machine.
That's the level of petty that some large customers will try. In some way, it can be seen as a good sign that they've engaged with your product, but sometimes you wonder if it's just a trial balloon for seeing if you'll put up with the unreasonable.
You missed some universal ones that are both necessary, and a total pain:
- Teams & Fine-grained Permissions
- Audit logging
- SOC 2/3 compliance
- Data wiping / retention / data policy management
- Reporting
- Cookie law crap (GDPR & CCPA)
- Myriad forms of custom product tiers & billing arrangements
I'd put these above several of the items on your list, and in my mind, they fit into the category of "things a developer calls 'bloat', that are actually necessary for enterprise sales".
It wasn't an exhaustive list, it was to articulate the difference between structural features, which all of those are, and product features, which are specific to your product.
Yeah, I don't really mean it as a criticism -- my list is stuff that I think is incredibly painful to build, ends up taking >80% of dev time, is messy/spidery, and which I've spent a lot of my life explaining the necessity of to (typically junior) engineers.
In short, this is the kind of stuff that I think fits the parent comment's categorization: it drives enterprise sales, engineers hate building it, and it never really ends because the maintenance and detailed feature requirements change with almost every contract.
On top of that, you have to get messaging right. Here’s an example from consumer:
I’m looking for a TV. I buy after careful research, so there’s a 90+% chance I’ll end up with the TV I have in mind before walking into the store.
One device we frequently use (Linux) doesn’t send the “switch to me” hdmi signal when we start using it, so the “switch input” button on the remote is crucial.
The front runner has a One Button (TM) remote. “What fresh hell hast thou wrought?”, I ask.
On page 1, the manual says to change inputs you need to press the gear button, navigate through the settings menu to “inputs”, and then find the right input from there.
Ok, so do I get the crappier panel to avoid the settings menu every time I turn on the TV, or not?
Thankfully, page 10 has a picture of the remote, and it has a quick change input button, so that’s OK.
On top of that, I want the TV to be a dumb TV.
There’s no mention of this in the quickstart guide, but it has “Basic Mode” that which is that, except that calling something “Basic” is right up there with most four letter insults with kids these days.
As a bonus, after reading the manual, I also honestly can’t tell if it’s possible to have four hdmi inputs and also variable volume audio out at the same time.
If you’re going to produce differentiating features (or your competitors are differentiating you via enshuttification) you need to make that clear pre-purchase.
In enterprise it’s at least 10x harder to get this stuff right because you probably don’t use the product on a regular basis, and also, there are many more features.
What a lot of these HN programmers seem to miss, is it's not about what you or your application provides. It's about what your competition is willing to provide. If you don't have much competition then that's great, but the moment your 100k-10m paying user starts testing the other software your C-levels and sales people are going to have the programmers locked out of the building the moment they say they won't write a feature.
Depending on the company's product (and this is a wide range), somewhere between employee 10 and employee 100, the founder needs to decide "Am I CEO of the company? Or CEO of the product?" (As in, that "and" needs to become an "or").
I don’t mind this as long as the sales team and management allow the correct amount of time to build it in a maintainable way.
The reality is I only get paid because of those deals, and the post deal tech-debt sprint never happens.
So the work has to get done and if sales doesn’t give time for it to be done properly then in 3-6 months velocity will drop and the sales pipeline will dry up.
Any company that can’t understand that is not a long term company I want to work at.
HN is largely a US ivory tower forum, lot of good discussions happen here - but many folks are coming from the costal endless “VC” money mindset where company revenue is not much a consideration because they just move on to the next high paying gig when the money dries up.
It really depends on the industry. In a narrow vertical market with only a limited number of large customers, the vendors pretty much have to roll over and do whatever the customers demand regardless of product vision. Give the customers what they want or else they'll find a more pliable competitor. The power dynamics are different in more horizontal markets.
If the customer has people on the other end that knows about their processes and cares, you can push back.
We landed our largest customer by gar a few years back, and we pushed back hard. However we had good arguments why, and explained why changing their workflow would be much better or offered some other approach to solve the problem that didn't involve a new bespoke and brittle feature.
On the other side were a team that knew the processes well and understood our arguments.
After they went live, the management thanked us for helping them improve their organization.
On the other hand there have been cases where decisions is made by leaders so high up they have no idea what's going on by those that need the tool, and aren't interested in spending time or effort on it. Not much you can do then.
edit: Though sometimes they learn. We've had a few customers who we said no to since their wishes were not really feasible, and who selected others and failed, and failed again, before finally ending up with us, on our terms.
Oh my god you just perfectly described the frustration of working in enterprise SaaS. It’s been fun in some ways but the constant churn of almost-but-not-entirely-production-grade software is soul crushing. We celebrate and reward speed to market and lack of process in a way that feels unhealthy and unrewarding.
I’ve worked at consumer facing companies but also other enterprise SaaS and have to say I’ve never seen it done like this before. Just ruthless pursuit of features over polish, craft, etc.
Can your customer switch to another product, yes or no. If no, then polish won't happen.
Do customers actually value 'real' polish and not just a slick looking UI? If no, then real polish doesn't matter.
As a software writer you'll get your ass kicked into the ground by another company that writes catchy features and nice looking interfaces 9 times out of 10. So few actual customers know out to measure 'polish' that it's almost a non consideration.
> It is possible to create threads by using the OS syscalls bypassing completely the requirement of pthead. (Un)fortunately, I couldn’t find any popular libraries that implement the functionality by using the syscall interface instead of relying on pthread.
I have tried and failed to do this for a C++ program because the amount of C++ runtime static init/shutdown stuff you would need to deal with isn't practical to implement yourself.
CORE only works on kernels that support BTF. This post introduces one workaround which is to generate BTF data for kernels without it. That's still only half the problem though. You also need to write your eBPF program so every kernel verifier passes it, even though every kernel's eBPF verifier has different bugs, capabilities, and complexity limits. I maintain a large eBPF program that supports 4.14 through 6.14. We implemented our own version of CORE before CORE really existed. In reality, it's a lot more work than "compile once run everywhere."
Yeah same, we maintain some eBPF probes spanning 4.11 to latest kernel, and holy hell, it's really bad. The worst offender being some old RedHat kernels with half-baked backports of the eBPF features containing a bunch of weird bugs or features that aren't perfectly in line with what's used in mainline...
Here's a fun bug we recently had: we had to ban substractions in our program (replacing them with an __asm__ macro) because of a bug in linux kernel 5.7.0 to 5.10.10, which had the (indirect) impact of not properly tracking the valid min/max values in the verifier[0]. The worst part is, it didn't cause the verifier to reject our program outright - instead, it used that information to optimize out some branches it thought were never reachable, making for some really wonky to debug situation where the program was running an impossible control-flow[1], resulting in it returning garbage to user-space.
All this to say, CORE is really only half the problem. Supporting every kernel in existance is still a huge effort. Still worth it compared to the alternative of writing a linux kernel driver though!
Kernels without BTF data are ancient at this point. BTF was added in 4.18, that was in 2018. 2018! If you're running a kernel older than that, you don't need BPF, you need a whole new operating system.
Yes, each kernel version might have different features between then and now. You have to pick a minimum supported version and write against that.
Many, many distributions didn't embed the BTF information until fairly recently. OpenSUSE did it in 15.4, released in 2023. At $WORK, we have many customers running on distros that didn't have embedded BTF - such as RHEL7 (yes, they pay for extended maintenance).
I really wish customers would update to a newer distro, but I also understand why they don't. So it's up to me to adapt.
> You have to pick a minimum supported version and write against that.
What we end up doing is progressively enabling features based on what's available in the kernel. Every eBPF we write is compiled multiple times with a couple of different flags to enable/disable certain features. It works decently well, and allows using the most capable datastructure/helpers based on the kernel version.
We've got customers who complained when we bumped some critical dependencies and our software suddenly didn't work on Windows 2008 R2 servers any more... in 2025.
As someone who studied physics and electronics for many years, I still appreciate an article like this for reminding me how profoundly weird science is. Working day to day with the equations and practical applications of electricity gives you a false sense of confidence that we actually have any fucking clue what’s going on.
GitHub pissed me off recently by giving us a one month reminder of our renewal, but having required two months notice to reduce our number of seats. As a result, we are ending up paying for twice as many seats as we currently need.
If you exceed the inheritance tax exemption then you are taxed on the $10k so LTCG would be double taxing. You could argue that the inheritance tax should have a much lower exemption but double taxation is harder to justify.
Bullshit. "Double taxation" is such a weak argument to me.
When I buy gas at the pump it's taxed multiple times. State sales tax. City sales tax. Federal gas taxes. State gas taxes. Quadruple tax on me there.
My wage income has several taxes. FICA taxes. Payroll taxes. Federal income taxes. Potentially state income taxes. Potentially city income taxes.
When I pay for a hotel there's often a bevy of different taxes on that. When I pay my phone bill there's a bunch of different taxes on that. Even getting a drink at a bar there's a sales tax and a liquor tax.
And all of that is on money I've already paid all those several income taxes on, so it's really all just stacking there.
Oh but boo hoo ultra wealthy get their massive inheritance "double taxed". Get bent crying over your "double taxed", I'm quadruple taxed and more all the damn time. Weak argument.
But like, why? It's a worthless point. If there were five taxes of one percent each versus one tax of 20% how is the one tax somehow better? Which one would you choose, getting taxed five times or once?
It doesn't really matter that there's a FICA and an income tax and a payroll tax in the end, what really matters is the overall tax rate and if that's fair given some moral decision of fairness of sharing costs of society.
If a city chooses to levy sales taxes and hotel taxes to capture more revenue from visitors because their town is a tourist destination and want to collect from tourists more than locals that's fine. I won't weep a tear for those getting "double taxed" on their vacations.
Local and state taxes generally actually help you. Your local infrastructure is maintained, and your kids go to schools funded by your taxes.
Federal taxes, however, are largely transfer payments from the productive to the unproductive, as well as funding wars in areas that have absolutely nothing to do with you.
It's pretty easy to make the distinction between "good" and "bad" taxes.
>> If there were five taxes of one percent each versus one tax of 20% how is the one tax somehow better?
Would you rather pay five different tax authorities a 1% tax each or a single tax authority 20%? Not asking about the morality of those five tax authorities, in this example they're all the same.
The argument is against this idea "double taxation" is something inherently wrong. In the end it's not a matter of how many different taxes actually apply to a given transaction, what matters is the tax amounts and where those taxes are going to.
I'm generally helped by my federal taxes going to help feed students in poor areas. Both from a feel good standpoint and that those students have a better chance at becoming more productive, which means they can buy stuff from me.
I also benefit from those foreign wars because they keep the US empire of cheap shipping open, so I can buy stuff for cheap from countries who've specialized in manufacturing
Payroll tax is a problem because it’s not accounted for in your overall tax rate, it’s accounted for via lower wages. So you have no idea what your actual income would be if not for all the taxes your employer is paying.
> So you have no idea what your actual income would be
Payroll taxes aren't some secret things which are impossible for an employee to calculate on their own. You're right, it's not usually directly shown to an employee on their paystub, but it's pretty trivial to do the math and see what your employer paid (or was at least originally liable before any weird tax handouts, but typically rare) for your salary.
I do think payroll taxes should be required to include on paystubs if even just as an informational aspect to people. People should have a real understanding of how much labor is taxed compared to capital. People see "capital gains is 15%? Gosh that seems high..." without realizing how much of their W2 income was taxed. Most people I talk to can't even ballpark what their effective income tax rate was, I often hear "oh I had to pay like $800 in taxes this year, that sucked!" No, you paid a lot more than that, you just didn't pay attention.
You're right, its pretty common for the wealthy to try and trick poor people into feeling sorry for the wealthy actually paying taxes on things.
As my other post pointed out, tons of things have multiple layers of taxes. But the things people suddenly have some big moral issue with "double taxation" are things like estate taxes and corporate earnings and dividends and capital gains.
Few people bat an eye at us double taxing the low income nicotine addict. Everyone seems to want me to shed tears for the billionaire having to pay "double taxation" on their third vacation mansion they're inheriting.
Argue the rates are too low or too high for a given transaction. I can get behind that. But just crying because there's two different taxes being applied to a given transaction? Really?
> People get plenty mad about sales taxes double taxing taxed income, too.
Yeah, and it's a dumb position to take. Like what, we can only apply one tax from one source to a given dollar bill's serial number after it leaves the fed, and after that point that dollar can never be taxed again? Otherwise, gasp, double taxation!
The company shouldn't pay payroll taxes, they charged sales taxes to get that income to pay the salaries. I shouldn't pay any income taxes, the company paid payroll taxes on the money that had sales taxes on it. I shouldn't pay sales taxes, I paid income taxes on the money that had already had payroll taxes that had already had sales taxes that had...
Suddenly nobody pays any taxes anywhere because somewhere up the chain someone else already paid taxes on that dollar!