首先定义下我这里讨论的程序员。
1,热爱写程序,崇尚科技,相信技术的力量。(所以那些从北大青鸟几个月就出来只想找好几千的写程序的工作那种不在讨论之列)
2,有基本的学习能力,且热爱学习。(个人认为这个几乎是程序员的本质了,有学习能力,且热爱学习的出了程序员范围,还真的难找到了。)
3,想提高自己的效率。
我常在各处看到各路大神说程序员之间的效率差距真是“何止十万八千里”。我个人算是一个很基本很初级的我所定义的程序员,时常想了解下自己和“牛逼”的程序员之间究竟差在哪里。从程序员是生产高质量代码的工作这个角度,大概思考了一下“牛逼”的程序员生产的代码具有以下几个特点:
1,好读,好维护。(readability, maintainablity)
2,灵活,适应变化的需求。(flexibility)
3,抽象,代码可重用。 (reusablity)
等等。
要达到1,我只要学好英文,努力写好每一个变量名,函数名,类名。有清晰的代码结构等等(参看The Art of Readable Code)
要达到2,我需要尽可能的理解需求,对其领域知识(domain knowledge)有充分了解,这样我才知道需求会有什么样的变化,才能在代码上得到体现。
要到达3,我需要抽象思考能力,或者提炼重复出现的需求(这里的需求可以指一个函数所需要实现的功能)的能力。同一、类似需求尽量在一个地方实现,也算是解耦,也算是模块化思想的体现。
当然还有很多别的特点,但是我这里只是想说,“牛逼”的程序员写出来的高质量代码我也是可以做到的。
但是为什么“牛逼”程序员用的时间比我少?效率比我高?
我大概认为有几点:
1,英文好
2,打字快
3,用的语言非常好的支持灵活、抽象(据说用lisp的hacker都很牛逼)
4,学得快,不管是学新语言,还是学新的领域知识
5,等等。。。。。
大家都有什么看法?
1,热爱写程序,崇尚科技,相信技术的力量。(所以那些从北大青鸟几个月就出来只想找好几千的写程序的工作那种不在讨论之列)
2,有基本的学习能力,且热爱学习。(个人认为这个几乎是程序员的本质了,有学习能力,且热爱学习的出了程序员范围,还真的难找到了。)
3,想提高自己的效率。
我常在各处看到各路大神说程序员之间的效率差距真是“何止十万八千里”。我个人算是一个很基本很初级的我所定义的程序员,时常想了解下自己和“牛逼”的程序员之间究竟差在哪里。从程序员是生产高质量代码的工作这个角度,大概思考了一下“牛逼”的程序员生产的代码具有以下几个特点:
1,好读,好维护。(readability, maintainablity)
2,灵活,适应变化的需求。(flexibility)
3,抽象,代码可重用。 (reusablity)
等等。
要达到1,我只要学好英文,努力写好每一个变量名,函数名,类名。有清晰的代码结构等等(参看The Art of Readable Code)
要达到2,我需要尽可能的理解需求,对其领域知识(domain knowledge)有充分了解,这样我才知道需求会有什么样的变化,才能在代码上得到体现。
要到达3,我需要抽象思考能力,或者提炼重复出现的需求(这里的需求可以指一个函数所需要实现的功能)的能力。同一、类似需求尽量在一个地方实现,也算是解耦,也算是模块化思想的体现。
当然还有很多别的特点,但是我这里只是想说,“牛逼”的程序员写出来的高质量代码我也是可以做到的。
但是为什么“牛逼”程序员用的时间比我少?效率比我高?
我大概认为有几点:
1,英文好
2,打字快
3,用的语言非常好的支持灵活、抽象(据说用lisp的hacker都很牛逼)
4,学得快,不管是学新语言,还是学新的领域知识
5,等等。。。。。
大家都有什么看法?