cyberfan's blog

正其谊不谋其利,明其道不计其功

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  15 随笔 :: 489 文章 :: 44 评论 :: 0 Trackbacks
软件开发误区之一-目的手段倒置 2005年2月15日17:02星期二 [Dev开发]

做了七年的软件开发,自己好好坏坏也作了一些软件,平日里也上网看看一些信息,总的来说,有一些自己的想法,陆续作个笔记。

--------------------------------------------------------------------------------

忘了什么人的分层论,人首要的是生存,物质需求,然后才是生活,精神需求。同样的,软件开发人员最基本的是要吃饭,然后才是考虑自己的满足感、成就感。

而软件开发人员的吃饭前提是公司接到活,公司自然是要让客户满意。也就是说,归根结底,最基本的问题是要作出一个软件给客户用的满意。而不是软件开发人员自己做的高兴,做的有成就。

而当前,我不知道当前国内有多少大型的纯粹软件公司,据我所知,东软算一个,金山算一个,几个财务软件的。。。,但是我从CSDN或者什么软件工程网站看上去,好像好多人都是在这种大型的软件公司里面。动辄CMM。动辄软件流程,软件工程之类的。

我是在一个小地方,没有多少发言权,我不知道多少家软件公司能够主动的自主推出软件,而多少家公司却只是争取抢单,按照客户要求拿软件。

不论什么CMM认证,ISO9000什么之类的,这些都只是一个手段,只是用来帮助开发人员更好的开发出软件提供给客户,而不是提供一张文凭用来糊弄客户,更不是用来给开发人员镀金的。

现在软件开发人员要不就是微软的开发流程,要么就是华为的严格文档管理,但是这前面有一个前提,那就是它们都已经在市场站住脚跟,可以拿出产品推动市场。而我们大部分公司尚处于存活阶段,只能依靠市场来作产品,作作行业软件之类的。所以我不知道CSDN上那么多软件工程人员都在哪里高就。

其实我们找找微软的历史、华为的历史,当年BILL发家的时候不也是几个人没日没夜的加班,赶出一个软件;华为当年抢单的时候,不也是几个人没日没夜的守在客户那里现场改程序?

古人说过,仓廪实而后知礼节。我们现在大部分软件公司或者开发人员不顾自身的实际情况,盲目追求各种标准化,不亚于拔苗助长。

软件开发误区之二-软件工程项目管理蓝领工人 2005年2月16日14:44星期三 [Dev开发]

做了七年的软件开发,自己好好坏坏也作了一些软件,平日里也上网看看一些信息,总的来说,有一些自己的想法,陆续作个笔记。

--------------------------------------------------------------------------------

软件工程沸沸扬扬这么多年了,不知道多少年轻学子痴迷于其中,梦想着自己是软件设计师,软件构架师,而把基本的代码视作蓝领工人做的低级工作。我前面写过,不知道中国国内多少软件公司能够把这些真正做到。

我曾经参加过一个培训,说起印度的软件开发,分层分得很细,构造很清晰,人家只要拿到详细设计就能写代码,并且代码写的非常好。什么设计模式,什么测试用例,什么测试驱动之类的。我只是问了一句话:人家的代码是多少行每月。讲师迟疑了一下,300。我就只能笑笑,除了笑,我还能说什么。

而我们目前的状况是大多数公司都是找米下锅,那么就会面临这样一个问题,找到的米并不一定都是能够安装一种方法炮制,经常是这几个人,这几个月可能在作一个MIS软件,下几个月可能就是一个多媒体开发了。而且业务员为了抢单,通常工期都会压缩,而且大家也知道,现在客户是大爷,动不动就是需求变化无常。

在这种情况下,一味按照软件工程项目管理条款来作,估计是很有问题的。

第一,很多项目对于开发者来说,技术上都是不确定的。软件工程的一些思路都是按照建筑来说的,相对来说,建筑技术不会变化很大,无论是别墅还是小区,都是用砖头、水泥等。而项目而言,系统编程、网络编程、桌面编程等等,VB/VC/DELPHI/JAVA,WINDOWS/UNIX都是很难统一一种技术的。所以那些动辄软件工程挂嘴边的人,如果自身技术不够扎实,没有详细的实战经验,那么只能是添乱,设计的构架乱七八糟。

第二,工期紧张,如果按照前期预研、概要设计、详细设计等等一系列作下来,那么我敢打赌,大多数项目最后的结果就是拖延,为什么,一则前期占用了太多的时间,二则,实际开发过程中总会有未曾设想到的问题,那么这些问题最后就会要命。其实,我们看看房地产开发,我们也能发现,大部分房子很难做到如期交房的。或者交房后发现质量问题。

第三,需求变化大,作为一个建筑设计,至少可以保证一条,设计完后,开始施工,变化的空间不会很大,因为这水泥砖头都是实实在在的,而软件不同,可变性强大,客户需求经常变。

所以,我觉得现在的软件开发其实有点类似于 室内装修,竞争激烈,客户要求变化大,工期要求短。

同样的,与其给我10个软件学院毕业的,满嘴模式UML等等的,还不如给我5个大专毕业,熟悉VB或者JAVA的。也许有人会说,这样我鼠目寸光,软件以后维护很麻烦之类的。

但是,我敢打赌,大多数软件的生存周期不会操作两年或者三年,在这个基础上,开发人员的实际开发周期不会操作5个月,日后真正维护的周期不会操作3个月,而真正麻烦的需求变化,随便你什么样的牛人都无法设计出一个只需简单修改的构架。

真正能够做到这一步的只有一点,没有构架,完全模块封装,即使代码冗余,那么还有可能只改模块。如果按照设计模式等,那么实际更改的内容更多。

而我们就是缺少扎扎实实做事的蓝领,大家都追求作一个人上人,所以人家用ANSI C作了SQLITE等一大队开源软件,而我们却把23种设计模式翻来覆去,UML画的出神入化。纸上谈兵啊

所以,我赞赏XP的作下去再说的方法。不管怎么样,实实在在的代码才是软件的根本!

软件开发误区之三-操作系统之争 2005年2月17日13:16星期四 [Dev开发]

做了七年的软件开发,自己好好坏坏也作了一些软件,平日里也上网看看一些信息,总的来说,有一些自己的想法,陆续作个笔记。

--------------------------------------------------------------------------------

如果在某个开发者网站的论坛上想发个帖子热闹热闹,那么很简单,只要发一个LINUX VS WINDOWS之类的比较,标题起的耸人听闻一点,例如**是垃圾之类,然后有意无意的偏向某一方,打击另外一方,那么很快,下面就会有无数双方的支持者发布意见。

其实,不论如何,如果不是开发一些系统无关的软件,例如是算法之类的,那么说白了,大家都是在人家的API上面打滚,无所谓谁更厉害。

我只是就自己的多年经验说说双方的比较。

第一:后台老板,WINDOWS的后台是微软,LINUX的后台增加了IBM等,不论LINUX的初衷如何,现在也是商人在弄,商人的目的是什么,是利润。大家都不会只是守在自己的得势地盘的。只要能够赚钱,不断的会扩充的。IBM当年的名言:全世界有几天IBM的大型计算机就足够了。自从当年决策失误,让微软得势,一直耿耿在怀,所以IBM自己操作系统OVER后,一直对桌面系统有兴趣。它的兴趣目前只是在于推出自己硬件设备,卖自己的系统服务,而我觉得它的目的是先用LINUX打击WINDOWS,然后再逐步扩充自己的系统。而我们吵来吵去,都是给人家当枪使唤。

其实我们看看,支持LINUX的大多是微软的对头,IBM的硬件不会说按照成本卖,ORACLE的数据库也不会按照光盘卖,而没有看到几个通用软件制造商。

第二:价格,LINUX是开源的,因此很多人就是说它是免费的,而我觉得LINUX相对WINDOWS最大的优点就是对于个人用户,它是免费的,请注意,我说的是个人用户。大家从红帽子的价格就可以看出,LINUX的一年服务价格是99$,所以对于商业用户,这个价格优势实际上不存在的。如果对于个人用户,那么就要考虑价格和兼容性了。

第三:安全性,现在大家都说LINUX如何安全,WINDOWS如何不安全,其实这只是因为WINDOWS根据普及而已,当年DOS阶段时,大部分后门漏洞BUG都是出现在UNIX上的,难道能说UNIX更加不安全,而且当年UNIX时期计算机更加不够普及,随着WINDOWS的普及,以及计算机开发的普及,而且WINDOWS编程的易入门性,所以WINDOWS的漏洞似乎越来越多。

而根据我的实际使用情况,家里的电脑仅仅打了一个冲击波的补丁,使用XP自带防火墙,没有SP1/SP2,上网工作都很正常。也就是说,很多情况下,对于一般用户,这些安全性是没有什么很大关系

第四:易用性。无论对于开发者还是使用者,这才是最关心最重要的问题,从使用者角度来说,不管怎么铁杆的LINUXERS,都无法否认的。而从开发者角度来说,如果访问一个LINUX网站,经常看到的诸如此类的帖子:我花了多少时间,终于在LINUX上安装了×××,从这个角度来说,这个有意义吗,作为最终的客户,他会关心你怎么安装吗?对于开发者来说,这个也没有意义,开发者最重要的应该是如何实现客户的需求。

第五:开源。这个其实是LINUX最有意义的一个地方,然而国内大部分LINUX人实际上仅仅沾沾自喜于安装了LINUX,安装了某个软件,并且国内盗版横行,这个在国内实际是没有什么意义的。而看看国外的开源软件,基本上使用C和JAVA,而国内的似乎没有看到什么LINUX的开源软件。

当然,国内目前很多人也在致力于LINUX的开发,不过有些什么自主知识产权的LINUX系统实在未免太过搞笑了一点。

总而言之,LINUX是一个好东西,但是被拔的太高了,将近走火入魔的地步,原因有几点

1、微软霸权,由于一些人的思维特点,微软是美国的,美国是我们的敌人,所以微软就不是好东西

2、价格,凭什么卖这么贵,虽然我们用的盗版,但是不妨碍一些人的正义感。

3、人上人,WINDOWS编程入门相对简单,WINDOWS使用也简单,一些人怀念当年黑乎乎的DOS/UNIX。将大多数人拒之门外,体现出开发者的优越感、神圣感。

其实,不管怎么样,我们都是用的人家的东西,你只是一个使用者,不是一个研究者,对于我来说,用什么快什么合手我就喜欢。我不是一个研究者,我只是用它工作。

如果你有时间去熟悉LINUX,那么你基本就可以配置好你的WINDOWS,基本安全了。

如果你基本配置好LINUX,那么你基本可以WINDOWS编程开始了。

当你基本在LINUX上面安装好需要的软件,那么你可以深入WINDOWS大部分类型的编程了。

这是我的一些想法,从长远来看,当中国的软件开发步入正规之后,LINUX基本可以当道,但是我估计至少要10年。

不管怎么样,WINDOWS的出现使计算机的使用普及,LINUX的出现使得计算机的核心普及。这才是最大的意义。



软件开发误区之四-开发语言工具之争 2005年2月19日11:02星期六 [Dev开发]

做了七年的软件开发,自己好好坏坏也作了一些软件,平日里也上网看看一些信息,总的来说,有一些自己的想法,陆续作个笔记。

--------------------------------------------------------------------------------

正如我上篇写的一样,除了操作系统之争,如果还想更加热闹的化,可以谢谢例如 DELPHI比VC好之类,JAVA比C++快之类的话,这样立即你在论坛的名气就会大升。

开发工具有很多,开发语言就更多了,我接触的不多,基本上总结一些

LINUX基本就是GCC,WINDOWS下就很多了,VB VC DELPHI .NET,还有一个跨平台的JAVA。

其实大家都只是一个工具而已。不在于你使用什么工具,而在于你使用的工具能够帮你作什么。例如西式餐具,有刀有叉,厨具有各式各样的刀,而中式的就简单,餐具就是筷子加勺子,厨具就是一两把刀而已。请注意,我不是说希望精通一两种语言,而只是一个比方。

这些语言、工具的焦点基本集中在以下几个方面。跨平台、面向对象、工具强悍之类的

第一,JAVA比.NET好,为什么好,跨平台。第二,DELPHI比VB好 第三,JAVA比VC好,

JAVA/DELPHI的确比VB或者VC某些方面更加好,但是从资料、入门快捷方面等,未免有些缺陷。至于跨平台以及面向对象,对不起,我还没有更多体会。面向对象主要是针对开发者的,利于代码的理解和代码的可重用等,对于我作的小软件,实在看不出多少好。

我的观点是,不在于使用什么工具,一个工具的选择是需要多方面比较权衡的,不是一两个因素可以简单决定的,虽然我没有玩过CS,可是我从网上的一些评论上可以看到,这里面有各式各样的武器,每个武器有它的优点,也有它的缺点,还有它的使用者的特点。以及当时地图的特点,当时战斗形式的需要。这些都需要综合考虑。

我走得是VB和VC结合的路子,为什么不用JAVA,因为我做的是应用软件,这种软件开发就不需要它的跨平台优点,而它的运行慢、需要虚拟机的缺点就越发明显;为什么不用DELPHI,因为我做的是WINDOWS软件,DELPHI和WINDOWS的兼容不会太好,微软自己东西毕竟会有些好处的,而且DELPHI版本升级变化向下兼容性不是很好,而我做的软件比较多,比较杂,我不想到时为了升级以前的软件安装了DLEPHI2005之后还得重新安装一套D5之类的;为什么不用.NET,因为应用软件的使用者大部分还在WIN98环境下,我不可能说要用户升级电脑;为什么不用LINUX GCC,需要理由吗?不需要吗?

为什么用了VB还要用VC?我看过一篇评论,说有人VB能够自己作一套真正TCPIP协议之类的,这才是高手。我不是高手,我就喜欢什么事情用VB,什么东西用VC,之所以用VC,一般来说,VB有些对于BYTE,指针,API函数调用比较麻烦,与其在VISUAL BASIC 的 BAS模块中加上一大队 API 函数申明,还不如用VC封装完后,最后再提供几个接口给VB更方便,而还有一点就是,VC编制的程序基本比较绿色,方便发行使用,不像VB要带上一些DLL。

对于第三方控件,我的原则是坚决不用,当然,那时在公司作的时候,当然,也要看,如果一个软件是需要大规模发行,普遍使用,那时绝对不考虑的,如果只是小批量软件,小规模使用,或者自己练手就无所谓了。即使损失了性能损失了效果,也无所谓,基本上使用WINDOWS自带的控件。主要考虑到稳定性问题,应用软件使用者众多,使用环境复杂,使用手法各异,很有可能问题就出现在第三方控件上,这样日后维护升级都很麻烦。这次TIFF用的WINDOWS自带的IMGEDIT.OCX控件都出现了莫名其妙的问题,实在令人讨厌,而按照我当初的设想,应该自行解析TIFF的格式,自行对TIFF进行处理,至少也是开源软件或者第三方源代码,这样才能真正保证软件的可靠性。

总而言之,我的情况很简单,不需要别的太多,主要就是要稳定、可靠。所以我的选择也很简单了。

软件开发误区之五-归根结底 2005年2月20日09:39星期日 [Dev开发]

做了七年的软件开发,自己好好坏坏也作了一些软件,平日里也上网看看一些信息,总的来说,有一些自己的想法,陆续作个笔记。

--------------------------------------------------------------------------------

杂七杂八写了这么多,基本上能写的差不多了,最后决定总结一下,为什么会有这么多误区呢?其实,大家都知道很多东西是好的,可是很多东西都实施不了。

第一、钱的因素。也许中国人实在是穷怕了,能够省钱的地方绝对要省。由于软件看上去又不是那么实实在在的东西,盗版的区别也不大,因此产生了很多人的想法,能够省就省,所谓造成软件就不值钱,相应的就造成软件开发人员不值钱了。而同样的,随着盗版的昌盛,开发人员接触到的新东西也越来越多,越没有办法赚钱就越想用新东西赚钱,结果无法静心真正作些东西。

第二、还是钱的因素。中国目前市场经济,尚处在起步阶段,而相应的社会福利不能跟上,相应的产业大环境不完善,所以人人自危,赚钱买房子,老人的赡养,儿子的培养,自己的后路,都会给人一种危机压迫感。所以当老板的就拼命压榨员工,及时不能够一个人作出的东西,绝对不会安排两个人正正经经好好作,只要能够卖出去就行,而当员工的自然也不会安心作。

第三、还是钱,现在中国的环境,只要有关系,就能找到订单,至于做的怎么样,是不会有什么问题的,而中国政府的政绩,官员升迁制度,经常会导致后任为了显示政绩,不会好好利用前任的东西,反而又会另开炉灶,所以也不会怕没有单子作。所以经常就会出现一两个业务员搞到关系后,拉上几个技术员,又成立一家公司,导致大部分软件公司类似于软件作坊。

所以,归根结底,总而言之,还是钱的问题,当每个人都为了自己生存而努力的时候,有人会想办法往上爬,满口外来先进词汇,有人会拼命赚钱,宁当鸡口,有人会敝帚自珍,三缄其口,而没有人会确确实实的为了做好事情而努力。
posted on 2005-08-12 17:05 cyberfan 阅读(44) 评论(0)  编辑 收藏 引用 所属分类: 网海拾贝
只有注册用户登录后才能发表评论。