和我一样电子专业毕业的学生,若投身到软件编程时,常常会有一些“迷思”,也许你和我一样也问过自己这些问题:
# 我是否一定需要使用模式
# 我是否应该使用“尝试错误法”
# 我应该为我的低生产力而担忧吗
# 我是否一定需要使用模式
什么是模式?《Head First 设计模式》里是这样定义的:“是在某情景(context)下,针对某问题的某种解决方案。”我认为:我们在设计软件时需要使用模式,但是应该先使用最简单的方式解决问题,在经验和知识增长后,我们在编程时就会知道在何时何处应该使用何种模式,然而这需要一定的时间积累。谈谈我的经验,我刚开始编程时,接触到一些比较大的项目,读了以前开发人员写的代码,里面包含了很多模式,除了一头雾水更多的还是担忧,我总是认为“如果没有使用模式在我的代码中,就说明我是个菜鸟程序员。”开始时我努力地看了很多关于模式的书,并在我的代码中加入了外观模式,工厂方法模式,命令模式......尽可能地使用模式,一段时间后,师兄看了我的代码后对我说“你不是在使用模式,而是用模式去装饰你的代码”。在得到得到师兄的一些指教,并随着自己编程经验的提高,才真正体会到了《C++编程规范》一书的一段话“我们设计的软件正确,简单和清晰第一,软件简单为美(Keep It Simple Software,KISS)正确优于速度。简单优于复杂。清晰优于技巧。安全优于不安全。”的真正内涵。我们使用模式只是为了让我们设计简单并且有弹性。正如《Head First 设计模式》所言“如果你能保持简单的设计,那么你将会得到其他开发人员的欣赏和尊敬。”
# 我是否应该使用“尝试错误法”
我认为:应该尽可能地减少使用“尝试错误法”。Trial and error-尝试错误法是一种用来解决问题、获取知识。因为我们这些外行人对一些编程的基础知识的缺陷和经验的不足,所以我们常常喜欢使用Trial and error来解决问题。尝试错误法常常就是靠巧合编程,使用着最低限度的知识去解决问题,这里产生的代码绝对是比较低质量的,不是最佳的。通过“尝试错误法”解决问题,其实只能带来一时之快,然而之后也许会带来“无限的痛苦”(我们很有可能要为这个低质量的解决方案付出大量的额外时间),因为没有深思熟虑,没有了解问题的实质,并掌握解决问题的根本知识。我很喜欢《程序员修炼之道》里的一句话 “Don't Program by Coincidence. 不要靠巧合编程。深思熟虑地编程。”我们应该常常问自己,是否有深思熟虑地编程。
# 我应该为我的低生产力而担忧吗
我认为:不应该担心。“程序员之间生产力比差10:1”,这句话在很多书提到了,很多大牛也是这样说。我刚开始编程的时候,和我的生产力和我的师兄不止差10倍,我认为甚至是20倍以上。因为同在一个项目组,当时每天我都很担心,也很痛苦。虽然现在我和我的师兄还是差距很大,但是我一点也不担心“低生产力”的问题,这不是一个问题,而是一个事实,只需要直面它,并通过不断的自我提升来减少差距。提高生产力,以下我粗浅地谈一下我认为比较重要的几点,自学,提高自己的工作效率和多实践多思考。
自学,常常积累知识
网络真是自学的天堂,而且我认为程序员行业是几乎就是最适合自学的行业。好记性不如烂笔头,自学时也许需要通过记事本或google doc记录一下,常常回顾一下,可能在一定的经验积累后看看以前的记录会对一些知识会有了更高一层的理解,以前的一些似懂非懂的部分也会豁然开朗。用纯文本保存知识绝对会是一个很重要的经验。提高自己的工作效率,也许可以考虑一下两点:
# 提高自己的E-因子(E-因子=不被打扰的时间/体力出勤的时间)。
# 延长自己的flow的状态的时间(在一心一意动脑筋工作的时候,人们在意识上处于一种心理学家称为顺流flow的状态,顺流是一种陷入沉思的状态。)多实践,多思考
提高编程水平决对是一个“蹲马步”的过程,我们要做的其实也很简单,就是专心致志的实践,多编程。多试着思考解决问题的方法也是提升自己的一个很重要方法,请常常反思。我认为,随着经验的积累和思考水平的提升,我们必然会从“低手”成为“中手”,最后一定能成为具有超高生产力的“高手”。
没有评论:
发表评论