搜狐首页 科技 栀子花开

手机搜狐

SOHU.COM

漫谈好程序员的标准

解决问题的能力

在项目开发中,一个程序员的能力等于其解决问题的能力.假如想有个尺度来衡量这个能力的话,一个程序员的能力可以用能完成任务的规模和难度来衡量.

更细致的划分时,函数, 类, 功能, 模块, 项目本身也有简单和规模大小之分.

一个初学编程的人总是从最小的函数和类开始学习的.

一个程序员能基本无误的完成项目中的一个功能算是合格, 在此之前, 对项目的生产力为负, 即为他布置任务, 沟通, 和为他修补bug的时间其实要多于自己直接完成该功能的时间. 也就是说, 项目中存在这个水平的程序员纯粹是为了培养人才.

能完成整个项目的程序员才能算是好的程序员. 在多人项目中可做主程.

不同规模的任务主要的问题也体现在不同的方面:

对于完成一个功能来说, 难点在于理解这个功能, 以及很好的在现有的代码中加入此功能, 完成的功能不是独立于项目之外的, 而是要融入项目本身, 除了功能本身和其他功能衔接正常无误外, 特别重要的就是注意功能实现后不能对其他功能产生预期外的影响, 作为游戏开发来说, 典型的例子就是你完成的UI不能让其他该显示的UI显示有问题, 不该显示的UI又没有消失.

对于一个项目来讲, 在正确的地方使用正确的解决方案是最重要的事情, 最开始的技术选型直接决定项目的成败, 模块的划分能决定项目的开发速度, 架构的设计能决定项目的维护难度和增加需求时的痛苦程度. 对于多人项目来说, 主程让正确的人去做正确的事情也是无比的重要.

什么决定了一个程序员解决问题的能力呢? 我认为有如下几个因素:

知识积累

自学能力

这是一个知识大爆炸, 知识刷新频率让人无法追赶的时代. 一方面, 面对一个稍有难度的任务, 难免会有超出自己现有的知识范围的时候, 此时自学能力决定了你能多快的完成此任务(或能否完成此任务). 另一方面, 你的自学能力决定了在平时的工作过程中, 你积累知识的多少.自学能力强的人, 即使没有人指点也总能在项目的代码中学到东西. 而反过来, 学习意愿弱的人写的代码被别人重构后, 也不会想想, 这段代码是否改的更好了以及为什么. 同时, 一个自学能力强的人也更有希望主动的在业余去学习更多的知识, 而不是直到工作中碰到才去被动学习.从较长的尺度上(比如一个人的工作生涯)来看, 一个程序员知识积累的多少只决定于其自学能力和他对编程本身的兴趣.

精选