专栏名称: Python程序员杂谈
关注PythonWeb开发及相关领域的方方面面,分享在实际工作中遇到的问题及解决方案。关注the5fire,了解Python开发的点点滴滴。
目录
相关文章推荐
三峡小微  ·  2025年金沙江下游梯级电站分层取水试验正式 ... ·  4 小时前  
三峡小微  ·  奋进廿载 勇当湖北省能源保供主力军 ·  昨天  
普象工业设计小站  ·  狠狠钟意这个咖啡杯 ·  昨天  
三峡小微  ·  我们在风光三峡看到“哪吒” ·  2 天前  
51好读  ›  专栏  ›  Python程序员杂谈

胡阳:汗水铺就代码之路,三分天注定,七分靠打拼

Python程序员杂谈  · 公众号  ·  · 2019-08-15 09:25

正文

胡阳  前搜狐资深开发工程师,现任知乎资深开发工程师


2008年开始,他写博客11年了。

仅最近两年内,博客的访问量累计超过600万。
2017年,他发布了《Django企业开发实战》视频课,广受学员好评。2019年,实体书出版。

「时间在我看来并不是虚无的,是非常具体的东西,一分一分,一秒一秒,都很具体。」——胡阳

| 李冰

采访 | 乐馨,李冰



01

入门——兴 趣并非偶然



胡阳说,他是 笨鸟先飞 的那种人。
高考后,胡阳第一志愿报的是机械工程专业,他查了下专业背景,需要绘图,于是就开始在家自学。
不过这番准备没派上用场,因为报考结果出来后,他的专业是信息计算科学。
他想起高中发过一本 Visual Basic 的教材,但因为高考复习紧张,没时间上机。于是, 在等待大学入学的这段时间,他把书翻了出来开始研究。
入学后,他发现 VB 是大学的基础课,上课教的竟然就是暑假自己学的内容。全校无论什么专业的人都在学,而当其他同学上机还是一脸懵的时候,他已经会写了。
胡阳说: 我们为什么会对一件事情感兴趣?一种情况是你对这件事情真的有天分,一开始上手就比别人学得快。另外一种是你比别人起跑要快。
成就感激起了他的兴趣。除了 VB 之外,互联网有无数的未知在引人探索。
为什么电脑运行得慢?什么是中病毒?所谓的 黑客 」怎么入侵网站?
怀着好奇,大一那年,他把课余时间大多花在学习研究网络安全上。
他在网上能找到很多黑客类的教程,比如演示怎么去入侵一个网站。但是怎么去实践呢?这类教程的时效性太高,网站不会敞开门在那等着。
当然,方法也是有的。那时就有 X-scan 扫描器、挖掘鸡这类傻瓜式工具,只要填一个网址,它会帮你扫描有什么漏洞。
但问题是,这不太有趣,就算黑进网站了也只能说明是人家这个工具写得好。
于是,胡阳的兴趣转向了加密与解密的方向,与脱壳相关的内容。当时还是桌面 APP 的时代,下载之后就可以很方便地实验,很多方法他试过后,发现完全可行,这给了他信心。
不过,软件终究是程序员写出来的,胡阳觉得自己还是得去学编程。
恰在这时,学校有一个信息技术兴趣提高班来招生,他想:那就去试试吧。
这个决定完全改变了他接下来两年的大学生活。
米老师一手创立了兴趣提高班,他不仅一个人教所有的计算机基础课,而且引导大家探索性地学习,相比于照本宣科,他更在意的是启发大家从不一样的角度看问题。
胡阳说: 你会感觉整个视野被打开了。
在兴趣提高班,大家因为同样的热情聚集在一起,甚至寒暑假也留在学校。这两年,时间和汗水为他打下了坚实的地基。
毕业时,在其他人在就业市场中迷茫的时候,他已经去了师兄的公司搞开发。他说: 这个行业能够让你以自己的方式去做有价值的东西。 因为开发一个软件需要依赖的外部成本很低,只需要有一台电脑就能搞定。对我来说比较幸运的是,这个事刚好是我感兴趣的,并且可以有不错的收入,能够养家糊口。」


02
编程,不只是一份工作而已


2011年,他从 Java 转到 Python 开发。

HR 问他:你学了多久 Python 并能正式工作?他回答: 一两天


他在回答里推荐了3本书,还有自己做过的项目练习代码。

为什么会选择做出这样的改变呢?

那时,胡阳才刚毕业不久。工作后,他发现公司会接各种项目,比如Java、.NET、PHP、VB,哪个方向他都没办法去深入地学习。他想给自己定一个计划,却不知道怎么做,前路一片迷茫。

辗转反侧了几个月后,他决定辞职。

那一年,他在博客中写道: 我选择走软件这条路,不是为了一份工作,是从纯对技术的热爱出发的。或许我还没有那么多的人生经历,不了解生活的本质。但是我一直在告诉自己,有些事,你要是想做的话,即便不知道是不是和你想的一样,那你应该去做,因为这样你才能够看得更多。

一年后,他加入了搜狐。

他说: 在搜狐六年的时间,相当于又上了一个大学了。

第一年,他每天都在拼命学习。他说,虽然之前有了一年的工作经验,但还是觉得自己什么都不知道。

这样的状态持续了一段时间后,他的学习曲线逐渐平缓。不过很快,他又面临了全新的挑战。

部门变动对于一名普通员工意味着什么?有人只能被挑选,也有人拥有更多的选择权。因为 在部门变动或业务扩展后,总会有一些机会出现。那些做得好的人,这时会浮现出来,他会被提拔到更高的位置,带团队负责更大、更多的业务。

所以,胡阳发现,攻克了业务和技术之后,他得带团队了。

一开始,他没有多想,只是用之前老大的方法来带大家。不过,管理会分散精力,在业务膨胀之后,甚至面对全新业务的时候,他有点手忙脚乱了。

于是,他开始思考:技术人应该怎么做管理呢?

新手管理者的痛苦在于,他会纠结: 这哥们怎么写得这么慢?我写早就写完了。

不过,他发现自己可以换个角度想问题: 把这件事情交给他,就等于你已经做了。为什么呢?相当于你本来是一个单核的 CPU,变成多核了,对吧?你可以同时接多个任务,虽然其中一个跑得比较慢,但是其他的都运转得非常快,所以整体你的产出还是足够高的。况且他也会成长,会不断变快的。

他总结,本质上 leader 要思考的是团队整体,从而不断地把这个项目的 feature 往前推进。

不过,管理的确会消耗精力,他没有足够时间持续地输出或输入代码,也不能具体负责某个项目的开发,但会写一些 打杂的 」代码,解决出现的小问题。

他说,自己会在业余时间学习,保持对技术的感觉或者敏锐性。

搜狐媒体大厦
胡阳进搜狐的初衷很简单,就是想找一个流量大的平台,参与做一个好产品。
从他刚加入时,搜狐就是一家成熟的公司,拥有成熟的系统。他从慢慢熟悉新闻业务开始,维护了它大概六年的时间。
2018年,在搜狐的最后一年,他其实有点沮丧。
尤其是参与团队管理之后,他对公司变革的意义有了更深的体会。 你发现在部门变动或者商业调整之后,技术的价值其实没有那么大。就是说,你可以把这件事做好,但是如果换一个人来做,哪怕做得不是很好,结果也没有太大差别。
对于技术人来说,最大的否定莫过于此。
可是,怎样才能最大程度地发挥他技术的价值呢?
他想要参与一个自己喜欢的产品的构建。这也是他选择加入知乎的原因。
他不太爱看新闻。他认为,对于新闻这种高流量产品,虽然也存在一些正经的报道,但更多是所谓的 标题党 ,无论标题再诱人,它的信息对你毫无用处。而知乎成立不久他就注册了账号,他觉得,大家贡献的内容更偏知识和经验,对用户来说更有价值。
于是,他登上了知乎这艘 海盗船 」。
来到知乎,他的第一感觉是:这个地方后端真多。
因为和之前相比,搜狐门户是媒体属性,把新闻发布出来,大家去看,流程就结束了。而知乎是一个 UGC(用户原创内容)的社区平台,所有人都是可参与的,业务更加复杂,尽管功能整合在一个社区里面,但下面细分的内容都是独立的产品。而且大家经常在群里交流,技术氛围非常浓。
他觉得上家公司像一个大的船群,大家朝着共同的目标各自前进。而现在的则像一艘大船,大家一起让船驶向共同的目标。



03
写博客——分享技术和经历

从 2008 年开始,胡阳已经写博客 11 年了。
博客内容不仅包括技术,还有他的读书笔记、对某事的感想、找工作的历程、年 度总结,等等,像是一条河流,沿着过去流淌到现在,一路的景色清晰可见。
他前几年有一个习惯,看到一个好博客的时候,会从头开始把所有内容看一遍。除了看内容,他还会揣测作者当时是什么状态、想法、这个人的成长过程是怎样的。这是他会坚持写博客的一个原因,把自己的经历共享给大家也是某种意义上的开源。
2017 年, 狐部 门变动,上层战略都在调整,他手上的事情停了,时间突然空了出来。 他想: 毕竟工作时间也挺长,在搜狐已经呆了五年,他希望能有一些具体的东西留下来。
「为什么这么讲?比如说我有很多同事换公司之后,就不再用 Python 了。无论他之前的经验有多少,只对他自己来说是有价值的。因为有这些经验,他可以快速地去适应另一种新的技术。
「当你跟他共事,你会发现,原来他懂这么多。而他转行了之后,其他人可能也有同样的感觉,但是肯定不如你也用 Python 时的这种体验更直接。这在一定程度上是一种浪费。
「但如果他把经验变成书或者视频,哪怕之后真的不做这个语言,或者不做这个行业了,它对别人还是有帮助的,因为这是沉淀下来的东西。」
另一方面,这样也有助于技术的学习。
他说:「怎样学技术才能做到又快又好呢?一是带着问题去学习。比如你遇到一个 bug,怎么都搞定不了,刚好有一本书能解决,那你肯定会特别投入地把书看完。另外一种就是我常用的方式——以教代学。」
既有输入,又有输出,中间就是大脑在提炼总结,理解吸收。
那年,他做了《Django企业开发实战》的视频课,学员的反馈很好。 后来,他把内容进一步细化完善,整理成了纸质书,2019 年初在图灵出版。
Django是基于MVC(model,controller,views)构造的开源Web开发框架,可以显著提高工作效率。
胡阳举了个具体的例子:「如果用Tornado框架写一个新feature,我需要先把数据库设计好,之后写model层增删改查的部分,写controler层数据整合的部分,再写HTTP层接口部分,然后用阿里开源的antd去写前端。无论你的feature有多简单,这套都要走完,很繁琐。

「而用Django的话就会简单很多。因为Django是基于model构建的,把模型设计好数据库就有了,然后再配置一下admin,页面就已经有了。按照前后端分离的逻辑,你只需要配一个Django REST framework,所有restful 接口就有了。然后你根据model写rest framework的配置,就基本上已经完善了,剩下只要花时间写前端逻辑就好了。所以它是生产工具,能极大 地提高生产力。


04
让自己的历史不断向前

「时间在我看来并不是虚无的,是非常具体的东西,一分一分,一秒一秒,都很具体。
有多 少人 会执着地记录自己十年的变迁呢? 有人觉得这毫无意义,因为过去发生的已经消散。
但这是关于一个人的历史。我们无法想象一个只凝固于现在的,没有历史的国家;而如果一个人走在一步一消散的台阶上,也无法判断自己是向前,在原地,还是在倒退。
除此之外,胡阳也更明白自己时间的定义。
「你看老大爷大妈,满头白发,在街边走路,你知道你以后也会是这个样子,这是不可避免的。有时候我觉得人生是一眼可以望到头的,每个人都这么几十年的时间。
「对我来说,时间是一个刻度,它也是一个容器。
「如果说它是刻度的话,比如说一个小时,人生其实是由无数这样的一个小时组成的,对吧?而说它是容器,是指你可以填充不同的内容。比如我们每个小时都在闲扯,这个容器也同样填满了。」
它有什么样的意义呢?他举了一个程序员们很熟悉的例子——编程马拉松( Hacka tho n






请到「今天看啥」查看全文