前言

熟悉我的同学都知道 4-5 月份在知乎上我开了三炮:

  1. Python 技术分享的乱象
  2. 《如何选择 Python 版本 2 还是 3》涉嫌大量的「抄袭」
  3. 我不认识 Pythoner 这种开发者

另外也回答了对于知乎 Python 话题下大量的入门爬虫教程的成因,详见 python 分享中初级爬虫教程泛滥是否有其语法特征和生态环境的锅?

知乎是一个群魔乱舞的地方。当时看起来,没人出来说话,我再不说话,知乎就要成为营销号收智商税最好的去处了。本着治病救人的原则,我隐晦的警告了那些以为关注了 Python 话题的知友智商都不够用的坏人。

PS:昨晚有个叫做 @Larry 的偷了我这篇文章发出来,他其实就是我文中抨击的一种人,不过抄习惯了没好好看。知乎的不作为纵容了平台上出现了这种不尊重别人知识的人,我只能说知乎💊

开炮之后,知乎的 Python 话题的风气好了很多,动机不纯的人基本都开始夹起尾巴,而那些营销号也大多被封号或者退出知乎了。自认为这是一次有意义的胜利。

关注我的人越多我就越觉得有责任说正确的实话。所以我的回答主要包含 2 种:1. 帮助新同学;2. 某些热门问题立意鲜明的观点,不过这种类型的回答自带杀伤力,并且经常不讨喜。

今天说的这篇是周二首发于我的同名微信公众号「 Python 之美 」,目前的荣誉是:

14 人赞赏,算是我被认可最多的一次文章了,还被这个同学暖到了:

感谢大家的支持,因为我这一篇得罪好几大波人。

下文主要针对发 Python 话题内容的微信公众号,不过其中有些普适的观点可用于其他环境。前方高能,非战斗人员速速撤离。

我为什么要在公众号里说这个话题?

基于个人兴趣和工作需要,我关注了架构、前端、产品、运维、Linux 以及 Python 的一些公众号,可以趁着上下班的分散时间充电。不过我最近发现了一个新现象,智商税已经开始往讲 Python 的公众号上来了,我每周都能看到某些公众号会发各种培训、收费课程的软广,以及一些低质量的技术大会。

当知乎粉丝、知乎专栏、微信公众号订阅人数到一定量的话,就会有人联系你,通过转发或者自编辑软广文章、文章尾部加二维码导流等方式变现。通过这多半年的积累,基本上市面上你们能看到的软广也会找到我,不过我都是拒绝或者置之不理的。

我和钱有仇么?显然不是,我还挺喜欢钱的,有了它可以过更好的生活。如果按照每周接一个软广的频率,这个月的生活费就出来了。不过,作为一个还在写代码的开发者,我还是得对自己的读者负责,所以无论是现在还是未来,你们都不会从我这里获得有被收税风险的内容。这里打个广告,外面坏人太多,欢迎关注本公众号和同名知乎专栏。

插个题,可能有一些内心阴暗的人会觉得我给《流畅的 Python》背书这事儿背后是挣了钱的,我也先解释下,首先是英子送我一本(嗯,确实有收益),之后的推荐和赠书活动都是我主动和英子提的。一切我认为好的、对读者有益有用、但是大家不怎么知道它的好的东西我都愿意出来背书。

另外有些人觉得我开 Live 是收智商税的,呵呵 最贵 29,有一天还打 3.4 折... 真的收智商税的都喜欢把人骗出去,悄悄收,在知乎明目张胆,这么多人监管着(尤其是我)他们不敢。小密圈就是一种税,我从来没看好过小密圈的模式,几个月过去了,你付费的那些圈子的作者中有几个真的像当时保证的那样持续高质量的原创输出(反正我从来不敢保证,既然没把握不好我肯定不开)?圈子已经多久没有更新了?

另外就是给大家普及一点常识:如果没有一个团队或者公司的支持,个人开发者是不可能做成每日都完成高质量的原创文章的。一周写 2 篇,坚持 2 个月我就认为灰常灰常厉害了,相信运营过知乎专栏或者公众号的应该都深有体会。既然持续高质量输出这么难,怎么留下并让公众号订阅者高度增长呢?这是一个挺有意思的话题,其中最常见的当然是每天花时间在网上找已经发过的文章,有点道德的人会联系原作者获得授权,有些嘛,直接拿走不谢。还有就是跟踪国外的一些相关技术网站,翻译人家的文章。总体来说,让读者觉得领域不重复,内容不腻就能保持住增长,而且还很容易出现引发热议的爆款文章,这种文章通常能带到 3-4 倍的阅读和关注量,成本却很低。

这个时候,我要说重点了。你关注的那些日更的都是编辑运营的公众号,它有几个特点:

  1. 盈利才是真的目的
  2. 运营编辑的技术水平参差不齐,选择的文章的质量嘛,自己想
  3. 文章并不求精华,真正的中高级开发者一般是不看这种文章的,所以文章定位是小白和初学者,容易造成读者产生错误的世界观和价值观
  4. 完成每天发文章的任务,需要花费大家时间和精力,成本很高。这直接会让运营者的技术提高受限,迎合读者和技术提升是有比较大的冲突的。

如果能做到日更的个人公众号所有者的技术水平堪忧,真的一线开发者根本没有这个时间。

又想起来下面这句话:

天下熙熙皆为利来,天下攘攘皆为利往。

大家辛辛苦苦提供内容,免费的话内容提供者有什么动力更新?搞技术的也得吃饭买房子,总不能靠情怀吧?技术公众号靠赞赏和让读者点下面的流量广告的收入得饿死。

我也很支持技术和知识的变现,那么问题来了,我喷个啥?

我关注的领域中没有一个像 Python 圈子这么乱的:

  1. 公众号所有者本身是有经验的一线开发的凤毛菱角。
  2. 下限太低。前端现在这么火,培训机构这么多,但有那个知名前端公众号在发培训班的软广?另外的领域的公众号也能看到软广,但是都很少,而我大 Python 基本是隔 2-3 天就能看到一次
  3. 低质量的、无干货的当前热点、冷饭热炒的文章大受关注,点赞阅读数都很高。
  4. 高质量文章太少,大部分有能力有经验的开发者并不善于也不愿意营销自己,容易被现在的环境弄得放弃掉。

环境就是这样,针对这种情况,我谈下面 3 个方面。

自学编程 vs 参加培训

金旭亮老师写过一篇 同名专栏文章 ,里面的观点非常中肯,有兴趣大家去看看。

很多人在值乎和私信里面问过我这个话题,这也是初学者尤其是非计算机专业初学者最关心的问题了。

先说结论。不要参加培训!Python 这么容易上手你还需要培训,那么你要考虑下是不是适合编程了。

有些同学会说「你已经是老鸟了,你当然不能理解我这种非计算机专业学编程要面临什么啊,站着说话不腰疼」?其实我也是从一脸懵逼开始的,我大三看软考书的时候简直都是在翻「天书」,因为上面的字认识,连起来却完全不知道它在讲什么,所以备考的时候没有老师,死记硬背,熟能生巧,在学习过程中不断的去理解当时不能理解的那些内容。而现在的环境要比那个年代好的太多了,还需要老师手把手教,反正这种同学我不需要,未来也不会有什么发展。

上段时间知乎有个问题「学习 Python 很吃力,我是不是可以放弃编程了?」我的答案是「假如不是由于心不静或者学习方法、用的资料有严重问题,请放弃」。有很多行业可供选择,如果你只是为了来这个行业捞金,对它既没有兴趣也没有毅力解决那些看起来不能完成的任务,何必呢?

我的职业生涯里面遇到过一些通过培训出来的同事,总体的感觉是他们只是把编程当做一门养家糊口的工作,自学和理解能力都比较差,代码质量差很少反思,善于堆叠代码,bug 多,习惯手把手教,缺少举一反三的思维能力和习惯。在这么快速发展的互联网行业里面显得那么格格不入,不过唯一幸运的是培训的同学没选择前端,否则有的受了... (随便黑了下前端)

说到这里,分享一个我之前对于团队成员要求的错误理解。在我刚做技术 TL 负责招聘的时候,我的观点是团队的同学必须要精英,我接受如下三类做同事:

  1. 领悟力强,有天赋
  2. 已经在工作需要的领域非常深入,哪怕不再学习也能靠现有的经验解决那些未知的问题
  3. 主动性强,能不断自我提高,喜欢接触和挑战新事物

所以那段时间招聘到 HR 实在忍不了了,找我谈话,希望我降低标准。我也觉得挺过意不起的,就请她吃饭,吃饭过程中她说了一个观点点醒了我:团队里面要有不同层次的人。为什么呢?

  1. 优秀的人需要挑战,不喜欢干那些脏活累活,谁来干?
  2. 程序员最容易不服人,都是尖子那么矛盾就会激增,事儿会多
  3. 绝大多数人都是把编程作为谋生的手段,优秀的能走到金字塔尖的人非常少。人才市场就那么大,很难招聘到符合我口味的又愿意来的人

那么我上面说的这种能干活的、要求相对低,俗称码农的开发者还是非常有市场的。这也是培训这个行业能活到现在的根本原因之一。那么培训真的没有必要么?

培训行业以赚钱为最高目的的、鱼龙混杂、弄虚作假成风

我能接受参加培训的唯一的理由是「省时间」,相信每个人都能想起来自己在第一次学习某个之前从未了解的领域知识的时候要多费劲,现在有人给你准备一个课程体系,在一个较短的时间里面教会你一些可能没有别人教你自己琢磨要花费 2-3 倍时间才能学会的东西,这不是典型的用金钱换时间嘛?对于一些人看来不是很值么?其实不然,因为有 2 个问题:

  1. 培训班的好处大都是短期的,用不了多久就会消散。一开始会经历较慢的自学过程,但是这个过程你会掌握的自学能力和学习方法,尤其会初步形成一个适合你的找到问题、解决问题的思路和流程,对于你成长为中级和高级程序员来说,是极为重要的。而培训需要将大量的知识「灌入」学员的大脑,让学员掌握那些开发套路,学员知其然不知其所以然,问题稍微变化一下就不知道怎么解了。
  2. 并不能确定培训机构灌输给你的东西本身是正确的,也请谨慎面对他们传输给你的价值观和世界观。

那么怎么分辨好的培训机构和讲师呢?粗列几条吧:

  1. 培训机构的老师有确凿的证据表明其还在开发第一线,且公司比较成熟知名,最好讲师有一定名气。据我所知,培训老师大部分是自己混不进开发第一线只能去干培训老师糊口。
  2. 凡是说保证就业的培训机构别去,因为清华都不敢保证,招生的不诚信,也不要指望在教学和就业推荐方面诚信
  3. 提供不满意全额退尾款条款

你需要了解业界口碑,而不是看培训网站贴出来的自己说的那些评价和薪资。讲个笑话,我之前无意在很早期进了某个很知名的 Python 培训 QQ 群,看了几次助教在吹嘘他们的学员中有去了豆瓣和知乎的,有次我实在忍不了了,就直接在群里问,你说的入职豆瓣的那个学员叫什么啊?那哥们马上不说话了,群里气氛立刻尴尬起来,不过恰好这个培训机构的负责人想拉我入伙之前加过我微信,他就和我私聊,说是那个助教记错了,没有去豆瓣的... 人艰不拆,我也没必要挡人家财路,最后从那个群被「劝退」了。你们想想,他们在背后骗了多少人,如果你们以后看到这种吹嘘的东西,问他们来豆瓣的是谁,然后私信或者其他方式联系我,我给你们认证。不过你们应该问不出来具体的名字,因为这都是培训机构骗人的套路罢了。

全栈?

我经常看到有人说自己是全栈,结果一问也就是会点前端会点后端。当然全栈不是要求样样精通,而是能根据需求能快速掌握一门语言或者技能,以达到能够投入实际开发,独立实现各部分功能的要求。

全栈是目前市场希望出现的一种开发者,既懂前端也懂后端,还能写的了 ios 和安卓的 app,能运维,可以自己设计,这样可以减少不同工种之前沟通的成本,通常一个人就搞定了,而且还便宜。由于圈子有限我到现在还没见过一个真正的「全栈」,当然我相信这样的牛人是有的,不过数量...

事实上能熟练 2 个门类(注意我说的不是精通)的开发者就很少了,目前我就不满足。我只是能熟练使用 Python,另外就是能当个小「前端」用用,完成工作没问题,但是我自觉自己在前端这个门类上就是个「搬砖」的。为啥这么说呢?

有很多后端工程师说「哎呀前端有啥难的?」,好,我们开始做一个调查:

  1. 只会用 Bootstrap 和 jQuery 这种框架完成前端工作?剩下了 50% 的人
  2. 能借用 Google 写工作需要的 Javascript/ES6/Typescript 程序?剩下了 30% 的人
  3. 熟练使用前端的各种工具和框架,包含但不限于 React、Vue、Webpack、Sass 等,剩下了 10% 的人
  4. 能手写 css?只剩下了 1% 的人了!!

有些同学以为在本地能写个简单的 React、Vue 的项目就算前端全栈了,充其量不过是一个熟练的 API 使用者。一切没有在生产环境中验证的程序都不算过关。

如果你看到一个课程是教你成为全栈工程师请果断开骂,这 TM 不是智商税是什么?

Python 有没有站到风口上?

当我到一个陌生的地方去吃饭,我通常会观察整条街上那家店里面的人多,尤其排队的人数比较多的那种是我的首选,对于我不熟悉的领域我一向倾向于选择别人都愿意选择的那种,从概率上讲选错的概率会低很多。我把这种行为叫做「人云亦云」。当我不知道怎么选择的时候会跟随别人的选择,一般情况下没必要花大精力让自己做出正确的选择,要是有人举起旗帜就很容易把我拉入伙。

我们来看看说 Python 站到风口上的主要是什么人:

  1. 培训机构
  2. 自媒体
  3. Python 书籍出版社和作者
  4. 没什么输出的小号

那么他们有什么「Python 在风口上」的证据么?好像说了很多话,但是没有一条有理有据。很多想入坑的同学并没有辨识能力,有人说好,但是没怎么看到有人说不好,那么就认为确实好了。

那 Python 站不站到风口上谁说了才算?

  1. 使用 Python 的第一线开发者,在前线了解行业发展情况
  2. 由于 Python 在风口上而获利的公司或者机构的相关消息

目前做 AI 的很多,不过现在还没有什么值得兴奋的例子。而我符合第一条,反驳下被肆意夸大的最主要的 2 个观点(有其他观点的欢迎在评论区举出来唠唠):

  1. 人工智能(AI)火爆,而相关的库都是 Python 写的。首先它们的执行部分都是 C++/C 写的,不过是提供了 Python API,上当了吧... AlphaGO 连柯洁都击败了也让我震撼,其中用到了 AI、机器学习(ML)和深度学习(DL)技术,我也非常看好这个方向的未来。但是先冷静一下, 能做好 AI 的工程师用 Python 都不是问题,但是会用 Python 非常不一定能做人工智能的工作 。现在出版社特别喜欢出版 Tensorflow 相关的书籍,因为当前热点好卖啊。不过各位先听我说几个论点:

    1. 待遇和你的不可或缺性直接相关。你会用 tensorflow、sklearn 提供的例子调用其 API 有什么竞争力?给个聪明点的高中生学 2 天也会。你看到 5-6k/month 的工资不是 AI 工程师,是 AI API 工程师。
    2. 没有坚实的算法和数学基础,建议不要碰。哪怕我这种使用 Python 6 年的熟手也是知难而退的。英语不好也请谨慎,要不然看个论文都会让你怀疑人生。
    3. 让更专业的人去做,不要以为别人硕士阶段都在吃屎。对于大部分普通的程序员,不要什么热门就往那个方向去挤,做一个更专业的程序员更好,术业有专攻。如果你真的想往 AI 方向走,听听吴恩达免费课,买本周志华的《机器学习》,kaggle 有比赛项目做做,再思考下能不能 hold 住。
  2. 在程序员圈子热议。现在看来基本是个程序员就能写的了 Python。好像不会 Python 都不好和别人打招呼似得,我很欣慰这样的趋势,不过这个和真的靠 Python 就业吃饭差别是很大的。作为一个靠 Python 吃饭的人,我当然希望 Python 火的不要不要的,不过我对整个 Python 市场的感觉是 一直不温不火 ,坑儿位就那么多,需求的涨幅平稳。好的 Python 工程师很稀缺,钱和环境都可以给到位,前提是能达到要求。别想着学会 Python 就会升职加薪,迎娶白富美,走向人生巅峰。我们缺的是中高级开发者,初级市场早就饱和了。之前我在值乎还被问到「听说现在 php 前景不好,在 Python 和 php 中间如何选择」的问题。程序员有个通病就是喜欢按着自己的喜好瞎建议,一个 Python 2 的 unicode 和 str 还分不清楚的人会信誓旦旦的告诉你一定要学 Python 3 只有 SB 才学 Python 2,你要问他 Python 3 好在哪里它又说不出来;一个根本没怎么写过 Golang 和 Python 的人就会出来告诉你应该选 Golang, Python 已经过时了,理由就是 GIL,而 Golang 快。现在互联网这么发达非常好,什么都能搜到,虽然各类观点俯拾皆是,但是有时候却会让人迷失了方向。作为一个程序员,人生苦短,我建议你学会 Python,但是如果你想靠它吃饭,尤其是希望 1-2 月速成的找到工作,请谨慎。

那么为什么现在还有这么多培训班,有软广是因为有市场。咋没见什么 c++ 或者算法的培训班?因为他们教不了啊,Python 多好教啊,拿着 AI 的幌子,反正这些初学者也无法分辨质量。

结尾

说了这么多,就是在我自己的地盘吐个槽,但我坚信关注此专栏读者们在看到软广的时候都是淡淡一笑,如果你身边有人要跳进火坑,请把这篇文章甩给 ta,你们棒棒哒🍭。