作為一個(gè)程序員,我經(jīng)常會(huì)問自己一個(gè)問題:
優(yōu)秀的程序員都具備哪些特質(zhì)?
我總結(jié)過很多特質(zhì),例如:
有解決問題的能力
有獨(dú)立思考的能力
有好奇心、有探索精神
邏輯清晰,能夠用通俗的語言把技術(shù)問題講清楚
有良好的英文閱讀能力
數(shù)學(xué)好,算法好
經(jīng)過一段時(shí)間的觀察,我發(fā)現(xiàn)這上面的所有特質(zhì),都可以由一種行為習(xí)慣衍生出來,也就是如果你有以下習(xí)慣,那么你可能擁有且不限于以上所有的特質(zhì)
觀察大多數(shù)程序員的行為,朝相反的方向走
這句話也可以借用一本書的標(biāo)題(《少有人走的路》)來描述:少有程序員走的路。是的,這句話的邏輯也很明顯,和“優(yōu)秀的人總是少數(shù)一樣”
優(yōu)秀的程序員總是少數(shù)
如果你的行為和大多數(shù)程序員一樣,那么你很可能不會(huì)成為一個(gè)優(yōu)秀的程序員。
所以,如果你想成為一個(gè)優(yōu)秀的程序員,你首先需要拿出一個(gè)本子,記錄一下大多數(shù)程序員的特質(zhì),然后分析下,反向行事是否會(huì)讓自己更有競爭力,下面我說幾個(gè)我觀察到的現(xiàn)象:
大多數(shù)程序員都喜歡談?wù)摼幊陶Z言
編程語言是程序員談?wù)摰米疃嗟脑掝},他們喜歡討論哪個(gè)編程語言更有優(yōu)勢,關(guān)注編程語言的排行,正因?yàn)榇耍幸徊糠秩藭?huì)以不斷學(xué)習(xí)新的編程語言為樂,以此作為區(qū)別于普通程序員的憑證。相反,另一部分人由于經(jīng)驗(yàn)不足,區(qū)分不了具體哪個(gè)語言才是最適合自己的,從而遲遲不肯行動(dòng),陷入無限的糾結(jié)中。有時(shí)不同編程語言的陣營間還會(huì)產(chǎn)生口角,這種現(xiàn)象被視為對各自信仰的捍衛(wèi),進(jìn)而還會(huì)引起大多數(shù)人的圍觀。
大多數(shù)人都把注意力放在編程語言這一層面上,大的原因可能是因?yàn)榫幊陶Z言是通往程序世界的大門,它也是最實(shí)用的工具,學(xué)會(huì)了一門編程語言,就可以用一種新的方式和計(jì)算機(jī)進(jìn)行交互了。
但這和現(xiàn)實(shí)世界不同,現(xiàn)實(shí)世界中,學(xué)好一門外語,相當(dāng)于打開了一個(gè)新的世界,例如學(xué)好了英語,你便可以自由穿梭在以英語為母語的國家中,了解他們的文化和歷史,掌握第一手外文知識,從而能夠幫助你更好的決策,可以說多掌握一門外語能讓你的認(rèn)知獲得線性增長。相反,在計(jì)算機(jī)世界,你多學(xué)一門語言,它不會(huì)給你帶來1+1=2的效果,因?yàn)楸举|(zhì)上,我們的目的不是學(xué)更多編程語言,而是利用計(jì)算機(jī),幫助我們完成具體的任務(wù),要知道同樣的一個(gè)任務(wù),甚至可以用好幾種不同的語言來實(shí)現(xiàn)。
曾經(jīng)看過一個(gè)問題,提問人可能是新人,他問:我想學(xué)編程,但不知道先學(xué)Python還是Javascript?;卮鸬娜司透嬖V他:你用來糾結(jié)的這些時(shí)間,說不定早就可以學(xué)會(huì)其中一門了。
是的,優(yōu)秀的程序員不會(huì)把大量的時(shí)間放在編程語言上,因?yàn)樗麄儠?huì)把注意力放在更重要的事情上。
大多數(shù)程序員都不重視基礎(chǔ)
有句話在業(yè)界特別流行,那就是
從小不努力,長大做IT
這句話的意思是,IT行業(yè)的門檻非常低,任何人只要學(xué)完一門編程語言就可以入行了,更深層次的意思是IT工作都是重復(fù)性的勞動(dòng),并不需要太有創(chuàng)造力的人才。
聊天時(shí)經(jīng)常會(huì)聊到算法的話題,例如“算法在工作中到底重不重要”,很多人給出的答案是不重要,理由是因?yàn)槿粘9ぷ髦谢居貌坏健_@又是一個(gè)典型的實(shí)用主義答案,同時(shí)它也極具迷惑性,因?yàn)椤叭粘9ぷ髦杏貌坏健钡拇_是事實(shí),但這個(gè)事實(shí)并不能推導(dǎo)出算法不重要這個(gè)結(jié)論。
算法很重要,就像數(shù)學(xué)是所有學(xué)科的基礎(chǔ),所以數(shù)學(xué)很重要一樣,算法是一個(gè)系統(tǒng)的靈魂,是不同軟件之間拉開差距的籌碼,最典型的例子就是谷歌搜索引擎,它當(dāng)年就是依靠著名的PageRank算法使其與市場上的其他搜索產(chǎn)品拉開差距的,該算法直接影響的是搜索體驗(yàn),大概率的把人們想要的結(jié)果排在前面。
提升算法能力不僅可以幫軟件提升競爭力,而且還可以提升我們的邏輯思維能力,人和人之間的差異其實(shí)就在于思維能力的差異,如果你每天都在敲if ... else這類的代碼,你的思維能力不會(huì)有多大的變化,但在人工智能時(shí)代,你時(shí)不時(shí)琢磨一下監(jiān)督學(xué)習(xí),非監(jiān)督學(xué)習(xí)中的算法,我想你的未來一定會(huì)更美好吧。
算法只是基礎(chǔ)中的一類,操作系統(tǒng)的原理、TCP/IP協(xié)議、MySQL中的Innodb引擎、Redis實(shí)現(xiàn)原理、Reactor網(wǎng)絡(luò)模型等都屬于基礎(chǔ),你可能覺得這些都很難啃,但據(jù)統(tǒng)計(jì),基礎(chǔ)知識只占一個(gè)人所學(xué)全部知識的3-5%,牢牢掌握這些基礎(chǔ)知識,是你在日新月異的知識海洋中以不變應(yīng)萬變的法寶。
大多數(shù)程序員不重視效率的提升
如果你在一個(gè)互聯(lián)網(wǎng)公司,你可能會(huì)這樣調(diào)侃你的程序員同學(xué):
你工作不飽和啊,bug解完了嗎?
下面的對話也是常有的:
A:在干嘛呢?
B:苦逼加班解bug呢。
你也許看出來了,大多數(shù)程序員常常受限于解bug的惡性循環(huán)中——以前版本的bug還沒解完,新功能上線又出現(xiàn)一堆bug。解bug是一件特別阻礙生產(chǎn)力的事情,它是一件副產(chǎn)品,理論上員工應(yīng)該把大部分精力都用在開發(fā)上,而大多數(shù)公司卻在維護(hù)軟件的穩(wěn)定性上付出了巨大的成本。
很多員工都抱怨自己工作那么辛苦,工資卻不高,但他們卻沒有想過這個(gè)結(jié)果是怎么造成的,他們可能沒有考慮過自己投入的時(shí)間能給公司帶來多大的收益,如果把大部分時(shí)間都用來解bug,其實(shí)產(chǎn)出不僅是零,還是負(fù)的,你說公司會(huì)給你漲工資嗎。
以我觀察的來看,真的是這樣的現(xiàn)象,開發(fā)過程中我們特別在乎一個(gè)產(chǎn)品的開發(fā)時(shí)間,希望盡可能的完成開發(fā)并發(fā)布產(chǎn)品,例如希望一個(gè)月完成,但卻忽略了產(chǎn)品發(fā)布后,可能需要十個(gè)月甚至更多的時(shí)間來維護(hù)它,這真的是一個(gè)本末倒置的怪圈。
相反,如果每個(gè)人都有意識提升自己的工作效率,提升自己的出品質(zhì)量,把更多時(shí)間投入到有價(jià)值的事情上,我想公司的業(yè)績不會(huì)差,公司賺錢了,你的工資也不會(huì)低。你可能會(huì)問如何才能提升工作效率,其實(shí)也很簡單,做每件事之后,都要反思:
還有更簡單的方法嗎?
我該如何才能減少bug的數(shù)量呢?
做這件事有通用的解決方案嗎?
大多數(shù)程序員都不利用業(yè)余時(shí)間進(jìn)行探索
探索和人的一個(gè)重要的特質(zhì)相關(guān),就是自主性(initiative),不僅是我,我相信大多數(shù)領(lǐng)導(dǎo)都喜歡和有自主性的下屬一起共事,不僅是因?yàn)樗麄兿∪?,同時(shí)還因?yàn)檫@樣的下屬會(huì)主動(dòng)去解決問題,可以在組織中極大的減少溝通和管理成本。
剛開始工作時(shí),我就發(fā)現(xiàn)公司鮮有人會(huì)利用業(yè)余時(shí)間學(xué)習(xí)了,當(dāng)時(shí)以為換一個(gè)技術(shù)更好的公司會(huì)有所改變,技術(shù)學(xué)習(xí)氛圍會(huì)好一些,誰知道這些都是自己的幻想,糾其原因可能是因?yàn)槿硕枷矚g過得安逸一點(diǎn),或者以平時(shí)已經(jīng)很忙了為借口,在工作之外就不再學(xué)習(xí)了。平時(shí)不學(xué)習(xí)會(huì)造成什么后果呢,最直接的就是解決問題的能力低下,這些人只能解決領(lǐng)導(dǎo)規(guī)定范圍內(nèi)的問題,超出這個(gè)范圍,一旦出現(xiàn)問題,要么掩蓋,要么規(guī)避,反正不會(huì)及時(shí)的從根本上去解決,不是因?yàn)椴幌耄且驗(yàn)閴焊筒粫?huì)。
對于程序員來說,學(xué)習(xí)包括看書和看代碼,如果你每天抽一個(gè)小時(shí)時(shí)間看書,估計(jì)你可以超過90%的人,同時(shí)你花時(shí)間去研究github上優(yōu)秀的代碼,那么剩下的人群中的90%也會(huì)被你甩在身后。
在這方面,我自己是有切身體會(huì)的,剛參加工作前,我是個(gè)零代碼量的人,由于經(jīng)驗(yàn)非常欠缺,我?guī)缀醢阉袠I(yè)余時(shí)間都用來研究同事寫的代碼上了,看完這些代碼,業(yè)務(wù)邏輯是很清楚了,但仍然無法判斷這些代碼是否寫得足夠好,因?yàn)槲也恢篮玫拇a是怎么樣的,當(dāng)時(shí)還沒有g(shù)ithub這樣好的學(xué)習(xí)環(huán)境,只能從書中找答案。隨后便花了不少時(shí)間讀完了《C++ Primer》、《Unix環(huán)境高級編程》、《設(shè)計(jì)模式》、《深入淺出MFC》這4本書,最后在第二年,我憑借一己之力在2個(gè)月內(nèi)把部門的核心代碼重構(gòu)了,由于覆蓋了大量的單元測試,幾乎沒有給我?guī)硎裁碽ug,要知道在這之前這些代碼是4個(gè)人花了2個(gè)季度才完成的,不僅如此,這些成績還幫我在新的公司收獲了“工資翻倍”。
讀優(yōu)秀的代碼可以讓自己獲得飛速的成長,就像游戲中的打怪升級,優(yōu)秀的代碼是大boss,一次可以讓你提升10個(gè)等級。這個(gè)過程不可逆,因?yàn)槊客瓿梢淮?,你都非常清楚的知道自己再也不?huì)寫以前那種爛代碼了,這根本就是碾壓過去的自己。當(dāng)你“升級”后,再回過頭去看公司里大多數(shù)人的代碼,就可以得出和我一樣的結(jié)論——他根本就沒讀過好的代碼。
總結(jié)
“看大多數(shù)程序員的行為,然后朝相反的方向走”,其實(shí)是一個(gè)更為抽象的方法論,能幫你把不同的特質(zhì)聯(lián)系起來,從而可以更方便的不斷提醒自己不要走偏。類似的行為遠(yuǎn)不止這四個(gè),例如大多數(shù)程序員英文都不好,大多數(shù)程序員不擅長溝通,大多數(shù)程序員不學(xué)他們認(rèn)為的“無用之學(xué)”(例如哲學(xué)、經(jīng)濟(jì)學(xué)、管理學(xué)等),大多數(shù)程序員不寫B(tài)log,大多數(shù)程序員沒有自己的產(chǎn)品等等。
一般擁有自己的產(chǎn)品,程序員生活都會(huì)很美好,這里的例子舉不勝舉,例如微信之父張小龍就是以Foxmail一舉成名的,說到這里,我好像也沒做到:)所以,下一次你問我在干嘛,我肯定不會(huì)說我在解bug:我在琢磨自己的產(chǎn)品呢。
網(wǎng)頁題目:怎樣成為一名專業(yè)出色的網(wǎng)站程序員
標(biāo)題路徑:http://jinyejixie.com/news38/172138.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、手機(jī)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、用戶體驗(yàn)、網(wǎng)站改版、網(wǎng)站策劃
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源:
創(chuàng)新互聯(lián)