转眼间已经五天没有写博客,没有读/写代码了,人长大后为什么时间就过的这么快。记得小时候盼个周末放假都是那么的漫长。Anyway, 今天跟大家探讨一个问题:当程序员面临太多选择的时候。
不知道其它职业如何,但作为一个程序员,我总是感觉到自己每天都需要做很多很多的选择。有些选择我自认为选的有根有据,有些选择我只能是出自自己的直觉(gut feelings),但也有些选择是实在不知道选择什么好但期限又将至时被逼无奈做出的选择。我喜欢选择,因为有选择代表着有自由;我讨厌选择,因为选择意味着我要为自己的选择承担相应的责任和后果。
列举一些我作为一个程序员近期需要做出的选择 (因为没有写代码,少了很多给变量命名等的选择):
- 工作环境:在国内 v.s. 在荷兰
- 工作职能:继续做程序员 v.s. 做项目管理
- 工作平台:Microsoft stack v.s. Linux stack (LAMP)
- 工作语言:C# .Net v.s. Ruby Rails v.s. PHP
- 研究领域:ASP MVC v.s. ASP WebForms
- CMS关注:DotNetNuke v.s. Drupal
- 操作系统:Window 7 v.s. Mac OS X
- 笔记本购买:ThinkPad T410i v.s. Dell Studio 15z
- ... ...
想到之前公司的一个培训,讲到五种不同层次的无知,
1. Zero order ignorance: Lack of ignorance; Which means, Knowing the Question, and Knowing the answer. There is no ignorance.
2. First order ignorance: Lack of knowledge; Which means, Knowing the Question, but not knowing the answer
3. Second order ignorance: Lack of awareness; Which means, Not knowing the Question, nor knowing the answer. But knowing the problem
4. Third order ignorance: Lack of process; Which is, Not even knowing the problem, but realising there is something wrong. Or that things are not working right
5. Fourth order ignorance: Lack of ignorance about the orders of ignorance. This means not knowing even that there is something wrong and having no idea how to resolve the issue
大意是这样的,
级别0的无知:缺少无知; 知道如何问问题,知道如何回答问题;
级别1的无知:缺少知识;知道如何问问题,但不知道如何回答问题;
级别2的无知:缺少意识;不知道如何问问题,不知道如何回答问题,但是知道有问题;
级别3的无知:缺少过程;甚至不知道有问题,但是意识到不对劲
级别4的无知:缺少对于无知的层次的无知;甚至没有察觉到不对劲,更弹不上如何解决问题;
套用五种层次的无知来分析我最近做过的这些选择,发现在级别0的无知情况下做出的选择非常的少,大部分的选择都属于1到3层次的无知。当然了,级别4的无知应该更多,因为根本没有察觉自己到底有没有有问题。
真希望有一天在做选择的时候,都是在级别0的无知的情况下做出的选择。古人说“30而立、40而不惑、50而知天命、60而耳顺”,人到40真的能“不惑”吗?人类会有一天开发出一款软件能帮助我们完全的不惑吗?我想人类始终是人类,怎么发展都没有办法摆脱自己受时间空间和物质世界的局限。应该只有创造宇宙天地万物的创造者才能永远的“不惑”。
作为程序员的你,当面临太多选择的时候,你会怎么办呢?你的选择是在哪种层次的无知的情况下做出来的呢?