Price's Law: Why Only a Few People Generate Half of the Results - <AUTHOR> https://dariusforoux.com/prices-law/ <comment><USER2> Doing the work is one thing, assigning credit is another. The phenomenon that some people are 10x at doing the work exists but is rare. It is much more common that people are 10x at getting the credit.

<comment><USER3> Yes, although a sales role is quite easy to measure objectively.

<comment><USER4> Maybe but sales is also a team effort. The best sales person will fail if he/she isn't backed by a big support system.

<comment><USER3> Presumably everybody benefits from that team though.

<comment><USER5> Presumably everybody also benefits from the thing they've made for sell. So...

</comment></comment></comment></comment></comment><comment><USER6> I liked the intriguing idea of how this article started but it did end on a cop-out, "now that I have suggested this phenomenon rather than understanding what causes it so that we can harness it in practice, I invite you (what must necessarily be the majority of my readership if the pattern holds true) to quit your jobs!"

It would be very interesting to work out a probability distribution f(r), 0 < r < ∞ support, such that when sampled N times independently half of the total sum is contained in the top √N terms. Like I would suspect it can be done with long-tailed distributions, though they might need to have an undefined cumulant or so... just that trying to set up that "sum of the top √N" integral sounds very tricky in a way that would foster some clever insight.

But of course the more likely explanation would probably have something to do with network effects. If you imagine that each person is a morphism (or a bounded number of morphisms?) in a category for example, perhaps whose objects are indirectly profit centers, then having N profit centers correlates to having N objects that your company relates, which correlates to N^2 employees connecting them together, so if the top 50% of profit resides in some fixed number of these objects, then only the ~N employees out of the ~N^2 who happen to deal with these "cash cows" would make up half of the profit. To detect this you would want to show that rather than linearly scaling with employees, the returns to scale might show a characteristic pattern of profit versus company size.

<comment><USER7> I suspect a big cause of nonlinear productivity effects like this is the experience and skills required to do the job.

In the example cited, sales, the best salespeople have long-built networks of personal connections. That allows them to bring in deals that new people can't access. It's very different than retail work where it's hard to greatly outperform your peers and little training is needed.

So agree models like this can be created but my feeling is the key aspects of the model relate to experience (related to your cash cow) rather than scale. At least for creative jobs.

</comment></comment><comment><USER8> That's been debunked by examples where hiring (literal) team players that are not shining on their own enhances a team above the level of an 'all-star' team. So why do we keep repeating this nonsense?

<comment><USER9> It'd guess it's because a) it lets us all think we are in the "rockstar" category, which is pleasing, and b) it lets us avoid all sorts of difficult thinking about the system that actually produces the work, and c) justifies unequal rewards, which is entirely useful to the people receiving the rewards.

It's the same reason the myth of the 10x engineer is so popular. I've worked with some people who certainly thought they were the 10x engineer. As far as I could tell, they were just showboats who did highly visible work, leaving little things like technical debt for others. Or the "brilliant" engineer who make things that require high cognitive load to understand, instead of doing the extra work to make them clear. [1] Or who shirk the work of supporting colleagues and building strong teams.

So basically I think these are the people who optimize for the visible success metric, not the ones creating the most value.

[1] Just this week a friend took over responsibility for an internal build system. The previous author had written it in JavaScript. Except that he was really excited about functional languages, so he wrote it in a highly functional style incomprehensible to anybody not used to it. Now this either needs to be mostly rewritten or anybody who wants to work on the build system needs to spend 6 months learning Haskell first. I'm sure this guy looked productive and got to sound brilliant in meetings, but a better productivity analysis would include the significant costs he imposed on others.

<comment><USER10> > It's the same reason the myth of the 10x engineer is so popular.

I understood why people believe the "10x engineer" stories after meeting 0.1x engineers.

(And I don't mean juniors. I mean highly-paid consultants.)

</comment></comment></comment><comment><USER4> This sounds more like a few people getting credit for the work of many people that work in the background.

</comment><comment><USER11> It's probably worth noting that "credit" rather than work is _explicitly_ the relevant concept in play in the formation of Price's Law -- Price seems to have conceived the relationship in the context of looking at academic citations.

"Work done" is certainly one component of having a much-cited paper; you are simply not going to have a relatively large number of cited papers if you have not written a relatively large number of papers. But there's the question of what other factors lead papers to awareness, recognition of value, and citation, and those questions likely don't have a linear relationship with "value created."

Given the description of some of the dynamics involved as a "preferential attachment process" involving "cumulative advantage" ([https://en.wikipedia.org/wiki/Preferential_attachment](https://en.wikipedia.org/wiki/Preferential_attachment) ), Price seems to have recognized this and probably had a different conception than the author of the piece we're discussing.

(Peterson, who the author indicates brought Price's law to his attention, seems to recognize this as well, and sometimes suggests that it's best to assume that people who aren't at the top of some Pareto distribution "P" in contributing value are probably contributing value in some other way that isn't visible to people focusing on P. )

</comment><comment><USER12> There's a basic problem with this:

Price's law doesn't fit the data. (DOI 10.1016/0306-4573(88)90049-0)

It certainly shouldn't be randomly reapplied to things besides scientific publication. Even within scientific publication, the uneven distribution of publications is a result of far more complicated mechanisms than some simple measure of results. Remember, by bibliometric methods, Newton, Feynman, and Perelman are some of the lowest performers ever to work in science.

</comment><comment><USER13> Price's Law doesn't say what the author of this article seems to think.

The marginal utility of hiring additional workers in an organization is smaller for each additional employee. This is both obvious, and completely accounts for the effect on its own.

<comment><USER14> Oh, kind of like the Mythical Man Month, except there the marginal utility at some point becomes negative for each additional employee assigned to a project.

</comment></comment><comment><USER15> These type of results are a consequence of game theory. Given that, I dont know what a popular psychology professor is doing speaking on this subject.

</comment><comment><USER16> Taking the idea that the output is the square root of the number of participants, suggests that three companies of 10 people (3 * sqrt(10) ~= 10) do the same work as one company of 100 people (1 * sqrt(100) = 10). Not unreasonable but it does suggest optimal organizational sizes and the emergence of modular design.

<comment><USER17> A company of 10 will produce an output of 6 if 3 people produce 50% of the work. A company of 100 will produce the output of 20 if 10 people do 50% of the production. So a company of 100 will produce 3 times more than a company of 10.

</comment></comment><comment><USER18> Hire more people for the law to work.

</comment><comment><USER19> Probably depends on the domain. I really don't see it for carrying bricks, but I can totally see it for abstract math research.

</comment><comment><USER7> No no, don't believe Jordan Peterson (main cite in this article). He's a media troll who takes controversial views on purpose and is at the fringes of psychology. [https://www.google.com/amp/s/www.washingtonpost.com/amphtml/...](https://www.google.com/amp/s/www.washingtonpost.com/amphtml/opinions/the- profound-sadness-in-jordan-petersons-antidote-to- chaos/2018/05/09/8e1be3a4-53bd-11e8-9c91-7dab596e8252_story.html)

One of Peterson's main arguments is about college campuses and politics. But 85% of HARD scientists - who have nothing to do with politics - are liberals (2015 AAAS poll). That argues that smart people like those at universities see through right wing propaganda - they've read Orwell and Arendt and Altemeyer and John Dean and "Manufacturing Consent" and understand how propaganda works.

Peterson is toxic and definitely not an intellectual model.

<comment><USER20> You're holding up a liberal rag as evidence that Peterson (a vocal conservative) is a troll. He's not a troll so much as someone on the wrong end of identity politics. Sam Harris and others wouldn't associate with him if your claims were true.

Working with that 85% of "HARD scientists", yeah, they're mostly pretty liberal, but they're just as likely to spout off horrible conspiracy theories and assume all conservatives are backwater inbreds as anyone else. That bias is supremely real, and it's not because scientists have a magical, rational filter against propaganda.

<comment><USER7> I suggest reading Mann and Ornstein on the intellectual foundations behind modern US conservativism. They are both historians of politics and 20 years ago were considered supremely centrist and above the fray. What they say about (American) conservatism is sobering.

Another good source is Josh Greene's book on Bannon. That book describes how Bannon used GOP billionaire money (Mercer) to intentionally try to radicalize young tech-savvy men for the conservative cause. Bannon realized (and Prager around the same time) that with some propaganda he could persuade young mostly-white men to vote for the pro-billionaire agenda of the Republicans.

I won't say more here to avoid getting into politics on HN. But check out those sources for more info.

—-

On the the square root phenomenon, I wonder whether this arises due to the experience required to be very productive at creative work. Factory workers have little ability to be twice as productive as their peers. But the best salespeople and programmers can easily be many times as productive as at the entry-level. There's a nonlinear function of experience and skills.

I bet one could build some automata/stat mech type models of this. (And it's not even clear you need to care about interactions). See if nonlinearities in productivity as a function of experience (and as importantly, luck- and maybe talent) hold in soft fields and creative fields.

</comment></comment></comment><comment><USER21> So by my understanding, if only one person is doing the work, the square root of one is one, meaning they are only doing 50% of the work... Who does the other 50%?!</comment>


Tell HN: The submission dupe detector apparently has been disabled - <AUTHOR> The good news is no more "?hn=1" workaround necessary.<p>The bad news is the 4x Facebook react links on the front page. :p <comment><USER2> We've been experimenting with adjusting it, but that was a bug. No one wants identical links on the front page.

<comment><AUTHOR> Why not both? Have the normal dupe behavior for the first 24 hours a link is present, then have resubmissions beyond that.

<comment><USER2> Yes, something like that should work. The intention is to have the software work similarly to the actual policy, which is that reposts are ok if (but only if) a story hasn't had significant attention in the last year or so.</comment></comment></comment>


Robo-advisers are here. What's a human financial planner to do? - <AUTHOR> https://www.washingtonpost.com/news/the-switch/wp/2015/11/05/robo-advisers-are-here-whats-a-human-financial-planner-to-do/?hpid=hp_hp-more-top-stories_roboadvisers-545pm <comment><USER2> I'm reminded of something Sir Richard Branson once said, "there is always a market for the best in the world, and cheapest in the world". To me this quote implied quite a few things:

1) There isn't much of a chance being 'in the middle' of price and quality-- you'll get beat by competition that focuses on price or on quality.

2) Business is harder at the price end because it's harder to maintain a competitive edge. At this end of the market there are diminishing returns when trying to keep your costs low. You're also at risk of 'technological leap frogging' from competitors who discover a way of doing things cheaper than you.

3) Margins are always going to be tight because there is a race to the bottom.

So, how does this relate to the article? Well I think Robo-Advice is on the 'cheap' end of the market and the solution for human advisers is to go up market.

In this market, economies of scale are based on the size of your clients' investment portfolio.

Sure there will be disruption but there will always be humans who want 'the best' and who will perceive robots to be inferior to humans. The challenge would be to market 'the human touch' as being better than a robot to maintain that perception to your target market.

I think this logic can be applied to most other industries facing the same robot vs human prospects.

<comment><USER3> Often, while the high end of the market is much more profitable, it's also many times smaller.

Before the invention of quartz and digital watches, every watch was mechanical. These days Rolex is still a premium brand and makes a much higher margin than Casio - but the mechanical watch industry is many, many times smaller than it once was.

<comment><USER4> A Casio keeps better time than a Rolex. Casio was in the time-keeeping business, and Rolex is in the men's jewelry business.

</comment></comment></comment><comment><USER5> I've worked for many years in quant finance, and I can totally understand that the ordinary consumer would rather have a robo-advisor.

Costs are lower, and realistically you are not getting special treatment. You will simply be a financial stereotype (old/young etc) and you'd get the advice anyone like you would get. No point in paying a huge fee to have a real person sit there and tell you the orthodoxy.

For wealthy people, you still want flesh-and-blood advisors. They have special deals that even banks can't get, and they understand your needs (private jet, yacht, staff) and can plan around it.

<comment><USER6> Don't you think exactly from lower to upper middle class, what most non- financials first need in a financial advice is Knowledge-Made-Simple? People hardly budget, don't plan, don't know how much their non-financial assets depreciate, etc. Hard to get a robo-adviser to work for you, if you don't know what questions to ask.

I see the upside, robo-advisers make financial advisors (not advice) cheaper and thus financial planning more accesible. But it's hard to get someone to think about a personal risk appetite, when they are financially less than fully literate.

<comment><USER5> Well yes, there's basically no financial knowledge in the general population. Basic stuff like time value of money is simply not known to most people. Then again, most people also don't have any savings apart from a house.

I would suppose any robo-advisor could tell you ordinary things as part of a customer education process.

</comment></comment></comment><comment><USER7> Haven't people effectively been using robo advisers for a long time already, with human financial planers as glorified frontends? I mean often these advisers might just ask their clients for their data, enter it into a computer, and recommend whatever the computer says? So now people just type the information into a web form.

I admit that my opinion of finance advisers is not the highest. I suspect they are often more salesmen than experts on finance, who simply push onto their clients whatever their company wants to sell at the given moment.

</comment><comment><USER8> This is not a binary thing. Its does not have to be robo vs human. The company I work for does robo assisted human advisor to drive costs down.

(www.wealtminder.com) messaging is a little off, we are in the midst of re- doing the entire front page.

EDIT: Other similar hybrids of varying human interaction: Personal Capital, Future Advisor</comment>


Project Harmony's Curiously Flat Tune - <AUTHOR> http://www.h-online.com/open/features/Harmony-s-curiously-flat-tune-1283369.html

<comment><USER2> The first paragraph of this article annoys me.

> Although the concept of copyright is anathema to many free software > advocates, ....

Only ignorant ones. (For those who don't get it: if you don't hold the copyright on a work, then you can't license it, under the GPL or anything else. Copyleft is firmly and inescapably founded on copyright.)

> Copyleft licences like the GPL subvert copyright to ensure source code is > always made available, ....

I'm not sure how it can be considered _subversive_ to insist that the original author's wishes, for how a work is licensed, are enforced by governments.

That said, the rest of the article has some worthwhile things to say.

> And unlike software licences, where there are some leading licences such as > the GPL, LGPL, ASL and BSD, there are no leading agreements; companies and > organisations have created their own documents to get contributors to hand > over their rights, so to donate code meant parsing yet another document full > of legalese.

An excellent point, one worth thinking about. This is especially urgent, now that Harmony is around. Rather than simply criticizing it, it would be good to offer an alternative (or to explain, clearly, how some existing idea constitutes a better alternative).</comment>


Is Hillary Clinton a Progressive? An Investigation Using Statistical Methods - <AUTHOR> https://ntguardian.wordpress.com/2016/10/25/hillary-clinton-progressive-statistics/ <comment><USER2> Looks more center-left to me, especially if she's in the same spot as Obama. Who really considers Obama a progressive, at least when looking at his policies and laws that he's signed, not his sweet talks from 2008?

Even ACA, his "big liberal achievement" was actually a right-wing private industry-focused law, that he mainly copied from Republicans.</comment>


Installing Java 8 on Ubuntu 15.04 - <AUTHOR> http://syscoding.com/tutorials/15/installing-java-8-on-ubuntu-1504/ <comment><USER2> This is the greatest article ever written, by the great human ever born, in the greatest planet in the solar system, which is the greatest solar system in the entire universe!</comment>


An app that empowers people to review Vegan products. They donate $1 per review - <AUTHOR> https://app.adjust.com/41g3mgo?label=5e28af1736c07c00206423d4&fallback=https%3A%2F%2Fwww.abillionveg.com <comment><USER2> Oh I love the idea that you need to _pay_ to leave a review. This way it becomes harder to fake a large number of reviews.

<comment><USER3> Few enough people can be bothered to leave reviews for free, charging for them is going to drive that number even lower. So people paying for fake reviews need to buy fewer to get results.</comment></comment>


Can We Stop Global Warming? - <AUTHOR> http://blog.cityprojections.com/2018/02/can-we-stop-global-warming.html <comment><USER2> I wish for once the Betteridge's law did not apply.</comment>


Airbnb faces $400m lost bookings in London crackdown - <AUTHOR> https://www.ft.com/content/3bedf28e-c63d-11e6-8f29-9445cac8966f <comment><USER2> Airbnb is supposed to be part of the sharing economy, where normal people can share their places to earn some extra money. But now it is turning into a heaven for rentiers to earn money with their redundant properties. Airbnb should have stopped those bookings themselves, not after being forced by local authorities.

</comment><comment><USER3> Random idea. What if, there was AirBnB equivalent endorsed by local city letting it control rules.

Currently AirBnB do some arbitrage based on regulations: change residential zoning to hotel one.

E.g. startup does infrastructure, but let city control what going on in exchange for enforcing rules. AirBnB seems easy to crack down as almost all listing are semi-public.

<comment><USER4> Then it would never work, ABNB works because it has these margins to play with - the cost differential between running a business and just subletting a residential property.

You don't have to pay the premium that comes with regulation, you pay lower taxes (if at all), you don't have to have special insurance, trained staff, meet stricter public safety regulation etc.

This is why ABNB works if the property owners on ABNB had to meet the same standards as a hotel or anything close to that they would be considerably more expensive than hotels because they don't do that at scale while most hotels do.

</comment></comment><comment><USER5> [https://www.google.ch/amp/s/amp.ft.com/content/3bedf28e-c63d...](https://www.google.ch/amp/s/amp.ft.com/content/3bedf28e-c63d-11e6-8f29-9445cac8966f?client=safari)

</comment><comment><USER6> This article is not even accessible from google.com :(

<comment><USER7> It is for me.

</comment></comment><comment><USER8> How do paywalled articles get to the frontpage? Is there a prevalence of ft.com subscribers on HN?

<comment><USER9> HN puts a convenient, though subtle, "web" link on the comment page that bypasses the paywall by Googling the title.

<comment><USER8> That link doesn't work for me.

</comment></comment></comment><comment><USER10> So apparently I have to subscribe first in order to read the article... NO, thank you.

</comment><comment><USER11> Stop posting paywall please. Otherwise its simply an add for a subscription service.

<comment><USER12> Paying for news is arguably one of the ways to improve news quality, and quality news is valued by many HN users. The submission includes the source. If you don't want to visit a paywalled source, HN already provides you with the information you need to make that decision.

Here's a comment from 'dang (one of the HN mods) on this topic from about a month ago ([https://news.ycombinator.com/item?id=13057425](https://news.ycombinator.com/item?id=13057425)):

 _Paywalled articles are different. That 's a settled matter on HN. The rule is that paywalled articles are ok when there's a workaround:

[https://news.ycombinator.com/newsfaq.html](https://news.ycombinator.com/newsfaq.html)

[https://news.ycombinator.com/item?id=10178989](https://news.ycombinator.com/item?id=10178989)

Yes, the paywalls suck, but it would suck worse to deprive HN of the better NYT, WSJ, Economist, New Yorker, etc., articles._</comment></comment>


Your Code is My Hell - <AUTHOR> http://avdi.org/devblog/2011/08/22/your-code-is-my-hell/ <comment><USER3> Ruby has such wonderful evangelists that somewhere along the line I had gotten the idea that all Rails projects had 100% test coverage, and refactoring was a matter of course. It's kind of a relief to hear that not only do not all projects live up to the ideals, some are the exact opposite.

Knowing that, maybe I can go a little easier on myself when I fail to live up to the ideals, and simply keep on striving without having to feel that I am obviously an inferior coder.

<comment><USER4> Again, it's about maturity. _Every_ popular young platform has a relatively large amount of evangelical fervor and a relatively small amount of real-world long-term experience. Java was no different, years ago.

<comment><USER5> The two Rails programmers I've met didn't know Ruby itself very well. Also both had to bow out of their contract jobs because neither could build a functioning CMS in less than a year. When I talked to them it sounded like they were kicking ass and getting things done, but they were just vomiting buzzwords apparently.

When I started using PHP ten years ago, I inherited an existing project. Two days into it I thought to myself: "PHP is kind of like Perl, but less useful." I guess I missed the PHP hype phase. If it had one.

I've never been a language evangelist. I just solve problems with whatever technology is most appropriate for the case.

</comment></comment></comment><comment><USER6> I've had my fair share of refactoring legacy code bases as well, and I agree that Rails code is a special kind of horrible. I think you will find that this primarily traces back to the following observation:

Rails developers read GoF and think "object composition is awesome!" Then they go and create a bunch of acts_as_foo and has_bar modules which they mix into their models and controllers, all the while thinking "object composition is awesome!" Meanwhile, it never occurs to them that modules are, in fact, closer to multiple inheritance than object composition, and all the wonderful benefits of object composition that GoF touts are nowhere to be found. Instead, what's left is a giant plate of spaghetti code...

<comment><USER7> Spaghetti code is procedural-- what you see in Ruby is ravioli code :)

<comment><USER8> Lemee guess; Bash scripting is shells and cheese?

<comment><USER9> I don't know if Cushman was referencing this, but it seems reasonably likely: <http://c2.com/cgi/wiki?RavioliCode> "It has been said that with objects you get RavioliCode: thousands of little classes everywhere and no one knows how to find the places where things really happen."

</comment></comment></comment></comment><comment><USER10> I think the majority of the points here (which are good!) can be summed up with the "You are not a special snowflake" heading.

This particular form of arrogance (let's call it what it is) permeates throughout most sub-communities of CS programming. Ruby is just one tribe. Lispers are another. Game studios, web app developers, a different product team inside the same company, [insert pretty much any other here]... they all believe/rationalize that they are different to Java, and thus have nothing to learn from all those enterprise projects. Even HN has a particular anti-unit testing tribe that will turn up as soon as any article appears that says "Hey, Test Driven-Development is pretty good, huh?" who will complain that testing hurts velocity (it doesn't, see Etsy for a great example).

It's an arrogance that inevitably leads to the issues brought up in the article, taking out a huge technical debt that some other chump has to pay off. I'm not sure how this will ever change. I guess the conclusion is just to try and make sure you're not the chump.

<comment><USER11> Which side of the example is Etsy supposed to be for that, exactly? They make a lot of changes, and supposedly do a lot of testing, but if you're actually paying attention to what's going on there (and the overlap between Etsy fanatics and people who know what TDD is are pretty small) they have constant stream of small problems. Many people I know who are serious Etsy users complain that the site changes too frequently, has tons of glitches and is confusing - most serious ones were overwhelmed years ago. Just thought I'd let you know since you're using them as an example of something.

<comment><USER10> _I know who are serious Etsy users complain that the site changes too frequently... and is confusing_

Well, I used the example in the context of velocity, not necessarily in whether the users are happy ;)

The glitches are more of a concern, but that might be a hardware issue for all we know.

<comment><USER12> Oh, you meant speed. Velocity includes direction.

<comment><USER13> No it doesn't. Well, I mean, sure, it does in the context of physics, but in regular English speed and velocity are pretty much the same thing.

On the other hand, velocity has a specific and well-understood meaning within agile software development, and that's what the antecedent post was referring to.

Of course, if you were just being snarky and implying that Etsy are completing plenty of nominal work without it resulting in any actual progress, then carry on :-)

</comment></comment></comment></comment></comment><comment><USER14> I've said it before, I'll say it again - in 5 to 10 years, people will view RoR as they view PHP today - as something that's ruined a lot of programmers.

How much of this sounds familiar?

> "Design Patterns are a Java thing. In Ruby you just write code."

> "The warnings Ruby produces are dumb; just disable them."

> In a way I think this is a testament to the power of the platform. If you're > getting a 500 error in a Rails app, you can keep adding kludge after kludge > and hitting "reload" until it works. No need to ever write a test or > refactor. In languages and frameworks with a lower turnaround time, this > kind of tweak-it-till-it-works workflow is simply impractical. Ruby on Rails > has an impressively low barrier to fiddling.

<comment><USER15> That's a bit trite, don't you think?

This is all a religious war, but at the end of the day something like Rails enables you to come a lot closer to "good design, good programming" than many other systems currently in use, i.e. your less than favourite PHP or Java framework here.

I think that someone who honestly believes PHP has RUINED them may be a bit of a tool. We're programmers, we can figure it out.

<comment><USER14> > at the end of the day something like Rails enables you to come a lot closer > to "good design, good programming" than many other systems currently in use

The same thing's been said about PHP.

And sure, PHP ruins programmers like BASIC does - not at all, if they've some brain cells they can rub together. But it does teach shitty habits which can take time and effort to forget.

<comment><USER15> Right.

I'm just not sure there's much to Ruby or Rails that ingrains shitty habits, but I'm biased.

It does give you ample rope to hang yourself with, though.

</comment></comment></comment></comment><comment><USER16> The underlying issue is the attitude that if you manage to get some sort of process bound to a TCP port that produces HTML, you have nothing else to learn about programming. Then you join mailing lists and say stuff like "the law of demeter is bullshit" and then "unit testing is too hard, so I don't bother". But in reality, if you actually tried to make unit testing easy, then you'd independently discover the law of demeter and most of the other design patterns, and you wouldn't be telling other people that testing is too hard. It's hard because you don't care and haven't tried to do it. Or, you're bad at programming and it's time to pick a new career.

Either way, there is always new stuff to learn. It may crush your ego to learn something new, but in the end, it's a lot easier to read a book or Wikipedia article than to independently reinvent programming. Or maintain that app that's "too hard" to write unit tests for.

<comment><USER17> That's what I love about Haskell: You'll never get the impression that you learned all there is to it.

Understood monads? Good, try your hand at monad transformers, arrows, continuations, zippers, enumerator based IO...

</comment></comment><comment><USER18> This is what happens whenever a language is seen as a hot ticket to a good job. It happened with PHP back in the late '90s where thousands of people were learning to program on customer's web projects. The problem is in some cases worse with Rails because of the attitude of _some_ of the leaders in that community which are imitated by too many of the followers; confidence does not always equal competence.

</comment><comment><USER19> Random: I found out recently that Ruby has no unified test output standard, and that every tool makes up its own o_O

Not only this, but there is active resistance to useing something like TAP.

<comment><USER20> What is TAP?

<comment><USER16> The Test Anything Protocol: <http://testanything.org/wiki/index.php/Main_Page>

<comment><USER20> One of the frustrating parts of the technology industry is that it moves so damn fast, and people love acronyms. As a result, a new acronym every day.

It looks like an interesting tool, I'll investigate it.

<comment><USER16> TAP has been the testing protocol for the perl core since the late 80s :)

</comment></comment></comment></comment></comment><comment><USER21>
        "Dividing methods into private and public is for control freaks, you don't need it in Ruby"

Coming from a Python dev's perspective, does Ruby have the concept of public/private? Python just has the underscore and double underscore conventions: if you absolutely have to you can use the "private" variables and methods, but in doing so you still understand that it might change without notice in future versions. "We're all adults here" is the the motto, if I recall.

<comment><USER22> Strictly speaking ruby, _private_ only forbids calling the method in question with an explicit receiver.

 _object_instance.private_method_ is obviously prohibited, but so is _self.private_method_ when called from another class method. The latter one is fine when _private_method_ is called, without the self. To circumvent privateness in the other case ("calling an underscored method") you would have to say _object_instance.send(:private_method)_.

<comment><USER23> Luckily there's also protected, which allows you to call with an explicit receiver, but only from an instance of the same class (or within its hierarchy).

</comment></comment></comment><comment><USER24> Didn't Zed Shaw predict this before?

Anyhow, personal recent experience on using a plugin that is an API to some webservice:

\- Lots of static methods

\- Code structure is awful

\- Documentation is non-existent

... and I rarely use Rails let alone learn Ruby yet I can see how horrible that plugin is.

I heard I'm not alone when it comes to the discussion of the quality of plugins out there.

I don't mean to bad-mouth Rails framework because it is a well-thought project (let's not discuss the internal code). But as many who have been in this industry for a while, we kind of know that this is coming sooner or later.

Python code, in many places, seem to have a good balance of pragmatism, UNIX culture, and discipline.

Having said that, Rails 3.x seems to mark a change in attitude from the Rails core team. They're starting to address issues and stabilize the framework for the better. Let's hope the rest would clean up as well.

</comment><comment><USER25> From the article: "In fact, offhand I can only think of one commercial greenfield Ruby project I've participated in."

I can say the same of C, C++ and Python in the context of my personal work history. Is Avdi's experience so unusual in the Ruby world? It seems that most development jobs primarily involve working on other people's code if the language has been around for any time at all.

 _Edited to add_ : I've also seen everything listed in the "But Rails is different!" section in every commercial project I've ever worked on. I suspect most developers that just want to hack away on commercial code without any discipline end up having nearly the same set of justifications, no matter what language they're using. (Especially that bit about ignoring/disabling warnings.)

<comment><USER26> With a young language, the ratio of people working on greenfield projects to legacy projects is going to be higher than with an old language.

<comment><USER25> Sure, but that's why I mentioned Python: Ruby is only 4 years younger than Python, but I haven't run across that many greenfield projects that involved Python.

Of course maybe I just haven't looked in the right places. :)

<comment><USER27> I think Python developed a little bit more gradually. Ruby was a little slower at first, and then shot up like a rocket.

I have no data to back that up, but it certainly seemed to happen that way.

<comment><USER28> Is it significant that Ruby on Rails seems frequently learned "framework first, then language" -- many people first learn Rails, then go to work learning Ruby. Whereas I think frameworks like Django are learned by people already familiar with Python. It's possible that folks can more easily get through the hassles and design questions posed by unit tests with a better grounding in the underlying language.

<comment><USER29> > Django are learned by people already familiar with Python

If only that were true. Like the OP I've been working with mostly legacy Django codebases the last few years and much of the same issues he raises could be applied to those projects as well.

</comment></comment></comment></comment></comment></comment><comment><USER30> Worth it all for the subsection titled, "You are not a special snowflake"

</comment><comment><USER31> My take on this is that the excesses of enterprise Java poisoned a generation of programmers' opinions about static typing. We're going to see people start rediscovering the benefits of static typing in a sane framework as more of these kinds of projects hit the wall.

</comment><comment><USER32> I wish I had 10 accounts so I could give you 10 +1s!

I guess those who forget the past are doomed to repeat it.

It's funny, principles of good programming are about as old as programming itself and yet everyone seems to feel the need to rediscover them periodically.

If you look at some great __nix utilities, they should "do one thing and do it well". Hm, sounds like Single Responsibility Principle.

Dependency injection? Funny, reminds me a lot of __nix pipes.

So to me the moral of the story is: programmers with experience and an open mind will tend to make good decisions. Inexperienced programmers just need time if they're willing to learn.

And arrogant jerks will always make messes.

<comment><USER17> Yes. Though principles tend to change. For examples Unix' "No news is good news" started because IO was slow via teletypes. Now we keep it, because it makes piping easier.

Also nowadays you can afford to value simplicity over speed in so many more places.

</comment></comment><comment><USER33> I've been doing rails for a long time.

My biggest advice, use rails plugins sparingly, and when you do ensure they are well maintained. Nothing is worse than an old rails project that is using 20 plugins and you need to update it to a new major version of rails.

<comment><USER13> So very true. Almost all the misery of maintaining and upgrading a Rails app comes from the interactions between plugins, each other, and Rails.

Why is this? I don't know exactly. It could be the way that plugins tend to manipulate multiple layers of the stack and tend not to use clearly-defined public interfaces. I suspect that more of it is the fact that plugins are the self-promotion tool of choice for the jobbing Rails developer: they fall from grace as quickly as they rose, abandoned by the developers to whom they gave a leg up, supplanted by a new, different plugin with an obviously - <USER2> agrees! - much more correct way of solving the problem. Meanwhile, your old Rails app is dependent on a dozen pieces of decrepit abandonware.

<comment><USER34>
        Why is this? I don't know exactly.

Monkeypatching! It's all fun and games until someone else decides that monkeypatching #poke is also what _their_ gem or plugin needs. Then, of course, you start accidentally #poke'ing your Eye when you least expect it, and cannot figure out from where or why...

</comment></comment></comment><comment><USER35> Not sure that's a good title for the content...

But it's certainly true that sloppy code can be produced in any language.

<comment><USER32> To me what the article is highlighting is a certain blindness on the part of many Ruby coders. My first language of choice is Ruby, so I'm not trying to spread hate here.

That said, I've encountered many times where a Rubyists first reaction to anything Java is "oh that's terrible" but anything implemented in Ruby _must_ be beautiful, just because it's Ruby. Clearly, that is not true and yet people believe it over and over again.

Also, if you look at a lot of the developments in the Rails world over the past few years, they've been running into problems long solved in the Java world, but only now have Ruby projects been getting big enough to warrant general purpose solutions.

A perfect example is Bundler. It's basically Maven for Java, but it took the community a while to realize "hey, managing libraries is a pain, we need a tool for it".

So as Rails grows up, hopefully it won't forget that many other communities have solved similar problems before it.

Sometimes it's almost as if Rails invented the Internet. :)

</comment></comment><comment><USER36> That JS on page crashes IE8.

<comment><USER37> I had someone else report an IE7 crash recently. I wish I could narrow down WHICH JS is the problem. It's just stock WordPress+various widgets.

<comment><USER38> Yikes - IE 8 really crashes. Here's the console output from IE9 developer tools when changed into IE8 Standards mode:

      SCRIPT438: Object doesn't support property or method 'indexOf'
      github-badge.js, line 59 character 7

      SCRIPT438: Object doesn't support this property or method
      badge.js, line 47 character 7

      SCRIPT438: Object doesn't support property or method 'getElementsByClassName'
      embed.js?pname=wordpress&pver=2.61, line 35 character 78

      SCRIPT438: Object doesn't support property or method 'getElementsByClassName'
      embed.js?pname=wordpress&pver=2.61, line 35 character 78

So, hopefully that gives you a starting point. The IE9 developer tools are much improved over previous iterations.

Interestingly enough, when I switched it into IE7 mode, only the first two errors appeared.

<comment><USER37> Thanks! I've queued this for a closer look.

<comment><USER39> Its still crashing..

</comment></comment></comment></comment></comment><comment><USER40> I would be interested in a comparison with Python projects.</comment>