原文链接:https://www.oreilly.com/ideas/the-traits-of-a-proficient-programmer
有能力胜任和精通之间的区别: 有能力胜任是指有足够的经验和知识来完成各项工作;精通涉及之道为什么你要用某种方式来做事情,以及如何融入到大局中。 如果你是一名程序员,学习该怎么做是你能胜任工作的重要部分:
- 我需要知道如何使用版本控制
- 我需要知道如何使用一种一致的编码风格
- 我需要知道如何建立一个持续集成服务器
- 我需要知道如何查询数据库
- 我需要知道如何实现响应式布局
- 我需要知道如何使用服务 API
跨越从胜任到精通的沟壑可以试试:
- 解释为什么你想要用某种方式做事的原因推理,不依赖于通用的 “最佳做法” 或社区准则。单单只在你要解决的当前问题的背景下讨论利弊。
- 了解的东西越少,了解得越深。然后尝试在不同的上下文中加以应用,看看它们在哪里有效,在哪里无效。从失败中寻找机会来寻求新的工具,可以帮助拓宽你的技能集的工具,但只在你已经确立了明确要求的时候。
- 寻找其他人 “打破规则” 并取得成功的范例。偶尔打破自己的一些规则,看看是会伤害你,帮助你,还是没有变化。
- 挖掘基本的资源,而不仅仅是阅读摘要。这需要更多的时间和精力,但可以帮助你弄清楚基础和技术界限,同时也给你一个机会来生成由核心原则启发的新想法。
- 深入钻研一个你不熟悉的项目,并且试着不依赖记忆套路、习惯和规则,找到你自己的做事方式。
- 要求别人解释为什么他们要这样做事,但不要只是接受教条式的推理。要求例子并询问上下文背景,以便于你可以尝试着设身处地地去想。这样做是非常有价值的,因为可以让你看到他们自然习惯中的长处和短处。
- 挑选少数特定你只是擅长但不精通的技能,然后开发胜任的能力到极致,到几乎偏执的程度。一旦你到达顶峰,检查深刻且高度专业化知识的利弊。