谈谈什么才能称得上是软件高手

原创 2004年08月16日 08:56:00
2004-7-21

----
网上经常看到关于什么是软件高手的讨论可谓多如牛毛,持各种意见的都有,争得不亦乐乎。有的说会用VC++就是高手,有的说熟悉Win32或者Linux就是高手。更有人认为熟悉汇编甚至CPU运行就是高手(再继续下去可能就会有人说懂得数字电路就是软件高手了......)。
----这方面看得多了,不免想写写东西,发表一下自己的一点看法。
----首先软件设计是一个非常大的课题,涵盖面特别广。 从最底层的硬件编程到最最上层的应用领域(如ERP),每一个方面都属于编程设计的方面。 范围大就必然有分层的概念。每一层都有其应该考虑的重点问题,你不用去考虑本层以下以及本层以上的东西,否则从CPU的运行原理去考虑来如何构建象ERP这样的系统的话简直就是天方夜谭。 为了能对高手有个细分,都与每一层都应该定义一个高手的概念,没有标准便没法考核,考核的标准当然是每一层的核心要求。设计汇编级代码的人如果非常精通大型ERP软件的设计他也不能成为高手,应为ERP是否精通与他的编程没有丝毫的关系。相反一个设计ERP的人,他是否精通汇编语言和他的编程也没有丝毫关系。
----从最底层到最高层是一个逐步摆脱具体的运行环境以及硬件概念的过程,他的设计重点也就由此发生了变化。最底层与硬件息息相关,你只要非常熟悉硬件的运行原理就可以不费力的做出好的东西来,相对来说其算法的复杂度要比高层软件来的简单。 到了最高层便完全不用考虑具体的硬件环境了,那时候唯一要考虑的就是具体的应用逻辑了。
不妨先分为3层来讨论吧,当然这其中还是可以细分的。

  1. 硬件层,开发与硬件相关的程序
  2. 软硬件结合层,你既需要考虑到相关的硬件接口使用,还要实现用户逻辑。
  3. 应用层,你已经完全脱离了硬件的束缚,只要考虑你的应用就行了。

----首先我们来看看第一层吧,也就是硬件相关层。因为要和具体的硬件打交道,开发只是对硬件逻辑的一种表述而已。打个比方就是让你用一种语言把一个逻辑给描述出来,其核心当然是逻辑本身,如果对逻辑非常清楚,只要说话没有问题,基本上就可以表达清楚(当然就有良好的表达能力可能会表达得很好,但是论其重点却是逻辑本身)。从事这方面的开发的人一定要把硬件的工作原理弄清楚,如果其中每一个工作细节都能理解的非常透彻的话,相信这方面的开发可以称的上是专家了。属于这方面的开发有:单片机,PLC等等的开发。
----第二层:软硬件结合层。虽然也牵涉到硬件,但是你不需要对硬件工作原理特别熟悉。只要知道如何来使用硬件提供的编程接口就可以了。其次还需要知道用户程序如何编写,就是普通的应用程序,如果需要和数据库或者网络等的编程还需要知道相关的知识。这方面的开发人员可谓是复合人才。
----到了第三层,由于不需要考虑具体的硬件了,这是设计能力被提高到了一定的地位。你需要具备这样的能力,一个具备上百万行源代码的大型软件有你该如何来设计。一个对数据安全性要求极高的分布式系统怎样才能保证其数据的安全性等等。如果让你设计某一个行业的软件你对这个行业却不熟悉你怎么办。
----每一层的入门难度不一样,越偏向底层越不容易入门。因为思维越要偏向具体的硬件,且都是看不见摸不着的。越到高层便越偏向于使用平常的逻辑来思考问题,故容易理解。但入门难度不能代表达成为高手程度的难度。第一层要对摸不着看不见的东西有个透彻的了解,这方面的人我很少见到。第二层很繁,一般既得懂点硬件又要熟悉诸如VC++这样的开发软件,也的确很少都很熟悉,至少我看到的没有,倒是有一个软件硬件接口做得很棒,软件几乎每天都能够看到错误!到了第三层那你就得更有耐性了,什么项目管理啦,各行业的业务啦,软件设计啦,数据库设计,还有几乎各种算法你都得精通。涵盖面之广可见一斑了。
----网上常常看到有些人以开发工具作为评判的依据,限于篇幅我在这里只总结一下中心思想:使用VB的就是低手,使用C的就是高手。试问:你看过上千万RMB的用VB开发的大型ERP软件吗?有几个会VC的人有这么强的设计能力?别看现在每家软件公司都说在做ERP,真正能做的又有几个?得有这方面设计能力的人才才可以,其他的都好办。大浪淘沙,相信若干年后就没多少软件公司整天把ERP挂在嘴边了。
----具体到每个开发人员,只要做好本层的工作就可以了。当然作为学习可以,反映到你的软件中就会出问题。举个例子,好多软件都喜欢和操作系统紧密结合,认为这样才能够水平。一方面想问的是有没有这个需要,另一方面是能否结合的好?从软件结构来说,操作系统是一个层次,软件是建立在这个层次之上的,你只要好好的使用操作系统提供的接口就行了,除非是万不得已,比如想直接控制硬件。多数的软件是出于性能的考虑,有些从逻辑上看上去倒是"合理",比如某个代码快了5,6倍,尽管如此有些确是多余的,比如乘以8这个乘法运算,用左移3位的运算要比直接乘快很多倍,这种运算在现在P4的CPU上即使快上1000倍也无丝毫意义,快上1个微妙你能感觉到吗?只能说是给自己找麻烦。和操作系统结合得很完美是不太可能,Windows源代码没有公开,你能对底层很了解吗?不可能的。只能说原理理解的比较好而以。即使公开的话几百万行源代码你一个人能理解的透彻吗?要知道,设计操作系统的可都是程序界的顶级牛牛。有太多太多的细节都不清楚。有很多这样的软件就是这样,一装系统准会出现稀奇古怪的问题。其实都是因为去追求那些可有可无的效率,比如快个1,2微妙!
----还有人认为从CPU开始到高层应用每一个环节都熟悉才能成为高手。那我可以武断地说,世界上至此已不再有高手。去书店看看书就知道了,一个人能看多少,能理解多少,软件的涵盖又是何等的大。

『数据挖掘』什么样的数据才能称得上是大数据?

在我看来,只有数据量很大且数据维度全的数据才能够称得上是大数据。         为什么数据量必须得要大?         这是因为如果我们使用局部样本来代替整体的时候,可能会由于局部样本不能够完...
  • Sbtgmz
  • Sbtgmz
  • 2016-02-18 20:28:04
  • 1219

Delphi 名站以及高手Blog

http://cnblogs.com/del (万一兄的,这个不用解释了) http://www.cnblogs.com/del/archive/2010/04/25/1720750.html ...
  • zang141588761
  • zang141588761
  • 2016-09-06 09:37:00
  • 601

编程高手是怎样炼成的

  编程高手是怎样炼成的 ...
  • sulu
  • sulu
  • 2007-02-09 09:13:00
  • 548

谈谈什么是互联网基因

  • 2014年03月15日 22:03
  • 3KB
  • 下载

1.1 Python简介

Python是可以称得上即简单又功能强大的少有的语言中的一种。你将会惊喜地发现,专注于问题的解决方案而不是你正在使用的编程语言的语法以及结构,是多么容易。 官方对Python的介绍 Pytho...
  • softn
  • softn
  • 2016-06-30 09:51:54
  • 228

软件到底要如何才能称得上伟大?

伟大这个词能用在软件上吗?操作系统算不算得上伟大?大家心目中有过伟大的软件赞叹吗?用户界面友好、功能强大、容易扩展、修改方便、部署容易、成本低、这些能算伟大吗?中国有伟大的软件之作吗? ...
  • jhkdiy
  • jhkdiy
  • 2010-11-16 13:08:00
  • 680

怎么做一个程序员

 借用一句台词“如果你爱一个人,那么让他去做程序员吧。如果你恨一个人,那么让他去做程序员吧”这个世界再没有一种职业比程序员更痛苦了;再没有一种职业比程序员更快乐了;再没有一种职业比程序员更具有挑战性了...
  • kfy123456
  • kfy123456
  • 2007-05-07 10:27:00
  • 543

写给想成为Linux 高手的人们

首先,我想引用一下别人说过的一句话:除非在过去的十年你一直生活在山洞里,否则你一定听说过linux. 是的,现在听说过linux,会一点linux基本操作的人多如牛毛,然而真正能用linux做一点事...
  • huoyunshen88
  • huoyunshen88
  • 2016-02-02 11:07:13
  • 714

对软件危机的看法

人类只能够在第二级追求中获得成功,比如说,成为百万富翁或者总理,赢得战争,飞跃同温层或者登陆月球。第一级追求,不可避免地要涉及到努力去理解生命的意义以及努力去转化这种理解,这就不可避免地会导致失败感的...
  • michelleqiao
  • michelleqiao
  • 2010-07-21 13:02:00
  • 1532

软件高手

 在软件开发中,我们同样注意到这样一种高手,他们可以每天写出一千行左右的高品质代码。他们可以运用已有的一些软件包,迅速完成一个新的产品。他们可以在很短的时间内,学会一项新的程序语言或是新技术。他们表现...
  • kisserLeon
  • kisserLeon
  • 2007-04-02 19:34:00
  • 696
收藏助手
不良信息举报
您举报文章:谈谈什么才能称得上是软件高手
举报原因:
原因补充:

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