全书所有篇章中,我主要对第三章感兴趣:软件工程师的成长。
其中讲了“技能的反面”,作者由开始的“精通玩魔方”到“精通玩魔方,只到第二级。”再到“能够独立地还原一面,其他看口诀可搞定。”到最后,技能上不了台面。
巴克斯顿说技能的反面是“Problem Solving”——“解决问题”,例子:一个IT专业的大学生来面试,简历上写“技能:精通VisualStudio C#编程”。于是面试官请他用VisualStudio IDE写一段程序。一个“不精通”的面试者的编程过程实际上就是一个“解决问题”的过程。例如:
·嗯,怎么开始一个C#的命令行程序呢?
·定义数组是怎么弄的?是“int [] arr”还是“int arr[]",还是Array List,还是Array<T>.哦,我平时都是上网查的。哦,我还不知道还有MSDN网站。
·嗯,为什么编译没有通过呢?哦,这里少了一个分号。
·嗯,怎么设断点?怎么定义命令行参数?额,我要查一查。。。
你会发现他把时间都花在“解决(低层次)问题”上了,面试官考察的“算法技能”、“C#程序设计技能”都无暇顾及。那么怎么提高技能呢?答案很简单,通过不断的练习,把那些低层次的问题都解决了,变成不经大脑的自动操作,然后才有时间和脑力来解决高层次的问题。