序
作为非科班出身的程序员,我尝试过(除读书之外的)各种方法让自己变得更专业。例如,随意塞几个数字到内存中,看看除了计算机运行中止之外还会发生什么;在烟味弥漫的办公室里熬夜加班;高中时,偷偷在大学实验室工作,直至午夜才溜出校园;阅读二进制文件,只盼着那些字节码能让我醍醐灌顶,理解代码如何运行;文档缺失时,背下操作码,挨个尝试可能的参数组合,寻找某个函数的正确输入。
2013年,我的朋友阿齐兹·凯迪(Aziz Kedi)在伊斯坦布尔开着一家书店,他约我写一本书,内容是我的软件开发经验。那是我第一次考虑写与我专业相关的书。但没过多久他就关了书店,搬去伦敦生活,于是我也只能作罢。
但我一直在想:我可以给那些刚入职场的新人写一本书,让他们能够在拓宽视野的同时,弥补经验不足。新人对于软件开发的理解往往来自他们学过的课程、既有观念和他人的实践经验。新入行的程序员自然会视之前积累的知识为核心投资,不舍得弃而不顾。
某一天,我决定慢慢写这么一本书。我给这本还没写出来的书命名为Street Coder,并开始写下那些能帮助新手开发者工作更轻松的零碎点子。这些点子不必是最佳实践——只要你不反对,它们甚至可以是糟糕实践。只要能帮到开发人员更好地思考面临的难题就足够了。文档里写了不少内容,后来我就将它抛诸脑后了。不过有一天,我接到一通来自伦敦的电话。
这次不是阿齐兹·凯迪。他大概正忙着写剧本吧。我相信我写这段文字时,他也还在写另一套剧本呢。来电的是Manning出版社的安迪·沃尔德伦(Andy Waldron)。他问我:“您想写本什么书?”一开始我没什么想法,于是打算反问他,给自己争取一点时间:“您是怎么想的?”我咕哝了几句,然后忽然反应过来,想起之前我做的那些笔记。
本书内容来自我在专业软件开发世界中学到的东西。踩过许多坑之后,我获得了一种务实、接地气的观念——把软件开发当作一门手艺来对待。本书传达了我因这些经历而产生的变化,应能帮助你取得事业上的领先优势。