前言
在CSDN上偶然间看到这本李智勇前辈《程序员生存定律》,用了4天时间认真读完了。书中详细介绍了关于程序员的各种事情,并引经据典表达自己的看法。
无论是认真思考未来出路的程序员,还是即将毕业踏入社会的准程序员,都能从这本书中得到很多思考。下面是我读本书的一些摘录,作为记录发表在上。说明:摘录中某些字词与原文有出入。
程序员的人生出口
- 成为超一流高手
- 积累、爆发、开始创业
- 转向管理之路
- 维持原状
- 提前退场、向代码说再见
人生其实是曲线,其振幅则随着时间的流逝而逐渐收窄。对婴儿而言,其未来具有无限的可能性。对老人而言,其未来则唯一而确定。而一个人最终振幅的高度则同时取决于:机缘、天分和努力。
职场生存定律
- 自身价值
- 自身价值的表达
- 自身价值的稀缺性
- 身处公司的特质和未来
通过自我推销、赞扬别人、适当的从众、搞好人际关系这类印象管理的手段,管理个人表现会让自己产生溢价,提升自己在别人眼中的价值。
从长期的视角来看,影响自身价值表达的主要因素:资历、自身性格特征、借势的程度以及权术的运用。
不考虑理想和自我实现这些与人生价值相关的角度话,人生争的往往就是选择权。自我增值,表达力的增强,稀缺性的营造骨子里都是在扩大一个人的选择权。
软件的世界是怎样的
- 技术更迭偏快
- 介入门槛偏低
- 软件和软件的差别可以很大(学习必须聚焦)
很多传统行业的技能直接依赖于某种自然规律,如热力学等等。这些东西自身只会深化或细化,很少有颠覆性变化。但软件所需的东西(API等)往往依赖于某一个公司或组织,比如微软和苹果,进而是一种人造系统。
具有长久价值的东西——通用数据结构和算法,今天的排序算法在10年后必然通用具有价值。越抽象、越偏向于研究的东西其价值越长久,而越具体可用的东西其时效性就越强。
忽视自身价值提升而单纯沉迷于成功学这类方法论,早晚会迟到苦果。当一个公司的核心技术并没有产生多大价值,而是需要靠人力规模、商业模式来支撑业务的时候,那么我们可以称之为技术路径短的公司。
如果暂时把眼光从程序的世界移开,那么事情就可以看得更清楚。
什么样的程序员适合转管理?
- 外倾性:外倾者喜欢群居,善于社交和自我决断。内倾者比较内向,胆小害羞,安静少语。
- 随和性:高随和性的人是合作的,热情和信赖他人的;低随和性的人是冷淡的,敌对和不受欢迎的。
- 责任心:高责任心的人是负责的,有条不紊的,值得信赖的,持之以恒的;低责任心的人则容易精力分散,缺乏规划性,且不可信赖。
- 情绪稳定性:积极的情绪稳定性者倾向于平和,自信;消极情绪稳定性者倾向于紧张,焦虑,失望和缺乏安全感。
- 经验开放性:开放性高的人富有创造性,凡事好奇,具有艺术的敏感性;开放性低的人则保守对熟悉的事物感到舒适和满足。
管理工作的负效应
同纯技术工作相比,管理工作(特别是中层管理)的可流动性非常低,公司不愿意请外来的中层管理者管理已有的员工,更愿意请技术上有专长的人来解决具体的问题。
打牢根基VS速成道路
学习阶段过渡使用IDE,会毁了一个人的根基。即使把算法学精了,可能还是无法立刻写出比较炫的程序,但这有助于面对不停变换的世界。
哪些是编程的根基,需要在学习阶段扎实的掌握?
- 计算机体系结构:《深入理解计算机系统》,Randal E.Bryant和David O'Hallaron。
- 算法和数据结构:《算法导论》
- 设计原则和模式
- 软件工程:《代码大全》,对培养技术的大局观很有帮助
如果想走厚积薄发这条路,上面几本书一定要通读。阅读过程中,如果发现有些细节问题无法彻底理解,那就要在实践过程中进一步琢磨,找到自己的答案。这类书读通并不容易,同时和大楼的根基一样,没什么立竿见影的效果。无论哪门编程语言,唯一关键的是不管选择哪个都要累积一定代码量并把它学透。
如何顺利成为高手
- 有一张全局性的地图,以便选好方向
- 知道有哪些坑,绕开免得掉进去
- 有足够的热情和动力,能坚持走下去
人的黄金学习时间并不多——不过是毕业后的10年左右的时间。
全局性的地图
清代著名学者曾对知识地图的必要性做过非常精确的表述:凡读书最切要者,目录之学也。目录明,方可读书,不明,终是乱读。——王鸣盛,《十七史商榷》
实践无疑是人类最好的老师,但只靠实践来认知世界无疑是愚蠢的。每个人的亲身经历,在大的时空背景中往往只是一个简单的截面,这一截面中绝不会包含可归纳出所有真理的事实,因此只依赖于自身的事件也就必然限定了一个人的视野。
避开增值路上常见的“坑”
- 学习失去焦点
- 学习与实践相分离
- 错过人生中的好时机
- 停止知识更新
很多人自学的东西和工作中用的东西完全不相关。这事不一定不对,只能说非常危险,很可能会导致哪样都没有高度。
对于大多数人而言,人生就像个模板,小处还有偏差,大处却基本相同。
- 20~30岁这个阶段可以讲是黄金时期,这个阶段里,家庭负担较小,可以自由支配的时间较多。
- 30岁之后因为娃娃出生等,家庭上的时间开销增加,个人可支配时间变少。其中很大一部分人还可能面对婆媳矛盾,让你每天心绪不宁。
- 40岁之后,家庭琐事会进一步增加,典型的上有老下有小。运气不好的自己也会生点病——颈椎病、腰间盘突出、胃病是程序员的三大职业病。
- 50岁之后,时间会再次解脱,但时机不在。
如果把人生按照年龄画一条抛物线的话,40岁左右的人可以达到人生的顶点。
很多人很大的一个错误在于,在黄金时期,没做什么积累,就顾得享受生活了,而一旦意识到积累的必要性时,却又受困于诸多琐事而欲振乏力,最终人生高度有限,并迅速走低。
35岁前要花大量时间学习比较硬的技能,具备工作所需要的所有主要技能,35岁之后则主要关注知识的更新和某些软技能。年纪越大时间越呈现为碎片化,越难搞定硬的知识。可以用碎片时间来学习PPT、提高表达力。
哪些东西是比较硬的,要在35岁之前搞定呢?
- 精通一门常用的语言
- 设计模式
- 《代码大全》里讲的一切
- 积累一定的代码量
- 掌握基本算法和数据结构(可以不自己写,但至少要知道其复杂度和区别)
- 养成一种清晰的编码风格
- 有自己的专业(金融、高并发网站、图像处理)
程序员学习英语是一项投资回报率较高的投入。
青春是一种进取的精神,是一种远离颓废追逐理想的状态。
吾尝终日而思矣,不如须臾之所学也。吾尝跂而望矣,不如登高之博见也。登高而招,臂非加长也,而见者远;顺风而呼,声非加疾也,而闻者彰。假舆马者,非利足也,而致千里;假舟楫者,非能水也,而绝江河。君子生非异也,善假于物也。
——引自《荀子· 劝学》
同样能力的人,一个在社交网络中获得了较大的认可,一个处于封闭的环境中,那么无疑前者会有更好的成长空间。
当一个人被鄙视的时候,常见的一个负评是:这个人格局不太行。那么什么是格局?老盯着公司有没有供应咖啡,就是没有格局;考虑公司成长中自己可以扮演哪种角色,并放弃某些眼前利益,就有点格局。
当一个人关注的概念(公司成败,行业兴衰)足够大时,往往他就会看到更多的东西,心胸也就随之开阔,格局变大;当一个人关注的概念足够小(柴米油盐)时,无形中也就缩小了自己的世界,格局也就变小。
自己有没有影响力?
会有人找自己解决有困难的问题么?同事之外还有人知道自己么?自己知道在行业里谁在做和自己类似的工作么?又知道别人在怎么做和自己类似的工作么?
纯技术道路容易被埋没,达不到高处。可以做张表,给自己的技术力在公司里排排位置,如果已经排的很靠前,并且掌握前面所说的地图中大部分只是,但职业路径却不顺畅,那基本就是缺表达力了。
选择在什么样的公司里工作,几乎等价于选择站在什么人的肩膀上。再形象点就是选错了公司等价于输在起跑线上。公司提供的岗位决定了你所接触的技术、人物,进一步决定了你的眼界、能力和人脉,也一定程度上决定了你履历的价值。这些都是对一个人至关重要的东西。
程序员的故事
老A是通过高中的努力达到人生高点,但浪费了自己的选择权,使选择权逐步收窄;而李云则是起点很差,但始终坚持增值,最终累积出了高度,逐渐使选择权越来越大。
经过十几年的奋斗之后,形式完全逆转,老A不再有和李云并列在一起的机会了。李云可以在各大公司间选择比较适合自己的工作,而老A只能被外包公司被动选择。
自信牛人的成长经历
- 自信能让你与众不同,尽管有时的自信有点莫名其妙。
- 难学的技能一旦掌握更具竞争优势。
- 不论身处多么困难的环境,即使觉得前途渺茫,也不要放弃学习,否则就是“自断筋脉”。
- 职场首先比拼的不是智商,而是坚持与好习惯。
- 不要用沉默的方式一味迎合别人的要求,据理力争或许才是作为的表现。
后记
这本书给我印象最深的一句话是:职场首先比拼的不是智商,而是坚持与好习惯。同时程序员往往不重视人情与表达,认为只要把代码写好就行了,往往会降低自己的价值。