Yeah I wonder if there's a name for this "eh, it's not so different here" fallacy. Just because we have related problems here doesn't mean that the magnitude is on the same level.
But go talk to some people who've only ever experienced these types of business cultures, and they'll start listing for you a ton of reasons why it would be IMPOSSIBLE for the business world to operate as well or better, if it were any other way.
These slavery books are still pretty common in parts of Europe too.
Regardless, US culture says that this sort of thing gives the employer far too much power over the employee, and that there are plenty of unscrupulous employers who use that leverage against the employees to make them do what they want, far beyond what the US considers appropriate.
EEU culture typically says the world is far worse without these books and that there couldn't possibly be any downsides that outweigh the costs, or that there are bandaids which could theoretically fix any problems with it.
Neither side will likely ever convince the other side on this topic, so no point in arguing about it :)
I live in SEE. While we did have "work books" containing our employment history they were eliminated about 7 years ago. All that is now stored electronically in a central place. And it's used as evidence of payed benefits for x amount of time, eligibility for retirement and similar things.
As someone living in Western/Northern Europe, it's not clear to me what you mean. Can you describe it a bit more?
The British government knew where I worked, through the tax system. They knew, more-or-less, where I lived, by my registration to vote (compulsory, though not well enforced as far as I know). Is that what you don't like?
Worst is the whole country's cultures who really believe that each person can only be great at one single thing. Being great at multiple things? Impossible, right?
It'd be helpful for ~nxb to be specific about which country cultures have this problem. But of all the people you know who don't think this way, how many are representative examples of a (non-US) national culture? (And if you know them well enough to judge this, are they perhaps outliers who left another culture?)
The US – and perhaps especially (your home) Texas or more generally the US west – is relatively open to the idea of excellence coming from anyone and in arbitrary combinations, compared to many other more fatalistic/hierarchical/caste-oriented cultures.
It's a region-level culture I'm talking about. In this case, I was thinking of Eastern Europe culture.
You're in for a MASSIVE culture shock, if you ever get employed there. For this, and many other reasons. The cultural expectations in business are often the far opposite of that of the US.
Don't forget that individuals and group culture are two distinct things, but both are very real things. Let's be clear about which one of those we're talking about.
Is there a document that lists out Redis best practices like "Redis is very fast as long as you use O(1) and O(log_N) commands"?
Sure it's probably all obvious things, but it would be nice to have a checklist to skim over, to be sure I haven't forgotten any major consideration when designing a new system.
Hello nxb (but this comment also addresses jnewland post). In the documentation we have, for each command, the time complexity, and in certain commands like KEYS an explicit mention about not using those in production.
However the best tool for debugging if there is something wrong with a given deployment is to use the LATENCY command. Once the latency monitoring is enabled, by calling LATENCY DOCTOR Redis creates an automatic report about all the possible sources of latency with a given application/setup by collecting and analyzing live data.
The first section is a TL;DR synopsis listing everything very important.
In general the "slow log" feature, the latency doctor and reporting abilities, the software watchdog, and the documentation which explicitly provides time complexity for each command, should be quite a good amount of tools and informations in order to avoid problems. Obviously like with any popular tool like Redis, there is a percentage of users that will not read the doc and just deploy it. This is unavoidable but at least when they run into issues we try to provide them with the tools needed.
Those tools are certainly useful! In the recent production incident I mentioned, we we able to quickly use SLOWLOG to determine which calls were causing the latency spikes. Thanks deeply for providing all of these useful tools and docs.
> there is a percentage of users that will not read the doc and just deploy it
I wonder what this percentage is? I'd wager that it is higher than you might have anticipated, especially given the other comments on this thread.
As an engineer on a team ultimately responsible for the availability of a production service, it's my responsibility to ensure that the percentage of engineers that know the latency side effects of any Redis calls they make is near 100%. In the presence of such variable latency, any means of making that variability more obvious to all users of Redis would be a positive step towards happy users and operators.
I understand your point of view. Unfortunately I think Redis in this regard is a tool where to help is hard: I try to provide documentation but is the kind of tool that looks superficially so easy to use, yet you need some understanding in order to really use it effectively and deploy it safely. It's part of the fact that uses 1) uncommon tradeoffs and 2) is a set of commands without a predefined use-case, so there is tons to invent in the good and bad side :-)
This line jumped out to me as well. After a recent production incident determined to have been heavily influenced by several thousand O(N) commands being called against a list several orders of magnitude larger than normal, I'm thinking about this a lot.
I'm confident many other users of Redis are using O(N) operations in production against small datasets without knowledge of how much latency will be introduced by those operations when that dataset grows. This is exactly the kind of situation that makes me immediately skeptical when I find Redis in a emergent system design.
I'm considering what initially felt like a draconian means of remediation: using rename-command to rename all O(N) commands to BIG_O_N_$COMMAND to ensure everyone using them knows the possible impact and to allow for easy detection during code review and/or Redis latency spikes.
The more I think about it this approach, the more I feel that this should be the default mode of operation for Redis in production. SREs around the world would collectively save decades of time if the every engineer writing Redis queries to knew this fact by heart:
> Redis is very fast as long as you use O(1) and O(log_N) commands. You are free to use O(N) commands but be aware that it’s not the case we optimized for, be prepared for latency spikes.
> "Redis is very fast as long as you use O(1) and O(log_N) commands"
Well, like you say, to me that particular practice would be pretty obvious. More helpful would be a page that shows the time and space complexity of the various commands, akin to the following page for Python:
Edit: Yeah, like the Redis documentation, lol. I think it says a lot for Redis that I almost never need to visit the docs, other than the single page that lists all the commands (back when it was red was the last time I actually needed to look at it). Once you know the commands, quickly reading the changelogs provides me with all I need. Anyway, all that to say I had no idea Redis already provided this complexity information, don't remember them having this back when I first used learned Redis (although maybe they did). Good to know.
"Time complexity: O(N+M*log(M)) where N is the number of elements in the list or set to sort, and M the number of returned elements. When the elements are not sorted, complexity is currently O(N) as there is a copy step that will be avoided in next releases."
The top chart looks correctly formed, but you may be right about the bottom chart on that page: "Probabilities For Years Left to Live".
If I'm reading correctly, it seems they tried to deduce the bottom chart from the top chart, which is not appropriate for the reason you wrote.
The top chart only considers ONE year into the future from TODAY, based on someone's age TODAY. More specifically -- It's a chart for survival analysis (predict rate of failure, based on a certain fixed time period and a certain starting date) not life expectancy (predict the time period over which a certain fixed rate of failure occurs, based on any future date.)
The bottom chart though, should be far more influenced by the predicted increase in life expectancy -- since it would have to account for decades of predicted average life expectancy improvement, instead of just increase in average predicted life expectancy over one year, which probably has a negligible effect on the top chart.
The template sounds very passive-aggressive, and the excessive length of the template makes the receiver feel like the freelancer has something to hide.
nxb, that's an interesting take on the matter. Which specific language seems passive-aggressive to you?
Also, how are you defining "excessive" with regards to length? it's 4 paragraphs:
Paragraph 1) Thanks!
Paragraph 2) But no thanks!
Paragraph 3) Here are some alternatives!
Paragraph 4) Let me know how it goes!
Which of those paragraphs do you feel should be cut?
Also, can you walk me through the mental connect-the-dots you used to conclude that "excessive length" = "something to hide"? I find your conclusion fascinating, mostly because I don't understand its underpinnings.
You have to realize that it's not about what's going on in your mind. The receiver can't possibly read your mind to know your intentions behind the words. But they will likely know that people who typically use these techniques are easy to see through.
> Second, after our consultation and looking over the specifics of your situation with my team
Sounds like you're calling out the specifics of his project as being problematic. This vague yet specific line is going to attract questions and / or arguments.
> it looks like we're probably not a good fit for your project."
= The "it's not you, it's me" method. A very obvious and overused way of saying that you don't like something, but you'll pretend that there's something wrong with you. Even young children can see through this attempt at controlling emotions.
Regarding the length, it's extremely common for people to interpret long excuses for avoiding something as deceitful, even if that's not truly the case. It's a well known phenomenon. "Signs of Lying: Offering multiple excuses for a situation, instead of just one". One of many sources: https://www.urmc.rochester.edu/encyclopedia/content.aspx?Con...
> All that said, don't hesitate to keep in touch. Your project has a lot of merit, and sounds like it will be real winner with the right team behind it. I'm looking to hearing about your eventual launch!
Anyone who's frequently dealt with proposals and rejections knows that this is a meaningless gesture. E.g. lesser VCs use this "keep in touch" line all the time. After hearing the 10th person say it, who you know couldn't care less about your project, it starts to feel extremely fake.
> Instead, I recommend you talk to one of these local firms:
This part is a nice gesture though. The only part that I'd use from the template.
> I know it's hard to know who to turn to with such an important project, and I appreciate your show of trust.
Perhaps the client had no hesitation at all in sharing his plans with freelancers. Now suddenly you're telling him that he should be concerned and that freelancers as a class are untrustworthy? Even if true, maybe not a good thing to be pointing out to the client.
Wow, that's great, thanks for spelling out your thought process.
Granted, I disagree with virtually all of it, but I really do appreciate that a) you HAD a thought process behind your comments, and b) you shared it so clearly.
> All that said, don't hesitate to keep in touch. Your project has a lot of merit, and sounds like it will be real winner with the right team behind it. I'm looking to hearing about your eventual launch!
Anyone who's frequently dealt with proposals and rejections knows that this is a meaningless gesture. E.g. lesser VCs use this "keep in touch" line all the time. After hearing the 10th person say it, who you know couldn't care less about your project, it starts to feel extremely fake.
You learn if it is a meaningless gesture by how the follow up goes down, not based on "all the other people who said it were full of crap." This is a problem genuine people run into. The only antidote is to say what you mean and mean what you say, not avoid saying what you mean for fear that people who got burned in the past will hear a polite fuck off.
It's worth noting that there have been plenty of cases where the rejected client did keep in touch, and we did end up working together later.
It's not the norm - usually they just go away and that's that. But I do like hearing that people made their project work somewhere, with some consulting firm, even if it's not mine.
gk1, that's more or less what I was shooting for when I wrote and refined it. I'm glad you see it that way! At the same time, I wonder if nxb has tuned in to some tone-deafness that I can't see in the text.
That said, this template has worked like gangbusters. People have even gone away and come back later, having cleaned up their act, and ended up working with me.
You're right, a moody client could. That said, I don't live my life or run my business walking on eggshells, concerned with what the moody might do or say or think. I don't recommend anyone else do so, either.
When I craft interactions, I do so using a "reasonable client" standard, not a "moody client" standard. I can bear no responsibility for whatever negative interpretation a moody client may choose to assign to my words.
My responsibility as a professional is to communicate in a clean, honest, and not-tone-deaf manner. Now, if I fail on any of those three points, that's on me, for certain. And when I deliver a piece of communication that comes up "green lights" on those three points, it's on the recipient if they have a negative emotional reaction.
What's missing from this argument is that opportunities to make ongoing profit without considerable ongoing investments tend to be VERY short lived in the tech field. Assuming that steady revenue will last, will lead you to ending up crashing as hard as Atari.
You grew a steady, low-stress $1MM/year lifestyle business? Great. Now thousands of people are going to see what you're doing, and dozens are going to try to clone you, many of them far better connected than you are. Software is rarely like the e.g. restaurant business, where you can own a scarce piece of property in a good location and don't have to compete with the whole world, or other defendable advantages. Tech startups tend to have far fewer defendable advantages.
Once you realize this, it becomes obvious that "grow or die" is the nature of the business. Not some silly scheme that only exists due to VCs forcing it upon entrepreneurs.
Long-term opportunities that are easily defendable with minimal effort are extremely rare in the tech startups field.
On top of that, guess which type of businesses are, by far, the most attractive to cloners and other competition? - those "ideal" lifestyle businesses that make profits from early on and require minimal upfront investment.
Edit: Or instead of Atari, insert here all the other profitable businesses that you've never heard of, who got crushed after a couple years because they slowed their investments into innovating, assuming that their very steady profits would continue instead of dropping off a cliff. Happened to me twice.
>> Long-term opportunities that are easily defendable with minimal effort are extremely rare in the tech startups field.
I used to buy that. Then I started looking around:
1) What's McAfee today that it wasn't 30 years ago?
2) Windows 10 is a slightly newer look with small WinRT runtime (which may have come from WinCE I don't know) but most of the software underneath is the same code running for over 2 decades as it looks to my eyes.
3) SereneScreen fish screensaver, has it changed much?
4) How many years has Skype been around?
Put some lipstick on the pig and if it ever sold at all, software is renewable.
Also your restaurant analogy isn't really fair, it takes a lot of work every day to keep a popular restaurant popular regardless of location.
>> Now thousands of people are going to see what you're doing, and dozens are going to try to clone you, many of them far better connected than you are.
Linux is better than Windows yet what runs on most desktops?
OS/2 was far, far better than Windows yet Windows is still on desktops because IBM stopped selling OS/2 (and PC's for that matter); not because people would not still be buying it but because they are more interested in selling mainframes (which were supposed to be dead by now).
This is exactly the thing. Focus on one thing, do it better than anyone, constantly make the best product, and you’ll keep your market for a long time.
(Well, you don’t need to be the best, just very good).
>Long-term opportunities that are easily defendable with minimal effort are extremely rare in the tech startups field.
But that's the idea that not everything is a startup. If the addressable market is $10M and you get a good chunk of it already, there's a lot less motivation from anyone to compete with you. And they probably have no clue your market even exists.
And yes, most SMB require more than "minimal efforts", but normal efforts. Much less than building a unicorn. And in many cases a great flexibility and quality of life.
I think the Atari argument reinforces the point of the article.
Atari went from nothing to a household name, something a lot of people had and loved, was sold to Warner Comms for millions of dollars making the founders rich, and became 30% of Warner Communications' income within 10 years of being founded. That sounds much like the meteoric rise of a hot-new-thing 'successful' startup (e.g. Myspace) that lost out to a competitor (e.g. Facebook/Nintendo) than a niche 'lifestyle' company that didn't innovate.
Had they been working on, I don't know, restaurant POS machines maybe they would have been much less known but made that same amount of money over 20 years before some competitor bested them. And what the article is saying is that's also not bad.
Not necessarily grow or die; you can try to build a number of $10M/y businesses instead of growing one to $1B/y one. I won't hazard to guess which approach is harder.
Is lower goals really more founder-friendly? I'm not so sure.
A bit perplexing, but in my experience, VCs who aim lower will often put far more stress and pressure on founders to meet short-term milestones and ramp up revenues immediately. Since the distant billion dollar goal is gone, it becomes all about the short-term.
Aiming for a billion is a great filter too. At the early stages, you desperately need to be associated at least a few investors / founders / employees who absolutely believe you're on the path to something huge. Low goals allows more people to get involved who have extremely misaligned interests, who are often looking for something medium sized to milk, instead of something huge to help grow.
> You don't build a business by setting out to be Facebook.
> You build a business by setting out to create thefacebook for universities.
Paul Graham is the only person in the world who can get away with spreading this, please don't repeat after him.
In practice, the difference between building a billion dollar company and building a 10 million dollar company is marginal. You still need to constantly raise money, you will ruin your culture and so on; everything that OP describes as awful downsides of SV mentality is just as present. The author seems to hint towards bootsrapping ("figure out how to earn your first dollar", etc), but examples that he gives, with the exception of 37Signals are just smaller and less successful versions of Facebook with all downsides included.
> the difference between building a billion dollar company
> and building a 10 million dollar company is marginal. You
> still need to constantly raise money...
Disclaimer: I work at Backblaze. The biggest difference I see is the expectations and control of investors. Most of our Backblaze team was involved with a startup called MailFrontier which raised $22.5 million over four years selling almost 90 percent of the company to the VCs. The VCs removed the founder CEO (my partner), installed a puppet CEO that did whatever they asked, and the VCs eventually forced us to sell in a way that basically returned them their original investment.
So Backblaze was a visceral reaction to that experience of losing that control. It's the same team, but we all agreed to go a year without salary to jump start it without selling control. To this day, the only people who sit and vote on the board of directors are Backblaze employees and founders.
The lack of cash meant slower growth, there is no doubt about it. But it is a profoundly different company, and a profoundly different experience. We make decisions that are good for our business and good for our employees, not to massage the egos of a bunch of spoiled VCs. And along the way, the Backblaze founders and employees own the vast majority of the company. Most importantly, nobody can force us to sell. I like my job and I like my coworkers, and I make a fine salary here. Why does everything have to be about the winning top score no matter how unpleasant and then ending the experience? I want to enjoy the ride and keep it going.
>the difference between building a billion dollar company and building a 10 million dollar company is marginal.
That's not even remotely true. Building a billion dollar business is a much different experience than trying to build a $10 million dollar business. It's not a simple difference of scale, it's a difference of kind. What you're saying is kind of like saying that playing high school football and playing in the NFL (or Premier League for our European friends) are only 'marginally different'.
I get this from two working experience: one with my family business (valued in the 8 figure range) and one with a start-up shooting for a billion dollar valuation (which is our actual stated goal). The difference is palpable, but the biggest difference has to be with the opportunities we choose to pursue. The family business tends to have a pretty solid understanding of the market we're in. We know who we are, who our competitors are and we choose our targets carefully. This has led us to profitable, sustained growth. At the start-up, we were going for crazy opportunities and saying yes to very challenge projects, something the family business would have said no to. Why? Because the start-up has to get 'lucky' and find an unexpected opportunity that propels us forward. We need this because there is no other way to get to $1 Billion valuation than through crazy growth, which if you're a start-up means working crazy hard and getting lucky.
There are plenty of other bootstrapped companies out there; I know a few of them and they are doing very well.
Not sure what you mean with downsides. These bootstrapped companies have freedom to do whatever they want and they are mostly built on actual problems that others have not kept artificially alive by the funding game.. That in itself is worth quite a lot, at least to some.
* The value/importance of a 1% increase in efficiency can make or break team performance. 1% of an 8 figure company isn't enough to fund a multi discpline, multi-person team looking to improve efficiency for a year. The parent company literally employs a team whose sole purpose is internal efficiency/performance improvements where "single digit percentage" improvements are enough productivity to justify a multi-million dollar budget. Sure it "exists" in theory in a smaller company but it no one is paid to perform the job because the cost/benefit isn't there.
* The mindset change in regards to accounting, legal risks, etc.
* The amount of red tape & interaction with state/federal governments. No one cared what we were doing when we were just an 8 figure company.
* We actually care about PR when it, frankly, didn't matter before.
Sure, you "care" about these things as a smaller business but you don't have dedicated teams of people solely to manage them. Building dedicated teams solely to perform function X vs. having teams that are more general purpose is a huuuuuuuuge practical difference imo.
Generally I agree, but when it comes to VC this isn't so true.
VC's looking for billion dollar exits are less patient which often times can prevent middle outcomes. Good businesses swing for the fences and end up outright failing instead of taking it a bit slower and really nailing their product/market.
Great innovators are shooting for something they're pretty sure they can get to. They know what it takes, and know their market. It's by limiting your scope and achieving quality innovation that you get black swans.
The success will typically be a surprise, not a plan.
If you're not aiming for a billion dollars (or even hundreds of millions) in a software business chances are you don't have to raise VC money so none of the above matters. I think that's the main point of the article.