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