本书是编程大师“Bob 大叔”40余年编程生涯的心得体会的总结,讲解要成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其职业生涯迈上更高台阶。
本书适合所有程序员阅读,也可供所有想成为具备职业素养的职场人士参考。
计算机科班毕业生的质量一直令我颇感失望。究其原因,并不是这些毕业生不够聪明或缺乏天分,而是由于大学并没有教授真正的编程之道。
我认同在大学里是有可能获得良好教育的,但是我也认为,在大学里完全也可以蒙混过关,混得一纸文凭,其实什么都不懂。
那些符合要求的毕业生有个共同点:他们几乎都在进入大学之前就已经自学编程,并且在大学里依然保持自学的习惯。
而且还有另外一个问题。即使是最好的计算机科学学位教学计划,通常也不足以帮助年轻毕业生充分准备好应付工作后遇到的挑战。在这里,我并不是要控诉教学计划里的那些课程。在学校中所学的内容和在工作中发现的实际需要,这两者之间通常会有巨大的差异。
在第一个案例中,我通过一本精心编写的手册向作者学习。
在第二个案例中,我通过观察他人工作来学习,尽管他们对我视若不见。在这两个案例中,我所获得的知识虽然基础但是意义深远。
没人帮助我理解真正专业的程序员是怎样的,也没有什么专门的人教我该如何行动以及做什么事情是有价值的。我必须自己摸爬滚打,自己教自己,而这绝非易事。
我最终挺过来了,而且也取得了成功。但是,这个过程本来可以走得更好。如果当时我有一个真正的导师,能够深入浅出地指导我跨过其中的沟沟壑壑,那我的路途就要平坦很多。我可以在给他打下手完成一些小任务时观察他的工作方式。他会对我的工作进行审查,指导我的早期工作。他会专门教导我建立正确的价值观和反思内省的习惯。这类角色,你可以称他为“老师”“大师”或是“导师”。
但是,在软件开发行业中已经形成一种观点,认为程序员就是程序员,一旦毕业后就肯定会编程。事实上,一些公司在雇用一些刚从学校里出来的毛头小孩后,就会立马将他们组织成“团队”,把他们扔到关键系统的开发中,类似这样的情形屡见不鲜。这真是荒唐透顶!
大师:
熟练工:
学徒/实习生:
现实情况:
技艺是工匠所持的精神状态。技艺的“模因”(meme[6])中包含着价值观、原则、技术、态度和正见。
技艺模因经由口口相传和手手相承而来,需要由资深人士向年轻学徒殷勤传授,然后再在学徒之间相互传播。
资深人士会观察年轻学徒的学习过程,然后不断反思和改进传授之道。技艺模因宛如一种“传染病”,一种“精神病毒”。通过观察其他人的工作,让模因落地生根,你也会“感染”上技术模因。
觉者:
你无法说服别人成为一名匠者,你无法说服他们去接受技艺模因。
口舌之争并无益处,数据亦无足轻重,案例研究也无法说明什么。接受技艺模因并不是一种理性决策的过程,也非感情用事便可奏效。这与人的“自性”(humanthing)紧密相关。
那么该如何让人们接受技艺模因呢?前面我曾说过,只要技艺模因可以被人观察到,它便具有传染性。因此,只需让技艺模因可以被他人观察到即可。你自己首先要成为表率。你自己首先要成为能工巧匠,向人们展示你的技艺。然后,将剩余的事情交给技艺模因的自然运行之道即可。
学校能够传授的是计算机编程的理论。但是学校并不会也无法传授作为一名编程匠者所需掌握的原则、实践和技能。这些东西只有经由师徒个体间多年的细心监督和辅导才能获得。
软件行业中像我们这样的一批人必须要面对这一事实,即指引下一代软件开发人员成熟起来的重任无法寄希望于大学教育,现在这个重任已经落到了我们肩上。建立一种包含学徒期、实习期和长期指引的机制已是迫在眉睫。
---meme 模因:
模因,meme,这一词最早出现在英国牛津大学著名动物学家和行为生态学家理查德·道金斯于1976年出版的《自私的基因》一书中。道金斯杜撰meme一词的主要目的是为了说明文化进化的规律。在他看来,人类文化进化的基本单位是meme。meme在很大程度上指的是“以非遗传方式(如模仿)传递的行为或文化属性”。任何一个信息,只要它能够通过广义上称为“模仿”的过程而被复制,它就可以称为meme。也就是说通过模仿获得并加以传播的任何想法、说法或做法都可以算作是meme,如“曲调旋律、想法思潮、时髦用语、时尚服饰、陶器制作或搭建拱门的方法”等等。如今,研究meme及其社会文化影响的学科被称为Memetics。在本文中,将meme译为“模因”。道金斯根据gene杜撰出了meme,而“模因”一词则是模仿了“基因”一词翻译而成的。——译者注