黑客与画家
黑客与画家的共同之处:他们都是创作者。
“数学家”、“物理学家”、黑客
计算机科学领域的人包含了“数学家”、“物理学家”、黑客。“数学家”和黑客在两个极端,中间是“物理学家”。这里的“数学家”是指做纯数学理论研究的人(开发),“物理学家”是指依据理论指导做实验证明理论的人(验证),黑客是根据自己喜好运用理论工具创作的人(使用)。
黑客
计算机科学的范围给学习计算机带来困惑,我是否应该学会“数学家”、“物理学家”、黑客三者学的东西。答案是否定的,如果我们要做一个黑客,一个创作者,就要像一个画家,专注于创作的东西。画家只要会使用画笔、颜料,但是并不需要了解颜料的化学成分;一个黑客在创作的时候并不需要绝对地去了解计算的原理,创作中我们需要什么,就拿出什么来用。黑客作为创作者,不处理数学问题。
黑客站在了“数学家”和“物理学家”的肩膀上,“数学家”、“物理学家”是原创 ,而黑客在现有的成果基础上借鉴、调整、组合制造一些东西出来。
黑客如何学习
黑客主要是通过实战学习,而不是课程。一个优秀的黑客,应当会有根据自身爱好创建的自己的项目,应当是在业余的时候也从事着自己喜欢做的事情。
一般情况,常规的教育要求我们先在纸上搞清楚程序,再开始编程;事实上,直接在电脑上编程,不断地修改调试是更有效的方法。纸上谈兵比实战来得痛苦。
黑客和画家一样,定期从头开始,而不是在一个项目上长年累月的工作,并且试图把所有的新的想法都以修订版的形式包括进去。创作的时候,自身设计一个规格,预先承认规格设计是不完美的,在编程的时候,就可以根据需要当场修改规格,最终会有一个更好的结果。
模仿是很好的学习方法,编程和画画一样,在模仿的过程中可以学会注意细节。
在学校,纯学习理论,则是一直在研究“怎么做”;在公司,纯做任务,则是一直在决定“做什么”。而搞定“做什么”和“怎么做”是黑客都应该具有的素质。好的黑客应该可以单独做出一个自身设想的好项目,而且应该懂得“换位思考”,了解用户需求,当然,“换位思考”并不就意味着你要做自我牺牲。实际上,这是完全不同的两回事。了解别人对于事情的看法,并不代表你为他的利益服务。个人创作看似身单力薄,但实际比以团队为单位的创作者更有效率、更有效果。多人开发最好是将整个项目分割为独立的模块,设计良好的模块接口,而且要有良好的说明文档。
黑客的作品的评价和画作一样,由时间证明其价值。