
摘 要:程序員的知識結構是一個值得研究的課題。目前我國程序員主要來源于計算機科學與技術專業(yè)的畢業(yè)生和信息管理與信息系統專業(yè)的畢業(yè)生,這兩個專業(yè)的學生畢業(yè)以后都可以做程序員,但是在學校學習的時候,兩個專業(yè)的課程設置卻不相同。那么,什么樣的課程設置更有利于做程序員呢?文章就這個問題進行了探索。
關鍵詞:軟件程序員 計算機科學與技術 信息管理與信息系統 知識結構
中圖分類號:F240
文獻標識碼:A
文章編號:1004—4914(2015)01-221-03
一、知識結構對程序員工作的影響
隨著計算機的普及和應用,計算機程序運行在我們經濟生活的各個方面,從家里做飯的電飯煲到電視機、電冰箱、家用洗衣機、空調、電腦都離不開計算機程序。在社會經濟方面更加依賴于計算機程序,銀行的自動提款機、各種客戶服務終端,醫(yī)院的賬務處理系統和醫(yī)藥費報銷系統都是靠計算機程序支持的,工業(yè)生產和航天方面更是離不開計算機程序。因此,程序員的工作涉及到各方面的知識。但是,在程序員的培養(yǎng)中沒有給他們足夠多的知識儲備,他們在大學所學習的課程僅僅限于計算機語言和硬件方面的基本知識和技術,難免在實際工作中感到知識貧乏。例如,一般大學給信息管理與信息系統專業(yè)所開設的課程如下:
1.文化基礎課程,有大學英語、高等數學、線性代數、離散數學、概率與數理統計、運籌學及應用。
2.社會科學類課程,有馬克思主義哲學、政治經濟學、法律基礎、西方經濟學(英語的)、企業(yè)管理和財務管理學、統計學、證券投資分析、會計原理及會計電算化。
3.專業(yè)基礎課程,有計算機應用基礎、操作系統(英語)、面向對象程序設計、計算機綜合應用與實踐、信息管理(英語)、高級語言程序設計、數據結構課程涉及、數據庫、計算機組成結構、網頁設計與制作、Visual Basic程序設計、計算機網絡、JSP、JAVA等等。下面是某大學計算機系信息管理與信息系統專業(yè)的課程設置詳細情況,如表1所示。
由表1可見,上述課程設置除了計算機知識以外,主要是經濟類的知識。經濟管理和會計學、統計學的知識儲備對寫與經濟有關的程序非常有用處。由于學生在學校期間學習了有關企業(yè)管理、財務管理和會計統計課程,因此該專業(yè)畢業(yè)生很容易接受設計經濟管理業(yè)務的程序設計,而且設計出的管理軟件符合經濟管理專業(yè)的需要。如果不設置這些課程,他們就很難勝任管理軟件的程序設計工作。當然,程序設計是存在于各行各業(yè)的,程序員在學校學習階段不能都學習到位,比如以上教學方案培養(yǎng)的學生,就很難承擔航天飛行器的程序設計。因此可見,程序員的知識結構直接影響這程序設計的質量和速度。為此,我們在大學教育中應該讓學生了解國民經濟基本的管理問題或者一般的技術問題。對計算機科學與技術專業(yè)來說,應該偏重于自然科學;對于信息管理與信息系統來說,應該偏重于經濟管理方面。
信息管理與信息系統專業(yè)開設的經濟學和管理學課程,往往不被學生重視,但是只要完成了規(guī)定的學分,按時聽課學習就會有收獲的,這個收獲在以后遇到經濟類或管理類的軟件開發(fā)時就會顯示出來。比如,筆者在大學時期也不太重視財務管理類課程的學習,但是為了完成學分,還按時聽課學習,也算有一些收獲。畢業(yè)后的前幾年也沒有接觸財務管理方面的東西,自己也以為早已忘記了。可是有個偶然的機會,有朋友希望筆者幫忙開發(fā)一個企業(yè)內部財務管理方面的軟件。筆者看了用戶的意見需求,一些所學過的財務管理知識就好像被喚醒了一樣,使得筆者突發(fā)靈感,很快就完成了這個軟件的開發(fā)工作,經過調試和測評,順利地運行起來了。這使筆者深深體會到,程序員應該儲備一定的經濟學知識和管理學知識。
二、知識結構對程序員創(chuàng)業(yè)和職業(yè)發(fā)展的影響
目前,在IT行業(yè)的創(chuàng)業(yè)者當中有許多曾經做過程序員,經過幾年的歷練,程序員的工作經驗和知識結構都會積累起來,他們可能成為寫程序的高手。但是要進一步發(fā)展為企業(yè)領導者,或者自己獨立創(chuàng)業(yè),就會面臨著企業(yè)管理的各個方面的問題。起碼要懂得籌集資金、投資,要會看會計報表,要能夠進行人力資源的管理,要學會成本管理等等。如果是計算機技術專業(yè)畢業(yè)的程序員要轉行做管理工作,那么他就將面臨著很大的難度,必須要重新開始學習經濟學和管理學的相關知識。
但是,創(chuàng)業(yè)者和企業(yè)管理者都有很多工作和應酬需要花費時間,根本沒有大塊的時間可以補充經濟學和管理學的知識,往往在處理企業(yè)經營管理問題時,受到知識結構的限制而做出錯誤的決策。比如有個程序員出身的創(chuàng)業(yè)者,一年中多次為朋友的銀行貸款提供擔保,但由于朋友的企業(yè)破產無法償還銀行的貸款,他只好拍賣資產為朋友償債,最后導致在盈利的情況下宣布自己企業(yè)破產。其實,這就是財務管理學中提到的“或有負債”問題,如果這個創(chuàng)業(yè)者有點理財知識,就不會這樣做了。
再比如,我國規(guī)定增值稅納稅人分為兩種,一般納稅人和小規(guī)模納稅人。我們知道一般納稅人是以增值額作為計算增值稅的依據的;小規(guī)模納稅人是以全部銷售收入作為計算增值稅的依據的。在這種情況下稅負的高低主要取決于增值率的高低。而增值率達到一定數值時,兩種納稅人的稅負是相等的。此時的增值率就是無差別平衡點,可以用以下公式表示:
增值率=征收率÷增值稅稅率
這就意味著當增值稅率為17%而征收率為3%的時候,增值率平衡點=3%÷17%=17.65%,這就是說,此時兩種納稅人的稅負相同。當增值率低于17.65%的時候,小規(guī)模納稅人的稅負比較重;當增值率高于17.65%的時候,小規(guī)模納稅人的稅負比較輕。這就給小微企業(yè)納稅籌劃提供了思路,小微企業(yè)在短期內要變成一般納稅人是比較困難的,要想減輕企業(yè)的稅負只有提高增值率。提高企業(yè)增值率不僅可以少繳納增值稅,同時可以提高企業(yè)的經濟效益和利潤。
李某是一個程序員創(chuàng)業(yè)者,其公司每月銷售額是26000元左右,假設1至3月份銷售額分別是26050元、26100元和26120元。當地規(guī)定的起征點是26000元,征收率3%,按照規(guī)定應繳納增值稅2348.1元。
如果進行稅務籌劃,可以在每月末搞一次降價活動,結果三個月的銷售額分別是25999元、25980元、25990元,低于增值稅的起征點,所以不用繳納增值稅。可見進行稅務籌劃不但可以節(jié)稅,還可以有效地提高企業(yè)的經營效率。
上述知識屬于財務管理中納稅籌劃問題,但是很多程序員創(chuàng)業(yè)者和程序員出身的經理人不了解這個問題,經常失去為企業(yè)的利潤增加而進行稅務籌劃的機會。就是財務人員提出來也不被重視。這一切都說明了一個問題,程序員在自行創(chuàng)業(yè)和職業(yè)發(fā)展的過程中,需要懂得一些經濟知識。即便是一個程序員要上升為項目經理,也需要懂得項目成本的計算,而項目成本的計算就是財務管理問題。可見程序員的職業(yè)發(fā)展繞不開經濟管理的問題。
三、知識結構對軟件開發(fā)項目成敗的影響
所謂軟件開發(fā)項目失敗,對于一個企業(yè)來說,主要表現在兩個方面:一是軟件開發(fā)的任務目標沒有按照事先預定的要求完成,比如一個要進行企業(yè)內部成本控制的軟件開發(fā)項目做出來以后,不能滿足成本核算的需要。二是軟件開發(fā)的任務目標完成了,卻因為軟件開發(fā)中自身的開發(fā)成本太高而不能給開發(fā)企業(yè)帶來盈利。這兩種情況在經濟學家的眼睛里都是失敗。而對于高技術研發(fā)的人來說,則可能認為第二種情況不算失敗。從技術上講,第二種情況下軟件開發(fā)企業(yè)做的軟件滿足了用戶的需求,但是,軟件開發(fā)企業(yè)也是盈利性的經濟組織,不賺錢的項目即使開發(fā)出來也沒有商業(yè)價值。有人給這種失敗的項目取了一個很形象的名字叫“死亡之旅”。中國的軟件開發(fā)也已經30年了,在各式各樣的統計資料中,到處都有進度延期、預算超支、充滿錯誤的軟件、不滿意的客戶和完全失敗的項目。這就是被稱為軟件開發(fā)的“死亡之旅”。那么,造成軟件開發(fā)失敗的主要原因有哪些呢?筆者認為主要有以下幾個原因:
1.投入開發(fā)的時候就存在著不合實際的幻想。比如,一個不足10人的小型開發(fā)團隊,卻要爭取在3~6個月當中完成一個由20個人干一年也完不成的項目。這項目注定要失敗的;或者一個由20~30人組成的中等團隊,卻要努力完成一個歷時兩年的由50人也不能保證完成的項目。這項目也是注定要失敗的。總之,許多失敗的項目往往從一開始就存在著嚴重的缺陷。
2.軟件開發(fā)項目沒有考慮到市場需求和規(guī)模效益。在我們的軟件開發(fā)中,存在著只憑個人興趣就進行研發(fā)的問題。作為計算機軟件開發(fā)發(fā)燒友,為了個人興趣而寫程序,投入大量的資源和物力、財力、人力,都是可以理解的。但是,作為軟件開發(fā)企業(yè)不能不計成本地進行軟件開發(fā)。應該事先對市場需求和規(guī)模經濟效益進行考慮。例如,作為一家初創(chuàng)的小型軟件企業(yè),往往是實行合同項目盈利模式的。客戶根據自己的需求提出一些條件要求軟件公司開發(fā)一個項目,那么作為軟件公司,首先要考慮的是客戶給我們的報酬夠不夠開支的,有沒有盈利空間,有多少盈利空間;其次還要考慮,在軟件市場上,需要這一類軟件的客戶多不多。如果這兩個方面的回到都是肯定的,那么這個項目就值得開發(fā),否則,就沒有開發(fā)的必要,一旦投入開發(fā)可能會給軟件開發(fā)企業(yè)帶來失敗。當然,不同的盈利模式下企業(yè)的風險是不同的,但是無論是通用產品模式,還是運營商模式都應該重視市場需求和規(guī)模效益。
3.軟件開發(fā)企業(yè)沒有完善的項目成本核算。作為一款軟件,其在開發(fā)過程中必然要發(fā)生一些費用,這些費用就構成了軟件開發(fā)成本。作為軟件公司應該對企業(yè)的軟件開發(fā)成本進行嚴格的核算和控制。而目前許多軟件開發(fā)企業(yè)不重視這項工作,沒有成本核算制度,對開發(fā)成本和后期維護成本都沒有核算、監(jiān)督和控制。
4.軟件開發(fā)企業(yè)高層及其項目經理對軟件的經濟效益考慮不夠。目前軟件企業(yè)經理人特別是項目經理,比較關注項目的技術性問題,想方設法解決軟件存在的技術問題,對技術參數十分看重。但是對項目能夠給企業(yè)帶來多少經濟效益卻沒有那么關注。1986年以來,特別是近年來計算機網絡已經進入我國的普通百姓家庭,軟件企業(yè)經理人就以為,只要軟件在技術上過硬,能夠利用和聯網傳播和推廣,那一定會賺錢的,只管開發(fā)就是了。因此,對經濟效益的核算放松了。
以上四點都是由于程序員或者是企業(yè)負責人的知識結構中缺乏經濟學和管理學的知識所造成的。特別是有些程序員開發(fā)軟件不考慮企業(yè)經濟效益,只考慮個人的技術興趣。那么,怎么才能經濟地開發(fā)軟件呢?筆者以為:
1.在項目開始的時候,對項目成功的可能性進行必要的估算。當一個項目從企業(yè)外部進入的時候,項目經理要考慮這樣的一些問題:(1)進度要求是否比企業(yè)技術水平高出了50%;(2)員工是否被縮減了一半(按照正常情況估算);(3)預算和相關資源是否被縮減了一半;(4)項目是否要求給出兩倍于正常情況的功能、特性、性能或其他技術要求。如果以上四個方面回答都是肯定的,那么這個項目就是一個“死亡之旅”。我們搞企業(yè)是為了盈利的目的,不是為了非盈利的目的,因此必須放棄對“死亡之旅”的追求。
2.在軟件開發(fā)中,要重視市場規(guī)模和需求的考慮。隨著互聯網的普及,如果我們的軟件能夠放置在網上,客戶可以從網上下載使用,那么市場規(guī)模和需求就是最重要的。比如,擬開發(fā)一款背英語單詞的軟件,那么你就要考慮大學、中學學生的需要情況,考慮他們使用方便快捷。這樣設計出的軟件肯定市場需求大,就是薄利多銷,也能給企業(yè)帶來可觀的收入。
3.在企業(yè)的整個運營中,要重視項目開發(fā)成本的核算。對于軟件開發(fā)企業(yè)而言,項目開發(fā)成本主要分為物的成本和人力資源成本,物的成本主要是房租、設備和原材料的費用,人力資源成本主要是勞動者的報酬。項目后期維護成本主要分為糾錯成本和改善成本,糾錯成本是可以節(jié)省的成本。只要我們雇傭技術高超的程序員,就可以最大限度地避免發(fā)生糾錯成本。因此,作為一個合格的企業(yè)經理人或是項目經理,要舍得重金雇傭優(yōu)秀的程序員,這是降低成本的重要一環(huán)。
4.軟件企業(yè)高層在管理企業(yè)過程中,時刻牢記講究經濟效益。按照微觀經濟學的理論,經濟效益就是使用較少的資金投入,獲取較多的經濟收益。因此軟件企業(yè)在項目開發(fā)中不但要講究項目成本還要講究經濟收益,要盡量開發(fā)收益較高的項目。例如有A、B兩個項目,開發(fā)成本都是5000元,但是其中A項目的市場規(guī)模比B項目大的多,其經濟總收入是2500萬元;而B項目的總收入只有50000元。那么我們應該首先安排A項目的開發(fā)工作。
5.在對項目經濟效益進行評價時,要注意資金的時間價值。資金在不同時間點上,其價值是不同的,在通貨膨脹的情況下,越是接近現在的資金價值越高,越是接近未來的資金價值約低。比如,C、D兩個項目的收益率都是30%,但是C項目的全部資金是在1年內全部收到的;而D項目同樣的資金也等5年以后才收到,那么我們的選擇是進行C項目的開發(fā),放棄或推遲D項目的開發(fā)。
總之,軟件企業(yè)在進行項目開發(fā)的時候,要像關注技術一樣關注成本、利潤等經濟問題,這樣企業(yè)才可能較少項目的“死亡之旅”,爭取到更多的成功機會。
四、結束語
綜上所述,無論從知識結構對程序員的日常軟件開發(fā)工作來說,還是從程序員職業(yè)發(fā)展和自主創(chuàng)業(yè)的角度出發(fā),程序員的知識結構中都離不開經濟學和管理學的內容;就是從軟件項目開發(fā)的成敗而言,上自企業(yè)經理人、項目經理,下至普通程序員都應該具有經濟頭腦,在開發(fā)軟件的過程中,時刻考慮成本、稅收、利潤等等問題,才有利于軟件項目的成功,有利于程序員的職業(yè)發(fā)展。這就是經濟地開發(fā)軟件,也是《軟件經濟學》的基本思想。
軟件經濟學和軟件工程學的聯系是非常緊密的,它們都是針對軟件生產過程的管理問題進行研究,都是對軟件開發(fā)和運營中出現問題的思考,試圖多快好省地開發(fā)和運營計算機軟件。但是它們的側重點是不同的,軟件工程學主要關注軟件的開發(fā),研究重點是軟件開發(fā)中的技術管理問題。而軟件經濟學則是有關軟件交付的技術經濟問題,它是站在經濟管理的角度看待技術問題的。軟件開發(fā)工作由來已久了,在世界各地和中國各地,軟件開發(fā)都被稱為軟件產業(yè)。2009年中國軟件業(yè)引人注目的是其創(chuàng)造的價值超過7500億元。這時候,有業(yè)界人士提出了以下值得關注的問題:我們的軟件產業(yè)是否足夠經濟實用?它的每一個環(huán)節(jié)是否都是必要的?上游和下游之間存在著哪些必要的關系?整個產業(yè)發(fā)展模式是否健康?其發(fā)展環(huán)境是否可持續(xù)?同時,在世界上IBM通過長期的軟件開發(fā)最佳實踐研究,認識到軟件生產不僅是一個高技術含量的工作,更是一項需要考慮成本因素的復雜系統工程。隨著軟件交付在企業(yè)的地位日趨提升,傳統的軟件工程原則上無法在為企業(yè)帶來更多的競爭優(yōu)勢,軟件經濟學就應運而生了。
2009年,IBM Rational在軟件高峰論壇上首次提出了“軟件經濟學”的理論,強調企業(yè)或者組織機構應該經濟地衡量投入產出,以此指導軟件開發(fā)中的各項工作與資源的配比,以期獲得最佳的投資回報率。從此,軟件項目管理產生了新的突破性的變革,《軟件經濟學》的產生不僅將影響到軟件公司的項目管理工作,而且將深刻地影響到《財務管理學》的理論。但是,不僅經濟學界對此沒有引起關注,就是在軟件公司也沒有引起足夠的重視。為此,筆者認為應該將《軟件經濟學》作為信息管理與信息系統專業(yè)的專業(yè)課,同時介紹給經濟學界的學者和財務管理業(yè)務人員,讓我們都來為我國的軟件公司項目管理做出貢獻。同時也要介紹給在崗的所有程序員和軟件企業(yè)項目經理和企業(yè)經理人,為我國的軟件項目管理工作積累一些有益的經驗。使我國的軟件開發(fā)立于世界的先鋒地位。
參考文獻:
[1] Walker Royce Bittner Mike Perrow著,蘇敬凱,金振林翻譯.軟件開發(fā)經濟學[M]機械工業(yè)出版社,2010.4
[2] 胡華主編.網絡技術基礎[M]浙江大學出版社,2007.5
[3] Walker Royce著,潘加宇編譯,改進軟件經濟學[J]程序員,2009(9)
[4] 李致平.現代西方經濟學[M].中國科技大學出版社,2003.2
(作者單位:浙江傳媒學院 浙江杭州 310018;作者簡介:張浩斌,計算機科學碩士,曾經在杭州蘭德新易軟件公司工作,高級程序員;研究方向:計算機信息管理、電子商務。)
(責編:若佳)