5 ms·
The perils of programmer education in the bazaar
- sandal 11y agoI'm the author of this essay. Happy to discuss this topic with anyone, even if they disagree with my points!
- rilita 11y agoThere 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 11y ago1A: 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-science/ http://juretriglav.si/an-open-distributed-search-engine-for-... 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 11y agoI 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 11y agoGood 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-announces-major-algo-updates-217494 http://searchengineland.com/fooled-us-google-no-longer-annou... 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.
- nordsieck 11y ago1. 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.
- exelius 11y agoI agree with you. In the real world, communication skills are important. Far more issues are caused by poor developer communication than by poor coding skills. Blogging, teaching and tweeting help you build those skills. Coding is only one part of development, and it's by far the easiest part to master.
- sheepmullet 11y ago"Blogging, teaching and tweeting help you build those skills" Yes, at about 5% of the speed you could learn by actually working on your communication skills with your colleagues on a day to day basis.
- exelius 11y agoThere are different types of communication. You certainly can learn interpersonal skills that way, but blogging is a great mental exercise on getting your thoughts on paper. The only way to become a better writer is to write, and blogging is just that. Tweeting is actually another great writing tool; it teaches you to communicate while being brief. And teaching is always good -- it helps you learn the subject better and exposes you to different perspectives. Basically, if you want to ever be more than a code monkey, you need to speak up both in person and online.
- walterbell 11y ago> 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 11y agoVery 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-ruby-contributors-fund https://www.kickstarter.com/projects/828998531/practicing-ru... -- 100% of this money will go to the authors of the articles, I'm not keeping any for myself.
- nostrademons 11y agoFor 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 11y ago> 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 11y agoBest 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.
- dbpokorny 11y agoProgramming 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_Computer_Programs http://en.wikipedia.org/wiki/Structure_and_Interpretation_of... SICP is an extraordinarily difficult book; "Simply Scheme" by Brian Harvey and Matt Wright is a good stepping-stone.
- marcus_holmes 11y agoI 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 11y agoI 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?