6 ms·
Yegge took a massive shit on technical discourse, and if not countered, the ramifications thereof could be felt for years. His influence is disproportional to h
by flatline3 14y ago
Yegge took a massive shit on technical discourse, and if not countered, the ramifications thereof could be felt for years. His influence is disproportional to his value, and I am extremely disappointed to see anyone here taking his emotional arguments seriously.
Unless firmly censured, I expect to see Yegge's ridiculous viral meme of "liberal vs. conservative" spread and repeated by inexperienced developers indefinitely.
If I had any respect for Yegge, I entirely lost it here. The question of how to write software should be founded in careful consideration of specific problem domains, experience and research, and studied approaches. It should not be founded in some gross politicized and emotional argument.
Yegge is not just wrong, his reframing of engineering decision making is dangerous, and his ridiculous and viral engineering-as-politics meme makes people dumber for having simply read it. I'm disgusted with it, as well as any debate that seriously approaches his irrational appeal to emotion.
Yegge should be ashamed.
- smashing 14y agoBut look at all those comments Yegge is getting. He has long been an engaging, comedic writer with a very technical slant, but this really pushes him into the mainstream. People will look forward to the Steve Yegge show providing them entertainment in the same way Mike Daisey provides entertainment through The Agony and the Ecstasy of Steve Jobs.
- jeremiep 14y agoI couldn't disagree more with that. From reading his other essays, it's obvious the guy has a broader perspective on programming than most software developers. I believe it's experienced developers who will spread this because it takes experience in many different languages and paradigms to really understand what Steve described. I have different coding styles for Lisp, Haskell, D, Ruby and CoffeeScript for instance. The foundations of software development are generally not well understood. Otherwise the vast majority of software out there would be more robust by a few orders of magnitude. Steve at least offers a classification for the different styles found in programming communities today. He may not be right on spot, but at least it's a start.
- flatline3 14y agoThe two-axis political classifications discards all reason and nuance in favor of us-vs-them media sound bites. The idea of applying two-axis classification to software development would laughable if it wasn't so dangerous in its attractiveness as an oversimplified tribal mental model. > Steve at least offers a classification for the different styles found in programming communities today. He may not be right on spot, but at least it's a start. No. It's not a start. It's a dangerous, dangerous viral meme that threatens to replace rational dialog with ridiculous emotionally-driven opinionated politicized tribalism, and I can't help but wonder if that's his intent. It's a play out of cable news' playbook, and I for one don't want an environment for engineering discourse modeled on American politics. I couldn't think less of Yegge as an engineer and a thinker than I do now.
- jeremiep 14y agoRidiculous emotionally-driven opinionated politicized tribalism is already all over the place in software development. Compared to the other engineering disciplines, programming doesn't even fit this title most of the time. What he describes doesn't introduces anything new to current behaviours, American Politics are already everywhere. While it's a gross overestimation to place whole languages in buckets just like that, it doesn't mean things have to fall in one bucket only. For the Mars Rover, you want mission critical batshit conservative programming practices. The JPL coding standards do the job perfectly for that. On the other end of the spectrum, you've got Joe's webpage. I completely agree with you about the bad image of american politics and the incomplete one dimensional line view. However, I do believe software development practices can be classified, it just needs to be in a tree or a graph instead. In order to stop the current meaningless fights over using/doing something or not, lines have to be drawn somewhere. People don't know what these lines are and the industry is plagued with projects having to live with the wrong decisions. He clearly mentions it's not like american politics and I agree on that. It can be useful to actually educate the industry on what exists so they use the right tool for the right job, which currently only rarely happens. It doesn't encourage "good enough" practices, it promotes knowing when to use what. He got the idea right, he only omitted to mention that these line can split multiple dimensions.
- 14y ago
- sbmassey 14y agoI strongly agree: the article comes across as an attempt to solidify an emotional division between different kinds of software developers, and that never brings out the best in humanity. Most people with any programming talent can learn to write software idiomatically in different styles if they try; making out there are different teams you have to support just makes that more difficult, and for no good reason.
- blackhole 14y agoOf course, said careful analysis of specific problem domains is then thrown around with wild abandon in an attempt to influence totally unrelated issues, causing confusion and havoc for years to come.
- overgard 14y agoI don't see where you're getting "emotional arguments" from, the entire piece seemed more about scratching an intellectual itch more than anything else. On the other hand, it seems quite apparent he pushed the wrong emotional button on your end. I mean his reframing is "dangerous"? Seriously? Who is in "danger"? And in danger of what? Having a contradictory viewpoint?
- flatline3 14y ago> I mean his reframing is "dangerous"? Seriously? Who is in "danger"? And in danger of what? Danger of breaking down rational discourse and forward progress by reframing the debate in terms that leave no room for rational discourse. He's not discussing cost/benefits or reasoned analysis; he takes those as a given and attempts to recast engineering discussion as a political left vs right, with all the emotional baggage that comes with it. It's dangerous because ideas have the power to transform minds, and irrational ideas that appeal to emotion and preconceptions are very powerful.
- lani 14y agoirrational ideas are the work of the Devil !
- overgard 14y agoNone of that has any meaning to me. "Leaves no room for rational discourse". How? What does that even mean? How is he blocking anyone? It's his opinion, he's not stopping anyone from making a counterpoint. "Cost/Benefit analysis". Have you done one? What would it even mean in this context? Would such an exercise even be meaningful? (Not snark, honest question) You obviously disagree with his viewpoint/conclusion. Cool. So do I, somewhat, for very different reasons. Calling it "dangerous" just adds a lot of hyperbole that doesn't need to be there.
- pjscott 14y agoWould you be happier if he'd used different words? If, instead of talking about "politics" between "liberals" and "conservatives", he had made the same post about "differences in taste" between "caution-focused" and "momentum-focused" programmers? Because, you know, he could have said it that way, and it would have made as much sense, while probably being a hell of a lot less controversial -- but it would be the same blog post! (Personally, I think I would have been happier if he'd used different words to say the same thing.)
- mathgladiator 14y agoMost technical discourse turns into religious zealotry, and I think Yegge's observations are relatively true. For instance, look at all the debates on static typing versus dynamic typing. If you break it down, it boils down to aesthetics and fuzzy feeling. It really does. Interestingly, as I've aged, I've realized that our tools don't matter. All code turns into shit. At the end of the day thou, once you pick your tools, then it's the technologists job to ship products. How we ship products doesn't matter. All that matters is that we ship. Do customers care if the technologists were "conservative" or "liberal"? They don't.
- flatline3 14y ago> For instance, look at all the debates on static typing versus dynamic typing. If you break it down, it boils down to aesthetics and fuzzy feeling. It really does. It boils down to cost vs benefit, actual studies, and mathematical axioms, not aesthetics or feelings. > How we ship products doesn't matter. All that matters is that we ship. Engineering tools affect both how you ship, what you can ship, and when you can ship it. The choice isn't arbitrary, and choosing involves careful reasoned thought, informed by real experience -- not flippant arbitrary choices backed by feel-good platitudes that all approaches the same.
- zaptheimpaler 14y ago>It boils down to cost vs benefit, actual studies, and mathematical axioms, not aesthetics or feelings. Its not quite that simple. Well performed studies that are actually relevant to a particular project are _difficult_ to come by. By well performed, I mean free of biases and misattributions and relevant to your particular use case. For example, most of the links in the answers here (http://programmers.stackexchange.com/questions/10032/dynamically-vs-statically-typed-languages-studies http://programmers.stackexchange.com/questions/10032/dynamic...), a question specifically requesting studies them don't have any significant empirical data. Further, if you dig deeper its also clear that studies often contradict each other. Further, lets say you try to do a cost-benefit analysis. How? Try to estimate how many hours a particular technique will save you and you run into the same problem people have been trying to deal with for years. Estimating the time it takes to do a project is _hard_. Add to that how rapidly things are changing in this space and how dependent the structure of code is on the application of that code, and its clear that we really don't have objective metrics for this kind of thing. >Engineering tools affect both how you ship, what you can ship, and when you can ship it. The choice isn't arbitrary, and choosing involves careful reasoned thought, informed by real experience This is far more revealing of how these decisions are actually made. Your experience and thought process may very well be arbitrary when contrasted with real data. It might as well be aesthetics and fuzzy feeling.
- dinkumthinkum 14y agoI couldn't agree more. I shudder to think of a near future in which discussions include this "libral" or "conservative". I don't think it is nonsense because I think "it's a bad dichotomy for politics." I think it is bad because it is a poorly formed idea that reminds me of a high schooler learning some new thing and trying to apply it all over the place and see it everywhere like a psychoanalyst. But the worst part about this is it is a pretty useless discussion despite the claims that this is some revolutionary culmination of a series of wildly over blog posts.
- nandemo 14y agoI basically agree with you but: > I expect to see Yegge's ridiculous viral meme of "liberal vs. conservative" spread and repeated by inexperienced developers indefinitely. It's worse than that. Just look at this thread. I'd say most HNers aren't inexperienced developers, and yet they seem to be taking Yegge's sophistry seriously. And I don't think his post necessarily "makes people dumber" for having read it. That's only the case if people accept it without a modicum of critical sense. And if so that's their own damn fault. So I agree that that post is of very low quality. But still, I admire Yegge. His genius here is to frame the discussion so that it disarms the natural geek propensity to read technical discussions with a critical sense.
- masterzora 14y ago> I'd say most HNers aren't inexperienced developers, and yet they seem to be taking Yegge's sophistry seriously Bullshit. To the latter half, I mean, not the former. HN sees posts of more or less this type (the "make an essentially meaningless metaphor and see how far we can push it" type) quite often, plays with it for at most a couple weeks, and then forgets it ever happens. The "taking [it] seriously" you see here is likely to be that case again: HNers like playing around with basically any classification that anyone presents (cf. the math/corn post where even I felt compelled to throw in a quick comment) and then moving on to the next classification system someone presents. It doesn't mean they're going to now make all of their life decisions based on the classification of the week; it's just a bit of harmless fun. Now, it's true that sometimes this does spread and gets to really silly levels but I see no reason to suspect that this is going to be in that camp rather than the "harmless fun" area.
- cbsmith 14y agoHe right about it being political, and about there being different contexts. The liberal & conservative labels unfortunately misframe the discussion in to a political context, and a bi-partisan one. Worse, he did it in the midst of election fever (gee, you think that is a coincidence?). Basically, you can write off intelligent discourse for the next few months, but this too shall pass.
- Spearchucker 14y agoYegge's discourse wasn't technical, and therefore shouldn't be countered. Your opinion of his value is subjective. And that pretty much demonstrates the validity of Yegge's "discourse" - writing software is a technical undertaking, but is performed by people. Who are social, and political.
- zohebv 14y agoI have never agreed more with a HN comment than this time. This has to be the worst post by Yegge in terms of the negative impact it can have on software engineers and engineering. He took a technical topic and labelled his belief system as "liberal" and the others as conservative. When some one proposes a technical approach he doesn't like, he can simply call him a "conservative-not that there is anything wrong with that". Yegge is an average programmer at best. He wasn't able to maintain a simple 2D game and very easily blamed Java for it. It was a clear case of PEBKAC. It is absurd and unsurprising at the same time, that the simple act of blogging can some how elevate a programmer to expert status. Yegge clearly has no idea what he is talking about. I am currently working with Scala which is apparently Hardcore conservative. Look at his characteristics of liberal languages. 1. Eval. - scala has a REPL, so u can do an eval if you wish. 2. Metaprogramming - scala macros 3. Dynamic scoping - No 4. all-errors-are-warnings - Meaningless bullet point, all languages encounter statements that it cannot meaningfully interpret. This statement just shows you Yegge's massive PL understanding deficit. 5. Reflection and dynamic invocation. RTTI - Scala has these. 6. The C preprocessor - Nope 7. Lisp macros - scala macros. 8. Domain-specific languages (for the most part). Optional parameters. Extensible syntax. Downcasting. Auto-casting. reinterpret_cast. Automatic stringification. Automatic type conversions across dissimilar types. - all yes for scala. Infact, you can provide your own casts for any 2 types and import/export casts as you wish. 9. Nil/null as an overloaded semantic value (empty list, empty string, value-not-present) - Yes and No, Option[T] is generic. If you want to know if any container(including strings) is empty, you say container.isEmpty(). But not container == null. 10. Debuggers. Yes Scala has debuggers. At this point one has to ask - what is this guy smoking. If your language has a debugger it is a liberal language? WTF?? 11. Bit fields - No 12. Implicit conversion operators (e.g. Scala's implicits). Sixty-pass compilers. Whole-namespace imports. Thread-local variables. Value dispatch. Arity-based function overloading. Mixed-type collections. Yes, yes, yes for scala. 13. API compatibility modes. Advice and AOP. Convention in preference to explicit configuration. These are fairly vague properties and you could say yes/no. I recently converted a "liberal" perl project into "conservative" scala and the code size fell by an order of magnitude, but apparently I live in alternate universe where "conservative" languages are somehow more succinct. This guy is just suffering from verbal diarrhoea and he gets way too much attention for his uninformed commentary. I haven't seen a more bogus classification in ages, it is quite amazing how he politicized a purely technical topic. It is fairly clear what his issue is 1. He likes dynamically typed languages. You have to type less and lower error checking is tolerated by the community. 2. He is uncomfortable with more advanced PL concepts, cannot decipher compiler error messages when working languages like Haskell. He would much rather let the program run and crash with a run time stack, where he can jump in and examine the value or operation that caused the failure. The Haskell compiler error message makes him feel stupid and he does not like it. This also probably explains why he wants to dump clojure into conservative territory, too much of STM and Parallel Haskellish stuff going on. 3. He is not a big fan of java/C++. There is nothing peculiar about the set of biases he has, in fact it is fairly typical. People who favor Java/C++ simply need high performance code that would need to be maintained/refactored for a long time. It is not a religious choice but a pragmatic decision in the face of constraints. I have never seen "conservatives" write build scripts in C++ or "liberals" write OS kernels in Ruby. All the attributes he has described simply cannot produce the ordering of languages that he has conjured. In the only barely technical portion of the post he has contradicted himself soundly, but it doesn't matter because no one is paying any attention to that.