Live data from Hacker News

Steve Yegge: Notes from the Mystery Machine Bus

plus.google.com

131–140 of 186 posts

Re: Steve Yegge: Notes from the Mystery Machine Bus

#131
While I found the article annoying in its oversimplification, I think the real tension Yegge is feeling is about contracts. At a high level, contracts apply to coding standards, and at a low level they apply to interfaces, etc.

One may find many aspects of a contract annoying yet still prefer a world where contracts are widespread to a world without contracts.

In a sufficiently complex ecosystem contracts make some things easier and some things more difficult. But contrary to Yegge's assertion, it may be that some organizations have a contract that if something breaks, then one of the parties involved does a rewrite/redeploy. This is not a replacement for a contract, as Yegge implies, simply a different contract.

One contract might be: "All code must be unit tested". Another might be "If you don't write unit tests and your code works, that's great, but if it fails then prepare to pull an all-nighter if necessary."

My guess is that most developers, if asked which kind of methodology was appropriate, would generally pick a methodology that was appropriate for the level of risk involved. If the code is going to manipulate a robot arm holding a knife as it jabs quickly toward the programmer's body, few programmers are going to think that the bugfix/redeploy approach makes sense. But when it's a social site then everyone starts to feel more like a cowboy.

I think it is an insult to the professionalism of programmers everywhere to assume that risk decisions are a function of internal constitution rather than a rational risk assessment.

Re: Steve Yegge: Notes from the Mystery Machine Bus

#132
post #18

So, this is the culmination of 8 years of rants and blog posts? This is what he's been trying to say all that time? What a peak he has reached. What an insight. I'm trying to think of an apt analogy for this post that doesn't involve vomit or defecation, but it's hard. From the introduction proclaiming how readers will be stunned by how clearly and resoundingly true the revelation revealed within will be, to the lite…

I get the feeling his essay is setting the scene for more to come, most likely around Project Grok. The name is well suited, Yegge really understands how code works.

Why hack on it? Because it's what hackers do. Steve only pushes it further and hacks the philosophy of it. I love his essays as food for thought, and I respect him for publishing his in-process thoughts about the matter to let the idea out.

To me, this post was quite entertaining and broadened my perspective a little bit again. The only downside, as is the case with most of his other essays, is that it definitively wasn't long enough.

Re: Steve Yegge: Notes from the Mystery Machine Bus

#133
I think the best (only?) point to come out of this essay is that different people have different definitions about what makes code or coding methodology "good".

And because of that you can find yourself in an endless argument with someone.

Why he dressed it up in political satire (allegory?) I don't know, seemed to me to make his point less forcefully.

Re: Steve Yegge: Notes from the Mystery Machine Bus

#134
post #28

As much as some commenters are (weirdly?) railing against this classification scheme I think the underlying idea that software conservatism is about risk aversion is essentially accurate. Perhaps another way of framing this is to ask the question: are you optimizing for the best case or the worst case? This ultimately is a form of risk management. And I'm not talking in the algorithmic sense, meaning complexity expre…

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 indefini…

I 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.

Re: Steve Yegge: Notes from the Mystery Machine Bus

#135
post #18

So, this is the culmination of 8 years of rants and blog posts? This is what he's been trying to say all that time? What a peak he has reached. What an insight. I'm trying to think of an apt analogy for this post that doesn't involve vomit or defecation, but it's hard. From the introduction proclaiming how readers will be stunned by how clearly and resoundingly true the revelation revealed within will be, to the lite…

Go read the first comments from a sixteen year old social outcast who just read Atlas Shrugged for the first time. It's that, but with Yegge as the pimply protagonist and American politics playing the role of Objectivism.

Re: Steve Yegge: Notes from the Mystery Machine Bus

#136

Earlier quoted context omitted.

I 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 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…

Ridiculous 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.

Re: Steve Yegge: Notes from the Mystery Machine Bus

#137

Earlier quoted context omitted.

I 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 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…

My view may be colored by the fact that I'm a raging pragmatist about these sorts of issues who thinks that the right type of solution depends on the project and on the team (i.e. the right solution for mission-critical bank financial transaction processing is likely not also ideal for a high-velocity startup), but my impression was that the idea was for such an axis to be considered as a spectrum, not a simple dividing line for an us-vs-them holy war.

When interviewing and considering joining a team, envisioning a spectrum like this allows you to ask questions to see where a potential employer tends to fall on this spectrum, and thus determine whether it seems like a good fit for how you prefer to work and what you want to do.

And no, this is certainly not the only axis along which one can plot software development, and I doubt Mr. Yegge's goal was to propose that it was. At most it is an axis, and the goal would be for it to be a useful one when leveraged in the right context.

Can people take interesting ideas and horribly abuse them? Well, obviously. One might even argue that an idea that can't be abused by someone so inclined must not be very interesting at all.

Re: Steve Yegge: Notes from the Mystery Machine Bus

#138

Interesting positioning of languages: Assembly language: Batshit liberal. Perl, Ruby, PHP, shell-script: Extremist liberal. JavaScript, Visual Basic, Lua: Hardcore liberal. Python, Common Lisp, Smalltalk/Squeak: Liberal. C, Objective-C, Scheme: Moderate-liberal. C++, Java, C#, D, Go: Moderate-conservative. Clojure, Erlang, Pascal: Conservative. Scala, Ada, OCaml, Eiffel: Hardcore conservative. Haskell, SML: Extremist…

It seems very subjective (and somewhat arbitrary) to assign labels of "conservative" or "liberal" to languages based largely on type safety. If this random blog post is taken as the definitive source of "conservative" vs "liberal" we get the following: Twitter and Tumblr using Scala are "Hardcore conservative", while guys writing assembler for IBM mainframes are "Batshit liberal" ?

I think it has less to do with the language and more with how you use it.

I would venture to say that anyone writing assembler would almost have to be completely conservative to make it work.

Something like Python could be written in conservative fashion (like the article alludes to with Google's style of python) or could be liberal in it's more idiomatic form.

Re: Steve Yegge: Notes from the Mystery Machine Bus

#139
post #43

Earlier quoted context omitted.

> I'm conservative because I dislike complexity Except a lot of conservatism as defined here is all about complexity in terms of 'big design up front' methodology and, really, having a big methodology in the first place, along with having a lot of testing and static analysis tools. Ada is a conservative language. C is extremely, red-diaper liberal.

Sure. I think that Yegge has hit on something real, but I don't agree with where he's drawn the lines. Haskell and Lisp developers have more in common with each other than with "best practices" Java developers. A lot of this is about risk assessment. Business people and engineers don't agree on how to define and measure risk. Business people think Java is the low-risk choice, because the risks are hidden. Engineers k…

I think probably the most important thing to understand about this essay is that "conservative" on Mr. Yegge's spectrum does not correspond to "neophobic", and "liberal" does not correspond to "neophilic."

People who like try different languages are likely to find both Ruby and Haskell interesting -- because they are. And both are interestingly different from the sort of mainstream traditionalist programming embodied by Java, C++, and Pascal.

But if you were doing a new project start on an important project, the gap between the reasons that would lead you to build it using hardcore Ruby metaprogramming with hefty dollops of dynamic dispatch and the reasons that would lead you to build it in Haskell with carefully defined type systems, monadic programming, and purely functional implementation that would allow you to reason more easily about what's going on -- that gap is vast. Which one appeals to you more given a real world problem to solve where the solution matters to you -- that says a lot about you.

Re: Steve Yegge: Notes from the Mystery Machine Bus

#140

Earlier quoted context omitted.

That was the most interesting point for me too. Mobile development has reminded me of the significant tooling benefits of static languages but also the verbosity and awkwardness of said languages. If I could have an IntelliJ-level IDE for Ruby or Python or JS I'd be very happy.

If I could have an IntelliJ-level IDE for Ruby or Python or JS I'd be very happy. The company behind IntelliJ already makes IDEs for Ruby, Python and JS: Python: Pycharm http://www.jetbrains.com/pycharm/ Ruby: RubyMine http://www.jetbrains.com/ruby/ JS: Webstorm http://www.jetbrains.com/webstorm/

I was a rubymine customer for 1.0 and it's good but nothing like intellij is for java. Static typing just makes building good tools so much easier.
Post reply on HN