程序员的职业素养
今天收到了《程序员》杂志 2012 年 12 期的样刊。上面有我应邀写的一篇稿子,在这里为自己存个档。
程序员是可以当作一生的职业。但首先,你需要热爱编程,而不是把它作为完成其他人生目标的工具。
既然计划投入数十年的人生,那么一定会不断的反思自己在哪些方面的努力是更有效率的。换句话说,现在的你,和十年前的自己到底有哪些不同,十年后又怎样超越现在的自己?
我的职业生涯还远远没有过半,深深感觉沉淀不足。总会有新的理解迭代到旧有的想法上。这次应邀来用简短的文字探讨这个深刻的话题,只能尽力来表达一些现阶段的浅薄之见。
我认为,一个程序员,无论他在哪个子领域工作,都需要在三个方面提高自己。
首先,保持对未知领域的好奇心,尽力开阔视野。
如果你只精通一门编程语言,那么就赶快去学习另一门,最好和之前的那门语言亲缘关系越远越好。这可以让你从不同的视角去看待过去的问题。
如果你只专注于一个领域,那么深入研究一下其它领域会有很大的帮助。大多数人都喜欢在自己熟悉的知识结构下解决问题,因为全新的东西总有学习门槛,你需要去了解很多基础知识才能开始实际的工作。在大脑里把相关信息组织起来轻松调配,和借助外部资料是很不一样的。后者要经历一个相当痛苦的过程。但是,一旦你习惯经常学习,可以逐步掌握一套自己的方法减轻这种痛苦。大多数人实际会遇到的领域有限,看似没有价值的知识,学习起来更为困难。要做到这点,需要保持单纯的好奇心。
其次,把握各个层次上的细节。
尽可能向人解释清楚系统每个层面的运行。硬件如何调度机器指令;数据在硬盘、内存、缓存、CPU 间的流向;代码如何被编译链接,代码经历了何种过程被加载到内存,JIT 怎样加速字节码的运行;操作系统怎样管理线程、处理 IO ;软件用到的第三方模块和工具如何在处理数据;在网络环境中,数据流的通讯协议;你的代码中每个模块逐个层次中的相互关系……
对细节掌握的越多,思路会越清晰。在每个层次上,你会看到不同层次的设备对上一层业务逻辑的抽象方式,直到最终你直接面对的业务。对业务的抽象能力,不仅仅来自于你的业务的熟悉程度。这种能力是随同细节把握能力同时俱备的。了解的越多,就越能知道你经手工作的合理性。
第三,对代码的直觉。
优秀的程序员能很快的发现性能热点、找到系统崩溃的原因、找出不合理的代码…… 准确的估算能力非常重要,快速心算出每个模块的开销和输入的数据量之间的关系;在写下每行代码时能够判断其对性能的影响、以简洁去挑战各个层次模块间的耦合复杂度。
培养这种能力,以我个人浅见,除了不停不断的编写代码,别无良方。在写代码的同时,时刻保持着思考,对坏味道的地方零容忍。只要在最早的时刻动手,任何推倒重来的代价都不会太大;而放任它们在那里只会让局面演变到不可收拾。
保持自己总有代码可写,不断的去发掘自己新的兴趣点,拓展新领域。单纯一些,编程本身就是一件有趣的脑力活动,而不必仅仅为了解决一些问题而写程序。
云风,2012.11.6
Comments
Posted by: 好笔头业务云笔记 | (24) October 15, 2013 10:41 AM
Posted by: mingshun | (23) January 2, 2013 05:20 PM
Posted by: zmx | (22) December 12, 2012 03:17 PM
Posted by: hangka | (21) December 12, 2012 08:22 AM
Posted by: hangka | (20) December 12, 2012 08:21 AM
Posted by: 爱软E | (19) December 10, 2012 07:55 PM
Posted by: Soros | (18) December 9, 2012 11:10 PM
Posted by: 独酌逸醉 | (17) December 7, 2012 01:44 PM
Posted by: 金山毒霸2013 | (16) December 7, 2012 01:30 AM
Posted by: 校长 | (15) December 6, 2012 11:18 AM
Posted by: tachen | (14) December 5, 2012 11:59 PM
Posted by: Anonymous | (13) December 5, 2012 11:15 PM
Posted by: Anonymous | (12) December 5, 2012 11:15 PM
Posted by: acros | (11) December 5, 2012 08:57 PM
Posted by: ghost | (10) December 5, 2012 01:34 PM
Posted by: windmeup | (9) December 5, 2012 11:23 AM
Posted by: forrest | (8) December 5, 2012 09:17 AM
Posted by: 牛遛狗 | (7) December 5, 2012 09:07 AM
Posted by: 雨露 | (6) December 5, 2012 02:59 AM
Posted by: halida | (5) December 4, 2012 07:08 PM
Posted by: 杨博 | (4) December 4, 2012 06:50 PM
Posted by: samuelyao314 | (3) December 4, 2012 06:46 PM
Posted by: Anonymous | (2) December 4, 2012 06:44 PM
Posted by: 邓安良 | (1) December 4, 2012 06:39 PM