0%

程序员的自我修养

摘要:这并不是一份全方位的修养提升建议,只是把我擅长的地方总结下来,一起学习。

写在前面

  1. 程序员的技能要求有两方面:一是,针对特定平台的特定技能,比如Android开发、cocos2d-x开发、mysql数据库设计等,以下简称为特定技能;二是,所有平台通用的、普适的技术原理或思维方式,比如数据结构、算法、设计模式、网络、数据库、图形框架、多线程等,以下简称为普适技能
  2. 特定技能是可速成的。举个例子,对于任何特定技能,我只需一份Official Develop Guide,一本O’realy的cookbook,几份Github用例代码,都可在1个月内成为合格的前线程序员。我这么说是因为我成功过很多次,包括iOS,Android,cocos2d-x,PHP应用。这并不是什么了不起的技能,因为从根本上说,学习特定技能就是熟悉API、使用API的过程,都是不需要消化的死的知识。稍微需要一点思考的是此平台的设计思想,但这只占一小部分。我见过月薪15k的iOS程序员,在不了解框架原理的情况下仍然能把功能完成的很好。
  3. 普适技能是内功。它体现了程序员的思维能力,决定着程序员的上限,也决定着是否能快速适应另一门特定技能。内功不会凭空而来,也不会仅仅因为你对某一种特定技能精通就内功大增。这中间必须有一个“博览群书”的过程,一种设计思想或技巧,在一个地方出现过你不会注意到,也不知道哪些是核心哪些是辅助。如果在很多平台都出现,你就会发现核心在哪里,以后大有所用,而哪些只是辅助代码。
  4. 普适技能和特定技能是相辅相成,不可分割的。对普适技能更深刻的理解,能促进程序员更好更快的学习新的特定技能;而普适技能也必须在学习和使用特定技能的过程中,才能理解的更深刻,特别对于设计模式、数据库等普适技能,书本上的原理是远远不够的,没有大量的生产经验,不可能充分理解。

关于设计模式

  1. 设计模式本身是没有存在意义的,这种层级的抽象,它的价值只有在具体应用中才能体现。
  2. 一个程序员,学习过OO基本思想,有一年生产性编码经验,即使没专门学习过设计模式,必定已经用过其中的很多种。常见的框架或平台,比如Android、iOS、Mina,本身都处处有设计模式的影子,只要你写代码,它就无处不在。
  3. 不懂设计模式你仍然可以写好代码,因为人们也是在实际编码中“发现”这样写比较方便,当这种情况发生过很多次,便成了设计模式
  4. 基于以上,一个初级程序员,不可能在深入学习了23种设计模式的原理和背景之后,就能立马使用。设计模式的使用,必然要基于大量的编码经验和对代码结构的理解。最常见的学习过程是:你已经在编码中使用过很多次->发现跟某种设计模式很像->理解应用场景->熟练使用。
  5. 基于以上,两年以内的程序员,学习设计模式并不需要太用力,更不要希望立马让千丝万缕的代码变得井井有条。理解OO基本思想,多写代码,多看正在使用的框架的源码,再结合设计模式,才是合理的道路。

关于图形框架

  1. 这里的图形框架指的是,前端编程中,负责渲染图像和处理用户动作的模块。两个核心:渲染图像,处理动作。不管是AS3,cocos2d-x,iOS cocosUI,Android UI都是在解决这两个问题。

关于算法

关于网络