“实现能力”与“设计能力”

原创 2001年08月17日 17:19:00

nicrosoft于 2001.8.17 (http://www.sunistudio.com/nicrosoft/

我见过太多的代码(我自己以前也是),只注重实现功能。国内绝大多数的程序员都以为实现了就成功了。在开始敲键盘之前,有多少人想过即将被创建的代码会有多少的可维护性?是准备创建用完就扔的代码,还是需要不断升级、改进的代码?如果是需要长期被维护、改进的代码,在最初的时候,如果只是注重实现,而忽略整体框架的设计,那么最终等待程序员的只是无数的bug和灾难。

其实,相对来说,实现是简单的。你能够实现的东西都是基于平台或者特定软硬件环境的。你所实现的,只是因为平台提供给了你这样的功能而已,这个实现并不是你创造出来的。而框架的设计就需要相当的经验。没有人可以一开始就完成一个优秀的框架。

在一次工作中,要为Delphi写几个简单组件,组件类之间有继承关系(很简单,只有两层而已)。对于这个非常微小的“框架”,在最初有了“想当然”的设计之后,就开始动手写代码了。完成父类层的组件后,在写派生类的组件时,才发现当初的“设计”存在问题。那时我奇怪自己当初怎么会有那么奇怪的想法,构建这样的框架。在写到派生类组件时,才发现有些东西是那么的理所当然,而在最初设计的时侯的想法却与之相反!于是,重新构建这些代码,幸好,代码量不大,即使重写,也没有花费多少时间。

我想说的是,即使一个那么简单的框架,我是在第三次重写后,才将其确立下来。同时,获取了宝贵的经验。设计的难处在于,人的思维习惯是从下往上,逐步抽象的。但是,在类的框架设计中,去需要从上往下的设计,也就是逐步细化。而一旦在原始类(如:VCL的TObject)的设计上存在问题的话,那么随着类层次的展开,问题将会逐步放大,最后可能会导致整个框架的崩溃。这就要求设计者具有丰富的经验!

我从不相信程序员的寿命只到35岁,也许35岁以后,实现能力(其实就是工匠能力)有下降的可能,而设计能力是随着经验的增加不降反升的。这才是最宝贵的。

国外的软件开发小组,一般的骨干都是40岁上下的人,那些才是大师级的程序员,而所谓的过了35岁就不能当程序员的程序员根本没有资格被称为程序员。

而软件工程是要将程序员变成编码员,变成流水线上的一环,设计工作由专门的设计师完成(如框架设计师)。也许,分工细化是趋势,但是,我们是满足于做编码员还是希望成长为设及师,取决于我们的眼光及努力。

放开眼光,而不是将自己局限于、沉迷于“实现高手”。实现能力是基础,有一定的实现能力才可能成长,但是,它只是必要条件,而不是充分的。否则,就象爬到山腰就以为自己到了山顶,停滞不前了。那么,你只可能是编码员,你的程序寿命也只到 35岁。

努力积累经验,并且要学会积累经验。有句话说得好,聪明人与笨人的区别并不在于其不犯错误。真正的区别在于,聪明人不会两次犯同样的错误。

实现能力与设计能力

        我见过太多的代码(我自己以前也是),只注重实现功能。国内绝大多数的程序员都以为实现了就成功了。在开始敲键盘之前,有多少人想过即将被创建的代码会有多少的可维护性?是准备创建用完就扔的代码...
  • jxxy012
  • jxxy012
  • 2005年11月23日 17:08
  • 936

实现与提高算法设计能力的一般方法

实现与提高算法设计能力的一般方法
  • doooooooollly
  • doooooooollly
  • 2016年03月21日 10:13
  • 1370

如何提高程序设计能力

如何提高程序设计能力看到一篇感觉对大家有帮助的文章,是一个有几年编程经验的老员工说的,应该是对大家有启发的,就转载过来了:        1. 扎实的基础  2. 丰富的想象力  3. 最简单的是最好...
  • yhguo2008
  • yhguo2008
  • 2011年05月07日 19:26
  • 760

程序员能力等级分析

前言        程序员的编程技能随着经验的积累,会逐步提高。我认为编程能力可以分为一些层次。下面通过两个维度展开编程能力层次模型的讨论。一个维度是编程技能层次,另一个维度是领域知识层次。 ...
  • wl6965307
  • wl6965307
  • 2016年02月17日 10:35
  • 1442

UI设计师的7大能力模型

一、审美能力
  • ejinxian
  • ejinxian
  • 2014年09月29日 18:04
  • 1367

架构师的能力模型(图)

今天下午做了这幅脑图,为便于显示,切成了四个部分,描述了我对架构师能力的基本理解。 这四幅图不见得能阐述架构师能力的全部,但我尽量给出范围和有用的建议,希望能对大家有所启发和裨益。 图一:本能力模型的...
  • aimingoo
  • aimingoo
  • 2007年06月26日 17:37
  • 29842

架构系统设计能力,模块设计能力

1. 明确流程 2. 明确对象实体和行为实体 3. 把每个实体抽象成独立服务. 4. 通过水平切割流程,明确能够复用的实体 5. 看能否将某些中间流程填充到该独立服务中 通过这个方式,演练 ...
  • fei33423
  • fei33423
  • 2016年04月29日 17:51
  • 598

如何评估个人的软件开发能力

如何评估个人的软件开发能力从基本的来看 基础:  1. 读程序的能力      很多的软件开发工作不一定会从头开始,这就需要开发人员有良好的阅读程序的能力,能在尽可能短的时间里了解软件整体的架构...
  • paolei
  • paolei
  • 2013年08月22日 14:31
  • 5983

程序员自我修练-提高写代码的能力

首先让我们看一看刚入软件公司会出现的情况: 1. 你可能会常常发现,写了一段代码后,编译程序时是一大堆的出错 (原因:语法不熟) ──别担心,这是每个程序员必须经历的事,这时候你就需要更大...
  • jcw_275240222
  • jcw_275240222
  • 2016年06月11日 17:44
  • 2893

PAT - 浙江大学计算机程序设计能力考试简介

日期: 2012-02-27 摘要: PAT - 浙江大学计算机程序设计能力考试简介 宗 旨 浙江大学计算机程序设计能力考试(Programming Ability Test...
  • cheng1988shu
  • cheng1988shu
  • 2012年09月05日 18:46
  • 5511
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:“实现能力”与“设计能力”
举报原因:
原因补充:

(最多只允许输入30个字)