如何成为有竞争力的程序员?
独立思考是前提,注重获取信息的质量,刻意构建个人的知识体系,培养个人的技能和领导力。
- 五步思考法
- 考证信息数据的正确性。维基百科这样的网站适合用来获取信息。
- 处理集合及其包含关系。这里的集合不是编程语言中的集合,是值逻辑关系中的集合。 例如哲学家是人,柏拉图是哲学家,推理出柏拉图是人。
- 处理逻辑因果关系。正确分辨充分条件、必要条件和充要条件,找出明确的关联性。
- 找到可信的基准线。智者建桥,愚者建墙。 最佳实践和业内标准被很多人长时间验证过,是值得信赖的,而且覆盖到很多可能没有考虑到的问题。
- 开启更为深入和高维度的思考。像亚马逊的故障修复报告中要说明五个为什么,就是让员工摆脱浅度思考,不断追究问题的本质。
变的更好的窍门
- 寻找不同的观点。 编码之前多问自己这样做对不对;编码之后,多问自己还能不能改进。接触不同的观点有助于进度和成长。
- 千万别信自己的代码。在任何时候都要高度怀疑自己的代码。 可能有人碰到过排查半天的bug可能就是在不起眼儿的地方导致的。有时我把自己想象成第二人称审查代码,会有意外的收获。
- 思考和放松。尽量不要让自己手忙脚乱。尽量避免压力过大。 有时埋头苦恼的问题可能在做其他事(下去抽根烟)时会灵光乍现。
- 了解历史与跟上时代。比起十年前,今天的编程语言或开发技术已经有了大幅改进。了解整个计算机文化的历史。了解历史上出现过的问题和历史上技术出现的原因才能更好地理解新技术及其发展趋势。
- 积极推动测试活动。
提升个人竞争力的"最佳实践"
- 信息获取
- 搜索引擎查找信息,订阅公众号或关注"知乎大V",都无法代替系统学习。
- 英语对于程序员的价值永远不会被高估,甚至可以被视为超越别人的捷径。
- 过度强调利用碎片时间学习,容易丧失精读好书的耐性。
- 越枯燥的基础理论和硬核知识,越不应该死记硬背。
- "摆弄玩具手枪"很容易,"操控重型武器"很难,后者才是我们的专业。
- 认为做出来就好而对结果不必追求精确和优雅的人,会沦为劳动密集型程序员。
- 认知格局
- 很多事情没有捷径, 21天学不会机器学习。
- 励志故事是小概率事件,掌握更多高端的知识技能才能更接近成功。
- 技能和知识更新的及时性和准确性是竞争力的重要体现。
- 想要找理由,总会找得到,不为失败找理由是一种优秀品质。
"最佳实践"看上去并不高深,但是能完全避开与其相对的陷阱,你就已经是为数不多具有竞争力的程序员。
四步实现竞争力跃迁
- 认知
- 信息渠道,掌握优质信息源是关键。
- 信息质量,挖掘和处理有价值的信息对提高思想和认知有帮助。
- 信息密度,优质的信息通畅密度大。
- 知识
- 知识树(图),系统学习某知识,总结归纳知识树和知识图很有必要。
- 知识缘由,某些知识的来龙去脉有助于去理解知识。
- 方法套路,掌握高阶方法就拥有了核心竞争力。
- 技能
- 精益求精,相同方法重复训练无异于"搬砖"。
- 让自己犯错,尽量不要犯同样的错误。
- 找高手切磋,近距离观摩和感受高手的思路,技能和方法会为我们打开一扇扇新的大门。
- 领导力
- 识别自己的特张和天赋,理论上每个人都有优秀的基因。
- 识别自己的兴趣和事业,兴趣驱动往往可以让人产出最惊人的成果。
- 让自己的习惯和方法变高级,是否可以比绝大多数人更自律、更有计划性、更有目标性?是否可以在方法上超越别人? 思考、学习、时间管理、沟通等软实力以及解决问题、设计、工程、编码等硬实力相关的方法。
- 勤奋与执着,聪明人可以坐直升飞机绕过障碍,笨人却只能愚公移山。 好在生活中存在许多懒人,我们不需要超越聪明人,只要超越那些懒人就可以了。
有竞争力的程序员是会思考的程序员,是愿意找窍门的程序员,是勇于实践的程序员,是持续自我提升的程序员,是阅读本章内容频频点头的程序员。