为什么写这本书
2011 年,我还在一家互联网商务公司做一枚小小的运维工程师,那时公司的运维使用的语言主要是 Shell。我本来是一个网络运维,后来在工作中开始接触 Shell,学了 2 个月之后,感觉可以应付各种需求,虽然程序运行得很慢,但作为一个工作不久且不是 IT 相关专业毕业的运维人员,我还是有点沾沾自喜。这种情况只持续了 2 个多月,由于公司高速发展,一个新入职的同事打破了我的美梦。
这位新同事入职的第一件工作就是对接各个业务部门的日志需求。很快就发生了一件让我特别震撼的事情:同样的一个日志需求,我使尽浑身解数用 20 行 Shell 写好,运行一次要 20 分钟,而这位同事使用 Perl 语言的脚本只用了 4 行,运行 3 分钟就完成了。可以想象我当时的感受。这是我第一次了解到选择正确的工具和方法的重要性。我抑制不住地告诉当时的领导悦秋:我要学一门运维使用的高级语言!
悦秋特别郑重地告诉我:一定要学 Python。而在 2011 年,Python 还只是一门小众语言,在 BAT 等大公司招聘时仅作为一些职位的附属要求。回想至此,非常感谢悦秋让我选择了正确的路,否则我现在可能只能写关于 Perl 语言实践方面的书了。
从运维到运维开发,再到豆瓣做产品开发(也就是 Web 开发),一路走来我发现,自己走了很多弯路,没有人告诉我什么是对的,什么是错的,该怎么做选择。这些都得自己花时间去琢磨和验证,有时候从 Google、StackOverflow 搜索答案,或者在 GitHub 直接看源码获得灵感甚至正确答案,而涉及职业规划、该学什么、怎么学,这样的问题除了悟性大部分就是靠直觉了。
从买书看基本语法和拷贝别人的代码开始学习 Python,很早我就开始努力让代码符合 PEP8,尽量让代码写得 Pythonic(这点很关键,未来就不再需要费力改正学习过程中留下的坏习惯了)。能用 Python 完成日常工作之后,我开始研究和寻找各种 Python 高级玩法、黑魔法。这个时候我还是在不断买书、看书、看之前买的书、看一些技术博客来巩固和补充自己的知识体系。所谓“技术”中的“术”也就到这里了。
有了“术”还远远不够,还需要有实际的经验,以及在正确的时机使用正确的工具和方法,这是“技”。“技”是一套分析并解决问题的思路,要想提高“技”,除了个人的领悟,最重要的是靠大量的实践,有时候我们称之为“造轮子”。关键是在造的过程中得思考,比如什么时候该抽象了?这个轮子和竞品相比有什么优势?技术选型上为什么要使用 XX?
使用 Python 会遇到这样的问题:什么时候该用多进程?怎样提高代码执行效率?Flask 为什么流行?曾经遇到一个冷门的 Celery 的 Bug,当时使用谷歌没有找到解决方案,甚至解决的思路也没有,怎么办?我开始翻阅 PEP 文档,阅读优秀开源项目的源码,还把 Python 标准库模块中的代码全部过了一遍,收获颇丰。同时我还会根据工作中遇到的问题,给开源项目和 Python 提一些 Issue,后来还给它们提交 Patch,用自己微薄的能力,让社区变得好一点点。
虽然过了而立之年,我还在不间断地更新博客(dongwm.com),希望给其他开发者带来帮助和灵感。当许艳编辑找到我时,双方一聊,发现对国内开发者而言实战类 Python Web 开发方面的书确实不多,我顿时觉得可以以自己多年的工作经验积累写一本,为女儿两岁生日送上一份不一样的礼物。作为一个做过运维,现在做后端,却经常写前端程序的人来说,我了解产品的整个过程,是适合写一本这样的书的。写这本书的意义还在于,将自己这几年在使用 Python 进行 Web 开发中对各方面知识的理解和积累的经验进行梳理和总结,让更多人受益,同时对自己也是一种成长,也算是对国内的 Python 环境做出个人的贡献了。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论