7 ms·
I disagree with the article. There is a lot of bad technology being pushed via social hacks - examples include PHP, MongoDB, NodeJS and Go. Typically the socia
by yummyfajitas 10y ago
I disagree with the article.
There is a lot of bad technology being pushed via social hacks - examples include PHP, MongoDB, NodeJS and Go. Typically the social hacks are low learning curve + easy tutorials that gloss over important details [1] + rapid setup + culture of piling on tech debt (e.g. rails ignoring how relational DBs work).
Technical superiority, particularly if that superiority requires people to learn new things, has demonstrated an inability to gain traction.
So if we want superior technologies to win, we'll need to engage in some social hacks of our own. Vocal and demonstrable elitism is a valid social hack - if the people who are demonstrably great coders are proponents of Haskell and sneering at PHP, while the code monkeys are all using PHP, that's a pretty clear social signal. Who wants to be part of the code monkey crowd?
When I was younger, and nothing but a BasicA/Visual Basic coder, these attitudes pushed me towards learning C and Perl (yes I'm showing my age). I saw all the better coders using these superior technologies with a higher learning curve. I realized that I had a lot to learn, I put in the effort and I learned it. With the decline of hacker culture, I don't see that happening anywhere near as much these days.
[1] E.g. a while back there were RoR tutorials that used update_attributes (skipping input validation) to show how easy RoR is. Net result was various hacks, I think including Homakov's hack of github.
- Allower 10y agoi see you are still a child regardless of your age. Its funny watching you argue for elitism though
- FussyZeus 10y agoHere's the thing though: The end user, the one who pays the majority of our bills, doesn't give a shit about your language choice, your code, your DB choice, or any of it. They care if it works, if it's easy to use, and usually if it looks nice and that's about it. People publish blog posts about how they aren't using MongoDB or aren't using PHP anymore because X and Y and do you know who cares? Pretty much no one aside from the pro PHP people who get mad or the anti-mongo people who point to it as justification for their part in a completely pointless argument. Yes, low skill and approachable languages attract amateur coders because that's what they're supposed to do. PHP was designed from the get go to be an accessible web server language that anybody could use, that was the POINT so naturally anybody who can will use it. I've seen brilliant PHP websites and I've seen utterly garbage C code, and both of those reversed too. There is a correlation between use of high level languages and skill but it is far from a fixed relationship, so to parade about someone's use of those to justify their arrogance as a programmer relative to people who are WELL AWARE that they are better than them just makes that person look like a windbag. /rant
- whatshisface 10y ago>`The end user doesn't care.` They care about bugs, vulnerabilities, and third-party quality issues - all of which a bad language/framework will help you to have. Human beings are the original proof engines, so I'm sure that a great programmer could perform amazing type checking in any language. I'm sure they could also architect their way around Java's weak points with Abstract Factory Patterns, xor hand-tune their code for the JVM JIT to be only 1.9x slower than a naive C implementation (See: what they had to do for Minecraft). But, why? It's easier to learn the syntax for a good compiler than it is to implement one in your head...
- FussyZeus 10y agoYes, and you can also produce better electrical hardware with a $200,000 fabrication unit than breadboard and a soldering iron, but one of those is a lot more accessible to someone just starting out. I don't see the raspberry pi people being derided and mocked by Intel's engineers because they use such lowly plebian tools.
- VLM 10y ago"one of those is a lot more accessible to someone just starting out." Its interesting that this point comes up in a world containing useful google results for "try ruby" "try clojure" "try haskell" "try-python" "try scheme" but there are no useful google results for "try cobol" "try java" "try php" or "try visual basic". We can play a similar game with Koan style learning with very similar results.
- deleted 10y ago[deleted]
- yummyfajitas 10y agoThe end user cares when a SQL injection vulnerability takes down their site or when their site turns into a massive pile of tech debt for which any improvement takes weeks. I agree that PHP was designed to be a bad language but easy for noobs. That's the point. By having a low learning curve it has displaced vastly better choices. And that's why I'm suggesting we need to fight social hacks with other social hacks.
- noonespecial 10y agoSometimes I wonder if a higher learning curve isn't a feature. If it takes some amount of core-competence to simply hello world in a given language, then a code-base that uses that language automatically signals higher general aptitude of the programmer. Could a language be "better" simply by being harder to learn?
- chriswarbo 10y agoHello world in PHP: <? print("hello world") Hello world in Haskell: main = print "hello world" You don't even need the "main = " if you're using a REPL :)
- noonespecial 10y ago"Php was already on my system. I cut and pasted a index.php from google and it worked! Now I have a website! ... What the #$^@ is cabal?"
- kazinator 10y agoApples and oranges. What is hello-world in Haskell such that it is embedded into a page that you load out of Apache?
- dllthomas 10y ago> What is hello-world in Haskell such that it is embedded into a page that you load out of Apache? With apache configured to run the program as a CGI script? Still the same thing. That's not a great way to run Haskell on the web, but it's not too far from what's going on with historically common out-of-the-box PHP setups (and I understand that modern PHP setups take a little more code).
- deleted 10y ago[deleted]
- maxxxxx 10y agoNo. You will find idiots in every language. C++ is hard to learn and you can do great stuff if you knew what you are doing but there are also plenty of people who create memory leaks left and right.
- chriswarbo 10y agoI get your argument regarding PHP, MongoDB and NodeJS, but having never used Go I'm wondering what makes it a "bad technology"? I've mostly heard good things about Go, except for lack of generics and the use of github repos in "import" statements. Are those the reasons you think it's bad, are there more serious ones? Is Go actually "bad", or does it just bring little to the table? I understand Go's meant to be a middle-ground between Python (dynamic, memory-safe, slow) and C (static, unsafe, fast); do you consider it a step forward in that regard? If a bug-free, non-obfuscating source-to-source translator between two languages appeared overnight, would you prefer those languages to be Python -> Go, Go -> Python, C -> Go or Go -> C?
- yummyfajitas 10y agoSo by "bad", I mean 20 years behind other languages that live in the same niche. Lack of generics and a modern type system (assuming you go the type system route) is actually a really bad thing. If you want a middle ground between Python, there are already great options that provide everything Go does and more, for example Java, Scala, Common Lisp, Haskell and Rust. Lisp is a bit closer to the dynamic/slow side, Haskell/Java/Scala are more or less Pareto superior to Go, and Rust is a little closer to the static/fast/unsafe side. But unlike Go, Haskell/Scala/Java expect you to learn a few things before you can be really productive in them.
- ixtli 10y agoWhile I'm not sure I agree with your entire point I think it's clear that not only do people not appreciate the _generations_ of hard work you're leaving behind when you abandon LLVM/Clang/etc or languages with powerful type systems but they actively resist understanding this. Put simply I don't think people disagree with the "20 years behind" thing, I actually think they don't understand what you mean.
- yummyfajitas 10y agoYes, that's because they are code monkeys who are unwilling to put the effort into learning something new. (An uncharitable, but perhaps effective way to phrase it.) My proposal is simply that we don't treat this anti-intellectualism with kid gloves.
- binarymax 10y agoOh the irony! 'Superior technology', when talking about a language, is entirely subjective and based on your opinion of why it is superior. I've seen some amazingly elegant code in all of those things you've dismissed. Facebook is written in PHP, and I'm willing to bet you use an application or two that runs nicely on Node or Go. so what social signals are you talking about?
- tome 10y ago> 'Superior technology', when talking about a language, is entirely subjective No it's not.
- dopamean 10y agoWhy isn't it? If I needed to build a static site for someone wouldn't some tools and languages be better than others? Those same tools and languages may not be useful for building a very high traffic site that perhaps has an ecommerce component.
- tome 10y agoTools and languages might (hypothetically) be better for a specific narrow purpose whilst being objectively inferior technology. A hammer is better for some jobs than a CNC machine.
- exclusiv 10y agoYour arrogance really shows with "hypothetically" in that context. That's part of what the article is discussing as a real issue.
- tome 10y agoI'm terribly sorry if I upset anyone by sounding arrogant. That wasn't my intention and is probably an unfortunate consequence of making snippy remarks on the internet, particularly ones that seem self-evident to me, even if others have differing perspectives. That said, I do not see how anyone could not consider Python superior technology to PHP, C superior technology to BCPL and Pascal superior technology to punch cards.
- GavinMcG 10y ago> Vocal and demonstrable elitism is a valid social hack - if the people who are demonstrably great coders are proponents of Haskell and sneering at PHP, while the code monkeys are all using PHP, that's a pretty clear social signal. Sure, but the sneering is totally unnecessary. Being great, and being vocal, and being critical – those are the things that get the job done in a constructive way. Why do we also need to cop an attitude that is unpleasant, socially undesirable more broadly, and aggressive towards people who could end up being valuable members of our preferred tribe?
- corysama 10y agoExactly. Tribalism is easy and effective, but in the long term it is destructive. It devolves rapidly into troll culture where the loudest voices are mostly parroting whatever aggressive message they've found gets the strongest reaction. Explaining the advantages and disadvantages of different approaches without falling back on derision takes a lot of effort -especially given that there will never be an end to newbies who haven't heard a good explanation. But, it's necessary to avoid teaching that tech should be evaluated by comparing the insults of the competing communities.
- OldSchoolJohnny 10y agoThere is no such thing as objectively "superior technology". It does not exist and if you think it does you are cheating yourself as a developer with this mental wall you have erected to block out reality. A more experienced developer knows that there are only superior decisions; choosing the appropriate technology for the time and circumstances.
- AnimalMuppet 10y ago> So if we want superior technologies to win, we'll need to engage in some social hacks of our own. Vocal and demonstrable elitism is a valid social hack... But not one that gets you where you're trying to go. It makes people regard you as an arrogant jerk, and therefore not listen to you. For your claimed purpose, that's counterproductive.
- yummyfajitas 10y agoI agree there may be a collective action problem here. Being the first individual to follow this practice may be individually harmful, even though having a culture where everyone does it would be collectively beneficial. I suppose one way to jump start things would be for some forward thinking company that wants to have a solid tech culture should proactively hire elitists.
- AnimalMuppet 10y agoFirst: No, having a culture where everyone does it would not be beneficial. It would be a culture of groupthink, where "right thinking" individuals shame everyone else for not thinking the right things, and everyone else joins in, not because they think the ideas are right, but to avoid being shamed. If you've been watching political correctness on college campuses, it ought to be clear why this is not collectively beneficial. Second: If you're the first individual to follow this practice, it's not harmful to you (other than turning you into a snob who acts like a jerk). It's harmful to what you're trying to achieve. It makes it take longer to get to the point where you have people using languages you regard as superior, because they avoid talking to you. "Pompous jerk alert; run away! Don't get any of that on you!" That doesn't make it easier to persuade people that the languages you advocate are good on their merits. Instead, show people why the languages you like are better. Actually listen when they disagree; they may have more of a point than you know.
- tptacek 10y agoIt cuts both ways, because even more fundamental to Rails' success is the ActiveRecord ORM, which has probably prevented tens of thousands of SQL injection vulnerabilities.
- tedunangst 10y agoDoes it cut three ways? Like the yaml bug? They didn't stop at making it easy for beginners to be secure, but kept pushing past that until it became impossible for experts to avoid insecurities. I think we may disagree on this, but my position is that such bugs are an unavoidable consequence of too many friendly abstraction layers.
- tptacek 10y agoThe YAML bug wasn't sui generis (it's a bug class that is very common in Java frameworks), but it didn't follow from any basic design principle of Rails. I generally assume bugs like these are evenly distributed among all frameworks and languages --- or at least, all the platforms where code is easy to write (C doesn't tend to have these kinds of problems, but it would be dumb to opt for C over Ruby for security).