Contempt Culture (2015)
blog.aurynn.com
blog.aurynn.com
Take some complicated applications such as Google Chrome is written in C++, IntelliJ is Java and Facebook is originally PHP. I am impressed by what each of them accomplished.
I am impressed and respect the products, developers, people and accomplishments of the languages that receive this ugly unloving attitude. They ship LOTS of things and people do use them. I think this counts for a lot.
Things just need to be good enough to succeed, and that's a pretty low bar. The whole point and value of criticism is making a more nuanced judgement than "popular and successful = good".
Then there's what we see on the internet.
I feel people might not know what they're missing in languages such as in LISP, OCaml or Haskell. Or how functional programming can transform your life. But PHP and Java developers don't need to be disparaged. That's not loving.
I am working on some Jepsen tests (which uses Clojure) and I'm enjoying how expressions are evaluated, the freedom of evaluating expressions. But I still find other people's code difficult to read!
I value the perspective/criticism of someone who has built something impressive in PHP or Java over someone in these communities on the sidelines who doesn't build things that ship but is very opinionated.
But that doesn't mean that there's something better for what they're doing. "Tool X is flawed!" Yes, it is - deeply flawed. "You should use Y instead!" No, that does not follow. X may be flawed, but that doesn't mean that Y is better. And all the badmouthing and pouring-on-of-contempt in the world won't make Y better.
And the people doing the work know. For the most part, they aren't fools, and they aren't sheep. They know what it takes to build what they're building, and they're using the best available tools to do it. Those tools aren't perfect? Welcome to the real world. But the pouring of contempt doesn't get anything built, so they ignore the loudmouth know-it-alls and just get on with building stuff.
Also, as a user of intelliJ, I would prefer it be written in C++. It's dog-slow.
> Facebook is originally PHP
I doubt it's success was based on its tech, but the fact it was rewritten tells a tale in itself, no?
That is mostly kudos to devops but PHP let them build stable code quickly and resolve issues fast. There was a source code leak at one point - a missing tag at the beginning of the page meant the source code rendered as text. That in itself meant their deploy process was garbage but the challenges at the time were mostly around handling scale and traffic spikes.
Anyway, the leaked code wasn't very clean or well-organized and definitely showed some of the growing pains. But the fact is, the site progressed and grew and was mostly stable the entire trajectory, no matter what was happening under the hood or behind closed doors.
Never underestimate how powerful a low barrier to entry is for trying things quickly. In a winner take all market like social media, it’s very possible the choice of PHP over something like lisp gave them a huge advantage.
Quickly written spaghetti code with massive tech debt could be delivered fast enough to gain a huge competitive advantage - does that mean modern SW dev should venerate that approach?
> I doubt it's success was based on its tech,
It is, if it let them iterate quickly onto product market fit. Had they chosen something with the dev speed of Rust it is unlikely that they would have iterated fast enough to be successful.
It's not an application that's meant to be light weight like VS Code, I believe Jetbrains Fleet is much more suitable for that.
Maybe there are caching advantages to be gained, but those can be implemented in Java as well. I think the most important optimizations wouldn't stand to gain much from a rewrite into native code.
Success is seldom the result of tech choices, but failure often is.
It's a common misconception that being technically superior is worth more than having a rich, mature ecosystem to draw on.
Don’t criticize the users, that’s needlessly rude. But Windows needs to be criticized.
A single example, its lack of an executable permission, hiding file extensions, and running things based on file extension is at its core the cause of 95% of the worlds problems. They could easily fix so much just by showing extensions.
Don't criticize people, criticize concepts.
I agree that we need to criticize concepts, not people. That said, we shouldn't be ignorant of a language's strengths when criticizing it's weaknesses.
Most of all, it's important to analyze the trade-offs inherent in working with a particular language. For example, it's very easy to iterate when working with a language like PHP. I can appreciate that while also not being a fan of implicit type conversions and inconsistent naming patterns in builtin functions.
When discussing trade-offs, it helps to discuss things from a position of knowledge, not ignorance. If you haven't programmed in PHP, you might want to hold back some commentary on it.
A couple of years ago I troubleshot a problem someone was having on a Mac. IIRC, instead of creating a file with an extension they had somehow managed to create a folder with an extension, with the actual file inside of that folder.
Also IIRC, they tried to click into the folder, but apparently Mac had hid the file extension (of the folder!) which prevented them from entering the folder (since the name without the extension was not the full name of the folder??). This only became apparent when dropping into the shell and doing a list. From there it was easy to change directory into the full name of the directory.
I have no clue what was happening here.
MacOS has a handful of extensions on folders that make the Finder treat them as files instead of folders. The most common is `.app` which is what almost every modern mac app that doesn't use a package installer is. It's how the "drag to install, drag to uninstall" magic works. The app, all it's bundled libraries and resources are all in this folder. Double click the "folder" and you launch the app because the inner folder structure is a convention that MacOS understands and so knows where the actual executable inside is.
There are a handful of others (notably their office suite ones `.pages` `.numbers` and `.keynote`) which do this too
NTFS supports executable permissions for users, groups, and all other types of ACL you can manage. It's just enabled by default if you have read access.
That said, in 99% of cases the Mark of the Web will do the same thing the executable bit will do on other platforms. You'll have to store an executable on a fat32 drive for it to be executable without a "your computer is in terrible danger" prompt.
Don't go after people for using it, it might not be their choice. But do push back on apologists and promoters.
As is "the vanity of small differences". Viewed from a distance, "people who write software" are all of much the same group.
I try not to do it. I prefer Scott Hanselmans's take (2)
"Learn any programming language. ... pick a programming language, learn it, see if it feeds your spirit. If you don't like it, pick a different one.
* Ignore people who say that this language sucks or that language sucks* "
Dan, could you please put years on your submission titles when they're not from the current year? You've been doing a lot of old submissions without the year appended.
> I’m tired of people dumping on Windows, that most popular operating system, because it’s not what we choose to use . . .
Criticism can be constructive and the network effects of platforms are real. There is an appropriate time and place for these things. For languages which are almost entirely open source at this point the choice isn’t so important. For things like closed source (and deeply flawed) operating systems we should find healthy ways to advocate against them (not the people who use them). Don’t be a contemptuous nerd shaking your fist at the wind, but don’t miss opportunities that could actually make a difference.
Um. OK. But who cares? Our job is to ship product. We'll throw it at the GPU and move on with our lives. Thanks though? I think?
If I was looking at a company that purported to be making an online game streaming service and they were using Ruby or Swift, I'd very likely look elsewhere for employment. If they were using Java, Rust, or C++, well, that would make more sense.
There are just some realities out there about which languages to use for what, and if a company you are looking at seems to be operating way outside those realities? I mean you have to think long and hard about working with them.
Same with employees by the way. If someone comes in and tries to get my teams to work on a Rust based inferencing service to host our models because "It won't take more than 6 months." Again, you have to question that person's judgement. We're supposed to spend 6 months, (read 18 months because it always takes 3x what they say), creating a Rust based service? A service that even my junior AI guys can push out by the end of the week in Python or Java? No thanks. HR, please prepare his/her separation notice.
I don't run a "who has the biggest balls/breasts" contest. I run a tech firm. Fanboyism has no place in cold dispassionate decision making.
Despite all the introspective self-flagellation, I'd say the author still has a ways to go if they believe that any path or another is, "predominantly for women."
What is meant by "self-taught narrative" is a narrative of their experience in which they are "self-taught" i.e. taught themselves.
It could be easy to assume a "self-taught narrative" is a narrative one teaches themselves i.e. a narrative that is subjective, self-assured only, and thus not valid; but I don't think this is what is meant.
Hence, the line:
> Other self-taught narratives
Are not "other narratives I taught myself" but rather, "the 'self-taught' narratives of other people".
I think this is implied by:
> My self-taught narrative is not other peoples’ self-taught narrative
note the use of a singular "narrative".
I think the contrast/revelation of the line "This was a bombshell" is that this:
> is a completely valid narrative, but a path that is predominately for women
i.e. this is what she discovered, and still believes, and forms the basis of her rejecting her former contempt.
I remember being impressed the people who were good at snark: clever sarcastic quips that were funny with a germ of truth in them. I was sorry I wasn’t so quick on my feet (tongue) but participated.
And then somehow, one day, I realized that yes, people liked the humor, but often weren’t close to those folks, because maybe the quips could be aimed at them. And luckily that happened when I was young enough to drop it. There are other ways to be smart.
FWIW, I never experienced the inverse when talking to Java developers.
My experience is that gatekeepers often exaggerate the difficulty and importance of whatever it is that they're gatekeeping, be it languages, language paradigms or even architectures.
It's useful to call them out on this in particular when you're knowledgeable yourself.
My favourite example of this is people dismissing a language because its type system is unsound. The vast majority of people who brought this up in front of me couldn't explain how that prevents anyone from shipping products.
You just don't see this in circles where people have ability. Expressions of contempt may show up there, but they are not the basis for anyone's status.
Finally, I should note that I would be far less motivated to join a company where I’d have to spend my time writing Java or PHP that one working with Ruby or Swift, for instance. We’re still allowed to have opinions about languages. It’s just childish to demean others for theirs.
But helpful? Hell yes—we have an abundance of FLOSS riches today. And fact is, some packages are better designed than others. Trying to encourage use of the higher quality ones to minimize headaches is a good thing.
> but a path that is predominately for women
since this is an important premise, apparently the turning point of her "PHP sucks" phase, why no link to evidence?
also:
> I’m tired of calling people out again and again
> Instead, we lecture and dismiss and heap scorn upon them.
is "calling out" different from lecturing?
and:
> to the vile reactionary attitudes towards the introduction of Codes of Conduct
Not at all the same thing. The history of CoCs tells the tale, no cheap dismissal based on your own bad behaviour needed.
In fact, saying "I used to be a bad person, but I'm enlightened now, and assume everyone with similar opinions to the ones I used to hold are bad people like I used to be" is a little smug and/or narcissistic.
Cool, you feel you grew as a person - keep that as a lesson for yourself, not a lecture for everyone else, otherwise you are still projecting your opinions on others, and weaponizing your former faults:
> Because we were the problematic elements.
> We excluded people. Directly. All of us.
Doesn't sound like owning up to personal behaviour.. Maybe speak for yourself.
> since this is an important premise, apparently the turning point of her "PHP sucks" phase, why no link to evidence?
I didn't figure it out til this comment thread but I think it is based on a (stereotyped?) picture of male hackers arriving through the traditional male-heavy STEM education, CS major or whatever, and the "sophisticate" culture that goes with that. Female hackers in that picture are (were?) more likely to have arrived through writing, web design, then doing some scripting here and there before finding their way into backend development, so PHP will be all they have seen at the relevant moment. At least that seemed like what was being conveyed.
The essay as a whole wasn't that impressive. C (one of the more testosterone-soaked languages FWIW) really does suck, people who use it without knowing better don't deserve contempt, but it is worthwhile to provide some gentle enlightenment if you're in a position to do so.
These days PHP has improved, Javascript has eaten the scripting world, and C is mostly relegated to legacy and embedded niches. But we really do live in a bunch of overlapping messed up programming cultures and we should always try to widen our horizons without blaming the victims. The "blub paradox" ironically both explains the culture problem, and is an example of it (it fails to recognize that Lisp is also a blub).