讓你提前認(rèn)識(shí)軟件開發(fā)(4):破除幾個(gè)有關(guān)軟件開發(fā)的錯(cuò)誤觀念
第1部分 重新認(rèn)識(shí)C語(yǔ)言
破除幾個(gè)有關(guān)軟件開發(fā)的錯(cuò)誤觀念
我們做事情的能力能夠有所提升,觀念的轉(zhuǎn)變是關(guān)鍵···```。
從學(xué)生轉(zhuǎn)變?yōu)槁殬I(yè)人的過(guò)程是很艱難的,因?yàn)槲覀円c自己積累了多年的“老毛病”作斗爭(zhēng),這些“老毛病”包括:做事拖拉、不守時(shí)、不遵守規(guī)則、怕吃苦等。就像發(fā)射火箭衛(wèi)星一樣,擺脫重力的束縛所花費(fèi)的燃料是最多的,一旦成功,那么以后的流程就會(huì)比較輕松了。所謂萬(wàn)事開頭難,也就是這個(gè)道理。
那么,要想掌握工作中C語(yǔ)言的基本技能,我們需要破除哪些錯(cuò)誤觀念呢?
錯(cuò)誤觀念一:我的C語(yǔ)言學(xué)得很好。
這是幾乎每個(gè)走出學(xué)校的、準(zhǔn)備從事軟件開發(fā)的人都持有的觀念,因?yàn)樗麄冊(cè)趯W(xué)校考試都得了高分。但想法是美好的,現(xiàn)實(shí)是殘酷的。真正到了工作崗位,你就會(huì)發(fā)現(xiàn),自己在學(xué)校學(xué)的那些知識(shí)是十分有限的,根本不足以應(yīng)對(duì)工作。在中國(guó),還有一個(gè)怪現(xiàn)象就是,學(xué)校里面老師講得比較多的,工作中基本用不到;而老師沒(méi)有講,或者是講得比較少的,工作中往往用得比較多。例如,C語(yǔ)言中的指針、結(jié)構(gòu)體這些,學(xué)校里面講得很少或者不深入,大家也沒(méi)有太注意,只是應(yīng)付了考試,但工作中我們需要時(shí)時(shí)與它們打交道。你還說(shuō)自己學(xué)得好嗎?
這又在一定程度上反映了一個(gè)事實(shí):中國(guó)學(xué)校教育和社會(huì)工作是嚴(yán)重脫節(jié)的。為了個(gè)人的職業(yè)發(fā)展,我們一定要謙虛,要虛心學(xué)習(xí)。
錯(cuò)誤觀念二:編程是很簡(jiǎn)單的事情。
持這種觀點(diǎn)的人,也是受到了學(xué)校教育的影響,因?yàn)闀旧厦娴拇a都很短,而且比較的簡(jiǎn)單。但在工作中,也這么簡(jiǎn)單嗎?非也。
我總結(jié)了一下,教材上的程序與實(shí)際工作中的程序至少有以下幾個(gè)不同:
第一,代碼行數(shù)的多少。
教材中的代碼一般為幾十行,多則一兩百行,大家當(dāng)然會(huì)覺(jué)得簡(jiǎn)單;而工作中的代碼少則幾千行,多則上萬(wàn)行,兩者根本不是同一個(gè)數(shù)量級(jí)的。我最開始拿到程序的時(shí)候,腦袋就暈了:怎么這么多代碼呢?我從沒(méi)看到過(guò)。
第二,變量及函數(shù)的命名。
這是兩者的最大不同,也是“專業(yè)”和“山寨”的重要區(qū)別。在教材中,經(jīng)常的命名有這幾個(gè):“int i;”、“char *p;”、“float f;”、“int f(int a, int b)”等等,大家都已經(jīng)習(xí)以為常了。這是教科書對(duì)大家的“毒害”。在工作中,我們要嚴(yán)格按照編程規(guī)范來(lái)辦事,像上面那些命名方法是嚴(yán)格禁止的。這在以后的文章中會(huì)有詳細(xì)的說(shuō)明。
第三,程序的注釋。
這也是很讓人頭痛的事情。教科書上面的程序比較短,因此注釋少,這也給大家引入了一種錯(cuò)覺(jué):注釋的多少不重要。但在工作中,我們要時(shí)刻記?。涸谝恍┲匾某绦蛘Z(yǔ)句附近,一定要有注釋。不僅如此,注釋的寫法也有多種,在不同的地方,寫法是不一樣的。簡(jiǎn)短而清晰的注釋可以提高大家閱讀代碼的速度,進(jìn)而提高工作效率。
第四,輸入/輸出語(yǔ)句。
在教材上,幾乎每個(gè)程序都有“scanf”和“printf”這兩個(gè)函數(shù),用于讀入和輸出數(shù)據(jù),大家用得是津津有味,如果哪個(gè)程序沒(méi)有這兩個(gè)函數(shù),反而會(huì)覺(jué)得奇怪。但在工作中,確實(shí)是幾乎不存在這兩個(gè)函數(shù)的,而代之以其它方式來(lái)進(jìn)行輸入和輸出。在剛開始的時(shí)候,你也許會(huì)覺(jué)得難以接受,但慢慢熟悉之后,你就會(huì)知道這是什么道理了。
第五,程序的版式。
在教科書上,沒(méi)有什么版式可言,基本上實(shí)現(xiàn)需要的功能即可。這也給大家?guī)?lái)了誤解,認(rèn)為編程只注重功能,其它什么的都可以“隨心所欲”。但在工作中,對(duì)于程序的版式、布局都有嚴(yán)格規(guī)定的,哪里應(yīng)該縮進(jìn)(以及縮進(jìn)幾個(gè)空格)、哪里應(yīng)該留空格、哪里應(yīng)該留空行,都是要注意的。這就像一個(gè)人一樣,光說(shuō)自己肚子里“有貨”還不行,還需要注意外表,要讓大家看起來(lái)覺(jué)得很舒服,所謂的“內(nèi)外兼修”,就是這個(gè)道理。
有關(guān)代碼的編寫細(xì)節(jié),我會(huì)在以后的文章中逐一說(shuō)明。
錯(cuò)誤觀念三:我只要把代碼寫好就行了,其它的就不用管了。
大家也許會(huì)認(rèn)為,開發(fā)工程師只負(fù)責(zé)寫程序,其它的什么測(cè)試啊、寫文檔啊,就不必自己操心了。其實(shí)不然。
在工作中,開發(fā)工程師的工作是很多的,編寫代碼只是一小部分。在代碼寫完之后,不能馬上把它交給測(cè)試人員來(lái)測(cè)試。很多新手寫完代碼就了事,這是不對(duì)的。我們要首先進(jìn)行自測(cè),這會(huì)花費(fèi)比較長(zhǎng)的時(shí)間,甚至比寫代碼的時(shí)間還要長(zhǎng)很多,等自測(cè)無(wú)誤之后,才能正式提交。
除了寫代碼和自測(cè),我們還要編寫相關(guān)的開發(fā)文檔。你也許會(huì)認(rèn)為寫文檔是文檔工程師的事情,非也,是開發(fā)工程師要干的。所以,開發(fā)人員其實(shí)是很累的。
另外,我們從開始寫代碼到最后提交,都要嚴(yán)格遵守項(xiàng)目的管理流程,也就是一個(gè)軟件的生命周期,不是說(shuō)想什么時(shí)候做就什么時(shí)候做,不能隨心所欲,要在規(guī)則之下來(lái)做事情。有關(guān)這方面,以后也會(huì)有專門的文章來(lái)說(shuō)明。
錯(cuò)誤觀念四:公司會(huì)安排好我的職業(yè)道路。
每個(gè)人進(jìn)入公司,都會(huì)有相應(yīng)的入職培訓(xùn),這其實(shí)就是公司對(duì)應(yīng)屆畢業(yè)生進(jìn)行“洗腦”過(guò)程。培訓(xùn)老師會(huì)給大家講,公司是多么多么的好,公司會(huì)根據(jù)員工的特點(diǎn)來(lái)定培養(yǎng)計(jì)劃,讓大家在適合自己的職業(yè)規(guī)范軌道發(fā)展。
但是,當(dāng)你發(fā)現(xiàn)坐在你旁邊的員工已經(jīng)入職10年,可是還做著和你一樣的工作時(shí),你那對(duì)公司美好的幻想瞬間就破滅了。確實(shí),不管是在學(xué)校,還是在工作單位,我們不要指望學(xué)?;蚬灸軌?qū)⑽磥?lái)的道路給安排好,而要靠自己的不斷努力去獲得自己想要的東西。
科學(xué)技術(shù)日新月異,新的軟件開發(fā)技術(shù)層出不窮。從事軟件開發(fā)這一行,我們就要馬不停蹄地學(xué)習(xí),任何寄希望于他人或公司的想法都是不可取的。
還有一些錯(cuò)誤觀念,像軟件開發(fā)工程師都是牛人、都很受人尊重、工作很輕松且工資很高等等,我就不逐一說(shuō)明了,大家在網(wǎng)上去百度一下便可知曉。
“磨刀不誤砍柴工”,在樹立了正確的觀念之后,我們學(xué)習(xí)工作中的C語(yǔ)言就會(huì)容易多了。
往期精彩
五分鐘讀懂TCP 協(xié)議
為L(zhǎng)inux應(yīng)用構(gòu)造有限狀態(tài)機(jī)
專為MCU項(xiàng)目開發(fā)提速的代碼框架BabyOS
嵌入式C語(yǔ)言代碼優(yōu)化方案(深度好文,建議花時(shí)間研讀并收藏)
stm32cubeMX學(xué)習(xí)、USB DFU(Download Firmware Update)固件更新
若覺(jué)得本次分享的文章對(duì)您有幫助,隨手點(diǎn)[在看]并轉(zhuǎn)發(fā)分享,也是對(duì)我的支持。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!





