告别码农,成为真正的程序员
本文是我借助 Google 从网上拼凑的文章,可能条理不是很清晰,希望对广大程序员们有些帮助。
一、成长的寓言:做一棵永远成长的苹果树
一棵苹果树,终于结果了。
第一年,它结了10个苹果,9个被拿走,自己得到1个。
对此,苹果树愤愤不平,于是自断经脉,拒绝成长。
第二年,它结了5个苹果,4个被拿走,自己得到1个。
「哈哈,去年我得到了10%,今年得到20%! 翻了一番」。
这棵苹果树心理平衡了。
但是,它还可以这样:继续成长。
譬如,第二年,它结了100个果子,被拿走90个,自己得到10个。
很可能,它被拿走99个,自己得到1个。
但没关系,它还可以继续成长,第三年结1000个果子……
其实,得到多少果子不是最重要的。
最重要的是,苹果树在成长!
等苹果树长成参天大树的时候,那些曾阻碍它成长的力量都会微弱到可以忽略。
真的,不要太在乎果子,成长是最重要的。
切记:
如果你是一个打工族,遇到了不懂管理、野蛮管理或错误管理的上司或企业文化,
那么,提醒自己一下,千万不要因为激愤和满腹牢骚而自断经脉。
不论遇到什么事情,都要做一棵永远成长的苹果树,因为你的成长永远比每个月拿多少钱重要。
二、人人都需要时间管理
一项国际查表明:一个效率糟糕的人与一个高效的人工作效率相差可达10倍以上。
哈佛有一个著名的理论:人的差别在于业余时间,而一个人的命运决定于晚上8点到10点之间。
每晚抽出2个小时的时间用来阅读、进修、思考或参加有意的演讲、讨论,你会发现,
你的人生正在发生改变,坚持数年之后,成功会向你招手。
我曾整理了一份『免费的编程中文书籍索引』(去github查看,也可以到CSDN CODE),每天抽出半个小时来读一读。
时间管理可以帮助您把每一天、每一周甚至每个月的时间进行有效的合理安排。
运用这些时间管理技巧帮您统筹时间,对于每个人来说都是非常重要的。
在时间管理中,计划组织相对于其他技巧来说是最简单的一种。
比如,所有的时间管理建议都包括在一些表格当中,在表格中把您想要完成的任务填进去。
对很多人来说,这是最简单和普通的了。
三、别人能成功的事,未必自己就能成功
飞机上,乌鸦对乘务员说:给爷来杯水!
猪听后也学道:给爷也来杯水!
乘务员把猪和乌鸦扔出机舱,乌鸦笑着对猪说:傻了吧?爷会飞!
外界因素是一种约束条件,自身能力也是一种约束条件, 往往更重要。
所以,别人能成功的事,未必自己就能成功。
四、你搜索到的只是网页,不是知识
知识的类型及它在程序员大脑中如何成长。
有三类知识:
概念知识(为什么、是什么、如果——语义上的)——理解软件系统构建过程中的概念、原理、关系及主要方法。
实践性知识(如何做——过程中的)—— 关于如何解决特定编程问题的知识。
这类知识不需要深入理解实现方法选择过程中隐含的概念及基本原理。
隐性知识(专业知识、经验及直觉)——基于软件系统实现过程中所积累的个人经验,在大脑中形成的内在知识。
这类知识很难传授,因为它的大部分都存储在我们的潜意识中。
可解决实际问题的高效搜索
A. 查找Seek
-
定义Definition——弄清楚要解决什么问题,并以要查找的内容为焦点。
-
检索Retrieval(使用标准的Google、代码搜索或其他的检索引擎)—有很多关于如何高效的使用检索引擎的建议。
-
浏览结果Browse(内容的质量、可信度及专业技术的水平;如果资料的可信度过低,无须再看)-> 阅读 -> 评估(人力物力、所需工具及函数库)
B. 使用 Use
-
复制代码 - 单独复制(针对这一目的,带有长钉技术的显式单元测试最适合)。
-
清除代码 - 仅保留最小限度、相关性代码,清除解决方案中的其它代码。
-
应用代码 - 在系统中应用代码。
C. 学习Learn
-
理解Understand——你做了什么及你为什么那样做——从代码和实现中学习。
-
扩充知识Expand——
- 实践性知识Practical:解决问题的特定方法、技巧及风格;
- 概念知识Concept:学习新概念、提炼现有的并构建自己的概念;
- 隐性知识Recessive:明智地使用并学习搜索到的解决方案,经验会自然而然地得到增长。
-
收集Collect(链接、意见、参考文献、阅读清单)—任何对你今后搜索、发现及学习有用的有趣信息。为这些目标积累知识。
还有一点也很重要: 分享与交流。
最后还是我在博客中经常写道的那句话(不要嫌我罗嗦,再写一遍),学历代表过去,能力代表现在,学习能力代表未来。