好的開始是成功的一半, 本書首先會試圖告訴你什麼是程式師?為什麼要做這樣的程式?正確的入門方法是什麼?
程式師只有在理解了以上內容的基礎上, 才能進一步更快地提高自身技能, 這時候再開始程式的設計。 其實, 對一個軟體的開發者來說, 真正重要的不在於這行代碼怎麼寫, 那些代碼應該怎麼寫, 關鍵是思路的問題, 而思路事實上是經驗的積累。 經驗是使你從最初的封閉的思維方式, 到最後形成開放式的思維的一個過程。 將我十幾年程式生涯中獲得的一些經驗告訴讀者, 使大家少走彎路也是我想寫這本書的主要目的。
1.1 程式≠軟體
現在很多人以為程式就是軟體, 軟體就是程式。 事實上, 軟體和程式在20世紀80年代時, 還可以說是等同的, 或者說, 在非PC領域裡它們可能還會是等同的, 比如說某個嵌入式軟體領域, 軟體和程式可能是等同的。 但是, 在PC這個領域內, 現在的程式已不等於軟體了。 這是什麼意思呢?
1. 軟體發展簡述
在20世紀80年代的時候, PC剛誕生, 這時國內還沒有幾個人會寫程式。 那麼, 如果你寫個程式, 別人就可以拿來用。 這時候的程式就能產生價值, 這個程式就直接等同於軟體。
但軟體行業發展到現在, 這裡以中國的情況為例(美國在20世紀80年代, 程式已經不等同於軟體了), 程式也不等同於軟體了。
現在, 你寫了一個程式以後, 要面臨商業化的過程。 你要宣傳, 你要讓用戶知道, 你要建立經銷管道, 可能你還要花很多的時間去說服別人用你的東西。 這是程式到軟體的一個過程。 這門檻已比較高了。
我們在和國內的大經銷商的銷售管道的人聊天時, 他們的老闆說, 這幾年做軟體的門檻挺高的, 如果你沒有五、六百萬做軟體, 那是“玩”不起來的。 我說:“你們就使門檻很高了。 ”他說:“那肯定是的。 如果你寫個“爛”程式,
所以, 如果你沒有一定的資產的話, 經銷商都不理你。 實際情況也是這樣的, 如果你的公司比較小, 且沒什麼名氣, 你的產品放到經銷商庫房, 那麼他最多給你暫收, 產品銷不動的話, 一般兩周絕對會退貨。 因為現在經銷商可選擇的餘地已很多了, 所謂的軟體也已經很多了。 而程式則更多, 程式都想變成軟體, 誰都說自己的是“金子”。 但只有經受住用戶的檢驗, 才能成為真正的“金子”。
這就是美國為什麼在20世紀90年代幾乎沒有什麼新的軟體公司產生的原因。 只是原來80年代的大的軟體公司互相兼併,
2. 共用軟體
共用軟體是避開商業管道的一種方法。 它避開了商業的門檻, 因為這個行業的門檻發展很高以後就輕易進不去了。 我寫個程式丟在網上, 你下載就可以用, 這時候程式又等於軟體。 共用軟體是這樣產生的, 是因為沒有辦法中的辦法。 如果說程式直接等於軟體的話, 誰也不會輕易把程式丟到網上去。
開始做共用軟體的人並不認為做它能賺錢, 只是後來用的人多了, 有人付錢給他了。 共用軟體使得程式和軟體的距離縮短了, 但是它與商務軟體的距離會進一步拉大。 商務軟體的功能和所要達到的目標就不是一個人能“玩”得起來的了。
1.1.1 商務軟體門檻的形成
1. 商務軟體門檻的形成
商務軟體門檻的形成是整個行業發展的必然結果。 任何一個行業初始階段時的門檻都非常低, 但是, 只要發展到一定的階段後, 它的門檻就必然抬高。 比如, 現在國內生產小汽車很困難, 但在20世紀50年代~60年代的時候, 你裝4個輪子, 再加上柴油機等就形成汽車。 那時的萊特兄弟裝個螺旋槳, 加兩個機翼, 就能做飛機。 整個行業還沒有形成的時候, 絕對可以這樣做,但是,到整個行業形成時,你就做不了了。所有的行業都是這樣的。
為什麼網站一出來時那麼多人去擠著做?這也是因為一開始的時候,看起來門檻非常低,人人都可以做。只要有一個伺服器,架根網線,就能做網站。這個行業處於初始階段時,情況就是這樣的。但這個行業形成後,你就輕易地“玩”不了了。
國內的軟體發展也是如此。國內的軟體自從軟體經銷商形成以後,這個行業才真正地形成。有沒有一個管道是判斷一個行業是否形成的很重要的環節。任何一個行業都會有一個經銷管道,如果管道形成了,那麼這個行業也就形成了。第一名的經銷商是1994年~1995年成立的,也就是說,中國軟體行業大概也就是在1995年形成的,至今才經歷8年時間的發展。
有一種浮躁的思想認為,中國軟體產業應該很快就能趕上美國。美國軟體行業是上世紀80年代形成的,到現在已經發展了20多年了。中國軟體行業才8年,8年才是一個懵懂的小孩,20多歲是一個強壯的青年,那麼他們的力量是不對等的。但也要看到,當8歲變成15歲的時候,它真正的能量才會反映出來。
2. 軟體門檻對程式師的影響
現在中國軟體行業正在形成。所以,現在做一個程式師一定要有耐心,因為現在已經不等於以前了。你一定要把所有的問題搞清楚,然後再去做程式。
對於程式師來說,最好的工作環境是在現有的或者初始要成立的公司裡面,這是最容易成功的。個人單槍匹馬闖天下已經很困難了。即使現在偶爾做兩個共用軟體放在網上能成名,但是也已經比較困難了。因為現在做軟體的人已經很多了。這也說明軟體已經不等於程式了,程式也不等於軟體。
程式要變成軟體,這中間是一個商業化的過程。沒有門檻以前,它沒有這個商業過程,現在有這個行業了,它中間就有商業化的過程。這個商業的過程就不是一個人能“玩”的。
如果你開始做某一類軟體的時候,別人已經做成了,這時你再決定花力氣去做,那麼你就要花雙倍的力氣去趕上別人。
現在的商務軟體往往是由很多模組組成的,模組是整個系統的一部分。個人要完整地寫一個商業系統幾乎是不可能的。軟體進入Windows平臺後,它已經很複雜了,不像在DOS的時候,你寫兩行程式就能賣,做個ZIP也能賣。事實上,美國的商業編譯器也不是一個人能“玩”的。現在你可能覺得它是很簡單的,甚至Linux還帶了一個GCC,且來源程式還在。你可以把它改一改,做個VC試一試,看它會有人用嗎?它能變成軟體嗎?即使你再做個介面,它也還是一個GCC,絕對不會成為Visual C++那樣能商業化的軟體。
可見,國外軟體行業的門檻要比中國的高很多了。我覺得我們中國即使再去做這樣的東西,也沒有多大的意義了。這個門檻你是追不過來的。不僅要花雙倍的力氣,而且在這麼短的時間內,你還要完成別人已經完成過的工作,包括別人所做的測試工作。只有這樣,才能做到你的軟體與別人有競爭力,能與它做比較。
1.1.2 認清自己的發展
如果連以上認識都不清楚,很可能就以為去書店買一本MFC高手速成之類的書,編兩個程式就能成為軟體高手。就好像這些書是“黃金”,我學兩下,學會了VC、MFC,就能做一個軟體拿出去賣了。這種想法也不是不行,最後一定能行,但要有耐心,還要有機遇。機遇是從耐心中產生的,越有耐心,就越有機遇。你得非常努力,要花很多的精力,可能還要走很多的彎路。
如果你是從MFC入手的,或是從VB入手的,則如要做出一個真正的能應用個人領域的通用軟體,就會走非常多的彎路。直接的捷徑絕對不是走這兩條路。這兩條路看起來很快,而且在很多公司裡面確實需要這樣的東西,比如說我這家公司就是為另一個家公司做系統集成的,那我就需要這樣的東西,我不管你具體怎麼實現,我只需要達到這個目標就行了。
任何軟體的實現都會有n種方法,即使你是用最差的那種方法實現的,也沒有問題,最後它還是能運行。即使有問題,再改一改就是。但是,做通用軟體就不行了,通用是一對多,你做出來的軟體以後要面向全國,如果將來自由貿易通到香港也好,通到國外也好,整個產品能銷到全世界的話,這時候,通用軟體所有做的工作就不是這麼簡單了。所以說,正確的入門方法就很關鍵。
如果你僅僅只是想混口飯吃,找個工作,可能教你成為MFC的高手之類的書對你就足夠了。但是,如果你想做一個很好的軟體,不僅能滿足你謀一碗飯吃,還能使你揚名,最後你的軟體還能成為很多人用,甚至你還想把它作為一個事業去經營,那麼這第一步就非常關鍵。這時就絕對不能找一本MFC或找一本VB的書學兩下就行,而是要從最底層開始做起,從最基本做起。
為什麼網站一出來時那麼多人去擠著做?這也是因為一開始的時候,看起來門檻非常低,人人都可以做。只要有一個伺服器,架根網線,就能做網站。這個行業處於初始階段時,情況就是這樣的。但這個行業形成後,你就輕易地“玩”不了了。
國內的軟體發展也是如此。國內的軟體自從軟體經銷商形成以後,這個行業才真正地形成。有沒有一個管道是判斷一個行業是否形成的很重要的環節。任何一個行業都會有一個經銷管道,如果管道形成了,那麼這個行業也就形成了。第一名的經銷商是1994年~1995年成立的,也就是說,中國軟體行業大概也就是在1995年形成的,至今才經歷8年時間的發展。
有一種浮躁的思想認為,中國軟體產業應該很快就能趕上美國。美國軟體行業是上世紀80年代形成的,到現在已經發展了20多年了。中國軟體行業才8年,8年才是一個懵懂的小孩,20多歲是一個強壯的青年,那麼他們的力量是不對等的。但也要看到,當8歲變成15歲的時候,它真正的能量才會反映出來。
2. 軟體門檻對程式師的影響
現在中國軟體行業正在形成。所以,現在做一個程式師一定要有耐心,因為現在已經不等於以前了。你一定要把所有的問題搞清楚,然後再去做程式。
對於程式師來說,最好的工作環境是在現有的或者初始要成立的公司裡面,這是最容易成功的。個人單槍匹馬闖天下已經很困難了。即使現在偶爾做兩個共用軟體放在網上能成名,但是也已經比較困難了。因為現在做軟體的人已經很多了。這也說明軟體已經不等於程式了,程式也不等於軟體。
程式要變成軟體,這中間是一個商業化的過程。沒有門檻以前,它沒有這個商業過程,現在有這個行業了,它中間就有商業化的過程。這個商業的過程就不是一個人能“玩”的。
如果你開始做某一類軟體的時候,別人已經做成了,這時你再決定花力氣去做,那麼你就要花雙倍的力氣去趕上別人。
現在的商務軟體往往是由很多模組組成的,模組是整個系統的一部分。個人要完整地寫一個商業系統幾乎是不可能的。軟體進入Windows平臺後,它已經很複雜了,不像在DOS的時候,你寫兩行程式就能賣,做個ZIP也能賣。事實上,美國的商業編譯器也不是一個人能“玩”的。現在你可能覺得它是很簡單的,甚至Linux還帶了一個GCC,且來源程式還在。你可以把它改一改,做個VC試一試,看它會有人用嗎?它能變成軟體嗎?即使你再做個介面,它也還是一個GCC,絕對不會成為Visual C++那樣能商業化的軟體。
可見,國外軟體行業的門檻要比中國的高很多了。我覺得我們中國即使再去做這樣的東西,也沒有多大的意義了。這個門檻你是追不過來的。不僅要花雙倍的力氣,而且在這麼短的時間內,你還要完成別人已經完成過的工作,包括別人所做的測試工作。只有這樣,才能做到你的軟體與別人有競爭力,能與它做比較。
1.1.2 認清自己的發展
如果連以上認識都不清楚,很可能就以為去書店買一本MFC高手速成之類的書,編兩個程式就能成為軟體高手。就好像這些書是“黃金”,我學兩下,學會了VC、MFC,就能做一個軟體拿出去賣了。這種想法也不是不行,最後一定能行,但要有耐心,還要有機遇。機遇是從耐心中產生的,越有耐心,就越有機遇。你得非常努力,要花很多的精力,可能還要走很多的彎路。
如果你是從MFC入手的,或是從VB入手的,則如要做出一個真正的能應用個人領域的通用軟體,就會走非常多的彎路。直接的捷徑絕對不是走這兩條路。這兩條路看起來很快,而且在很多公司裡面確實需要這樣的東西,比如說我這家公司就是為另一個家公司做系統集成的,那我就需要這樣的東西,我不管你具體怎麼實現,我只需要達到這個目標就行了。
任何軟體的實現都會有n種方法,即使你是用最差的那種方法實現的,也沒有問題,最後它還是能運行。即使有問題,再改一改就是。但是,做通用軟體就不行了,通用是一對多,你做出來的軟體以後要面向全國,如果將來自由貿易通到香港也好,通到國外也好,整個產品能銷到全世界的話,這時候,通用軟體所有做的工作就不是這麼簡單了。所以說,正確的入門方法就很關鍵。
如果你僅僅只是想混口飯吃,找個工作,可能教你成為MFC的高手之類的書對你就足夠了。但是,如果你想做一個很好的軟體,不僅能滿足你謀一碗飯吃,還能使你揚名,最後你的軟體還能成為很多人用,甚至你還想把它作為一個事業去經營,那麼這第一步就非常關鍵。這時就絕對不能找一本MFC或找一本VB的書學兩下就行,而是要從最底層開始做起,從最基本做起。