第1部分 重新認識C語言
破除幾個有關軟體開發的錯誤觀念
我們做事情的能力能夠有所提升,觀念的轉變是關鍵。
從學生轉變為職業人的過程是很艱難的,因為我們要與自己積累了多年的“老毛病”作鬥争,這些“老毛病”包括:做事拖拉、不守時、不遵守規則、怕吃苦等。就像發射火箭衛星一樣,擺脫重力的束縛所花費的燃料是最多的,一旦成功,那麼以後的流程就會比較輕松了。所謂“萬事開頭難”,也就是這個道理。
那麼,要想掌握工作中C語言的基本技能,我們需要破除哪些錯誤觀念呢?

錯誤觀念一:我的C語言學得很好。
這是幾乎每個走出學校的、準備從事軟體開發的人都持有的觀念,因為他們在學校考試都得了高分。但想法是美好的,現實是殘酷的。真正到了工作崗位,你就會發現,自己在學校學的那些知識是十分有限的,根本不足以應對工作。在中國,還有一個怪現象就是,學校裡面老師講得比較多的,工作中基本用不到;而老師沒有講,或者是講得比較少的,工作中往往用得比較多。例如,C語言中的指針、結構體這些,學校裡面講得很少或者不深入,大家也沒有太注意,隻是應付了考試,但工作中我們需要時時與它們打交道。你還說自己學得好嗎?
這又在一定程度上反映了一個事實:中國學校教育和社會工作是嚴重脫節的。為了個人的職業發展,我們一定要謙虛,要虛心學習。
錯誤觀念二:程式設計是很簡單的事情。
持這種觀點的人,也是受到了學校教育的影響,因為書本上面的代碼都很短,而且比較的簡單。但在工作中,也這麼簡單嗎?非也。
我總結了一下,教材上的程式與實際工作中的程式至少有以下幾個不同:
第一,代碼行數的多少。
教材中的代碼一般為幾十行,多則一兩百行,大家當然會覺得簡單;而工作中的代碼少則幾千行,多則上萬行,兩者根本不是同一個數量級的。我最開始拿到程式的時候,腦袋就暈了:怎麼這麼多代碼呢?我從沒看到過。
第二,變量及函數的命名。
這是兩者的最大不同,也是“專業”和“山寨”的重要差別。在教材中,經常的命名有這幾個:“int i;”、“char *p;”、“float f;”、“int f(int a, int b)”等等,大家都已經習以為常了。這是教科書對大家的“毒害”。在工作中,我們要嚴格按照程式設計規範來辦事,像上面那些命名方法是嚴格禁止的。這在以後的文章中會有詳細的說明。
第三,程式的注釋。
這也是很讓人頭痛的事情。教科書上面的程式比較短,是以注釋少,這也給大家引入了一種錯覺:注釋的多少不重要。但在工作中,我們要時刻記住:在一些重要的程式語句附近,一定要有注釋。不僅如此,注釋的寫法也有多種,在不同的地方,寫法是不一樣的。簡短而清晰的注釋可以提高大家閱讀代碼的速度,進而提高工作效率。
第四,輸入/輸出語句。
在教材上,幾乎每個程式都有“scanf”和“printf”這兩個函數,用于讀入和輸出資料,大家用得是津津有味,如果哪個程式沒有這兩個函數,反而會覺得奇怪。但在工作中,确實是幾乎不存在這兩個函數的,而代之以其它方式來進行輸入和輸出。在剛開始的時候,你也許會覺得難以接受,但慢慢熟悉之後,你就會知道這是什麼道理了。
第五,程式的版式。
在教科書上,沒有什麼版式可言,基本上實作需要的功能即可。這也給大家帶來了誤解,認為程式設計隻注重功能,其它什麼的都可以“随心所欲”。但在工作中,對于程式的版式、布局都有嚴格規定的,哪裡應該縮進(以及縮進幾個空格)、哪裡應該留白格、哪裡應該留白行,都是要注意的。這就像一個人一樣,光說自己肚子裡“有貨”還不行,還需要注意外表,要讓大家看起來覺得很舒服,所謂的“内外兼修”,就是這個道理。
有關代碼的編寫細節,我會在以後的文章中逐一說明。
錯誤觀念三:我隻要把代碼寫好就行了,其它的就不用管了。
大家也許會認為,開發工程師隻負責寫程式,其它的什麼測試啊、寫文檔啊,就不必自己操心了。其實不然。
在工作中,開發工程師的工作是很多的,編寫代碼隻是一小部分。在代碼寫完之後,不能馬上把它交給測試人員來測試。很多新手寫完代碼就了事,這是不對的。我們要首先進行自測,這會花費比較長的時間,甚至比寫代碼的時間還要長很多,等自測無誤之後,才能正式送出。
除了寫代碼和自測,我們還要編寫相關的開發文檔。你也許會認為寫文檔是文檔工程師的事情,非也,是開發工程師要幹的。是以,開發人員其實是很累的。
另外,我們從開始寫代碼到最後送出,都要嚴格遵守項目的管理流程,也就是一個軟體的生命周期,不是說想什麼時候做就什麼時候做,不能随心所欲,要在規則之下來做事情。有關這方面,以後也會有專門的文章來說明。
錯誤觀念四:公司會安排好我的職業道路。
每個人進入公司,都會有相應的入職教育訓練,這其實就是公司對應屆畢業生進行“洗腦”過程。教育訓練老師會給大家講,公司是多麼多麼的好,公司會根據員工的特點來定培養計劃,讓大家在适合自己的職業規範軌道發展。
但是,當你發現坐在你旁邊的員工已經入職10年,可是還做着和你一樣的工作時,你那對公司美好的幻想瞬間就破滅了。确實,不管是在學校,還是在工作機關,我們不要指望學校或公司能夠将未來的道路給安排好,而要靠自己的不斷努力去獲得自己想要的東西。
科學技術日新月異,新的軟體開發技術層出不窮。從事軟體開發這一行,我們就要馬不停蹄地學習,任何寄希望于他人或公司的想法都是不可取的。
還有一些錯誤觀念,像軟體開發工程師都是牛人、都很受人尊重、工作很輕松且工資很高等等,我就不逐一說明了,大家在網上去百度一下便可知曉。
“磨刀不誤砍柴工”,在樹立了正确的觀念之後,我們學習工作中的C語言就會容易多了。