假设这样一个场景:你编写了一段代码,想要将其分享给自己的好友,抑或你的好友向你索要这份代码。

    当需要查看代码的朋友数量少时,你尽可以逐个将代码发给他们。你可以选择用邮件,或者现代的即时聊天工具,总之不管用何种方法,你将自己的代码逐个发给了自己的朋友,你的朋友最后也都看到了你的代码。

    但是很快便出现了一个问题——由于你的代码十分精妙,以至于很多其他编程者也想寻找这个代码。这时你发现,纵使自己将整天的时间花在处理这些请求上,也难以回复所有的询问者。

    于是,你便想到可以将这个代码放在一个所有人都可以看到的地方,比如自己的网站,或者自己的博客上。所有前来询问的人可以通过你社交软件上公开的信息得到你的网站地址,进而查看到你的代码。

    然后,你惊奇的发现,上面的这个方法不仅轻松的帮你解决了大量的社交压力,同时,自己可以对代码进行些许修改,而每个编程者只要通过刷新链接对应的网页就能看到最新的代码。

    不过事情并没有停止,有一些使用你代码的编程者向你提出了一些建议,也有的编程者发现了一些问题。不幸的是,你的网页没有留言功能,这些编程者便纷纷向你发邮件告诉你自己发现的可改进之处或者问题。这之中不免会产生许多重复的信息,而你也不得不逐一回应各位编程者。

    也许,不堪困扰的你会选择为自己的网页加上评论功能,但却不是那么好用,因为随着时间推移,评论数量增多,新的旧的评论会纠缠在一起,影响解决问题的效率。此外,你可能也会在某天发现,当自己的代码存在一个严重的问题需要使用者避免、或者推出了一个重大的新功能需要使用者注意时,要做到将每位使用者都通知到,实在是不现实的事情。

    读者可能会发现,上述场景和诸多社交软件的使用场景是很相似的,比如博客、视频网站。他们的共同之处都在于使用者以自己创造的内容来进行社交:对于博客,用户可能是分享一些文字或者图片,内容可以是自己的生活或者思考;而对于视频网站也是类似,用户用自己创作的视频内容来与其他用户进行社交,可以是记录生活,也可以是讲解知识,等等。这些网站往往会存在评论、留言以及订阅等功能,使得用户之间可以互相交流,可以即使获取到关注者的动态。而在我们本章探讨的场景中,不同之处只是用户用以社交的内容变成了代码、程序,但核心思想是相通的。因此,理论上我们可以使用分享代码的平台分享其他内容。不过,分享代码的平台毕竟会有一些不同之处,这在之后内容中会有介绍。