趁女儿睡着了,我终于有时间写篇2016年的总结,希望能赶在新年第一天结束前写完。这一年对我来说很特别,我做了很多技术和非技术的尝试:

  1. 写了一本书《Python Web开发实战》,到现在已经印刷了7k册,还有3k册正在筹划中。这本书未来还会输出到台湾。凭借此书我还获得了博文视点「优秀作者」殊荣,呵。
  2. 9月份弄的知乎专栏「Python之美」,有7k+订阅者。虽然于11月初就不再更新。
  3. 11月15日开始弄的微信公众号「Python之美」到现在已经超过2400的订阅者。当然距离一些大号还是很遥远的。
  4. 在开发者头条的独家号「Python China」已经有15k+的订阅者,总排名第15。
  5. 从12月初开始在掘金写专栏,其实就是把我的文章顺便拷贝上去,现在已经获得1k+的喜欢,我也有了1k+个关注者。
  6. 在12月27日举办的首次知乎LivePython 工程师的入门和进阶,获得3k+人参加,4.5星评价。也算验证了知识变现。

这一年除了技术,我也学到了很多其他方面的成长和理解。今天和大家分享下。

写书

如果你不断的学习,在成长的路上会遇到多个瓶颈。我在去年也遇到了:学习Python进入一个迷茫的阶段,不知道下一步该怎么提高了,这个时候通常有三个选择:学习一门其他的语言、朝着管理的方向、换个工作/行业(比如转行去做PM),当然还有一个选择,就是继续深入Python,但是需要重新审视自己和Python这门语言。现在的互联网环境太浮躁了,相信很多人会选择第一种,学习下其他语言。我Python还学的远远不够,因为我知道有哪些东西我不会,没学好,没尝试过。

在Live里面也讲过我之前的一个面试的故事。当时我学习了很多web框架,但是没有一个足够深入,面试时面试官问题问的都很深入,弄得我很尴尬。

参加过Pycon2012的北京场,当时有很多出版社都在摆摊,我就无聊去翻,那个时候我应该连语法都没学全,但是可能面相比较老成,其中某出版社的工作人员,可能也是个编辑,问我:「有没有兴趣写本书?」我当时还是很懵逼的,我当时说:「一个东西你不学习5-10年甚至更久,怎么有资格写书呢?」嗯,后来这个出版社的书我就很少买了。

我记得最早是在2013年的时候,Puppet当时很火,出了好几本书,可能由于在国内算玩的很早的,当时还有编辑邀请我写书,我显然是写不了的,因为已经不是一个运维了。说句题外话,当时竟然没有人找安居客的人写puppet的书我还是很惆怅的。再后来也有人找我写书,我都是婉拒了,因为我觉得还是得沉淀下,直到去年年底。

这本书我有很多值得骄傲的,但是也有一些遗憾的。如果现在让我再写一本显然我会写的好的多(虽然暂时我并不会再写了,2018年之后,Python 3假如开始露头之后倒是可以找我聊聊)。非常感叹国内的出版环境,希望越来越好。如果有同学正在写书,可以看看写一本技术书籍,希望带来点灵感。我非常希望在国内写过书的作者们都能出来分享一些经验,也希望出版社能对写书做一些系统的培训,而不是作者摸着石头过河,徒增很多弯路。

下一本书,我想写一本开源图书。

知乎Live

最近一个多个月开始,我开始了一种新的学习方式:每天上下班都是在听购买的知乎Live,类型各异,比如旅游、育儿、英语、美食,当然也有技术。我非常支持技术变现,也感谢知乎提出Live这种形式,虽然渐渐的也能发现一些滥竽充数的,不过目前总体来看还是朝着好的方向在走。为了赶上在上坡路时候才尝个鲜儿,也是为了让知友在看Python相关的问题时,我的Live都出现在右侧「相关 Live 推荐」中,我也开了一场。感想很多:

  1. 准备的问题的数量不要太多。我准备了12个问题,当时还是尽量朝着一个Live把我想表达的、自认为最有意义的问题都列出来。而且也比较自信对时间的把握。结果在我说完第一个问题的时候我就发现,已经差不多用了20分钟了.. 当时立刻慌了,再之后的一些问题都做了些简化。本来想预留10-20分钟用来QA和大家互动,结果问题聊完已经80多分钟过去了… 所以再来一次的话,问题还是控制在8个或者以下吧,别贪多。
  2. 别太自信。我这个人从念书还是就不爱记笔记,做过一些分享,也基本属于心理默默的打过草稿,却没实际的整体演练一次。提到的问题,大部分我都是像写小说那样写好了底稿,中间有些地方觉得写的不好的或者表达不够的地方加了些标记:我特别喜欢临场发挥出的灵感,因为偶尔在压力下会有特别好的效果。所以最后4-5个问题没有写那么清晰的底稿,只是写了一些关键词,句子之类的,也是由于忙没有整理成可读的一段话。结果由于过程中我老关注时间,有时候卡壳,有时候真的是靠临场发挥,说实话并不满意,以后这种场景还是老老实实的写好底稿吧。
  3. 考虑录的语音要重录的情况。在实际的录音中,有时候说完一段话,不满意,比如中间一些词语发音觉得不合适,通常是由于我的籍贯问题,对卷舌翘舌有时候着急了分不清,那就要重录,重录不满意又要重录,这个过程大家都在等你,无形中也是一种压力,而且这种重录的情况也要放在规划Live的时间里面,留有一些余地。
  4. 我在听其他的Live的时候,直接选择了150人可参与讨论,当时比较担心人太多了刷屏,量多也会影响我从大量的问题中向前翻找典型的问题的时间。但事实上其实大可不必,因为知乎提供了「只看主讲人」模式,而且也提供了一个「待回应」的功能,未回应的问题会列出来,很有用。所以感觉500-1000人甚至全部可唠也还好。
  5. 使用问题反馈问卷。上面限制能互动的人数,就会造成后面来的同学参加了只能看和点喜欢,我觉得这种方式不好。开Live之前,我听过几个Live,除了学习一些知识,也是在学习经验。我在其中一个Live中学到用问卷,不过到我这里就变成了「Live问题收集」,你可以从问题中12个问题中选择你最感兴趣的8个问题,最后帮助我决定回答每个问题花费的时间和深度。还可以提交你最想了解的问题,这样我在最后整理的时候就能找到一些典型的问题拿来回答,防止前150个人不好好利用评论机会造成后面的人有问题没法问。最后我还留了一个私人的问题,就是选择你想了解的Python的技术,这简直比精准投放都要好使,这些人都是真的受众,要不然也不会花钱来听Live的,主讲人可以用来做各种调查。最后建议知乎Live的PM解决下「不能互动的参与者怎么更好的参与」的问题。
  6. 知乎Live的BUG略多,不多说了,Live中有图…

要不要为知识付费

这个Live我在知乎专栏、个人微信公众号、掘金和开发者头条的帖子都有不错的查看量,而且非常有幸的是,知乎官微也发微博推荐了这个Live。而 Python 话题有13W+的关注者。可是最后实际的参与者才3k+,还是略让我失望,不管有没有人信我失望的不是没挣到更多的钱。

现在我越来越认可凡是钱能解决的东西,就不要浪费时间。比如我愿意对Alfred、1Password、Evernote、Jitouch等工具付费,我也会去买优酷、网易云音乐的会员。因为折腾它们会浪费我的时间,这些工具能帮助我提高的工作效率,这些时间,我能多学习一门语言、多看2本书、多陪家人很多时间。

人的时间、天赋和精力是有限的,哪怕我一天24小时不间断的去学习,所学有限,还会让我活的特别的辛苦。有些东西我可能学会或者理解要花几天甚至几个月的时间,走很多弯路,其实我需要的只是别人给我指一条路;通过别人的经验我能了解到我的方法是不是对的,如果是会更加坚定我走下去的信心,如果不是我就要赶紧停下来尝试用其他方法或者用在Live中别人提到的方式试一试。这点钱对我来说,反而非常值得。因为你与和你同样优秀甚至比你优秀的人差的就是一个交流的机会,再举个例子,我旅游经验很少,我听了几个Live让我涨了非常多的知识,无论是自己折腾而浪费的时间还是金钱,那么Live显然规避了很多风险,提高我的旅行质量,这点钱显然非常值。在我不了解的领域,我愿意接受这个领域的专家的经验和意见。

我在微信公众号和知乎专栏的打赏收入也有2百多,嗯,今天叫外卖已经犒劳自己了,非常感谢各位对我的鼓励!

重新审视「关注者」这个身份

我在知乎上面有11k+的关注者。我有2个QQ学习群,加起来差不多1.5k呢,其他的关注者上面说到了。

Live结束后,我无意中发现,购买「聊表心意」的有25个人,但是其中是我的关注者的只有7个人!

然后,无聊的我就研究了下参与的人中我的关注者有多少,结果也是蛮出乎意料的…

我fork了zhihu-oauth,添加了following接口,脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import os
import json
from zhihu_oauth import ZhihuClient
TOKEN_FILE = 'token.pkl'
FOLLOWER_FILE = 'followers.json'
client = ZhihuClient()
client.load_token(TOKEN_FILE)
me = client.me()
live = client.live(789840559912009728)
participants = live.participants
participants = [people for _, _, people in participants]
total = len(participants)
if os.path.exists(FOLLOWER_FILE):
follower_in_live = json.load(open(FOLLOWER_FILE))
else:
follower_ids = [fo.id for fo in me.followers]
follower_in_live = []
for people in participants:
print(people.id, people.name)
if people.id in follower_ids:
follower_in_live.append(people.id)
elif people.following_count < 1000:
for _, _, people in people.following:
if people.id == me.id:
follower_in_live.append(people.id)
print(people.id, people.name, people.id in follower_in_live)
json.dump(follower_in_live, open(FOLLOWER_FILE, 'w+'))
print('Total Num: {}'.format(total))
in_live = len(follower_in_live)
print('Follower Num: {}'.format(in_live))
print('Non Follower Num: {}'.format(total - in_live))

据说知乎有5020限制,也就是不能获取我的全部关注者去求交,所以只能迂回的遍历每个粉丝关注的人中有没有我来确认,但是由于如果一个人关注的人太多遍历起来太慢,为了节省时间加了个限制,所以结果还是有点偏差的,不过应该影响会非常小。结果如下:

1
2
3
4
➜ python3 zh.py
Total Num: 3037
Follower Num: 658
Non Follower Num: 2379

好吧,参与者只有21%是我的关注者。

除此之外,还收到了116的赞赏(8 * 4 + 28 * 3)。7个赞赏的同学中只有4个人关注了我…

这让我不得不审视下「关注者」的意义。哈哈~

让Python圈子更好

Python很受创业公司青睐, 但是不止一个创业者和我说, 其实他们不怎么想用Python作为初创的语言。原因很简单, 相同性价比下人太难招了. 我记得有一天, 一个猎头找我, 聊得过程中发现她对Python有很多偏见, 它觉得中国搞Python的人也就那几百个..

虽然是个特例, 还是让我很有感触. 来豆瓣之前, 上一家公司有十多个产品线, Python只有2-3个. 我都要离职了才发现, 好几个人竟然一直以为我是做ruby的. 囧

我非常认同玉伯在知乎回答《如何评价真阿当的文章:《2016年前端技术观察》?》说过的一句话。 我稍微加了一小句:

前端风起云涌的类库、框架、工具,各种前端技术交流会议。都是为了两件事:

一是为了更好地写代码,
二是为了写出更好的代码。

我做知乎Live是因为看到了前端的几位老师,本来想带个头,但是明显是我一个人在战斗,和前端大V们互相捧场互相热烈讨论和卖萌形成强烈的反差,我不得不说,我的参与人数只比小爝的Live少2百多(2017-01-25更:已经反超了),相当不易…

希望越来越多的有实力的人出来让这个圈子更好吧。我面试别人的时候,如果面试者对XX有什么想法,我肯定会问那你做过什么尝试和努力?我一直在以我微薄的能力让事情变好。

我的坚持

在Live中我并没有说我的越来越努力地原因。今天心情奇怪,唠一唠(没准那天就删掉了)12年对我有很大触动的三件事:

  1. 某一天,我晚上加班到很晚,坐了一趟差不多末班车的地铁回家。当时看见一个穿的还算干净、年龄大约四十出头的人在沿着车厢乞讨,我看着他从我身边走过,我在想四十岁的时候我在做什么?是发愁子女的学费凑不齐怎么办?是每天上班唯唯诺诺谁都不敢得罪担心自己的饭碗担心被下岗?还是在担心如果不上班的话家里的生计无法保证,而不能不放弃自己的理想去做一些自己不喜欢没有兴趣的事情呢?

  2. 当时一个关系很不错的同事觉得在北京没有前途,父母有帮助在老家找了一份还不错的公务员的工作,不得不离开北京。那个周五晚上我去车站送走他之后,列车驶出站台,四周空空,看着远去的列车,我莫名的感伤,3-4年之后我会不会还能留在北京,我会不会也要不甘心的选择离开北京?

  3. 当时曾经特意在公司附近的美廉美看奶粉和尿不湿的价钱,发现靠我的工资根本养不起一个刚出生的婴儿。

今年写书、开知乎Live、在各大技术网站开专栏写文章获得认可等等成绩,并不是一朝一夕,而是基于这些年的扎根。

自己和自己干杯,感谢自己的坚持。