
The perils of programmer education in the bazaar - timblair
http://blog.practicingruby.com/2015/06/04/the-perils-of-programmer-education-in-the-bazaar/
======
walterbell
_> Because being highly skilled at both writing and software development is
rare, those who can do it well are often get the most attention and influence
from the software world, turning these folks into “thought leaders” that drive
the overall direction of the community._

Improving writing education can increase the pool of software developers who
write/teach well. Teaching is often an excellent way to learn, because writing
helps to structure thought.

 _> Producing high-quality educational resources is obscenely, ridiculously
difficult and time consuming. So the people who can invest the effort are
typically either from a position of economic advantage, or are backed by
monied interests._

This is a challenge in any "commons", where code/prose content (marketing) is
often funded by ancillary revenue/income/objectives. How are libraries funded
and how do librarians decide which topics are curated by those funds?

 _> Those who are doing original research, particularly things that are
experimental or exploratory in nature, are not well supported at all._

This is a subset of the broader challenge of long-tail discovery, which
afflicts many smaller code/app/media publishers who lack marketing budgets and
expertise.

 _> We must find a way to bring programmer education out of the marketplace,
and into the commons. How should we go about doing that?_

How about finding ways to compensate those who already produce valuable
content in the commons, so they can have more time to do what they already do
well?

~~~
sandal
Very thoughtful feedback, thanks!

Related to your last point:

> _How about finding ways to compensate those who already produce valuable
> content in the commons, so they can have more time to do what they already
> do well?_

This is actually what I've been trying to do with my own reader-funded project
([http://practicingruby.com](http://practicingruby.com)). I've been modestly
funded for five years now to produce free documentation for Ruby programmers
(and really anyone who is interested in software development that can read
Ruby).

Occasionally, we've paid contributors to help us publish articles. Right now
I'm trying to do a Kickstarter to give us some seed funding to really expand
the number of contributors we can work with, and my existing subscription
revenue will fund me so that I can assist these folks with editing, research,
code cleanup, etc. That helps expand the pool of potential contributors,
because folks don't need to be expert programmers or writers, they just need
to be working on something interesting and willing to try to share their
knowledge and experience with others.

Those who want to support the contributors fund are welcome to do so here:
[https://www.kickstarter.com/projects/828998531/practicing-
ru...](https://www.kickstarter.com/projects/828998531/practicing-ruby-
contributors-fund) \-- 100% of this money will go to the authors of the
articles, I'm not keeping any for myself.

~~~
paulhauggis
"How about finding ways to compensate those who already produce valuable
content in the commons, so they can have more time to do what they already do
well?"

The tech community has seen to it that this doesn't happen with: file sharing
of copyrighted material and adblock.

You can't first destroy entire industries in the name of 'freedom of speech'
and then cry about how you can't make money in those industries any longer.

Content is now cheap and it's only getting worse. Which means content
providers will be forced to take on jobs that they don't actually want to do
(or are necessarily good at) to survive.

~~~
sandal
My own interpretation of this is that since the commercial sponsorship and
advertising supported model is a race to the bottom, we need to be looking at
alternative models that are focused on social benefit first.

We do have Wikipedia. It would be nice if there were hundreds of such examples
out there.

------
nostrademons
For those who want a good free programmer education and are willing to put in
some work to get it: look at source code, not blogs, and work on projects
_with_ experienced programmers, don't just read what they write.

There's a natural alignment of incentives when you're working on the same
codebase as someone who actually knows what they're doing. Any mistake you
make, they have to fix, and so they have good reasons to see you get up to
speed as quickly as possible.

Another good heuristic for online forums and comments: the shorter the
comment, the greater the chance that the person actually knows what they're
talking about. Experienced people often might throw out a quick correction
because it costs them nothing, but have no desire to get into a big debate
because their time is more valuable than that.

~~~
dbpokorny
> look at source code

A smart high-school student who enjoys a challenge comes up to you and asks
which projects to look at, and (if you say more than one) which one to start
with. What do you say?

~~~
nostrademons
Best option is actually to get a job where you'll be working with other senior
programmers and then understand your company's source code. That's how I did
it - my first job had Ken Arnold as the CTO, then when I got to Google I'd
lurk on Jeff Dean or Rob Pike's code reviews (everything is public internally
at Google, you can see what everyone's working on). The big advantage of this
is that you understand the business context behind the code; it's really hard
to understand code in isolation without understanding the purpose behind the
code and the goals for which it was written. A secondary advantage is that
you've got ready-made mentors.

If you can't get a job and need to go the open-source route, then Rust,
Chromium, V8, Django, and the Linux Kernel are all good options. Again, the
guiding principle is to pick software where you're familiar with the _outside_
, so you have context when you go look at the _inside_. Reading software in
isolation is hard, so you're often best off volunteering to fix a couple low-
priority bugs on the bug queue, and then diving in to start with them.
Existing volunteers will often point you to the right spot in the code to get
started if you're doing productive work for them.

~~~
Dewie3
Nice name-dropping in the first paragraph.

------
nordsieck
1\. Don't ever use the phrase "as a community" unless you carefully define it
first.

2\. What, specifically, about a flea market is bad. If the complaint is about
quality, I'll refer you to Sturgeon's law.

3\. You're going to need to explain the competitive vs cooperative comment,
right now I have no idea what you are saying.

4\. Your comment about "blogging, teaching and tweeting" is true, but I think
it is clearly an improvement compared to the previous system. Portfolio based
systems are almost always better than credential based systems.

5\. I'm not sure who's making money selling pick axes to starry-eyed bumpkins,
but all of the development tooling I use is free. Almost all of the online
tools I use are prices such that individual use is free and corporate use
costs money. Not sure what you're talking about here.

In summary: It seems like your basic thesis is that the world isn't equal
because some people are better at communication and self promotion than
others. I'm not really sure why you think the world could be another way.

~~~
sheepmullet
"4\. Your comment about "blogging, teaching and tweeting" is true, but I think
it is clearly an improvement compared to the previous system. Portfolio based
systems are almost always better than credential based systems."

Are they really though? On what basis?

99% of my best work can't form part of my portfolio. I spend 2 hours of my own
time on L&D each week day. Maybe 30 minutes of it is on projects I could
present. In a year that's ~120 hours max. I'm not going to be doing anything
really impressive from a portfolio POV with less than a month of full time
work put into it.

Even worse is the trend I'm seeing where people drop the Learning from L&D
altogether so they can invest more time into presentable projects. It is
stunting their growth as developers... even as it improves their hireablility.

~~~
nordsieck
To be clear, the previous systems is getting a BS in computer science from
some university, or a bunch of certs from companies like Microsoft.

There are certainly problems with the portfolio model, but I've never heard
anyone seriously argue that it's worse than credentials.

~~~
sheepmullet
Credentials vs portfolios isn't an either or argument. And "worse" is a loaded
term.

If you have the credential of an undergrad degree at MIT with a good GPA,
combined with a credential of working for Google for 5 years, there is a very
high likelihood you are a good engineer.

On the other hand if you have made serious contributions to the Linux kernel,
there is a very high likelihood you are a good engineer.

But most developers don't go to MIT and work at Google. And they also don't
make serious contributions to large open source projects. For most developers
credentials and portfolios are not effective methods of hiring.

------
marcus_holmes
I don't see the problem... we've got lots of free educational material,
catering for all learning styles, and lots of commentary on it by others to
help assist you in choosing what to use.

People are learning to code in record numbers

Teaching someone else to code has never been easier (and is getting easier all
the time)

What exactly is going wrong that needs fixing?

~~~
sandal
I feel like I addressed this very directly in the article, but I'll repost the
main points of "what's wrong" here for further discussion...

 _This economic model is so ingrained in our DNA, that we hardly ever question
it, and many would go as far as to hold it up as a triumph. But the truth is,
even if this system works at the grand scale, it’s hurting both learners and
teachers in countless subtle and not-so-subtle ways. Here are just a few:

1) The system we’ve created is assumed to be a meritocracy, but is actually
driven far more by popularity and market trends than it is by the quality,
relevance, depth, and effectiveness of our learning materials. Although it is
far from a zero-sum game, the current model is much more competitive than it
is cooperative, and so suffers the consequences that come along with any
competitive environment.

2) Because being highly skilled at both writing and software development is
rare, those who can do it well are often get the most attention and influence
from the software world, turning these folks into “thought leaders” that drive
the overall direction of the community.

3) Producing high-quality educational resources is obscenely, ridiculously
difficult and time consuming. So the people who can invest the effort are
typically either from a position of economic advantage, or are backed by
monied interests.

4) As a result, the materials that get produced, and the topics that get
covered widely are based on where the money and social buzz is at right now.
Those who are doing original research, particularly things that are
experimental or exploratory in nature, are not well supported at all.

5) Because we’ve tied blogging and teaching and tweeting to hireability,
plenty of people enter into the bazaar not because they particularly want to,
but because they must do so in order to “prove their worth” to potential
employers or clients. Again, this clearly benefits those who have lots of time
and resources to burn, and burdens everyone else with massive amounts of
shadow work. We cannot be surprised at the lack of socioeconomic and cultural
diversity in light of this point.

6) The success of the few enables the selling of dreams to the many, creating
a cottage industry of infomarketers. In effect, these are the folks who sell
pickaxes and maps to gold prospectors, and it’s no surprise that their
business is booming. Some of these folks are brilliant and insightful, but
many are hucksters.

In light of all this, we cannot say “this is just how the internet works”, as
true as that statement is now. We have to ask, how do we make things better
for our future selves and those who will come after us down this road?_

~~~
marcus_holmes
OK, yeah, I don't agree with your basic premises at all then. I read all these
points the first time and was left with "and the problem is what?"

People who are good at writing educational materials need to be paid to do
this, because it's hard and takes a long time. I don't see any possible
objection to this.

Since money and social "buzz" follow the interest of many people, it seems
obvious to me that the educational resources should be focused on those areas
instead of periphery areas that few people are interested in.

Other people have said this, but favouring people with good communication
skills in the job market is part of a functioning meritocracy.

The reason for the lack of diversity has very little to do with educational
resources available on the internet and much more to do with cultural
attitudes in the West. SE Asian countries have much greater participation by
women and they use the same teaching resources.

I smell a political ideology being thinly justified by some talking points
here. But I'm open to being wrong...

~~~
sandal
> _People who are good at writing educational materials need to be paid to do
> this, because it 's hard and takes a long time. I don't see any possible
> objection to this._

I have been paid to do this for five years with practicingruby.com, without
ever relying on commercial support. It's 100% reader funded and reader
focused, and it's the largest open-access library of Ruby-related articles
you'll find in the world.

> _Since money and social "buzz" follow the interest of many people, it seems
> obvious to me that the educational resources should be focused on those
> areas instead of periphery areas that few people are interested in._

Everything that is popular and commonplace now was a sparsely populated
frontier before. Some folks need to venture into that territory now so that we
all benefit from their explorations in the future. It would be nice to keep
them well supported, if we want to maximize the benefits we'll reap in the
future.

> _Other people have said this, but favouring people with good communication
> skills in the job market is part of a functioning meritocracy._

Helping people with good ideas and a good work ethic is a job we can and
should do if we possess the means to do so. The exception may not prove the
rule, but I suppose you can say that my communication skills are adequate
given that this is my essay we're discussing on the HN front page.

The only way I got to where I am was through support of mentors and colleagues
who had helped me in the early 2000s, when free and open source software was
predominantly a _hobbyist_ activity and not a commercial activity. There was
at that time a real sense of doing things for the common good, rather than
just to serve your own interests.

And as I've said before: we rank on the first page at Practicing Ruby for the
google search term "infrastructure automation", we're on the first page for
"actor model", first page for "Law of Demeter", etc. Several of the
contributed articles we've managed to drive so much traffic to are by people
who consider themselves intermediate developers, and amateur writers. I've
used the money from my paying supporters to: pay contributors for their work,
help them edit, revise, and polish their work, and reach a larger audience
than they would have on their own. This model does work! It's just hard to
sustain because it's so foreign to most people.

I won't even entertain your comments about the lack of diversity, because it
reveals your ignorance on the topic, and lack of concern.

~~~
marcus_holmes
I run the local RailsGirls event here

~~~
sandal
If that's the case, I'm curious to hear your thoughts on two things:

1) If you don't think that gender diversity is strongly related to education,
why are you participating in a group that's designed specifically to address
that problem?

2) Are there not qualified female candidates for running RailsGirls in your
area? If not, why do you think that's the case?

~~~
marcus_holmes
I got halfway through writing a reply and then the thought struck me "why am I
wasting my time arguing with someone on the internet?"

You're doing good work, keep it up, have a great life.

------
sandal
I'm the author of this essay. Happy to discuss this topic with anyone, even if
they disagree with my points!

~~~
rilita
There is a way to fix the problem that you are observing:

1\. Create a "subweb". It is composed of the following

1A. A new specification for the publishing of information in complete form (
read structured content published together with templates to present them )

1B. Both server and client systems that implement the new specification over
some sort of modified http but without using current DNS

1C. A free distributed un-filtered un-policed distributed DNS alternative

1D. A complete hierarchical index of all content existing in the new system

1E. A free distributed search engine allowing submission of content within the
new system.

2\. Make it clear the new system is for free content only

3\. Disallow advertisements on it entirely

4\. Tie in accurate hashing and allow people to dedicate as much hosting power
as they are willing ( either to the content itself or index data to what
hashes represent what )

5\. Make it entirely secure with a public/private key system allowing people
to establish meaningful identities within a system where their content is
copied eternally.

6\. Use the new system yourself to publish meaningful non-shit information and
encourage your friends to do the same

By the way I really like your article and I think you are pointing out a
crucial problem spot on that most people are oblivious to.

The easiest way to think of what must be done is just to look at what
libraries are. Organizing information has been done by libraries for thousands
of years and has a fairly established sensible process. ( which is being
ignored by the internet )

~~~
walterbell
1A: Wikipedia, github (e.g. awesome-*)

1B: named-data networking, camlistore, ipfs.io, bittorrent's web -- very easy
to censor since all content is uniquely identified by a hash

1C: ?

1D: Usenet, Wikipedia, Wikidata

1E: technically difficult, see history of YaCY and [http://juretriglav.si/an-
open-distributed-search-engine-for-...](http://juretriglav.si/an-open-
distributed-search-engine-for-science/)

2: Wikipedia, but content is rejected under arcane citation policy

3: Wikipedia, but content is rejected under arcane citation policy

4: [http://ipfs.io](http://ipfs.io) &
[https://crowdprocess.com/](https://crowdprocess.com/)

5\. blockchain publishing

6\. standard challenge of bootstrapping user-generated content in any new
online network

The role and funding of libraries have changed over time and across cultures,
e.g. being associated with cities or nations, being associated with
universities and churches. Current libraries are struggling to retain access
to book stacks, e.g. look at the history of the successful community fight to
prevent the flagship NYC library from removing many of its books.

~~~
rilita
I agree completely that many aspects are covered by existing technology. The
difficulty is in making it such that all of this can exist as a simple set of
open source binaries regular people can run ( not computer experts )

The system has to be brainless to use if it is going to succeed at all, and it
has to have enough initial buy in to be worth bothering with initially.

Wikipedia as you have pointed out has arcane crazy policies that restrict it
from having user generated content. It claims to only be a replication of
printed articles. That is lies, but it is a pain in the butt to actually get
valuable content into it and not have it removed.

Usenet suffers from not having structured data, being just chunks of text.

Github suffers from refusing to host binaries except for in weird cases (
there is a binary build hosting I think?? )

Bittorrent suffers from still being attached to hostnames for the most part (
I'm aware of the distributed system it has too but you typically can't get
many seeds through it )

Most systems that allow content suffer from having copyrighted data on them.
The goal of this would be for it to be publicly known that there is no
copyrighted data, such that universities and such would be willing to run the
distributed server, and censorship could be stopped by enough people running
it globally.

I'm not focusing on funding of libraries so much as the fact that they have an
established set of categories to put information into. There is no such
standardized list of categories for websites to go into, and the creation of
such is important to the future of the internet.

~~~
walterbell
Good point about university hosting and a clear boundary for copyright-cleared
content. Archive.org has made progress here, although their discovery tools
have much room for improvement. You would end up needing something like
YouTube's "Content ID", since anyone can tweak a few words and resubmit
content to create a new hash. This implies a need for distributed moderation,
human+algorithmic. Much can be learned from the SEO industry,
[http://searchengineland.com/fooled-us-google-no-longer-
annou...](http://searchengineland.com/fooled-us-google-no-longer-announces-
major-algo-updates-217494)

On the topic of categories: once upon a time, dmoz was an open competitor to
Yahoo, when hierarchical categories were used for discovery. It's now the Open
Directory Project: [http://rdf.dmoz.org/](http://rdf.dmoz.org/) . Google
acquired the best-in-class open data graph FreeBase and later killed it. The
data has since moved to Wikidata, which is the closest we have to an open
version of the proprietary semantic graphs which have been constructed by
Google, Facebook, Bing, Diffbot, etc. Some related ideas at
[http://openknowledgegraph.org/](http://openknowledgegraph.org/)

Agreed that end-user deployment and usability need to be brainless and the
system must be initially seeded with high-quality content. Usability is
expensive and often specific to vertical market segments, hence would be best
implemented by competing commercial applications which operate on the public,
open, distributed data. But there would be the risk of commercial
centralization (like Github/Gmail) of the open protocol.

It will be a challenge to orchestrate the boundaries between commercial
software and open content, but this dynamic is arguably responsible for the
construction of the entire Internet. We need to find balanced and stable
boundaries between commerce & commons, because neither is going away.

------
dbpokorny
Programming talent is developed through practice, and in order to practice,
you need a foundation. This book gives you a good foundation:

[http://en.wikipedia.org/wiki/Structure_and_Interpretation_of...](http://en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Programs)

SICP is an extraordinarily difficult book; "Simply Scheme" by Brian Harvey and
Matt Wright is a good stepping-stone.

