Your assumption that phones would only be used for 2 years is pretty weird on an article about using phones for 8 years.
19,172 karma · joined February 4, 2008
Your assumption that phones would only be used for 2 years is pretty weird on an article about using phones for 8 years.
There's an age-old debate of how much "good taste" is subjective, but in this particular case, it's someone hammering a nail in with a wrench. Some will be bothered, others not, but it's definitely the wrong tool for the job.
The example of not liking lights in certain places isn't a very good one. It's an attempt to elide all "things people don't like" into subjectivity, but there are actually things that are better and worse. You would agree that website design can be better or worse, right? And that some people would have a better eye for good or bad design? With me so far? I'm saying you're probably not one of the people out on the end of the spectrum that's best able to recognize good and bad in design, but I hope you recognize that good and bad design exist, and that people vary in their ability to recognize it.
You probably just don't have a strong sense of aesthetics. Some people notice design-y stuff and some people don't. A lot of people do notice fonts, or misaligned margins, or whatever. And a lot of people don't. The latter category are probably never going to be good designers or artists or whatever. People are different.
That's all correct.
But the point I'm making is that if an MVP isn't accruing technical debt, it's over-engineered. Most of them will be thrown away, or rescoped, and so taking on technical debt is an advantageous strategy: you only have to pay the technical debt on the few survivors.
Shopify at its offset was a CRUD app (fun fact: it started as a snowboarding shop), and in 2006, Rails was a great choice for that.
Your notions are fine for an established company building a piece of infrastructure they're certain they'll need. But that's not what Shopify was, and it's not the spot most startups picking a framework are at.
Your thing about developer quality is kind of meh. Building the first versions of a shopping platform isn't rocket surgery. You don't need Anthony Bourdain to make a sandwich. Particularly if you're not sure anybody wants a sandwich.
Primarily it's not the language that makes people more or less productive, though it does have some influence. It's mostly the frameworks in those languages. And traditionally the most modern / full-featured web frameworks haven't been in systems languages. The major counterexample at the moment (while still obviously not a systems language) is that modern JS VMs are actually really fast, so while I don't love JS, it does hit that sweet spot at the moment of performance and mature frameworks.
Also, I've never worked in Rust, but am mostly a systems programmer, and while I understand that Rust is supposed to be easier than C or C++, I'm skeptical that it's as easy to work with as higher level languages, or that you could throw most web developers into Rust without some serious additional learning.
Most businesses fail. Those that don't fail, usually don't have interesting scaling issues. (You can go a really long way on a boring monolith stack.)
So in most cases, whatever gets things out into the world and able to see if the business can be validated makes sense, and then you optimize later. A nonscalable stack that you can iterate on 50% faster is more likely to produce a viable company than a more scalable stack that's slower to work with.
If you're a hired employee, it's easy to forget that the place you're working for is already a big exception just by the virtue of it grew large enough to hire you.
There's almost always things that can be redesigned to be better and smaller if one has a better understanding of total scope from the beginning, but there's equally as much discovery that the reason things seemed unnecessarily complicated was a lack of understanding of the complexity, and that the new rewrite eventually reintroduces much of it as it's used in production.
What helped me a lot was starting to work through "On Cooking", which is geared towards culinary students, and at least has a more useful progression of skills (e.g. starts with equipment, knife skills, etc.) and techniques, and then starts building up from there. e.g. you learn to make sauces before starting on full dishes, etc. But doing something like that is a pretty large commitment (and all of the recipes have to be scaled down to non-restaurant sizes).
At one point in my early 30s I considered writing a cook book based on trying to teach my housemate to cook, starting with the assumptions that the person in question hadn't ever cooked and didn't own any reasonable cooking stuff, and trying to establish a baseline of recipes that could all be cooked from the same 20-ish ingredients that one could reasonably always have around.
There are definitely recipe-based and intuition-based approaches to cooking, and while I think teaching intuition is difficult, learning a particular vocabulary of skills in a certain order can help.
I'm one of those folks. I write left handed, but other stuff tends to be mostly, but not completely, right handed. This is mainly since there's a small advantage to right handedness (baseball gloves fit, mouses are there, guitars are right handed by default, etc.). There's a lot of randomness: I eat right handed, except when using chopsticks (left-handed), including long cooking chopsticks, but tongs (which have a similar purpose) are with the right hand.
Assumed unrelated, but responding to a different part of your post: I can also read and write in mirror image with little loss of speed. I've never thought of that being particularly special. I just started randomly taking notes in mirror image in high school out of boredom (and right-to-left is slightly more comfortable for lefties).
I have a chronic sleep disorder, "Non-24 Sleep / Wake Disorder", which means my sleep floats pretty freely and doesn't naturally sync up with the sun. For the most part, I've structured my life for that to be ok, but sometimes it's not. I basically use melanin to bludgeon myself into a more normal sleep pattern when I have to. I usually start with 2 mg, 30-60 minutes before I want to sleep, but often when that doesn't work, take another 3 mg, which usually gets the job done. Often I don't even notice 1-2 mg, but 5 mg does register reasonably strongly.
Windows is about 66% of our customers, macOS about 33%, Linux about 1%. On Windows we currently only test on x64 for Windows 10 and Widows 11. On macOS we test 4 configurations. Each Windows configuration we test is 33% of our users. Each macOS configuration about 8%. Linux is starting at 1%, and previously we tested only one configuration, which was already 8x more costly than macOS. But there were a lot of complaints from people using other distros / versions, which resulted in anger, bad reviews, claims that we don't understand Linux...
To get reasonable coverage of the Linux desktop landscape, we'd need to test probably 20+ different configurations, meaning each of them would cover about 0.05% of our customers. The QA tests take multiple hours to run through. That makes supporting a Linux user a staggering 160x more expensive than supporting a macOS user, and 660x more expensive than supporting a Windows user.
Again, you need either a giant user base, or a disproportionate number on Linux (which is the opposite of true in pro-audio) to even hit break-even on Linux users.
And I am sure that's how most open source packages on Linux are built. Again, I spent a lot of time in that world. (Former KDE core developer, former employee at SAP Linux Lab, friends working at all major distros, have a bunch of my stuff in every distro, talks at lots of Linux conferences, etc.)
Building really isn't the problem. It's testing and supporting. Building is relatively easy. But you can't just ship commercial packages without testing them. Pulling out a Debian 11 VM because someone's having problems with your software there under Wayland, but not X11, but it seems to work in Sid... Again for the 0.01% of your customers using that configuration, ... it's hard. And it rarely makes economic sense unless you've got a disproportionate number of users on Linux, or a ginormus user base. You can't assume because something works on Arch Linux that it also works on Mate. Or that something on Ubuntu works on Debian. Or Redhat on SUSE. And then your users may have any of 3-4 versions of those installed. By the time you get to a specific configuration you're dealing with often debugging things for a single-digit number of users.
That works for FOSS, but not for smaller closed-source consumer apps. And it's not just building, it's also testing and debugging. It's just not tractable for a small company to test on dozens of different distros / versions for such a small percentage of users.