之前流行這樣一句話:一流程序員靠數(shù)學(xué),二流程序員靠算法,三流程序員靠邏輯,四流程序員靠SDK,五流程序員靠Google和StackOverFlow,六流程序員靠百度和CSDN。低端的看高端的就是黑魔法!
其實(shí)雖然也曾為了應(yīng)付考試學(xué)過(guò)C語(yǔ)言,為了找份工作也曾自學(xué)過(guò)一段時(shí)間的前端。但我還是算不上一個(gè)程序員,充其量算是在在門(mén)口最終沒(méi)有踏進(jìn)去的門(mén)外漢吧。因此,對(duì)于程序員的水平高低我也不好做更多評(píng)價(jià)。
C語(yǔ)言我已經(jīng)忘得差不多了,說(shuō)到前端,我也是不再會(huì)寫(xiě)代碼了,對(duì)于基礎(chǔ)得一些語(yǔ)言我或許還能夠看得懂吧!我只學(xué)了點(diǎn)前端入門(mén)課程,html、css和js,當(dāng)初也能夠看著教程自行寫(xiě)下一些簡(jiǎn)單的靜態(tài)頁(yè)面吧,也根據(jù)word樣式給自己寫(xiě)下了一頁(yè)A4版的網(wǎng)頁(yè)簡(jiǎn)歷。
之后就很長(zhǎng)一段時(shí)間沒(méi)有接觸代碼了。后來(lái),我想自己做一個(gè)個(gè)人網(wǎng)站,選擇了織夢(mèng)的網(wǎng)站框架和模板,但是網(wǎng)站經(jīng)常出bug。不得已又去看了一些織夢(mèng)仿站教程,有時(shí)候也會(huì)去百度或者是根據(jù)自己的理解對(duì)網(wǎng)站進(jìn)行一些樣式或者排版上的小改動(dòng)。
我可能真的連個(gè)七流程序員都算不上吧,哈哈。程序員哥哥們,你們覺(jué)得自己停留在第幾層啊,不放留下個(gè)薪資待遇讓大家羨慕一下呀!
看如何分配時(shí)間。
普通級(jí)coder分配了任務(wù)后,上來(lái)不管3721就開(kāi)始碼代碼,邊碼邊想,然后就是邊改,導(dǎo)致一個(gè)需求他們反復(fù)寫(xiě)反復(fù)改。這種就是典型的時(shí)間投入產(chǎn)出太低了。
大神級(jí)coder領(lǐng)到任務(wù)后,會(huì)思考很久,遲遲不動(dòng)手,等他們動(dòng)手的時(shí)候,基本一遍就結(jié)束了,最多測(cè)試時(shí)候改改bug。
這種分配時(shí)間的差異會(huì)導(dǎo)致什么后果?就是我們常說(shuō)的,編出的軟件是否具備可維護(hù)性,可擴(kuò)展性,效率,架構(gòu)是否合理。這些都是大神級(jí)coder花那么多時(shí)間思考的點(diǎn)。
那么話說(shuō)回來(lái),如果從普通的coder晉升為大神級(jí)的coder呢?其實(shí)兩者之間還是有很多段位的,普通的coder,可以先成長(zhǎng)為高級(jí)的coder,然后是專(zhuān)家級(jí)的coder,最后才是大神級(jí)的coder,當(dāng)然了,大神這種字眼在我看來(lái)太神圣,所以我覺(jué)得很少有人可以成為大神級(jí)的coder,比如linux的創(chuàng)始人我覺(jué)得才配得上大神級(jí)的coder。
coder在成長(zhǎng)的過(guò)程中可以自己多看看優(yōu)秀的項(xiàng)目,思考別人如何構(gòu)建一個(gè)好的項(xiàng)目的,從架構(gòu)到細(xì)節(jié),多看多思考多總結(jié),自己慢慢就會(huì)成長(zhǎng)了,慢慢的你腦子里的貨多了,你才會(huì)在動(dòng)手之前多思考一下,腦子里什么都沒(méi)有,可不是一上來(lái)就動(dòng)手嘛。
普通的程序員和大神級(jí)程序員的差別,大于人和猴子的距離。
基本是普通人和神人的區(qū)別。
普通級(jí)關(guān)注語(yǔ)言?xún)?yōu)劣,關(guān)注于編程環(huán)境,跟蹤,測(cè)試工具。兩小兒辯日,可以爭(zhēng)個(gè)面紅耳赤。
大神級(jí)關(guān)注目標(biāo)問(wèn)題本身。融會(huì)貫通,什么舊語(yǔ)言新語(yǔ)言都得心應(yīng)手。
普通級(jí)用工具運(yùn)行程序,寫(xiě)完了調(diào)試。
大神級(jí)用腦子運(yùn)行,運(yùn)行完了寫(xiě)程序。
普通級(jí)滿(mǎn)紙注釋?zhuān)谧⑨尷镎页绦颉?/p>
大神級(jí)程序可以當(dāng)注釋讀。
普通級(jí)以技巧自居,話里有話,意猶未盡。
大神級(jí)大道至簡(jiǎn),短小精悍又貌似笨拙。
普通級(jí)腦子里能裝幾千行,再大些的項(xiàng)目手忙腳亂。
大神級(jí)腦子里不裝程序,但知道需要的東西在哪里。
普通級(jí)寫(xiě)著寫(xiě)著,亂了,就想重寫(xiě)。
大神級(jí)寫(xiě)了不需要再改。
普通級(jí)加新東西走街串巷。
大神級(jí)加新東西只改一個(gè)接口。
普通級(jí)發(fā)布前測(cè)試,然后拼命禱告。
大神級(jí)寫(xiě)完已經(jīng)是測(cè)試好的,隨時(shí)可以發(fā)布。
最主要的,普通級(jí)寫(xiě)著寫(xiě)著就覺(jué)得自己是架構(gòu)師了,不需要寫(xiě)具體的程序了。只想著辦大事。
大神永遠(yuǎn)對(duì)程序有癮。
能辦大事的,小事也能辦好。
關(guān)注本人頭條號(hào),有驚喜z
內(nèi)行看門(mén)道,外行看熱鬧。普通的程序員和大神級(jí)別的程序員,有著很明顯的本質(zhì)區(qū)別。
一。思維能力。大神級(jí)別的程序員通常都是思維活躍,基礎(chǔ)理論扎實(shí)而豐富,經(jīng)驗(yàn)非常老道。學(xué)習(xí)能力和見(jiàn)解能力,造詣非常高。這些能力的背后,本質(zhì)上取決于思維能力。也可以體現(xiàn)在數(shù)學(xué)、邏輯、算法、架構(gòu)等等具體的考核方面。
二。做事能力。大神級(jí)別的程序員做事和普通程序員不同,大神級(jí)別的程序員擁有全局觀,會(huì)把需求充分吃透,考慮到將來(lái)的擴(kuò)展能力,甚至考慮到移植性。普通程序員只是表面的理解需求,趕緊上馬敲代碼,把功能做出來(lái)就算完事。
三??偨Y(jié)能力。大神級(jí)別的程序員通常都會(huì)總結(jié)、提煉、歸納。普通程序員通常都是做完就完事了,不屑于總結(jié),如果工作上必須總結(jié)則應(yīng)付了事。
普通程序員如何成長(zhǎng)為大神級(jí)別的程序員呢?說(shuō)句比較客觀的話,大多數(shù)程序員都成長(zhǎng)不到大神級(jí)別的程序員那樣高度。根據(jù)我的觀察,一是靠天賦,二是靠努力。天賦這個(gè)東西,基本上是與生俱來(lái)的。努力嘛,當(dāng)然是靠后天的爭(zhēng)取。通常都是不斷地學(xué)習(xí)、總結(jié)、再學(xué)習(xí)、再總結(jié),如此循環(huán)。需要一個(gè)由量變到質(zhì)變的過(guò)程,需要經(jīng)歷很多項(xiàng)目的磨煉,需要經(jīng)過(guò)歲月的洗禮。
其中有一條至關(guān)重要,就是站在巨人的肩膀上,可以看得更遠(yuǎn)。學(xué)習(xí)總結(jié),需要消化為自己的知識(shí),需要轉(zhuǎn)化為自己的見(jiàn)解。這樣才能真正地成長(zhǎng),而不是僅僅的拿來(lái)主義。
大神程序員和普通程序員,最顯然的區(qū)別就是大神程序員有自己的出色業(yè)績(jī)。比如有自己的產(chǎn)品,或者有自己的架構(gòu)或代碼。一直被別人使用和模仿,但幾乎都很難超越。
不是所有普通的程序員都能成為大神級(jí)別的程序員,但是大神級(jí)別的程序員都曾經(jīng)是普通的程序員。
好比建造房屋,普通程序員會(huì)搬磚,會(huì)填坑,大神級(jí)的程序員不僅會(huì)搬磚還會(huì)造磚,更知道房屋如何設(shè)計(jì),采用什么樣的工程結(jié)構(gòu)等。普通程序員的水平停留在知道怎么使用一個(gè)某一個(gè)組件或工具上,大神級(jí)的程序員對(duì)于每一個(gè)組件的原理都搞的比較清楚,運(yùn)用的時(shí)候收放自如,此外自己能根據(jù)系統(tǒng)業(yè)務(wù)需求,實(shí)現(xiàn)一些定制化的組件。
作為一個(gè)一直稱(chēng)自己是初級(jí)程序猿的普通碼農(nóng),我來(lái)回答一下你的這個(gè)問(wèn)題。
首先,客觀的工程師等級(jí)分類(lèi)。
我引用吳軍博士關(guān)于工程師五個(gè)等級(jí)的分類(lèi)。
第五級(jí):能獨(dú)立解決問(wèn)題,完成工程工作。
第四級(jí):能指導(dǎo)和帶領(lǐng)其他人一同完成更有影響力的工作。
第三級(jí):能獨(dú)立設(shè)計(jì)和實(shí)現(xiàn)產(chǎn)品,并且在市場(chǎng)上獲得成功。
第二級(jí):能設(shè)計(jì)和實(shí)現(xiàn)別人不能做出的產(chǎn)品,也就是說(shuō)他的作用很難取代。
第一級(jí):開(kāi)創(chuàng)一個(gè)產(chǎn)業(yè)。
可以看出,隨著等級(jí)的不斷提升,從獨(dú)立解決問(wèn)題,到開(kāi)創(chuàng)一個(gè)產(chǎn)業(yè),從本質(zhì)上來(lái)說(shuō),區(qū)別在于是否有足夠的影響力影響到更多的人,以及承擔(dān)更多的職責(zé)。
真正的大師不是自己個(gè)人是大師,而是讓更多的普通人成為大師。
第二,思維方式的不同。
普通的程序員可以看到工程項(xiàng)目的當(dāng)前一隅,大神級(jí)程序員不僅能夠搞定當(dāng)前的技術(shù)難題,提出更多的可復(fù)制的改進(jìn)方法,更能夠應(yīng)對(duì)未來(lái)更多的難題,不斷總結(jié)經(jīng)驗(yàn)教訓(xùn),將視野投注到宏觀上。
如果說(shuō)普通程序員活在過(guò)去,或者是活在當(dāng)下,那么大神級(jí)別的程序員則是活在未來(lái),不斷思考未來(lái)的技術(shù)難題。
我們一直在問(wèn)自己一個(gè)問(wèn)題,五年之后技術(shù)會(huì)發(fā)展到何種地步,如何運(yùn)用五年之后的整體技術(shù)架構(gòu)去更好地服務(wù)于客戶(hù)。這些思考看上去有點(diǎn)虛無(wú)縹緲,不切實(shí)際,但是在當(dāng)前這個(gè)未來(lái)以來(lái)是社會(huì)和世界,多思考一步,多行動(dòng)與實(shí)踐一步,也就有機(jī)會(huì)多成長(zhǎng)一步。
第三,知識(shí)體系不同。
總是談代碼如何寫(xiě)的程序員,可能是一個(gè)好的程序員,但往往無(wú)法成為頂尖的程序員。
在代碼之外,還有許多信息工程、軟件工程需要掌握的知識(shí)。
編程其實(shí)是一件比較復(fù)雜的事情,因?yàn)槟阋詾樽约壕帉?xiě)的代碼運(yùn)行正常,其實(shí)機(jī)器的邏輯不是你簡(jiǎn)單想得那樣。即使是馬丁福勒這樣的大神,也沒(méi)有把握保證編寫(xiě)的代碼能夠沒(méi)有八阿哥。
所以,要有足夠的耐心進(jìn)行調(diào)試,不斷的吸取新的技術(shù)知識(shí),并且運(yùn)用數(shù)學(xué)思維、物理、邏輯、生物學(xué)等跨學(xué)科思維去幫助自己更好的解決技術(shù)上的難題。
大神級(jí)別的程序員,往往有著普通程序員所沒(méi)有的知識(shí)維度、對(duì)技術(shù)的理解力與深度。
總結(jié)一下。
我分別從工程師的等級(jí)、思維方式以及知識(shí)體系三個(gè)方面闡述我所理解的普通程序員與大神級(jí)程序員的不同,希望對(duì)你有所幫助。
最后,對(duì)于技術(shù),沒(méi)有快速精通,只有快速入門(mén)。
無(wú)它,唯手熟爾。
謝謝。
同一個(gè)功能,普通程序員實(shí)現(xiàn)它可能需要100行代碼,但是大神級(jí)的可能只需要20行。
從用戶(hù)感知來(lái)說(shuō) 沒(méi)那么多反人類(lèi)的錯(cuò)誤
普通程序猿寫(xiě)的代碼條理和邏輯經(jīng)常混亂,別人閱讀起來(lái)往往會(huì)一頭大幾圈,而大神級(jí)的猿往往可以用很簡(jiǎn)短的幾行代碼實(shí)現(xiàn)普通猿幾十幾百行的代碼。
普通程序猿就是參考別人的代碼,相當(dāng)于代碼搬運(yùn)工,而且寫(xiě)的代碼容易出現(xiàn)bug,考慮不太全面,經(jīng)常是出了bug才想到如何去解決或者才想到原來(lái)還要預(yù)防這方面的問(wèn)題,寫(xiě)的代碼可復(fù)用不高,容易累贅等問(wèn)題。
大神級(jí)別的程序猿一般都會(huì)從根本上解決問(wèn)題,反正普通程序猿的所有缺點(diǎn)對(duì)于大神級(jí)別的人來(lái)說(shuō)都是不存在的。