一個(gè)32歲入門(mén)的70后程序員給我的啟示
87 2017-04-19
大家好,我是帥氣小伙,今天為大家?guī)?lái)一個(gè)非常勵(lì)志,讓我反思的故事。今天為大家講的是我父親是如何用行動(dòng)教會(huì)我成為程序員的。
歲月的錘煉
圓口接口的鍵盤(pán),2003年的
有人問(wèn)這個(gè)鍵盤(pán)難道沒(méi)有擦過(guò)嗎?不是的,是擦不掉的歲月痕跡。如果有注意到細(xì)節(jié)的朋友會(huì)發(fā)現(xiàn),程序員什么鍵位用得最多,(除了ASDW,YUHJ,那是我小時(shí)候玩拳王留下的)。這個(gè)鍵盤(pán)雖然老舊,但是我爸一直不舍得扔。03年的時(shí)候,他從二手市場(chǎng)買(mǎi)回來(lái)了這臺(tái)二手電腦,開(kāi)始自學(xué)匯編。我爸是只有初中文化,但是有超強(qiáng)的動(dòng)手能力。
零編程基礎(chǔ)入門(mén)嵌入式開(kāi)發(fā)
因?yàn)楫?dāng)時(shí)03年的時(shí)候,他剛從一家電子廠辭職,他在電子廠里看到了單片機(jī)這種玩意,他看到了他們工程師的工資和待遇,而當(dāng)時(shí)的他只是一名流水線上的焊錫工,雖然是個(gè)組長(zhǎng),但是也感覺(jué)到了職業(yè)的局限性。(這也帶給我們一個(gè)啟示,作為男人,如果覺(jué)得職業(yè)看不到頭,趁早換工作吧,如果不趁早,你會(huì)在以后的家庭壓力中選擇妥協(xié),再也看不到頭了。)辭職的第二天,他就買(mǎi)回了這臺(tái)二手電腦,和一臺(tái)仿的燒寫(xiě)機(jī)器(把程序?qū)懙叫酒臋C(jī)器),一本匯編語(yǔ)言入門(mén)的書(shū),開(kāi)始了他12年的嵌入式開(kāi)發(fā)之路。(這里給我的啟示是,說(shuō)學(xué)就學(xué),不要想著看看怎么入門(mén),最好的入門(mén)技巧就是動(dòng)手。)
圖書(shū)館抄書(shū)的怪蜀黍
這是他當(dāng)時(shí)學(xué)C語(yǔ)言的時(shí)候在新華書(shū)店偷偷抄的
我記得初中的時(shí)候每周六我爸都會(huì)帶我去新華書(shū)店看書(shū),然后去到那里,每次都是他叫我看著圖書(shū)館管理員有沒(méi)有來(lái),然后他就在那里專心地去抄寫(xiě)這些代碼片段(這種學(xué)習(xí)方法在我看來(lái),現(xiàn)在就是個(gè)笑話,隨便打開(kāi)一個(gè)網(wǎng)站,代碼都是一堆堆的,但是話又說(shuō)回來(lái),你們?cè)谶@些源代碼中學(xué)到了什么,記住了嗎?會(huì)靈活運(yùn)用嗎?從前輩的學(xué)習(xí)方法來(lái)看,記錄一些常用的代碼片段還是很用必要的,你的github有一套自己的代碼片段嗎?如果沒(méi)有那就趕緊收集?。┑俏野值墓P記,我每次問(wèn)他,這是什么項(xiàng)目的,他都能記得很清楚,當(dāng)然他當(dāng)時(shí)入門(mén)的時(shí)候是非常痛苦的,一個(gè)英文單詞都不懂,可想而知??墒谴蠹业幕A(chǔ)應(yīng)該比我爸高很多吧,所以不要懷疑自己是否能夠?qū)W會(huì)編程,是一定能夠?qū)W會(huì)的。
程序員特技—專注
我的親人總是對(duì)我說(shuō):“你啊,坐久了要多起來(lái)走走,看看遠(yuǎn)處,這樣子才好?!笨墒俏矣X(jué)得大部分程序員都做不到,因?yàn)榫幊淌歉就2幌聛?lái)的,一旦你入門(mén)之后,你就會(huì)有種時(shí)刻想創(chuàng)造的感覺(jué)。這是寫(xiě)程序?qū)懗鰜?lái)的專注。說(shuō)到這,我就想問(wèn)問(wèn)大家:“你能夠?qū)W⒍嗌賯€(gè)小時(shí)?”我把這個(gè)問(wèn)題拋給了我爸,我爸笑著跟我說(shuō):“用煤氣,把一個(gè)裝滿水的平底鍋燒穿需要多少時(shí)間?”這是他的一次真實(shí)的經(jīng)歷,那是他在用匯編語(yǔ)言編寫(xiě)一個(gè)MP3播放器,在調(diào)試的過(guò)程中,忘記了自己在燒開(kāi)水,幸虧煤氣燒完了!說(shuō)這個(gè)故事只想告訴大家一個(gè)道理:“寫(xiě)程序你必要保持高度的專注,但是不能夠疲勞過(guò)度地專注?!?/p>
編程需要的是流程再造
軟件工程跟建筑學(xué)很像,它們都是基于現(xiàn)實(shí)的技術(shù),搭建最好的解決方案?!颁摻睿炷痢边@些都是做好的,都可以直接拿來(lái)用,編程也是如此,嵌入式開(kāi)發(fā)也是如此。
這是一塊移植了UCOSII系統(tǒng)的STM32實(shí)驗(yàn)板
這塊板嵌入了UCOSII系統(tǒng),可同時(shí)執(zhí)行多個(gè)任務(wù),并可指定任務(wù)優(yōu)先級(jí)。通俗地說(shuō),你可以邊聽(tīng)音樂(lè)邊打字。雖然看起來(lái)很低級(jí),但是嵌入式就是這樣。很高端吧。但是我一問(wèn)我爸,你是怎么做出來(lái)這塊板的,你真的這么厲害用C語(yǔ)言寫(xiě)了一個(gè)操作系統(tǒng)?
板子是自己畫(huà)的,其他的芯片都是買(mǎi)的,CPU程序是自己寫(xiě)進(jìn)去的。原來(lái)嵌入式開(kāi)發(fā)所做的事就是負(fù)責(zé)把各個(gè)功能模塊合理設(shè)計(jì),用程序去調(diào)度。現(xiàn)在成熟的芯片都是廠商寫(xiě)好了程序,提供外部調(diào)用接口,開(kāi)發(fā)人員并不需要了解它里面的內(nèi)容就可以開(kāi)發(fā)了。這對(duì)我以后學(xué)編程啟發(fā)很大。我的老師曾經(jīng)說(shuō)過(guò):“軟件工程師之所以能夠?qū)懗鼋鉀Q實(shí)際問(wèn)題的程序,是因?yàn)樗麄兌昧鞒淘僭欤矛F(xiàn)實(shí)的輪子(技術(shù))去實(shí)現(xiàn)這個(gè)流程”。想成為一名軟件工程師首要的不是編程語(yǔ)言能力的把握有多么厲害,而是懂得把現(xiàn)實(shí)生活中繁瑣的流程通過(guò)計(jì)算機(jī)科學(xué)來(lái)簡(jiǎn)化,我覺(jué)得這才是真正的軟件工程師。我爸的編程基礎(chǔ)雖然沒(méi)我強(qiáng),但是流程再造的能力比我強(qiáng)太多了。也許這就是經(jīng)驗(yàn)吧。
這是它給我提供的串口應(yīng)答式發(fā)送的流程(可能有錯(cuò))
我把我爸逼成了偽全棧
大二時(shí)候的我,學(xué)了C#,會(huì)做一下簡(jiǎn)單的winform程序,然后就開(kāi)始飄飄然了,跟我爸吹牛了,當(dāng)時(shí)我爸高興壞了,直接就給我接了一個(gè)真實(shí)的項(xiàng)目,真金白銀啊,我當(dāng)時(shí)還傻傻地答應(yīng)了。由于是真實(shí)的項(xiàng)目,程序的容錯(cuò)必須很高,你不能夠點(diǎn)幾下就throwexception吧,但是我做的項(xiàng)目都是校園里面的實(shí)驗(yàn),過(guò)家家玩的而已,雖然老師給了好評(píng),這都是大學(xué)里面的花拳繡腿,真正派上用場(chǎng)的時(shí)候,確顯得蒼白無(wú)力。理所當(dāng)然,我的程序終將不能按時(shí)完成。我爸意識(shí)到了,他笑著跟我說(shuō):“你教我學(xué)C#吧,我們一起探討這個(gè)程序?!睕](méi)辦法啊,只能讓我爸去學(xué)吧,一個(gè)星期后,他開(kāi)始與我并行開(kāi)發(fā),這是我跟我爸同臺(tái)工作最好的回憶。為什么我爸能夠在一個(gè)星期學(xué)會(huì)C#(只有C語(yǔ)言基礎(chǔ))?
語(yǔ)言都是通的,變的只是表達(dá)方式,思維和流程是不會(huì)變的
我們的老師從一開(kāi)始就教我們畫(huà)一些簡(jiǎn)單的流程圖,但是我們很多人都覺(jué)得這太簡(jiǎn)單了,沒(méi)什么意思,于是就開(kāi)始去追求那些表面華麗的界面,去滿足自己好奇而又虛榮的心,但是他們錯(cuò)過(guò)的是真正的編程技術(shù),這就是當(dāng)時(shí)的我。有很多人都覺(jué)得大學(xué)的課程很基礎(chǔ),實(shí)際用到項(xiàng)目的很少,是根本不能拿來(lái)做項(xiàng)目,書(shū)本上學(xué)的都過(guò)時(shí)了。
而實(shí)際上,書(shū)本教會(huì)的是我們寫(xiě)字(編程)的姿勢(shì)(方法),教會(huì)我們?nèi)绾文霉P(寫(xiě)程序),如何寫(xiě)好字(好程序),一旦你學(xué)會(huì)了就能夠?qū)懗鲆皇趾米郑ê贸绦颍?。所以有很多人?xiě)不好字(程序),那就是在小時(shí)候練字(初學(xué)編程)急于求成,想著去玩(炫耀)。這是我最深刻的反省,也是對(duì)各大初學(xué)者最好的忠告,編程必須耐得住寂寞!
程序員要時(shí)刻認(rèn)識(shí)自己
當(dāng)時(shí),我是膨脹了,有點(diǎn)自以為是了,就覺(jué)得自己行,然后就答應(yīng)項(xiàng)目了,結(jié)果幸虧我爸厲害,不然可是要賠錢(qián)的。作為程序員,必須了解自己的水平上限。知己知彼(我能做,你不能做),百戰(zhàn)不殆(我就是要這么多錢(qián))。對(duì)的,時(shí)刻了解自己水平上限是有助于自身價(jià)值的評(píng)估的,例如你跳槽了,你對(duì)比同行,你的水平在哪里。決定市場(chǎng)價(jià)格的并不是企業(yè)本身,而是社會(huì)必要?jiǎng)趧?dòng)時(shí)間(別的程序員要多久才能夠做出來(lái))。而最好的認(rèn)識(shí)就是看最新的技術(shù),了解行業(yè)的趨勢(shì)。這樣才能夠讓自己立足于高薪階層。
做一名守信用的程序員
我爸當(dāng)時(shí)跟我說(shuō):“既然你答應(yīng)了人家,無(wú)論你有千百個(gè)理由都要給人家完成,完成不了就是你的錯(cuò),因?yàn)槟銓?duì)人家承諾過(guò)?!边@不是在講道德規(guī)范,而是一個(gè)程序員的職業(yè)操守,因?yàn)檫@樣,我爸能夠接手到很多外包的項(xiàng)目,因?yàn)樗趧e人眼里只有兩個(gè)字:“可靠”。也許這就是程序員的個(gè)人品牌吧,如果你在企業(yè)中能夠有這樣的品牌,能不升職嗎?
總有人質(zhì)問(wèn):“我現(xiàn)在學(xué)編程晚嗎?”,“我30歲之后還能繼續(xù)寫(xiě)程序嗎?”,“學(xué)編程難嗎?”看完這篇文章后,我相信你不會(huì)再問(wèn)了,因?yàn)槿绻阏娴氖菬釔?ài)編程,你就應(yīng)該像我父親那樣,無(wú)論現(xiàn)實(shí)如何逼迫,初心永遠(yuǎn)不忘。雖然,我跟我的父親沒(méi)有太多的語(yǔ)言交流,但是這么多年的耳濡目染,足以讓我發(fā)出:“謹(jǐn)遵父訓(xùn),不忘初心”。
請(qǐng)聯(lián)系網(wǎng)站客服,了解詳細(xì)的優(yōu)惠課程信息~
優(yōu)質(zhì)、權(quán)威、便捷、省心
掃一掃
獲取更多福利
獵學(xué)網(wǎng)企業(yè)微信
獵學(xué)網(wǎng)訂閱號(hào)
獵學(xué)網(wǎng)服務(wù)號(hào)