程序员的“七年之痒”
算一算已经做了七年的应用软件,做过的项目资料也摆了半个书架。想一想每一个行业都有自己的酸甜苦辣,我们程序员也一样,不由得脑子里浮现出彻夜加班的辛苦、写问题报告时的自责,还有做各种各样枯燥的测试。当然也有设计出巧妙算法的满足和看到有人在用自己写的程序时,从心底感到的快乐。但我们程序员与其他行业的从业者突出的不同感受是什么呢?不同的人有不同的看法,但软件业发展很快,程序员要不断学习,这一点可能大家都十分了解。除此之外我感觉写程序,甚至有一种写乐曲的感觉,那就是几十个人一起写乐曲的工作吧。
开发的本质
1999年的时候有机会接触到Delphi做的MIS(管理信息系统)。好像那个时候感觉做MIS很火爆,在中关村,一个做MIS系统的高手往往都是我们敬仰的对象。很奇怪当时好像很多公司要做MIS都找一个软件公司开发只适合自己公司管理流程的软件,没有像今天一提到工厂管理软件,我们就会想到用友、金蝶、SAP这些ERP软件,买几个模块,找个大公司来做实施。当时业内没有这个概念,都要找软件公司从头来做,至少我接触到的几个都是这样,软件公司也乘机发一笔财。但往往软件公司做了一个版本给客户用,一到后期变更服务的时候,双方就会产生很多矛盾,这种MIS系统的执行效果很多也都达不到预期的效果。而MIS高手后来已经不是软件高手,都成了某个行业的业务流程专家了。也可能其中的很多人成了后来的ERP软件实施顾问吧。这个时候Delphi、PowerBuilder等等用得很多,后台再使用功能强大的数据库,能做出很好的应用程序。这个时候好像没有人再用FoxPro了,不知道过去的FoxPro高手那时选择了什么样的出路。
2000年的时候,我有机会做一个分析软件,主要是对工业检测设备上采集来的大量数据画成图表,并进行一些内容的统计。这个程序开始做得不好,到生产线上一用,发现问题太多,没几天就被客户投诉了。这时才发现,这样的程序与MIS是完全不同的两种程序。这个程序要求的是程序的强悍性、分析的实时性、数据分析的正确性,要求的是容错和算法。而过去做的MIS用的是快速开发工具,基本上不用考虑效率和算法,专注于流程控制。这次的“打击”真是太好了,虽然被老板扣了工资,但我看到了软件开发的一些本质的东西,过去学的数据结构、操作系统中的很多知识都用上了。这个时候开始了解软件不仅是写代码,是有设计、有韵律的一种东西。后来上研究生课的时候,听一个数学系的教授讲课,他说过去有两个行业容易出天才,一个是数学,一个是音乐。现在又多了—个,是软件。
ERP的出现改变了很多程序员的思维
思路决定出路
我是从1998年开始接触软件,那个时候FoxPro很流行,很羡慕他们用FoxPro开发出的一些界面好看的程序。当时经常感觉大学中学习的软件相关课程与实际相差很远,好在我还是一个非常看重学习过程的人,没有放下课程学习去专门学习FoxPro。现在看来,基础的软件知识对于程序员来说太重要了。
2001年和2002年看到C++和面向对象编程的巨大发展,也是由于做课题的需要,又开始学习C++。刚开始觉得它没什么,但一到用的时候总觉着不顺手,现在想来那时根本没有理解C++的思想,其实还是用C的思路考虑程序,没有建立起面向对象的思想,当然也就学不好了。当时找了好几本VC实战之类的书来学,跟着书把例子都做了,但一放下书,还是不能随心所欲地用。后来找了一本《Borland C++3.1》,编译器跟DOS系统的TC编译器差不多,重新开始学。这才发现事实上过去学VC的书不光用到C++,还用到了MFC(微软的基础类库),而且还涉及到Windows编译的原理。
持续走低的FoxPro
管理与控制
2003年我加入了软件公司,成为了真正意义上的程序员。很庆幸我们公司是真正做软件的公司,为什么这么说呢?这几年做的软件都是几百个人参与的大规模软件项目,往往都是几十个人共同开发,这可能类似于作坊与工厂的区别。我工作几年感受最深的不是又学会了什么编程语言、学会了高级的算法,而是几年的软件项目开发使我理解了软件过程的管理与控制,同时建立了团队开发的概念,这与过去自己写程序是完全不同的两个概念。
加入公司后做的第一个项目就是20个人规模团队的项目。将近两个月,我印象中就没写过代码,每天都在写一些数据表格、设计,再就是评审,忙得不可开交。过去也做软件设计,但最多几个人,写两张纸的内容,大家商量商量就开始编码了。而现在设计用了两个月,各种表格、设计书、评审记录加起来两大本子,而我做的才仅仅是个显示模块。这样的过程真令我很惊讶。接下来的过程更让我终生难忘:只有两周时间的编码。这我可以应付,但没想到代码写出来了,评审时候被指出了无数个错误,而且根本和设计脱离。这时我才感觉到什么是软件设计,什么是编码规范,“人月神话”看似简单,实则是团队开发的重要原则!
单体测试、结合测试、信赖性测试,又花了3个月,这时才发现前期设计做得好,编码符合规范,后期出的问题就少,就是出问题,也很好查。我当然是结结实实又忙了三个月,总算把1.0的版本交上。正打算好好歇一歇,但好像大家又开始很忙了,各种数据统计、总结报告,还有总结会议。当然我还是最忙的人,因为统计和总结的内容都是前几个月的工作情况,我因为问题最多,补写了很多问题报告。而这个时候新的项目又进入了准备阶段,有很多新的软件设计开发工具等着去学。
当几个项目下来,这一过程已经完全熟悉之后,一年多的时间已经过去了。这时很不愿意做的事之一就是在过去写过的代码基础上做修正。往往有读天书的感觉。甚至在问自己这是我写的吗?怎么一点印象都没有!
“一站式”的软件开发系统
总结与思考
本文只是简单聊了一下笔者这几年程序开发的感受。好像有句话叫“痛并快乐着”,这个时候说感觉挺合适。可能随着时间的流逝我们会渐渐失去不断学习的勇气和精力,但程序员不断发掘未知领域的挑战和设计思维的艺术性魅力可能会越来越强,也会吸引更多的人来从事这样的工作,体会其中的痛和快乐。
转自:赛迪网
开发的本质
1999年的时候有机会接触到Delphi做的MIS(管理信息系统)。好像那个时候感觉做MIS很火爆,在中关村,一个做MIS系统的高手往往都是我们敬仰的对象。很奇怪当时好像很多公司要做MIS都找一个软件公司开发只适合自己公司管理流程的软件,没有像今天一提到工厂管理软件,我们就会想到用友、金蝶、SAP这些ERP软件,买几个模块,找个大公司来做实施。当时业内没有这个概念,都要找软件公司从头来做,至少我接触到的几个都是这样,软件公司也乘机发一笔财。但往往软件公司做了一个版本给客户用,一到后期变更服务的时候,双方就会产生很多矛盾,这种MIS系统的执行效果很多也都达不到预期的效果。而MIS高手后来已经不是软件高手,都成了某个行业的业务流程专家了。也可能其中的很多人成了后来的ERP软件实施顾问吧。这个时候Delphi、PowerBuilder等等用得很多,后台再使用功能强大的数据库,能做出很好的应用程序。这个时候好像没有人再用FoxPro了,不知道过去的FoxPro高手那时选择了什么样的出路。
2000年的时候,我有机会做一个分析软件,主要是对工业检测设备上采集来的大量数据画成图表,并进行一些内容的统计。这个程序开始做得不好,到生产线上一用,发现问题太多,没几天就被客户投诉了。这时才发现,这样的程序与MIS是完全不同的两种程序。这个程序要求的是程序的强悍性、分析的实时性、数据分析的正确性,要求的是容错和算法。而过去做的MIS用的是快速开发工具,基本上不用考虑效率和算法,专注于流程控制。这次的“打击”真是太好了,虽然被老板扣了工资,但我看到了软件开发的一些本质的东西,过去学的数据结构、操作系统中的很多知识都用上了。这个时候开始了解软件不仅是写代码,是有设计、有韵律的一种东西。后来上研究生课的时候,听一个数学系的教授讲课,他说过去有两个行业容易出天才,一个是数学,一个是音乐。现在又多了—个,是软件。
ERP的出现改变了很多程序员的思维
思路决定出路
我是从1998年开始接触软件,那个时候FoxPro很流行,很羡慕他们用FoxPro开发出的一些界面好看的程序。当时经常感觉大学中学习的软件相关课程与实际相差很远,好在我还是一个非常看重学习过程的人,没有放下课程学习去专门学习FoxPro。现在看来,基础的软件知识对于程序员来说太重要了。
2001年和2002年看到C++和面向对象编程的巨大发展,也是由于做课题的需要,又开始学习C++。刚开始觉得它没什么,但一到用的时候总觉着不顺手,现在想来那时根本没有理解C++的思想,其实还是用C的思路考虑程序,没有建立起面向对象的思想,当然也就学不好了。当时找了好几本VC实战之类的书来学,跟着书把例子都做了,但一放下书,还是不能随心所欲地用。后来找了一本《Borland C++3.1》,编译器跟DOS系统的TC编译器差不多,重新开始学。这才发现事实上过去学VC的书不光用到C++,还用到了MFC(微软的基础类库),而且还涉及到Windows编译的原理。
持续走低的FoxPro
管理与控制
2003年我加入了软件公司,成为了真正意义上的程序员。很庆幸我们公司是真正做软件的公司,为什么这么说呢?这几年做的软件都是几百个人参与的大规模软件项目,往往都是几十个人共同开发,这可能类似于作坊与工厂的区别。我工作几年感受最深的不是又学会了什么编程语言、学会了高级的算法,而是几年的软件项目开发使我理解了软件过程的管理与控制,同时建立了团队开发的概念,这与过去自己写程序是完全不同的两个概念。
加入公司后做的第一个项目就是20个人规模团队的项目。将近两个月,我印象中就没写过代码,每天都在写一些数据表格、设计,再就是评审,忙得不可开交。过去也做软件设计,但最多几个人,写两张纸的内容,大家商量商量就开始编码了。而现在设计用了两个月,各种表格、设计书、评审记录加起来两大本子,而我做的才仅仅是个显示模块。这样的过程真令我很惊讶。接下来的过程更让我终生难忘:只有两周时间的编码。这我可以应付,但没想到代码写出来了,评审时候被指出了无数个错误,而且根本和设计脱离。这时我才感觉到什么是软件设计,什么是编码规范,“人月神话”看似简单,实则是团队开发的重要原则!
单体测试、结合测试、信赖性测试,又花了3个月,这时才发现前期设计做得好,编码符合规范,后期出的问题就少,就是出问题,也很好查。我当然是结结实实又忙了三个月,总算把1.0的版本交上。正打算好好歇一歇,但好像大家又开始很忙了,各种数据统计、总结报告,还有总结会议。当然我还是最忙的人,因为统计和总结的内容都是前几个月的工作情况,我因为问题最多,补写了很多问题报告。而这个时候新的项目又进入了准备阶段,有很多新的软件设计开发工具等着去学。
当几个项目下来,这一过程已经完全熟悉之后,一年多的时间已经过去了。这时很不愿意做的事之一就是在过去写过的代码基础上做修正。往往有读天书的感觉。甚至在问自己这是我写的吗?怎么一点印象都没有!
“一站式”的软件开发系统
总结与思考
本文只是简单聊了一下笔者这几年程序开发的感受。好像有句话叫“痛并快乐着”,这个时候说感觉挺合适。可能随着时间的流逝我们会渐渐失去不断学习的勇气和精力,但程序员不断发掘未知领域的挑战和设计思维的艺术性魅力可能会越来越强,也会吸引更多的人来从事这样的工作,体会其中的痛和快乐。
转自:赛迪网