专栏名称: 算法与数学之美
从生活中挖掘数学之美,在实践中体验算法之奇,魅力旅程,从此开始!
目录
相关文章推荐
九章算法  ·  硬核!一周刷爆LeetCode,算法大神耗时 ... ·  2 天前  
九章算法  ·  2025MLE上岸重点来了!资深MLE亲自教 ... ·  3 天前  
算法爱好者  ·  7118 ... ·  2 天前  
算法与数学之美  ·  Deepseek横空出世,打脸中科院孙院士团队! ·  2 天前  
51好读  ›  专栏  ›  算法与数学之美

从 Python 博主到网上大V:资深 Python 工程师的 12 年进阶路

算法与数学之美  · 公众号  · 算法  · 2017-06-11 21:44

正文

资深 Python 工程师的 12 年进阶

来源:100offer

编辑:Gemini




许多程序员走上编程岗位,最初的诱惑都是出于对计算机编程的喜爱,但工作  3-5 年之后,对于那些想在工程师这条路上走得更远的人来说,未来方向究竟在哪里,很少有人能得到清晰的思路。


为此,我们找来了 Python 领域的知名人物刘晓明(他运营着一个高质量的技术博客,还是中国最资深的 Python 工程师之一。通过他和 Python 语言之间的故事,来向各位读者展示一个资深的 Python 工程师是如何修炼而成的。


刘晓明正在操作一台四旋翼无人机


01

你是我们唯一雇得起的 Python 博主


2007 年,刘晓明从河北唐山南下来到上海找工作,身上只带了 700 块钱,这时他二十出头,刚毕业一年。来上海是为了面试一家国内知名视频网站,刘晓明在一家二星级酒店住了六天,终于拿到了入职 offer ,他松了一口气。


在那年,全国只有三家公司公开招聘 Python 工程师,而他已被前面两家拒绝。公司领导这么向刘晓明解释录用原因:「全国在写 Python 博客的一共就 6 个人,只有你是我们雇得起的。」


刘晓明是个在技术上不安分的人,在去视频网站以前,他进过唐山本地的有线电视网络公司,也做编程方面的实习。在刚毕业时,他为一家企业的 web 系统写了一套代码生成器,可以用输入的 Python 模式批量生产 Java 的 web 代码,包括每个数据库表的 CRUD 操作界面。这样一来,刘晓明每十五分钟就能完成同事一个月的工作量,但结果是被当时领导严厉批评,原因是引入了新的编程语言,而其他人不会。


Python 显然不属于领导们眼中流行的编程语言,即使在十几年后,刘晓明也承认,这款本质上极易上手的语言在中国仍然知名度不高,而在世界范围内,也仍徘徊在 TOIBE 编程语言排行榜的前十位,与 C 语言、Java 还有相当距离。


刘晓明对编程的热情来自 1997 年,一个做生意的亲戚带当时还是中学生的他入门了 DOS,当时流行的语言是 QBasic 和 C 。进入高中后,刘晓明接触到了Pascal 、Visual Basic 等。他第一次去网吧的时候,同去的朋友在搜索“奇怪的东西”,以及混聊天室,刘晓明却打开本地的 outlook ,注册了一个 etang 邮箱,并在网吧主机上练习 C 语言、VB 和 Delphi 。总之,这样的一个孩子将来不去学计算机简直是不合理的。


大学四年中,刘晓明通过自学,搞定了 Delphi6/7、C++Builder5、CORBA 编程、DLL、系统编程等。大学后半期还学了 Java 里的 JSP、Servlet,Visual C++,以及 Visual Fox Pro 和 Turbo C++ 。最关键的,是他邂逅了日后最称手的编程兵器——Python。


2005 年,大三的刘晓明在编程原理课程设计的作业面前犯了拖延症,他在一本名为《简明 Python 教程》的电子书那开了小差,用一周时间学会了里面介绍的编程语言,累计学习时间不超过 9 个小时,最终他用 Python 完成了课程设计。


「这是我大学阶段所有课程设计里唯一没有延期的。很多人研究 Python 是因为好懂,但深入 CS 学科很多高级主题时,Python 能发挥出更加强大无比的力量。」从此以后,刘晓明成为了 Python 的狂热粉丝。


由于这款编程语言的中文资料奇缺,英文不好的刘晓明只好硬着头皮去研究有关 Python 原版资料,这反倒替他锻炼出一身英语本领。他利用几个月的闲暇时间完成了 mod_python 文档的翻译,并把接近 6 万字( unicode 字符计算)的译文贴到自己的博客上。从那以后,刘晓明关于技术的知识摄取渠道全部变成了英文文档和原文书籍。


02

Python 是最称手的编程语言


进入视频网站以后,刘晓明挣脱了原先的技术束缚,使用任何编程语言或工具都不再被视为另类,他开始了大刀阔斧的尝试技术理念。这一年的 11 月,刘晓明只回了四次家,其他时间全部泡在电脑上研究 CDN,用这一个月的时间,刘晓明弄清楚了所有和 CDN 相关的知识。第二年,刘晓明得以参与公司一个耗资4000 万的系统项目,成为团队中仅有的两个程序员之一。


从那以后,「这家公司想开发任何和 CDN 有关的东西,都离不开我了。」


也正是同一个时期,刘晓明开始有意识地在博客上更新编程技术内容,他随时在上面发表自己的操作感想,包括封装 libpcap 、做网络抓包、以及通信劫持,俨然是个黑客。他一度希望寻找比 Python 更好的语言,为此尝试了 Lua、Erlang 等。


「在 2008 年到 2010 年之间,我研究过 Lua ,很多游戏脚本是用 Lua 写的,包括魔兽世界,关于 Lua 我写了将近 18 万字笔记,也用它做了一些信息安全上的程序,但 Lua 有一些缺点,比如作用域、模块支持等方面的问题。后来还研究过一阵子 Erlang ,一个函数式编程语言,写了 37 万字的笔记,但后来也是一直没怎么用过。」


最终,刘晓明发现还是 Python 最符合自己对于最佳通用语言的需求。即便是对Erlang 产生兴趣期间,刘晓明也尝试做了 C node 的 Python 封装,使得Python 与 Erlang 互相可以发送消息、组建群组。而此后,当刘晓明涉及硬件开发任务时,他同样尝试过封装 Cubieboard 和 RaspberryPi 的 GPIO、SPI 等众多外设的 Python 接口。


在 2013 年,刘晓明在为一家开发音视频识别系统的企业服务,他使用 Python 设计出一套对重复项目进行自动识别的程序,从而将人力识别工作量降低到1/20 。而通过自己原创和 NumPy 的封装,音视频识别任务每天至少会经历十几次甚至几十次迭代,优化算法参数。这让刘晓明在不到两年时间里取得的音视频识别效果超过了某些大学实验室多年的研究。


「对于各个领域的研究者,我是真心推荐 Python 的。用上 NumPy 和 SciPy,你就拥有了极致的性能,顶级的可调式性,和产品级的稳定性。而这也使得Python 的这套组合成为科学计算领域唯一能与 matlab 竞争的选择。」


同样在 2013 年,刘晓明结识了正在创办一家 G 企业的创业者。这位学术根基深厚的创业者给刘晓明留下了深刻印象,但在刘晓明看来,加入他们的时机尚不成熟。


一年后,创业者再次邀请刘晓明长谈,这时刘晓明发现,G 企业的团队中已经网罗到不少牛人,包括从斯坦佛商学院回国的 CEO 。于是刘晓明以第 19 号员工的身份加入了 G 企业,在 apollo 组与机器人组担任 Senior Manager ,并成为研发团队中五个拥有 CTO 背景的成员之一。


在 G 企业,刘晓明接触到了许多新奇的工程项目,包括改装汽车——那次是为了检验一下自动驾驶方面的相关技术。不久,自动驾驶板块的业务从格灵深瞳被拆分独立出去。


「那之后就玩一些新的项目。比如视觉里程记忆相关的技术、行车安全方面的自动判断,以及做自动标注这类深度学习方面的技术。」而这种深度学习领域的任务,正是 Python 语言的强项。


「我推崇 Python+C 的玩法,组合式语言。当你发现性能不够用,或者涉及到底层知识太深,干脆就自己去写这块,利用 Python 的 C 模块,可以让 Python 调用——这就是 Python 胶水特点的作用。」在博客里,刘晓明不厌其烦整理出了国内最全面的一份有关 Python 的 C 模块的文档,总计写了 7 万多字。


03

Python 在中国的三次风潮


在中国,Python 曾经历过三次风潮,第一次就发生在 2007 年,当时 Google 进入中国市场,人们也随之关注到,在这家明星公司的工程师里,Python 语言的使用率出人意料的高。第二次风潮发生在 2009 年到 2012 年,中国互联网创业潮到来,许多公司急于迅速搭建网络架构,而开发环境友好的 Python 就成为许多工程师的选择。第三次则是在 2015 年至今,由深度学习概念导致的技术潮流。


作为完整经历了这三次程序员扎堆学习 Python 的风潮的 Python 使用者,刘晓明看到了中国程序员对于技术风向的捕捉与饥渴,尽管这些技术往往诞生在海外,但国内的技术工作者总能短时期内掌握,并利用庞大的市场人口进行检测。今年 3 月,刘晓明选择前往一家创办于美国的科技企业,带领技术团队进行软硬件开发。多次往返硅谷和中国的经历,让他甚至产生一种感觉:和中国的程序员们相比,硅谷程序员们似乎过于追求舒适了。


刘晓明并非对 Python 毫无怨言,在与 Python 的 12 年接触里,除了 Python3  的出现,这套语言本身几乎没有什么变化。而 Python3 和 Python2 之间存在不兼容的情况,无法直接升级。


「很多编程语言、甚至一些库,动不动搞不兼容升级,用户马上就跑光了。」刘晓明自己仍然在使用 Python2.7 的版本。他拿前几年兴起过的 D 语言举例,每次小版本升级都不兼容,如今已经没有多少人听说过它的消息了。但尽管如此,刘晓明仍坚信,Python 是一个架构师最值得结交的朋友。



04

什么样的人能成为优秀的 Python 工程师/架构师







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