摘 要:程序员的知识结构是一个值得研究的课题。目前我国程序员主要来源于计算机科学与技术专业的毕业生和信息管理与信息系统专业的毕业生,这两个专业的学生毕业以后都可以做程序员,但是在学校学习的时候,两个专业的课程设置却不相同。那么,什么样的课程设置更有利于做程序员呢?文章就这个问题进行了探索。
关键词:软件程序员 计算机科学与技术 信息管理与信息系统 知识结构
中图分类号:F240
文献标识码:A
文章编号:1004—4914(2015)01-221-03
一、知识结构对程序员工作的影响
随着计算机的普及和应用,计算机程序运行在我们经济生活的各个方面,从家里做饭的电饭煲到电视机、电冰箱、家用洗衣机、空调、电脑都离不开计算机程序。在社会经济方面更加依赖于计算机程序,银行的自动提款机、各种客户服务终端,医院的账务处理系统和医药费报销系统都是靠计算机程序支持的,工业生产和航天方面更是离不开计算机程序。因此,程序员的工作涉及到各方面的知识。但是,在程序员的培养中没有给他们足够多的知识储备,他们在大学所学习的课程仅仅限于计算机语言和硬件方面的基本知识和技术,难免在实际工作中感到知识贫乏。例如,一般大学给信息管理与信息系统专业所开设的课程如下:
1.文化基础课程,有大学英语、高等数学、线性代数、离散数学、概率与数理统计、运筹学及应用。
2.社会科学类课程,有马克思主义哲学、政治经济学、法律基础、西方经济学(英语的)、企业管理和财务管理学、统计学、证券投资分析、会计原理及会计电算化。
3.专业基础课程,有计算机应用基础、操作系统(英语)、面向对象程序设计、计算机综合应用与实践、信息管理(英语)、高级语言程序设计、数据结构课程涉及、数据库、计算机组成结构、网页设计与制作、Visual Basic程序设计、计算机网络、JSP、JAVA等等。下面是某大学计算机系信息管理与信息系统专业的课程设置详细情况,如表1所示。
由表1可见,上述课程设置除了计算机知识以外,主要是经济类的知识。经济管理和会计学、统计学的知识储备对写与经济有关的程序非常有用处。由于学生在学校期间学习了有关企业管理、财务管理和会计统计课程,因此该专业毕业生很容易接受设计经济管理业务的程序设计,而且设计出的管理软件符合经济管理专业的需要。如果不设置这些课程,他们就很难胜任管理软件的程序设计工作。当然,程序设计是存在于各行各业的,程序员在学校学习阶段不能都学习到位,比如以上教学方案培养的学生,就很难承担航天飞行器的程序设计。因此可见,程序员的知识结构直接影响这程序设计的质量和速度。为此,我们在大学教育中应该让学生了解国民经济基本的管理问题或者一般的技术问题。对计算机科学与技术专业来说,应该偏重于自然科学;对于信息管理与信息系统来说,应该偏重于经济管理方面。
信息管理与信息系统专业开设的经济学和管理学课程,往往不被学生重视,但是只要完成了规定的学分,按时听课学习就会有收获的,这个收获在以后遇到经济类或管理类的软件开发时就会显示出来。比如,笔者在大学时期也不太重视财务管理类课程的学习,但是为了完成学分,还按时听课学习,也算有一些收获。毕业后的前几年也没有接触财务管理方面的东西,自己也以为早已忘记了。可是有个偶然的机会,有朋友希望笔者帮忙开发一个企业内部财务管理方面的软件。笔者看了用户的意见需求,一些所学过的财务管理知识就好像被唤醒了一样,使得笔者突发灵感,很快就完成了这个软件的开发工作,经过调试和测评,顺利地运行起来了。这使笔者深深体会到,程序员应该储备一定的经济学知识和管理学知识。
二、知识结构对程序员创业和职业发展的影响
目前,在IT行业的创业者当中有许多曾经做过程序员,经过几年的历练,程序员的工作经验和知识结构都会积累起来,他们可能成为写程序的高手。但是要进一步发展为企业领导者,或者自己独立创业,就会面临着企业管理的各个方面的问题。起码要懂得筹集资金、投资,要会看会计报表,要能够进行人力资源的管理,要学会成本管理等等。如果是计算机技术专业毕业的程序员要转行做管理工作,那么他就将面临着很大的难度,必须要重新开始学习经济学和管理学的相关知识。
但是,创业者和企业管理者都有很多工作和应酬需要花费时间,根本没有大块的时间可以补充经济学和管理学的知识,往往在处理企业经营管理问题时,受到知识结构的限制而做出错误的决策。比如有个程序员出身的创业者,一年中多次为朋友的银行贷款提供担保,但由于朋友的企业破产无法偿还银行的贷款,他只好拍卖资产为朋友偿债,最后导致在盈利的情况下宣布自己企业破产。其实,这就是财务管理学中提到的“或有负债”问题,如果这个创业者有点理财知识,就不会这样做了。
再比如,我国规定增值税纳税人分为两种,一般纳税人和小规模纳税人。我们知道一般纳税人是以增值额作为计算增值税的依据的;小规模纳税人是以全部销售收入作为计算增值税的依据的。在这种情况下税负的高低主要取决于增值率的高低。而增值率达到一定数值时,两种纳税人的税负是相等的。此时的增值率就是无差别平衡点,可以用以下公式表示:
增值率=征收率÷增值税税率
这就意味着当增值税率为17%而征收率为3%的时候,增值率平衡点=3%÷17%=17.65%,这就是说,此时两种纳税人的税负相同。当增值率低于17.65%的时候,小规模纳税人的税负比较重;当增值率高于17.65%的时候,小规模纳税人的税负比较轻。这就给小微企业纳税筹划提供了思路,小微企业在短期内要变成一般纳税人是比较困难的,要想减轻企业的税负只有提高增值率。提高企业增值率不仅可以少缴纳增值税,同时可以提高企业的经济效益和利润。
李某是一个程序员创业者,其公司每月销售额是26000元左右,假设1至3月份销售额分别是26050元、26100元和26120元。当地规定的起征点是26000元,征收率3%,按照规定应缴纳增值税2348.1元。
如果进行税务筹划,可以在每月末搞一次降价活动,结果三个月的销售额分别是25999元、25980元、25990元,低于增值税的起征点,所以不用缴纳增值税。可见进行税务筹划不但可以节税,还可以有效地提高企业的经营效率。
上述知识属于财务管理中纳税筹划问题,但是很多程序员创业者和程序员出身的经理人不了解这个问题,经常失去为企业的利润增加而进行税务筹划的机会。就是财务人员提出来也不被重视。这一切都说明了一个问题,程序员在自行创业和职业发展的过程中,需要懂得一些经济知识。即便是一个程序员要上升为项目经理,也需要懂得项目成本的计算,而项目成本的计算就是财务管理问题。可见程序员的职业发展绕不开经济管理的问题。
三、知识结构对软件开发项目成败的影响
所谓软件开发项目失败,对于一个企业来说,主要表现在两个方面:一是软件开发的任务目标没有按照事先预定的要求完成,比如一个要进行企业内部成本控制的软件开发项目做出来以后,不能满足成本核算的需要。二是软件开发的任务目标完成了,却因为软件开发中自身的开发成本太高而不能给开发企业带来盈利。这两种情况在经济学家的眼睛里都是失败。而对于高技术研发的人来说,则可能认为第二种情况不算失败。从技术上讲,第二种情况下软件开发企业做的软件满足了用户的需求,但是,软件开发企业也是盈利性的经济组织,不赚钱的项目即使开发出来也没有商业价值。有人给这种失败的项目取了一个很形象的名字叫“死亡之旅”。中国的软件开发也已经30年了,在各式各样的统计资料中,到处都有进度延期、预算超支、充满错误的软件、不满意的客户和完全失败的项目。这就是被称为软件开发的“死亡之旅”。那么,造成软件开发失败的主要原因有哪些呢?笔者认为主要有以下几个原因:
1.投入开发的时候就存在着不合实际的幻想。比如,一个不足10人的小型开发团队,却要争取在3~6个月当中完成一个由20个人干一年也完不成的项目。这项目注定要失败的;或者一个由20~30人组成的中等团队,却要努力完成一个历时两年的由50人也不能保证完成的项目。这项目也是注定要失败的。总之,许多失败的项目往往从一开始就存在着严重的缺陷。
2.软件开发项目没有考虑到市场需求和规模效益。在我们的软件开发中,存在着只凭个人兴趣就进行研发的问题。作为计算机软件开发发烧友,为了个人兴趣而写程序,投入大量的资源和物力、财力、人力,都是可以理解的。但是,作为软件开发企业不能不计成本地进行软件开发。应该事先对市场需求和规模经济效益进行考虑。例如,作为一家初创的小型软件企业,往往是实行合同项目盈利模式的。客户根据自己的需求提出一些条件要求软件公司开发一个项目,那么作为软件公司,首先要考虑的是客户给我们的报酬够不够开支的,有没有盈利空间,有多少盈利空间;其次还要考虑,在软件市场上,需要这一类软件的客户多不多。如果这两个方面的回到都是肯定的,那么这个项目就值得开发,否则,就没有开发的必要,一旦投入开发可能会给软件开发企业带来失败。当然,不同的盈利模式下企业的风险是不同的,但是无论是通用产品模式,还是运营商模式都应该重视市场需求和规模效益。
3.软件开发企业没有完善的项目成本核算。作为一款软件,其在开发过程中必然要发生一些费用,这些费用就构成了软件开发成本。作为软件公司应该对企业的软件开发成本进行严格的核算和控制。而目前许多软件开发企业不重视这项工作,没有成本核算制度,对开发成本和后期维护成本都没有核算、监督和控制。
4.软件开发企业高层及其项目经理对软件的经济效益考虑不够。目前软件企业经理人特别是项目经理,比较关注项目的技术性问题,想方设法解决软件存在的技术问题,对技术参数十分看重。但是对项目能够给企业带来多少经济效益却没有那么关注。1986年以来,特别是近年来计算机网络已经进入我国的普通百姓家庭,软件企业经理人就以为,只要软件在技术上过硬,能够利用和联网传播和推广,那一定会赚钱的,只管开发就是了。因此,对经济效益的核算放松了。
以上四点都是由于程序员或者是企业负责人的知识结构中缺乏经济学和管理学的知识所造成的。特别是有些程序员开发软件不考虑企业经济效益,只考虑个人的技术兴趣。那么,怎么才能经济地开发软件呢?笔者以为:
1.在项目开始的时候,对项目成功的可能性进行必要的估算。当一个项目从企业外部进入的时候,项目经理要考虑这样的一些问题:(1)进度要求是否比企业技术水平高出了50%;(2)员工是否被缩减了一半(按照正常情况估算);(3)预算和相关资源是否被缩减了一半;(4)项目是否要求给出两倍于正常情况的功能、特性、性能或其他技术要求。如果以上四个方面回答都是肯定的,那么这个项目就是一个“死亡之旅”。我们搞企业是为了盈利的目的,不是为了非盈利的目的,因此必须放弃对“死亡之旅”的追求。
2.在软件开发中,要重视市场规模和需求的考虑。随着互联网的普及,如果我们的软件能够放置在网上,客户可以从网上下载使用,那么市场规模和需求就是最重要的。比如,拟开发一款背英语单词的软件,那么你就要考虑大学、中学学生的需要情况,考虑他们使用方便快捷。这样设计出的软件肯定市场需求大,就是薄利多销,也能给企业带来可观的收入。
3.在企业的整个运营中,要重视项目开发成本的核算。对于软件开发企业而言,项目开发成本主要分为物的成本和人力资源成本,物的成本主要是房租、设备和原材料的费用,人力资源成本主要是劳动者的报酬。项目后期维护成本主要分为纠错成本和改善成本,纠错成本是可以节省的成本。只要我们雇佣技术高超的程序员,就可以最大限度地避免发生纠错成本。因此,作为一个合格的企业经理人或是项目经理,要舍得重金雇佣优秀的程序员,这是降低成本的重要一环。
4.软件企业高层在管理企业过程中,时刻牢记讲究经济效益。按照微观经济学的理论,经济效益就是使用较少的资金投入,获取较多的经济收益。因此软件企业在项目开发中不但要讲究项目成本还要讲究经济收益,要尽量开发收益较高的项目。例如有A、B两个项目,开发成本都是5000元,但是其中A项目的市场规模比B项目大的多,其经济总收入是2500万元;而B项目的总收入只有50000元。那么我们应该首先安排A项目的开发工作。
5.在对项目经济效益进行评价时,要注意资金的时间价值。资金在不同时间点上,其价值是不同的,在通货膨胀的情况下,越是接近现在的资金价值越高,越是接近未来的资金价值约低。比如,C、D两个项目的收益率都是30%,但是C项目的全部资金是在1年内全部收到的;而D项目同样的资金也等5年以后才收到,那么我们的选择是进行C项目的开发,放弃或推迟D项目的开发。
总之,软件企业在进行项目开发的时候,要像关注技术一样关注成本、利润等经济问题,这样企业才可能较少项目的“死亡之旅”,争取到更多的成功机会。
四、结束语
综上所述,无论从知识结构对程序员的日常软件开发工作来说,还是从程序员职业发展和自主创业的角度出发,程序员的知识结构中都离不开经济学和管理学的内容;就是从软件项目开发的成败而言,上自企业经理人、项目经理,下至普通程序员都应该具有经济头脑,在开发软件的过程中,时刻考虑成本、税收、利润等等问题,才有利于软件项目的成功,有利于程序员的职业发展。这就是经济地开发软件,也是《软件经济学》的基本思想。
软件经济学和软件工程学的联系是非常紧密的,它们都是针对软件生产过程的管理问题进行研究,都是对软件开发和运营中出现问题的思考,试图多快好省地开发和运营计算机软件。但是它们的侧重点是不同的,软件工程学主要关注软件的开发,研究重点是软件开发中的技术管理问题。而软件经济学则是有关软件交付的技术经济问题,它是站在经济管理的角度看待技术问题的。软件开发工作由来已久了,在世界各地和中国各地,软件开发都被称为软件产业。2009年中国软件业引人注目的是其创造的价值超过7500亿元。这时候,有业界人士提出了以下值得关注的问题:我们的软件产业是否足够经济实用?它的每一个环节是否都是必要的?上游和下游之间存在着哪些必要的关系?整个产业发展模式是否健康?其发展环境是否可持续?同时,在世界上IBM通过长期的软件开发最佳实践研究,认识到软件生产不仅是一个高技术含量的工作,更是一项需要考虑成本因素的复杂系统工程。随着软件交付在企业的地位日趋提升,传统的软件工程原则上无法在为企业带来更多的竞争优势,软件经济学就应运而生了。
2009年,IBM Rational在软件高峰论坛上首次提出了“软件经济学”的理论,强调企业或者组织机构应该经济地衡量投入产出,以此指导软件开发中的各项工作与资源的配比,以期获得最佳的投资回报率。从此,软件项目管理产生了新的突破性的变革,《软件经济学》的产生不仅将影响到软件公司的项目管理工作,而且将深刻地影响到《财务管理学》的理论。但是,不仅经济学界对此没有引起关注,就是在软件公司也没有引起足够的重视。为此,笔者认为应该将《软件经济学》作为信息管理与信息系统专业的专业课,同时介绍给经济学界的学者和财务管理业务人员,让我们都来为我国的软件公司项目管理做出贡献。同时也要介绍给在岗的所有程序员和软件企业项目经理和企业经理人,为我国的软件项目管理工作积累一些有益的经验。使我国的软件开发立于世界的先锋地位。
参考文献:
[1] Walker Royce Bittner Mike Perrow著,苏敬凯,金振林翻译.软件开发经济学[M]机械工业出版社,2010.4
[2] 胡华主编.网络技术基础[M]浙江大学出版社,2007.5
[3] Walker Royce著,潘加宇编译,改进软件经济学[J]程序员,2009(9)
[4] 李致平.现代西方经济学[M].中国科技大学出版社,2003.2
(作者单位:浙江传媒学院 浙江杭州 310018;作者简介:张浩斌,计算机科学硕士,曾经在杭州兰德新易软件公司工作,高级程序员;研究方向:计算机信息管理、电子商务。)
(责编:若佳)