Leanpub Frontmatter播客对功能轻型JavaScript:JavaScript中的平衡,实用FP的作者Kyle Simpson的采访

凯尔·辛普森(Kyle Simpson)是Leanpub的著作《 功能轻型JavaScript:JavaScript中的平衡,实用FP》的作者 。 在这次采访中,Leanpub联合创始人Len Epp与Kyle谈了他的背景,编程和软件工程之间的区别,他的书和他的众筹活动,他放弃了受欢迎的Twitter帐户的有趣经历以及随后的提款,这是他的令人惊讶的奖励正在进行的实践中出版了一本关于学习如何做某事的书,最后,他们还谈到了他作为自我出版作家的经历。

此次采访记录于2017年11月30日。

采访的完整音频在这里。 您可以在iTunes中订阅Frontmatter播客,也可以直接添加播客URL。

为简洁明了起见,对本采访进行了编辑。


关于Leanpub Frontmatter播客的说明

今年夏天,我们将旧的Leanpub播客分为两个截然不同的播客:

Frontmatter,这是一个普遍感兴趣的播客,您可以在其中收听Leanpub的作者与Leanpub的联合创始人Len Epp谈谈他们的书及其专业领域,从数据科学到分子生物学,再到劳动和管理的历史。 对于那些对成功成为一名成功的自我出版者的本质非常感兴趣的人,在每一集的结尾,Len都向作者询问他们是如何制作书的以及他们是如何传播这个词的,以及其他出版商店谈论。

Backmatter,这是一个新的播客,专门针对出版业及其最新趋势。 在每一集中,Len都会采访出版界的一位专业人士,介绍他们的背景以及业内人士对庞大而不断发展的图书出版界正在发生的事情的看法。


Len:嗨,我是Leanpub的Len Epp,在本Leanpub Frontmatter播客中,我将采访Kyle Simpson。 凯尔(Kyle)是一位开放的网络传播者,受欢迎的演讲者,作家和JavaScript老师。 他写了许多关于编程的书。 您可以在Pluralsite和frontendmasters.com上找到他的一些开发人员课程。 当我们记录此采访时,这是凯尔·辛普森周,这意味着凯尔的所有课程在12月4日之前都是免费的。 我们将尝试在创纪录的时间内发布此播客,以便您可以了解到。 实际上,我相信Kyle会与一些Frontend Master成员一起通过现场问答进行全新的邀请。 因此,我想特别感谢您在短时间内进行了此操作。

凯尔(Kyle)是奥赖利(O’Reilly)出版的许多著作的作者,他最近刚刚发布了有关Leanpub的最新著作,即功能轻型JavaScript:JavaScript中的平衡,实用FP于周一发布。 我专注于提出一种独特的自下而上的,务实的方法来解释函数式编程的基本概念,同时避免不必要的繁琐术语,在某些情况下,还可以避免可能导致在实践中达到实际学习目标的数学符号。这样的书。

在这次采访中,我们将讨论Kyle的职业,他的职业兴趣,他的书,最后,我们将讨论他的自我出版经验。

因此,感谢Kyle参与Frontmatter播客。

凯尔:非常感谢您有我,很高兴来到这里。

Len:我总是喜欢通过询问人们的出身故事来开始这些采访。 我想知道您能否谈谈您成长的地方,以及您最初对计算机和软件感兴趣的方式?

凯尔:我现在住在德克萨斯州的奥斯汀,但我最初来自俄克拉荷马州。 我是11岁的时候开始从事编程工作-当时回溯到1990年代左右,很早以前-我在一个朋友家中结束了工作,他的父亲是一名程序员。 他正在书房里做一些事情,我和我的朋友走进去,我们有点好奇,看着他的肩膀。

他的父亲看到了我们的好奇心,他说:“等一下。”然后他单击,单击,单击了片刻,然后突然变成了蓝色。 这就是1990年,这是Windows之前的版本,这在DOS时代已经很久了。蓝屏变成了蓝色的空白,然后中间出现了一个灰色框,上面有我的名字。 短短一会儿,他就能使计算机做他想做的事,这让我非常着迷。

从那时起,我对编程产生了兴趣,并开始尝试学习。 这是预互联网,所以学习意味着我的父母从书店购买了我用过的计算机编程书籍。 我试图将对编程的某种疯狂理解拼凑在一起。

我读了高中,开始从事编程方面的一些合同工作。 我上了大学,做了更多的工作。

大学毕业后,我从事软件开发工作。 因此,在一个很小的案例中,我从小就对自己想做的事情有一个想法,但实际上我坚持了下来,直到今天仍然如此。

我从事开发工作大约有15年,直到大约五年前,我一直在思考如何对软件开发人员社区产生更大的影响。 我从事开源项目已经很长时间了,但是我确实想以更大,更有意义,更持久的方式回报。 实际上,我是通过Frontend Masters休息的。 Frontend Masters的创始人马克(Mark)有一天给我打电话。 我们彼此不认识,但他打电话给我说:“你有没有想过教书?”

我有些吃惊,因为我在生活的其他方面做过一些事情,但是从来没有做过专业。 因此,他花了几个星期来哄我指导我。 他说服我去尝试。 大约五年前,我以JavaScript老师的身份开始了我的第一门课程,立即爱上了它,意识到那是我的本意。 我希望我早点学到了。 但是我发现那就是我的热情和号召。

因此,我成为一名专职老师,直到今天,这仍然是我的职责。 我环游世界各地的公司,主要是使用JavaScript进行公司现场研讨会的教学。 一路上,我也开始写我正在学习的东西,因为人们会问我:“嘿,你上课有讲师的笔记吗?”我想,“哦,我想我会写一些东西。然后博客帖子变成了更长的形式,这自然导致了写书。

我曾与大型科技书籍出版商O’Reilly出版过许多书籍。 最值得一提的是,我与他们有六本书的系列,名为“您不懂JS”,这可能是我最近最出名的方式。

我和他们有很好的关系。 但是,当我开始思考接下来要写的下一本书时,我开始意识到我想对发行渠道以及我可以做的交易有更多的控制权。 这就是促使我开始探索自我出版的原因。

伦:我有很多问题要问一下,包括您的众包活动。

但是在继续之前,此播客的非官方主题之一是,因为我采访的这么多Leanpub作者都涉足软件领域,所以它是:如果您现在可以重新开始,或者您是否正在向像您这样的人提供建议,从现在开始,您会在大学正式学习计算机科学吗?

我只想对此框架化,因为通常我没有太多框架,但是就您而言,您已经做了很多教学,并且不久前您发表了一篇博客文章ed技术解决方案存在的问题,甚至包括那些拥有大量风险投资资金的解决方案,以及许多开发人员都感到不满意,即使在他们拥有的资源比以往任何时候都多的时候。 然后您自行启动了一个名为DevGo的程序。 因此,我想让您有机会在更丰富的背景下对计算机科学问题做出回应。

凯尔:我将其分解。 第一个问题,即问题的第一层是,如果我能告诉自己,从很久以前开始,我是否应该进入计算机科学领域。 如果我真的能告诉自己-坦白地说,我会告诉自己进入计算机科学领域,但我会告诉自己早退高中。 因为当我高中毕业并进入CS时,那是90年代后期,所以tt是在互联网繁荣时期。 我的高中辅导员就像,“计算机科学就是问题。 您将在大学毕业后立即赚到100,000美元。”我很兴奋,然后去学习CS。

在我三年级的中期,即2000年代初,互联网泡沫破灭开始了。 我意识到我已经错过了大约一年半的时间。 因此,如果我有其他可以做的不同的事情,那就去弄清楚如何更快地从高中毕业,然后进入CS。 也许我可以在萧条之前从繁荣中获利。 但是无论如何,我仍然会告诉自己进行CS,并且会解释原因。

我绝对相信编程和软件工程之间是有区别的。 “软件工程”一词广为流传。 我认为人们有很多不同的含义。 但是我有一种方法可以解决开发人员和工程师之间的差异。 有时它会打起一些羽毛,所以我会给出合理的警告。 这不是侮辱。 这确实是一种愿望。

我认为您可以这样设计。 开发人员首先寻求解决问题,然后可能会理解问题。 而工程师首先寻求了解问题,然后可能解决问题。 我渴望人们去做的事情,以及我希望我的写作和教do做的事情,是使人们相信工程方法是更好的方法。 那是更好的道路,这是更令人钦佩的道路。

尽管存在这样一个事实,我们中的许多人(包括我自己这么多年)发现自己陷入了这样的困境:“是的,我很乐意以正确的方式来做。 但是我有最后期限,我只需要发货。 而且我的老板只是想让它正常工作,而我真的没有时间弄清楚它。”因为我本人生活了这么多年,所以不是我忘记了它,也不是我坐在那里在一些象牙塔中说:“你应该那样做”,但并没有真正意识到其中的含义。

我确实非常了解这一挑战,因为我活在其中。 我还理解的是,这确实促使我成为一名老师,是因为当您在战the中时,基本上只剩下自己的设备来寻找使之工作的方法。 您说要花四个小时,而到了第八个小时,老板就踩着脚说:“这件事什么时候做? 您什么时候可以完成?”

因为您没有花时间在理解问题上,所以您基本上没有希望真正理解您的解决方案。 即使有效,您也不知道为什么。 而且,如果您不知道某事为什么起作用,那么当它以后崩溃时,您就没有机会修复它。 我退后一步,说:“我明白为什么截止日期的压力会导致我们偷工减料,做我们不完全了解的事情。”

但这是负面的滚雪球效应,这将使这种情况更多地发生。 我们付出的越多,将继续发生的事情越多。 这是一个自我实现的预言。 因此,我退后一步说:“如果-出于某种疯狂的原因,您是一名开发人员,您是一名工程师,那么,了解您的工作是您可以投资的最重要的事情,”施加压力时将直接而具体地获得回报。 如果我理解一个问题,那么就有压力了–我知道如何消除我可以尝试的所有40种其他方法,这些方法将行不通,并找到正确的解决方案。 但是,如果我不理解,我会挣扎。 而且我经常会提出一些无法解决的问题。

退一步,您会去做计算机科学吗?我在CS学位中学到了很多知识,这些知识我不是经常使用的。 如果有人说:“去实现一棵红黑树”-我知道那是什么,但是我不能按需实现,而在我的职业生涯中却从未需要过-实现这样一种神秘的数据结构。

但是,CS学位所做的就是教会我理解问题。 我认为这确实是工程思维方式。 我很感激我在很早的时候就被教导了这一课,使我能够在职业生涯中的某个时候回来说:“我怎么能把这个带给别人?”

现在,我不是CS教授。 我没有上大学。 我尝试采取的方法是,我将以实际方式帮助人们。 他们正在为工作编写JavaScript,让我帮助他们做到这一点,并且做得更好。

但是我仍然尝试以同样的热情灌输这一点-了解您在做什么,更深入地了解它。 因为归根结底,我们在代码中真正要做的事情不是指导计算机。 那几乎是一次快乐的意外事故。 归根结底,软件开发的真正目的是与其他人交流思想,如果您不了解自己正在做的事情,而您只是在乱搞,直到正确的1序列为止。而0只是偶然发生的-您在传达这个想法时完全失败了。

这意味着以后,无论是下周,下个月还是明年-当有人必须阅读它时,它不仅会一次出现,而且必须被读取数十次和数百次。 没有人会了解它,甚至您未来的自我也不会。 没有人会了解它的含义,而我们要弄清楚经常发生的事情–我一直在一个开发人员的房间里问这个人,我会说:“你们中有多少人听说过对话中,“如果我重写它,它只会更快。”您正在努力使某些事情生效,而如果我重写它,它将会变得更快。 流失很多。 我们一直都在重写代码。 而且我想知道发生了多少这种重写,因为有人没有花时间确保他们清楚地说明了为什么要以某种方式做某事。 保持这种状态的未来人-甚至您的未来自我-都不记得了,无法重构它。 因此,您只需付出所有这些努力即可。

当我告诉他们这些内容时,我听到人们会退缩–使代码易于阅读和理解,并能很好地传达想法,这很关键。 人们会退缩说:“很高兴。”就像测试很高兴,文档也很高兴。 真是太好了。 对我来说,当有人告诉我:“我没有时间使我的代码可读性,我只是必须将其发布时,”对我来说,就像:“你没有时间不使其可读性。 因为您在该代码的唯一目的上失败了—如果无法理解,请传达一个想法。”

其他所有内容-我的意思是,计算机在这一点上几乎可以指示自己。 但是它永远做不到的是传达这些想法。 那就是我们,我们需要做的。

伦:你这么说真的很有趣。 当我阅读您的书时,以及您刚才在谈论时,您使我想起一个名叫珍妮尔·克莱因(Janelle Klein)的女人,她曾在Leanpub上出版过一本书,名为Idea Flow

我想我发生了一个巧合-我想她实际上是您在奥斯丁附近树林的脖子上吗? 她的书在交流方面非常符合您所说的话,这基本上就是,发生的事情是您在开发或编程时头脑中有了想法(我会非常粗略地说),工程。 你脑子里有了一个主意,然后用代码表达它。 然后,它将基本上进入机器。 在某个时候,它会从别人的大脑中冒出来,而他们将不得不对其进行处理。

实际上,您几乎可以想到它,就像想法通过这些不同的大脑和屏幕进入其他大脑,然后被修改一样。 包括未来的大脑,这是您要谈论的话题。 “如果我愿意的话,将来我会很高兴和我见面。”因为这样做的同时,您也在与自己的未来交流。 这确实令人信服。

凯尔(Kyle):我完全赞同该信息,因此,在这里完成操作后,我将立即查找该书。 这听起来很不错。 在宗教方面,我几乎相信这一点。 这是我们作为开发人员的责任,是为我们未来的自我和我们的未来团队成员留下良好的遗产,以便他们很好地交流这些想法。

顺便说一下,这不仅仅是我编写的代码的想法。 因为您可以看到。 但是,还有您所考虑的代码。 您发现不应该在那里,并且您没有任何方式可以在您的代码中进行通信,这些是我考虑过但没有放到那里的东西,以及为什么不在那里。 我们并没有很好地阐明人们要重构的心理环境。 所以我真的相信那是下一层,这就是我致力于教学事业的原因。

您提出了DevGo,因此我应该对此进行讨论,以及如何将其融入其中。 正如我所说,我已经当了五年多的老师,而我主要是在教室里做的,这通常被视为教育机会的黄金标准-而不是仅仅读书或看书。一段录像。 这是非常单向的事情,您认为在教室中您会获得这种双向互动。 关于教室的不幸部分是,它背叛了人类学习方式的基本本质,即它试图将学习压缩为一项交易。

如果回顾过去几千年的人类历史,从一个人转移到另一个人的所有技能都不会通过预先的信息传递方式发生,然后您就可以继续前进并实施。 但是,相反,它们的进展很缓慢-随着时间的推移,通过总学徒,或者我们在现代可能称为“指导模型”的过程中,这里有一些信息,然后是大量实践。 那不是自我指导的实践,而是大师指导的实践。

考虑做饭。 您不会只是说:“哦,我看了YouTube视频,所以我现在是一名专业厨师。”您将有一位大厨坐在您身边,看着您一遍又一遍地烤鸡肉,对其进行批判和调整,并帮助您变得更好。

您可以想到的任何技能都是有效的工作方式。 但是,在现代,我们已经放弃了教育中关系部分的概念,因为我们不知道如何将其扩展到现代工作场所。 这样我们就可以扩展内容,对吗? 只需在视频论坛中放到网上即可。 十亿人可以观看它,因此我们已经使大众可以接受教育。 但是我们失去了人的力量。

我一直在观察我作为老师的努力没有像我希望和期望的那样深入和深刻。 我决定,如果您愿意,我需要破坏自己的工作。 用不同的方式来做。 因此,我开始尝试弄清楚如何将面向导师的学习扩展到现代工作场所:如何扩展关系并使其真正起作用? 我提出了一个教育模型,并提出了一种我认为可行的技术。

这就是DevGo致力于的目标-其他所有人似乎都在滑向“让我们扩展内容”。DevGo试图扩展教育中的关系部分,因为我认为那是唯一将知识真正转化为技能的东西。 其他所有内容都只关注知识。

Len:您将使用什么模型来建立这种关系和那些联系?

凯尔:从本质上说,一开始的过程将类似于一家公司现在的工作,当时他们会雇用我来教一个星期的课程。 但是,相反,他们会注册一个指导服务,在那里我本周要提交的材料会以小块的形式呈现,例如每周一小时。 因此,每周都有您的员工在网上聚会并获得一小时的内容。

然后,在呈现该内容的同时,我生活在同一环境中,以便能够在问题出现时立即回答问题,从而帮助人们提供便利。 但是重要的是,在本周剩下的时间里,当您回到开发人员的岗位上时,DevGo服务不会让您自己的设备来解决问题,而是为导师提供了一种可扩展的方式来帮助您在整个星期中,与您一起检查,查看您正在使用的代码,并帮助您将这些概念应用于您的实际工作产品。

这已经超出了“我已将一些知识传递给您”的范围,几乎达到了咨询水平。 我正在帮助您在实际工作中运用这些知识。

Len:转而使用您的其他爱好之一,我想和您谈谈开源软件。

您是什么时候第一次对它感兴趣的?随着时间的推移,您能否谈谈与世界的互动?

凯尔:当然。 那也将回流到写作中,这是一个不错的选择。

早在2008年,我仍在从事开发人员的工作,但是我想参加软件开发人员会议,因为我想了解更多。 召开专门针对JavaScript的会议已经开始。 现在这是很普遍的事情,但是那时候并不常见。 直到那时,JavaScript才有自己的会议。

我认识一些参与其他会议场景的人,我说:“我不知道。 您怎么负担得起参加会议的费用?”,并且,“我无法支付我的工作并给我时间休假。”他们说:“秘密是,您同意在会议上发言,然后他们会付钱给您。”我想,“哦,太好了,我知道如何公开讲话,我可以做到。

然后我开始意识到:“我要说什么? 我可能会去开会讨论什么呢?这对我有用吗?”我意识到,“好吧,我已经有了一个正在工作的项目。 而不是将其作为封闭的专有产品进行处理,我为什么不找出一种方法来使该开源产品成为现实呢?”这是GitHub之前的版本。 “为什么我不将它变成一个我也在工作中使用的开源项目? 用一块石头杀死两只鸟。 但是一旦它成为一个项目,那我就可以去参加会议并谈论。”

因此,我做的第一件事是一个名为“ Flexor” [?]的东西,它是基于Flash的版本-我的意思是Ajax,它们现在不再重要了,因为这显然无关紧要。 但是我做了一点事情,然后说:“好吧,我要去参加一个会议。”然后我去参加了这次会议,房间里有四个人在听我演讲,这是我第一次参加会议谈论。 但是我对此事进行了简短的演讲,不仅开始完善我的公开演讲,而且还意识到开放源代码如此强大的原因之一不仅在于我可以提升自己。

我的意思是,现在我必须诚实-这就是其中的一部分。 我想提升自己,这就是我支付账单的一部分。 但是,我之所以觉得开源对我的未来如此有用,更大的原因是,它体现了协作的想法,这是我从未想过的方式。 我以前每隔一段时间都在做某事,如果遇到某件事,我会出去搜索Google或其他内容,或者问其他人。 我了解了他们给我的知识,然后将其带回来,并实施了一些只能从中受益的解决方案。

我意识到,使用开放源代码,真正的好处是我在这里投入了一些东西,然后我以其他方式帮助他人,不仅使他们受益,也使我受益,而其他人也会从中受益。 有点像涟漪效应,就像池塘在露天时会产生更多涟漪。 我开始意识到那是我的想法,那就是协作的想法。 那是在我知道自己想当老师之前。 但是我绝对想产生更大的影响。

因此,无论何时何地,我都开始在开源中从事越来越多的工作。 每当我工作时,我都会说:“嘿,这是我拥有的所有这些开源项目。 请注意,我不会放弃这些东西-这对我很重要。 我会透露这些信息,然后在工作中处理这些信息。 如果他们不希望我这样做,我会拒绝工作。

我不会说谁,但是现在有一家所有人都知道的大公司试图雇用我。 当我去那里的时候,他们说:“太好了,我们希望您能来这里。”我说:“请您知道,我有这个项目,我已经在开源中得到了。 很多人都了解我。 我将继续维护该项目,但我不会放弃。”他们说:“我们不允许开发人员从事开源工作。”我说:“很好,非常感谢,但我不会接受这份工作,因为这是我的一部分。”

Len:只是想打扰一下-他们解释了原因吗?

凯尔:他们确实解释了原因,这很有趣。 这只是一个很小的开放源代码项目,所以被称为—不是很小,而是LABjs,它是一个动态脚本加载器。 这是我最受欢迎,寿命最长的开源项目之一。

我说:“我有许多人使用的Lab GS项目,并且我将继续维护该项目,以便您知道。”

他们说:“好吧,我们不能让您作为雇员那样做,因为我们在脚本加载空间中拥有一些可专利的专有内容。”我当时想,“什么? 但是,为什么他们不让我这样做,这是因为他们认为他们已经拥有某种专利,或者他们打算申请专利,所以我不这样做。不知道吗 所以我继续工作了-因为开源,所以我认为这并不重要。

我只想再说一遍关于整个协作的概念。 对于我来说,这是非常重要的,因为人们会接受并仔细研究。 这并不是要说明“您需要这样做”。但是,我至少希望人们为这个问题而苦恼:您是否在使用开源来简单地将自己作为促销渠道进行宣传? 您是否将其用作协作渠道?

我问这个问题的原因之一是因为我发现很多人告诉我:“哦,我还没有把东西放到开源中,因为还不够好。”我听到人们说很多话。 “我还没有开源,因为它还不够好。”我听到人们告诉我,“我还没有公开写过东西。 我还没有写博客或书籍,因为我不是它的高手。”我听到了很多。

我总是听到-当有人说:“我没有把它放在那里,因为它不足以让其他人看到。”实际上,我总是听到相反的声音。 我对待开源的方式-多年来一直如此-现在,我将开始一个项目,无论是代码项目还是书本,在开源世界中都是空文件。 我将开始逐步提交我所需要的东西。

我们稍后将讨论的这本功能性轻书-我确实写了一段。 如果您返回到该历史记录的第一个提交,则有一段-我写的第一篇。 因为我希望人们看到我的旅程。 并且因为我从一个假设开始,即我放出的每个版本(无论是代码还是书中的文字),我发布的版本都是该版本中最糟糕的版本。 我希望做得更好的唯一希望就是吸引其他人的注意,并获得其他人的反馈和意见。

因此,对我来说,听到有人说:“我还没有把这东西放在那里。 我这件事 我还没有把它放在那里,因为还不够好。” –对我来说,我听到的是相反的情况。 他们没有意识到情况有多糟,他们迫切需要人们帮助协作以使事情变得更好。 如果不是因为开源和将想法付诸实践并加以完善的协作性质,我将永远无法成为我自己的那种开发人员,我的老师和我自己的作者。在公开场合有很多人。 而不是我坚持下去,直到我完善了一些东西。 那永远不会为我工作。

伦:结合在一起,开源项目,在公共场合进行迭代-以及提升自我的概念-在我们讨论您的书的主题之前,我想和您谈谈社交方面的自我促进媒体。

社交媒体是自出版作家,自雇顾问和其他独立内容制作者提供的最重要工具之一,至少从基本上每个对如何在这些领域取得成功的人提供建议的人看来,这些工具都是可用的。

在相当长的一段时间内,您尤其成功地在Twitter上建立了相当成功的存在,拥有超过30,000个关注者。 我认为在准备这次采访时,就是在我发现这一点的时候–我相信是在2017年初左右,您决定大部分时候放弃Twitter,并且您以一个相当动人的方式解释了自己的决定您7月份在Medium上发布的帖子。

在我们谈论您为什么下车之前,我只是想知道您是否可以从一开始就谈论一下这个故事-关于您如何在Twitter上起步以及球如何滚动?

凯尔:我在2009年的柏林会议上。 这是在柏林举行的首届JSConf欧盟会议。 人们会注意到,从历史上看,作为一个重要的会议,是Ryan Dahl向世界发布Node.js的会议。 当那件事发生时,我在观众席里。 看到这种转变发生得如此之快,这真是令人难以置信。

我当时在那个会议上准备站起来谈论我的LABjs项目,但我既没有GitHub帐户也没有Twitter帐户。 我看到其他几位发言者也这样做。 因此,从字面上看,在我演讲之前大约一个半小时,我同时注册了Twitter和GitHub,然后我说:“好吧,如果我要去谈论这个东西,应该有一种方法让人们给我反馈或其他东西。”

所以我当时注册了那些帐户。 我真的不知道Twitter是什么,也不是关于社交媒体的更大问题—我真的没有关于如何适应的计划。但是在最初的日子里,就像是,“哦,我我将使用它作为沟通渠道。 人们可以问我一个问题或回答我,等等。”

随着时间的流逝,我开始变得更加自我提升。 我开始发推文谈论我正在做的事情,我要去的地方和说话的地方。 因此,我开始在那里发展业务。 通过会议发言,我在Twitter帐户中吸引了很多关注者。 在最初的几年中的某个时候,它从(我仅将其用于技术)转变为“这是我的个人声音。 这是我的Twitter帐户。”

每个人都知道我为@getify。 就是说我是一名JavaScript开发人员,我对其他东西还有很多其他想法,我不妨分享所有这些想法。 如果人们有兴趣,那就太好了。 如果没有,他们会离开。 但是至少我会谈论它。

这对我来说很特别,因为我做得越多,我得到的追随者就越多。 当我开始谈论非技术性内容时,我以为我会失去追随者,例如,如果我谈论政治,宗教或文化之类的东西,我以为我会失去追随者-而且我越来越多。

一段时间后这很奇怪,因为感觉到我所做的一切都应该失去追随者,使他们成为追随者。 我应该做的一切,应该赢得追随者的事情,我都会失去。 这是非常违反直觉的。 我周围没有明确的策略。 但这几乎就像您做的直觉相反,您将获得更多的关注者。

当时感觉,获得更多关注者是成功指标。 “如果我有更多的追随者,那意味着我会更成功。”经过思考,我想我可能应该遵循我的直觉,而不仅仅是尝试追求指标。 因为正如我在那篇文章中提到的那样,通过在社交媒体上建立大量的追随者,我将自己从一个人转变为一个个性。 随之而来的是我不认识并且不准备承担的一些责任。

它并没有马上到来,但是随着时间的流逝,我逐渐发展出那种个性,那种个性-人们期望我成为逆势者。 他们期望我成为那个,当其他人都这么说的时候,去@getify,因为他将为您提供不同的观点,说明您为什么应该以不同的方式这样做,以便开始辩论,而且-并不是真正引起争议的,但是不只是接受现状 那成了我的品牌。

我跟随那个品牌超越了技术。 我在文化,宗教,政治以及其他所有方面都有同样的看法。 我没有意识到人们对JavaScript时的品牌宽容。 但是,当将该品牌用于宗教或政治等话题时,他们的容忍度要低得多。 在最近几年的激烈文化中,公开表达您的想法变得更加困难。

我沉迷于上瘾,无法挑起任何话题的辩论,以至于我意识到自己正在走这条路。 那就是那篇博客文章的主题-我陷入了深渊,沉迷于听到自己的声音并对自己的声音过于自以为是。 它不是故意的,只是一点一点地,逐条地鸣叫。

Len:我想说的是,我认为,就本次对话的目的而言,您在“中型”职位上的表述如此明确,我们很可能可以将您在成瘾方面的个人经历和类似的事情归纳起来。 我只是建议人们去该职位以了解有关该经历。

鉴于Twitter上的对话是很多人所关注的事情-我想问的是,其中涉及的更多是您所涉及的抽象的哲学,文化问题。

您在帖子中说:“那些了解对话内容的人,当他们公开讨论此类话题时,实际上是在乞求其他人在没有这种情况的情况下参加会议,但却是平等参与的参与者。” 我知道我要引用你几个月前写的东西,但是如果你能回想起你在那写的东西,这让我很感动,因为那是我在想自己走的时候相当多的想法在Twitter上阅读回复以及类似内容。

凯尔:您可以多层分析该陈述背后的情绪。 显而易见的一层是对Twitter平台本身的批评。 简短的140个字符,涉及的漂亮原始线程,任何人都可以插入的功能-这可能是对技术,平台和用户体验的批评。 我认为其中涉及了很多。

但是我认为,更大的问题-可以追溯到我所说的关于开源的内容。 当您在公开场合做某事时,您就是在寻求协作。 您不会在公开场合做些什么,说:“嘿,这是我和其他要谈论这个话题的家伙,你们所有人都在听。”之所以在公开场合做,是因为您希望他们参与其中它的。 如果没有,您将不会公开进行操作,而只会进行短信对话,私人电话通话。 你会在咖啡店见面。

您在社交媒体的任何论坛中进行操作-从Twitter到Facebook再到Instagram或其他渠道,选择您的频道-当您在公众场合中进行操作时,您在要求人们不仅要听,还要提供他们的反馈。 这样做的问题是,他们在非常不完善的上下文中提供反馈。

想象一下,您和一位朋友经过几个月的讨论,讨论了很多东西。 您对这个人,他们的历史,他们的背景或任何东西都有很深的了解。 然后在咖啡店里的一天,某个家伙在偷听你,你在说些什么。 他转过身来,就像是:“我认为那是完全错误的,这就是原因。”

信息的注入完全没有上下文。 但是,因为我们是在社交媒体上这样做的,所以我们基本上是在说:“每条推文都等于其他任何一条推文。”您的推文在没有任何上下文的情况下,对主题的重视程度和影响力都一样大。我花了数月或数年的时间思考这个话题。

伦:那是真正打动我的部分,它的维度不同,但它们却相交。 举例来说,您所谈论的是您和其他人,或者您自己在自己的推文中,可能随着时间的推移发展了这种丰富的环境。 有人潜入并看到一件事,然后开始谈论,好像他们了解整个上下文一样。

在Twitter上发生的另一种情况是-假设您订阅外交事务,在学校学习政治学,然后在国外学习,并且在国务院工作了多年,然后您可以回来写信。一本书。 然后,您将发布推特消息,然后有人会说:“与伊朗的交易非常糟糕。 我只是从酒吧的伙伴那里听说的。”

我认为这里有一些有趣的事情–通常,我对这样的主张持怀疑态度,应该在互联网上建立授权,诸如此类。 但是对我来说,真的很有趣,对于某种类型的人,他们在视觉上将自己视为与在Twitter上与之互动的其他人等效的事实–他们当然不是在挑战自己,而是将自己置于更高的地位。标准。 但是他们并没有受到挑战,可以保持更高的水准。 我确实确实认为平台上存在某些东西可以阻止人们进行此类询问。

我认为,您遇到的另一个版本是人们告诉您说什么和不说什么。 “我希望您只使用JavaScript。”我在Twitter上关注了一些名人,例如罗恩·珀尔曼(Ron Perlman)和文森特·德奥诺弗里奥(Vincent D’Onofrio),他们会不断地让人们告诉他们-只是一个随机的人,就像我的意思是在沙发上–开始告诉另一个成年人不要谈论某件事,因为他们本人坐在沙发上不想在时间表上看到它。 我真的不知道该说些什么,只是我同意您的很多评估,只是从稍微不同的角度。

凯尔:关于两点。 首先,您刚才说的是人们对他们听的内容制作者进行监管的内容-如果您是个人,而其他人则说:“嘿,个人B,我是A,我不喜欢您的内容。再说,那太可笑了吧? 但是在某个时候,一个人可能跨越一个桥梁,从一个人到某种公众角色,品牌或期望,在这种情况下,相同形式的自由形式思想可能不被接受。

这是我不满意的-在某些时候,通过邀请这么多人关注我,并试图从我更大的声音和更大的社交媒体影响力或其他方面受益匪浅-只是我们知道-这是30,000个追随者,我不像拥有数百万人的巴拉克·奥巴马总统-但在我的小世界中,30,000个是一个不错的追随者。

但是通过要求人们跟随我,我有一份不言而喻的契约,我会给他们一些他们会欣赏的东西。 而且我通过建立公众角色来巩固合同的内容越多,我对我应该说和不应该说的话的限制就越多,也许? 那是我没有真正考虑并同意的部分。 而且我仍然没有答案。 我现在还说不清楚。

但是,从互联网权威角度来说,您所说的另一件事–我知道这是一个非常狡猾的话题,因为我们现在生活在假新闻时代,谁甚至可以知道您听到的事情是真实的还是不真实的或看,技术使这一点变得更加困难。

如果您想像一下-我正在上一所老学校并和自己约会-但有些人可能知道亨利·基辛格(Henry Kissenger)这个名字,在大多数方面都是一个历史人物。 您可能会说亨利·基辛格(Henry Kissenger),“那个家伙知道外交事务”,无论您是否喜欢亨利·基辛格(Henry Kissenger)周围的政治,这都不是我的意思-但是,如果亨利·基辛格(Henry Kissenger)拥有Twitter帐户—也许他做到了,也许他没有? 我不知道? [注意:他没有出现-eds。]

但是,如果他有一个Twitter帐户,然后继续,他对伊朗交易说了些什么,然后他说:“这是缺少这种情况”-也许他称赞它,或者批评了它或其他什么,然后一个随便的人走过去在Twitter上说:“你知道吗,亨利? 就像你知道什么吗?”这就是我在这里要说的本质,就是他确实知道他在说什么。

然而,在那一刻,这两个在社交媒体领域是平等的。 期望另一个人屈服于他的权威几乎是不公平的。 他们俩都进入了将他们降低到同一水平的媒介。 这就是为什么不能在该处进行有意义的,实质性的关于外交事务的对话的部分原因,因为您无法适当地引入上下文。 你就是不行 那不是对Twitter的批评。 这实际上是对社交媒体中对话概念的批评。

Len:在谈论了一些开源项目和类似的事情之后,我想谈论这个问题的原因之一是,您在Medium帖子中清楚地说明了您所支付的价格。 一旦您放弃了这个平台,您就可以在项目上做很多工作,而他们只是无法确定您是否可以拥有其他项目。 我想您所做的每一件事也是如此。

一个人的在线平台是用来宣传一个人的工作的平台。 而且,如果您没有足够的精力让整个组织将您的三层广告牌放在时代广场或类似的东西上,那么这就是您一直以来所做的全部工作,这有助于您吸引对新产品的关注。工作。

您是几个月前写的那篇文章-考虑到这种后果,您是否确信您做出了正确的选择?

凯尔:这是一个很难回答的问题。 我要回答的是,如果我回顾一下今天的那种人,与我在一月刚离开时的一月刚回来时的那种人相比,那时候我已经全神贯注了。我是一个更好的人。 我想我对自己和他人的了解要好得多,而且我也很欣赏角色的细微差别和期望,这比当时的我普遍更好。

我还认为我已经能够检查自己天性中最糟糕的部分之一,那就是我对任何重要事情都上瘾了。 就像我在帖子中所说的那样,我上瘾了-因为我可以看到正在进行的任何对话,并且因为我拥有一定的权威,所以我的观点很重要。 因此,我可以出现在任何对话中,然后说:“好吧@getify这样说。”

我沉迷于每次获得报应时都会得到的自我提升,并在一些辩论之类的话题中成为矛盾的声音。 当人们给我写一条推文并说:“嘿,@ getify,您对此有何看法?”时,我很喜欢,“让我告诉您我对此有何想法,因为我很聪明。 ”

我已经治愈了这种瘾。 很快,但是我现在已经治愈了这种瘾。 通常是通过给自己一个在别人给我写东西时不回应的自由。 我完全离开了平台六个月,然后写了这篇文章,我决定放轻松一点,但主要是在只读模式下进行。

我将通过阅读您当前的Twitter个人资料上的内容来说明这一点:“此帐户是对过去与我有关的社交媒体一切的被动抗议。”

那里有矛盾,我完全意识到这一点–那几乎是虚伪的矛盾。 我参与社交媒体的事实是因为我仍在努力挣扎这一事实,就像你说的那样,我需要有一种能够提升自己的形象。 但是我还需要保持足够的距离,这样我才不会陷入那些古老的诱惑中。

因此,我对此没有很好的答案。 我并不是从一些好的剧本开始,没有人会把我的道路当作模仿的道路。 但是我非常努力地将Twitter用作阅读媒体,而不是推广媒体。 我只会在有明确目标的情况下宣传事情。

例如,我们提到了凯尔·辛普森周。 好吧,我必须让自己的思想转变为:“本周我将经常出现在Twitter上,本周我将大量提升自己。 这将吸引很多反馈,无论是好是坏。 我需要确保当我看到一条我不同意的推文时,我实际上只是关闭笔记本电脑然后走开,而不是觉得自己需要将其开除。”

我什至没有做到完美。 本周,我就某些话题进行了一些辩论,而这些辩论我可能不应该参加。 但是对我来说,正如我在那篇文章中所说,Twitter的健康水平几乎为零。 不是零 我没有完全关闭帐户。 但是将其保持在最低水平是我知道如何做到的唯一健康方法。

解决此问题的另一种方法是,我现在有多个Twitter帐户,在这些帐户中我使用不同的帐户执行不同的操作,因此没有太多的混合。 例如,我有一个专门针对这本书的书。 因此,关于这本书的所有内容,我都将使用该帐户。 我正在尝试,但我还没有弄清楚。

您更大的问题是:“您做出了正确的选择吗?”我是一个更好的人,我无法想象任何使您成为一个更好的人的选择都是一个错误的选择。 但这不是一件容易的事,而且也不容易弄清楚。

Len:感谢您的谈论,我真的很感谢您这样做。 坦率地说。

继续阅读您的书,除了谈论您之外,这是播客集的表面原因,这本书被称为Functional-Light JavaScript 。 我想请您先谈谈这种亮度概念。 您还谈到了这些方面的深度和其他方面,以及它们与“高级”和“初学者”之间的区别。我只是想知道您是否可以按照这些思路给我们您的想法?

凯尔(Kyle):在GitHub存储库中,我读过这本书—我想我们应该早些时候对此做得更加明确。 除了在开放源代码中完成所有代码外,我还以开放源代码编写所有我的书。 我曾经写过的所有书,我都在GitHub上写过,它们都是公开可用的。 因为我对书本写作的看法与对代码编写的看法相同。

因此,在读这本功能性JavaScript轻书时,我有一条声明基本上说:“仅供参考,您可能会想到’light’一词,并暗示其是介绍性的,入门的或简单的指南或类似的东西。 我只是想马上说,我认为那不是我的意思。 我的意思是,范围特别狭窄。 但这并不表明需要探索的材料的深度。”

我从以下方面来考虑轻巧性:每当我尝试进行函数式编程时,所涉及的材料范围是如此之广-如此之多的术语,如此之多的不同概念,如此之多的符号和符号-我发现这种广度不堪重负,我很快就变得不知所措。 就我个人而言,我需要的范围更小,更深入地了解原因。

例如,如果您考虑几乎所有其他函数式编程工作-一本书或类似函数式编程的书-在第一或第二章中,他们可能会开始谈论monad。 这可能很快就会出现,而且很早。 我基本上说:“好吧,直到字面上的附录B,我才想谈论单子。在那之前,我什至不想提这个词。”

这是因为我希望您了解使monad有用的所有概念。 而本书以外的大多数功能编程材料都只是简单地陈述了所有这些假设。 就像,“嘿,我们都确切知道这是如何工作的。 因此,这就是我们要做的,我们将制作一个monad。”我想,“不,我们都不知道这是如何工作的以及为什么。 我们并不完全了解函数的纯度以及所有这些东西。”

那是应该更多涉及的东西。 我并不是真的要进行介绍,但这就像我们不断假设人们拥有的背景故事一样。 我要填写背景资料,因为我没有。 我想:“如果我没有它,也许还有其他人没有它?”

无论是在书本上还是在我的教义中,我都使用比喻,这总是让我感到自己就像登上一座山脚,陡峭的悬崖。 我可以看到在山顶上已经爬过的人-他们非常非常清楚地阐明了爬山的好处,直到我非常同意爬山是值得的-很难,但是攀登是值得的。 所以并不是我不同意攀登很有用。

并不是我无法说出这样做的好处。 但是那是他们在说:“那边只用那堆登山设备,然后就爬上山。”我看着那堆登山设备,然后我说:“我不知道他们说:“哦,只要用绳子或登山扣,您就可以爬上去。”好像山顶上的人已经忘记了什么,不知道登山扣是什么。 ,忘记了不知道如何在绳子上打结的感觉。

我已经问过这个问题,包括我自己和其他人的轶事,“您是否曾经停下来想一想现在知道的事情,并将其与您以前曾经想过的事情进行比较,然后才知道它是如何工作的?”任何技能,无论是木工还是其他技能,您以前都不知道,一旦知道,您对现在的思考方式就会与现在不同。 它改变了你。

我觉得很多函数式程序员的问题是,他们会忘记不知道登山扣和绳索的感觉,而无法表达这些细节。 他们已经处在不同的层次上,也就是说,一旦您知道那些攀岩者,就爬山。

我想说:“从尚不具备这些假设的人的角度来解释函数式编程,该怎么办?”我故意做些事,关于这件事我有一些轶事。

正如我之前所说,我决定逐步编写这些内容。 与其等到我完全理解这个话题,不如去写关于它的文章。 我本质上是希望这本书讲述一个我了解攀岩装备的旅程的故事-不仅是通过提交历史,而且是通过在整个本书中变化的声音进行的。

我有一个关于这个的故事,这对我来说很有趣-几个月前,大概是三,四个月前,我在上课,有人问我一个问题-我在教函数编程,他们问我关于这些主题之一的问题。 我说:“我的书中有一个非常好的部分,第二,三章或其他内容,让我简单介绍一下,然后我将向您展示该部分的一些示例。”

所以我把它拉了起来,我正在阅读我写的文字。 当我在上课时,脑海里浮现着一种叙事。 我没有让他们接受,但是脑海里一直在想着一个叙事,我当时在想:“我这么说很有趣,因为现在我不打算这样描述了。 我将以这种方式来描述这种技术,但是我在书中对此有所不同。”

我的直觉是:“给自己一个心理笔记,应该回去编辑它。 返回并改进书中的内容,因为您现在对这件事有了更好的了解。 您更是该技术的精通者,所以以不同的方式表达它。”于是我做了那个心理书签,然后我回去上课后看着它。 我查看了提交历史。 事实证明,该部分是我撰写的最早的部分之一。 在为期近一年的编写过程中,这是为数不多的真正更新之一。

我开始意识到,我几乎是在不知不觉中所做的事情,是我通过渐进式写作和公开写作来捕捉到了片刻—我捕捉到了今天无法重建的片刻。 我无法接受该主题并以这种方式进行描述,因为我的大脑已经受过训练,可以更正式地思考它。

但是,因为我选择在编写过程中写这篇文章,所以我记录了一条其他人可能会从中受益的途径。 因为我从中受益。 因此,我实际上选择留下更多(也许您会说)对该主题的幼稚解释。 因为我认为这是一种与不具备我已经开始以自己的能力污染自己的所有假设的人说话的更有用的方式。

换句话说,Douglas Crockford是JavaScript世界中著名的人物,他写道: JavaScript:The Good Parts ,他是一个两极分化的人物,但众所周知,我们欠他很多JavaScript。 在他不知所措的2012年演讲中,他说:“ monad的诅咒是,一旦您理解了monad,就无法再教它了。”

他在讲话中讲的这是一个有趣的笑话,但我确实一直对此都具有很多深刻的意义。 一旦理解了某些内容,您是否就不再能够将其教给不了解的人? 我对此非常了解,对于在某个主题上走得太远而又忘记了不知道是什么样的话题,我感到非常谨慎和谨慎。 我认为这对于初学者和高级人员也很重要,以便能够看到该旅程。

Len:这是一个非常有趣的说明,说明了发布过程中的一个特殊价值。 在规定性的非小说类出版领域,就是这样的书,有很多人—当Leanpub很久以前成立时,人们常常会对您所描述的方法持怀疑态度。

“为什么我要读完一本书? 特别是在您尝试教书的地方,实际上是让人们看到-这是我以前从未考虑过的事情-给自己一个看到的机会您过去的经历可能非常有启发性。

您能否谈谈功能光编程范例是什么? 是否超出了您刚才描述的范围?

凯尔(Kyle):正如您提到的,本书的副标题是“平衡实用FP和JavaScript”。这不是尝试以贬低其他功能材料的方式,而是一种尝试-我在编写本书时汲取了大量资源,其中包括:我的其他同行,他们都有他们自己的其他方法,而且这些方法都很棒,所以我并不是要贬低它,但我认为他们经常这样做的一件事是在上面提升函数式编程的形式主义“好的,但是我只需要改进这一行代码。 我能做得到这一行的任何事情吗?”“不,不,不,但是您必须了解,必须重新构建整个应用程序中的数据流架构才能做到这一点。摄取并能够做任何实际的事情。

所以我想做的是带您进入一个旅程,在那里您开始看到可以对代码进行小的细微的增量更改—这些小的增量更改中的每一个本身都对代码有所帮助。 更大的图景是,到最后,您已经走了很长一段路。 您不是最高职位,不是职能部门-当然,我不是,但您在到达山顶之前已经走了很多路,甚至没有意识到自己正在爬山。

那正是我希望人们拥有的。 是-在本书的第一天和最初的几十页中,在我什至完全理解函数编程的含义之前,是否可以进行一些改进?

很多时候,我曾经让函数式程序员告诉我:“函数式编程是一个全有或全无的主张。 要么所有函数式编程都100%,要么99%都和0%一样好,因为无论如何,这1%都会杀死您,因此,除非您全力以赴,否则甚至不值得付出任何努力。”

我只是觉得那完全是假的。 我认为,如果您可以采纳其中10%的想法并将其应用于您的代码中,那么它们会更好。

但是您不能采用传统的FP文本来做到这一点。 他们具有这种整体性的方式来讨论类型和类别理论,数据结构,组织和数据流以及所有—他们具有这种整体性的方式,即是全有还是全无。

我认为您可以逐步到达那里。 而且我希望JavaScript开发人员(也许比其他任何语言都更多)可以从中受益。 因为JavaScript独特地具有作为多种范式语言的功能。 它不仅是唯一的,而且还具有一些非常独特的特性,使其非常强大。

顺便说一句,多范例并不仅仅意味着您可以执行面向类的程序或过程程序,或者功能程序或任何其他范例。 这不仅意味着。 这意味着您可以在同一程序中混合和匹配这些范例。 我认为JavaScript的功能几乎是独一无二的。

因此,我选择JavaScript不仅是因为我喜欢这种语言,还因为我认为它是讲故事的一种很好的工具。 按照您惯常的方式编写命令式程序,然后将这一行代码更改为更加符合函数式编程的精神。 混在一起,您就拥有了具有某些功能原理的命令式程序,因此该程序更好。 然后明天再做更多的事情。 而明天,第二天,做更多的事情。 因此,功能轻实际上是将函数式编程的概念逐步应用到实用的现实世界JavaScript中,这就是它的真正意义。

Len:我想问你一件事-我不经常被我在编程书中读到的东西所震惊,就像我的下巴张开一样。 但是您在其中一行说:“程序员每天编写的代码行的全球平均水平约为10”,而我的回答是“哇”。我想知道您是否可以解释一下那是什么?我一直很无知,对此感到震惊。

凯尔:老实说,这些统计数据是-我非正式地引用了那个统计信息,然后我非正式地引用了另一个统计信息,这是因为据估计,开发人员每天花70%的时间来阅读代码,而不是编写代码。 因此,这两个统计数据都是这样的,如果您尝试为它们找到正式的引用,您可能会变得空虚-至少我是这样做的。

但是这些都是我多年来闻所未闻的事情。 当我想在这里引用它们时,我去寻找了一下,从人们那里发现的是-例如,对于您的问题,“十行代码”是从哪里来的? 我过去常常说五个,因为我记得在计算机科学课上有位教授对我们说过这一点。 无论现在多年前,这都是20个。

但是我记得一位教授对我们说过这一话。 那卡住了我五行代码。 “天哪,他要我在这个应用程序中编写400行代码,但是我一天只能做5行,我没有足够的时间。”我只是记得那时候一直困扰我。 因此,我多年来一直以5为数字。 然后我开始搜索,然后看到更多的人说10。所以也许我们现在作为程序员比20年前更有效率。

但是,这个数字似乎来自何处,与我们之前提到的类似。 当您考虑到有人写一段代码,然后第二天必须回去重写全部或部分代码,然后在第二天重写全部或部分代码时,对代码库的增量更改不会您原本编写的50行代码,但是您能够进入的10行新生产代码。 并且从前一天重写了之前的40行。

那才是真正的来历。 这是整体环境,不仅是字面上的原始代码行,还包括添加到生产质量代码中的代码行。 这样做的结果比我们预期的要少得多,因为我们花了很多时间用代码来完成所有其他事情。

Len:继续讲究如何将一本书放在一起。 我相信,通过众筹活动,您为书找到了738个支持者。 您在奉献书中提到了这一点。 我想知道您是否可以谈一谈-只是为了那些正在考虑做类似事情的人的利益。 您是如何进行这项运动的?

凯尔(Kyle):我为这本书做过筹款活动,因为四年前我为《 你不懂JS》这本书做过一项筹款活动。 实际上,我已经在集资书项目上进行过练习,这很好–您做得越多,练习得越多,就越好。

因此,起初,当我做那件事的时候,我想测试人们是否喜欢这本书的想法。 And I wanted a mechanism by which I could qualify a buyer — if you’re not familiar with sales, that means that you know that that person is actually going to pay, not just that they say they will, but you know there’s a strong likelihood that they can and will pay. So I wanted to qualify my audience.

I wanted to know, how many people would pay for this? Not just how many people would read it, but how many people would pay for it? This was before having written that whole series of books.

And the traditional publisher route with O’Reilly was, “We’re going to pay you $10,000 or $5,000,” or whatever the advance is. “You’ll spend hundreds and hundreds of hours of your time writing it, and then we’ll see whether or not people want to buy it. And if you’re lucky, then enough people will buy it that you’ll pay off that advance, and then maybe a couple of years from now, start to get some cheques from us for royalties” That was the theory.

And I said, “No, that is broken. I’m not going to spend 500 hours of my time guessing whether people like this idea.” I needed a way to get a better sense.

So what I did was, I went to O’Reilly, and I said, “Here’s what I want. I don’t want you to pay me any advance at all. I’m going to do a crowdfunding campaign. I will use the funds of that as my advance, if I’m successful. I’ll do a crowdfunding campaign. And all I want you, O’Reilly, to promise is, if I’m successful, and if it gets funded, that all the books that I promise to my backers, that you’ll fulfil those.”

So in other words, “Your advance to me, is not an advance of money, but an advance on promises of print and digital copies of this book.” Their risk then is less monetary and more, if I reached every single potential reader of my audience with that crowdfunding campaign, and never sold another book, then they would lose in that deal. But if I didn’t do that, then they would stand to make sales eventually.

So that reduced their risk. Substantially reduced my risk. Because I knew that if I didn’t get enough backers or enough money pledged, then maybe this wasn’t the right audience. Maybe I didn’t have the right voice for that, and I shouldn’t waste my 500 hours. And it reduced risk for my readers, because they weren’t buying a book that was never going to happen. They were only committing money if enough people said, “Yes, let’s make it happen.”

So I thought, “Hey, this is a great idea. Let’s reduce the risk for everybody involved and do it this way.” So I pitched him on it, and I was blown away that they actually agreed. They’re like, “Yeah, it sounds great — let’s do it.” So we did that, and that turned out to be very successful, that we did get the campaign funded, and actually exceeded the funding goal, which was pretty great too.

In the process of writing that book series, the initial plan had been, “Let’s do three short 50-page books.” The eventual series ended up at six books of 1,100 pages total. In retrospect, I should’ve tried to raise a lot more money, because the money that I raised was for a much smaller book series than what I ended up writing. But nevertheless, I still consider it very much a success.

So fast-forward to this new book. At this point, I wasn’t really trying to judge the demand, because I’d already built up enough of a reputation that I kind of knew what people would buy and not buy. This is a more niche topic, but I still kind of have a pretty good sense that people will buy it. But here I had a different goal. Here my goal was: Will people like this book enough to give me the money that it takes to make a professional quality out of it?

I could write all of this stuff in blog posts. But there’s editing and art and a lot of those expenses. Is it worth it enough to people? Of I tell you what it’s going to cost me to get this book off the ground, do people like this book enough to really make it a book, versus should I -? To me, I was already going to write it. But am I going to write it as a bunch of blog posts or just on GitHub? Or do people really value this information enough to fund the process of making it into a real, quality book?

So that’s what that was testing, was, do people care enough to get this in book form, versus a blog. And again, thankfully people did. They did care, and we exceeded that, so –

Len: And did you use Kickstarter, or did you use something else?

Kyle: So Kickstarter was for the first campaign, the one for, You Don’t Know JS , way back. For this one, I did Indiegogo, mostly because this one — I was kind of already sure that I wanted to do it. In other words, it wasn’t like really fully testing.

With Indiegogo, they give you the option of the flexible funding, meaning you get the funds, even if you don’t meet your goal. Whereas Kickstarter, it’s all-or-nothing. So I kind of knew that even if I only made 50% of the way there, I’d probably still do the book. But with Kickstarter, if I hadn’t gotten 100% there, I’d have gotten nothing. And so, that’s why I chose Indiegogo this time.

Len: We’re nearing the end of the interview, which is now when I get to ask one or two self-interested questions.

The first one is: Why did you decide to go with Leanpub for this book?

Kyle: I guess the first answer to that, or the most important answer to that question was — I determined that self-publishing was better for me, because I really wanted the control of distribution. What I was impressed by, was so many other authors that I knew, and that I respect, having chosen this, and then being able to distribute their books in so many other ways other than just on the one site — in other words, I chose Leanpub, because I saw many other authors find Leanpub not to be a closed, walled garden. That was the very opposite of what I wanted.

I didn’t want to create another place where my book was locked up in some specific way, and not be able to put it in Humblebundles or give it away for free someday if I feel like it or whatever. I wanted that freedom in case I wanted to go that direction. And I’d seen several other authors be successful at starting on Leanpub, and then taking it more broadly, and that was attractive to me.

So it wasn’t even really a question where I researched other ones and said, “Well you pay better royalties,” or anything like that. It was really just the social proof that I’d had several other authors that I trust and respect had been able to do the thing that I wanted to dom which was get a good publishing platform and then expand. And that was very attractive.

Len: My last question is — and I might know the answer to this one — if there was one thing we could build for you, or one thing we could fix for you — what would that one thing be? If there’s anything you can think of?

Kyle: Well, at the moment, there’s lots of little things that I’ve learned, and would like to improve. I’ve already peppered your support staff with a number of those emails.

But at the moment, I have found an interesting thing with my books. I’m not even really sure why, but more so than most other authors, people seem to like print copies of my books. Not really getting too much into the details of my deal with O’Reilly, but probably 40% of my book sales of You Don’t Know JS are still print copies, or have been until recently, print copies of those books. That’s a phenomenally high number, compared to most publishers and most authors.

I have some theories about why that may be, that may or may not hold any water. But nevertheless, I have demand for print copies of my books. I’m already getting several dozen questions about this book. “Hey, are you going to make this in print?”

I’ve researched that I’ve found on-demand printers for that. But it seems to be that that direction is like, “Well, we can do that if you want to sell on Amazon.” Which — Amazon has pros and cons. But since you asked, if I had some way to click a button and be able to integrate with CreateSpace or whoever — to be able to do print-on-demand through Leanpub, for me, that would be beneficial, because people seem to like the print copies of my books.

Len: We’ve had people ask us about that before. What we do have, and it’s pretty battle-tested, is a print-ready PDF export option. I don’t know if you’ve come across that. And for a very heavily formatted book, it might not be exactly the right thing. But for many Leanpub authors, they’ve reported back that they can just click the button, upload it to Lulu or CreateSpace or whatever, and they get what they need.

Kyle: I’m totally planning on that. I’m relying upon that. But it would be awesome if, instead of me telling people, “Well if you want the print, go to Amazon,” I’d love to be able to tell people, “Just keep coming to my Leanpub page, and click here and be able to buy it.” I’m glad for the stuff that you all have, and I like the platform, and I made a good decision publishing here, and I’m going to keep doing that. But I would love to be able to keep serving the desires of people, which is that they still want print for some reason.

Len: Thanks very much for that feedback, that’s very clear. We always listen very closely to things that people say, especially people who — I shouldn’t say especially anybody, but if you’ve published many books with a conventional publisher, and you’ve got data like that, that’s very useful for us to hear.

Well Kyle, I wanted to say, congratulations on launching your new book, and good luck with Kyle Simpson week over at Frontend Masters. And thanks for being on the Frontmatter Podcast, and for being a Leanpub author.

Kyle: It’s an honour to have been here to talk. Thanks for listening, I appreciate it very much.

Len: Thanks.


Originally published at https://leanpub.com/podcasts/frontmatter/kyle-simpson-04-12-17 .