自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于編程這件事我所走過的彎路

新聞 前端
如今對(duì)于技術(shù)和編碼這件事能做到有些樂在其中可以說是走了很多彎路才到了如今的境界的。

 我是如何成為一個(gè)程序員的呢?

[[235930]]

只能說是機(jī)緣巧合,命運(yùn)捉弄,歪打正著,如果當(dāng)年真的僅僅是因?yàn)樽约焊咧形锢肀容^好就報(bào)物理專業(yè)的話,如今可能還在讀研或者已經(jīng)是個(gè)老師了吧,如今后悔成為一枚程序員嗎?只能說后悔過,我曾好多次以為自己不適合干這個(gè),如今對(duì)于技術(shù)和編碼這件事能做到有些樂在其中可以說是走了很多彎路才到了如今的境界的。怎么說呢?雖然我不信神,但是此時(shí)卻想說,可能都是命運(yùn)的安排吧。

事情的起因都是源自高三的一本志愿書,看到一個(gè)專業(yè)叫物聯(lián)網(wǎng),聽起來就感覺很有逼格,很厲害的樣子,于是沒有多想就想一心報(bào)這個(gè)專業(yè),學(xué)校呢?當(dāng)時(shí)心心念念的學(xué)校是哈工大,將來成為創(chuàng)造物聯(lián)網(wǎng)歷史的人,結(jié)果呢高考考的感覺選擇題用腳踩答題卡都估計(jì)比我想出來的好,語文12個(gè)選擇題我選錯(cuò)了九個(gè),最擅長的物理我選了3-5結(jié)果那題看似簡單其實(shí)暗藏玄機(jī)15分直接沒了,最終愿望縮水成為吉大,不過仍然作為村里數(shù)年難得一遇的985大學(xué)生,也不想頂著壓力復(fù)讀,而且吉大的大部分專業(yè)也是都有選擇的余地的,最終還是欣然接受了,最終成功錄取,當(dāng)時(shí)只是感覺挺好一切盡在掌握,只是錄取通知書的小字計(jì)算機(jī)學(xué)院我卻完全沒有注意,這將決定我未來十幾年的人生軌跡。

進(jìn)了大學(xué),忽然發(fā)現(xiàn)一切和我想象的都是不一樣的,用校ACM的一個(gè)人來說就是吉大的計(jì)算機(jī)有種農(nóng)村包圍城市的感覺,這話我是服氣的,因?yàn)槲揖褪悄莻€(gè)農(nóng)村,別說編程了,電腦我都沒怎么碰過,我對(duì)輸入法的認(rèn)知還停留在,小學(xué)的智能abc那個(gè)時(shí)代呢,打字用二指禪,看著c語言編程的書,感覺沒那么難,結(jié)果第一節(jié)實(shí)驗(yàn)課,卡在VC6.0不會(huì)創(chuàng)建工程,好不容易創(chuàng)建一個(gè),發(fā)現(xiàn)才知道輸入法標(biāo)點(diǎn)符號(hào)是有中英文的,而VC60這種上古級(jí)ide是不會(huì)提醒你語法錯(cuò)誤的,當(dāng)時(shí)是真的連hello world都寫不出來的,更要命的是老師當(dāng)時(shí)推薦的書是譚浩強(qiáng)的,用如今的眼光來看那本書整本書充斥的只有“錯(cuò)誤”二字,有人戲稱c語言期末考試內(nèi)容就是應(yīng)該找譚浩強(qiáng)的書中的錯(cuò)誤,找到多少個(gè)就考多少分。而且書中的絕大部分代碼都是照著敲根本跑不起來的,比如a+++++b這種鬼代碼,寫更是嚴(yán)重打擊初學(xué)者的信心。這是實(shí)驗(yàn)課,當(dāng)時(shí)就想,與我在電視中看到的程序員不一樣啊,程序員不應(yīng)該是沖著屏幕一頓亂敲,一會(huì)問題就好了嘛?結(jié)果如今就是各種各樣的error和燙燙燙燙燙燙,而且做出來的東西一點(diǎn)都不高大上不實(shí)用,開始懷疑人生。

再說課程,我想像的大學(xué)課程是教我們?nèi)绾螌懢W(wǎng)站,如何黑別人電腦,再不濟(jì)也要來個(gè)office ps 視頻剪輯什么的吧,結(jié)果呢?大學(xué)的課程每一門都給人一種十分魔幻的感覺。怎么說呢?就是剛開始老師講的東西你幾乎都不用思考就能懂,半個(gè)小時(shí)就開始陸續(xù)出現(xiàn)幾個(gè)陌生點(diǎn),三天過去老師講的東西就連一個(gè)標(biāo)點(diǎn)符號(hào)都聽不懂了。你會(huì)懷疑甚至?xí)B1+1都不敢回答等于二,講的也都是一些與找工作無關(guān)的東西,什么高等數(shù)學(xué)啦,什么電路啦,甚至計(jì)組,什么c語言啦c艸啦,再往后是各種匯編,各種芯片的匯編,算法,數(shù)據(jù)結(jié)構(gòu)啦,作為一個(gè)實(shí)用主義,面對(duì)這些我腦中有無數(shù)個(gè)問號(hào),其中最大的疑問就是它們特么有什么用,我花一個(gè)星期,讓一個(gè)電機(jī)轉(zhuǎn)起來有什么用?迷茫×2

在迷茫彷徨中,我度過了人生最迷糊的三年,雖然大學(xué)的課程很多很雜,但是我從來不敢說我哪怕學(xué)會(huì)或者掌握一丁點(diǎn)東西,就是聽個(gè)響,也不敢說自己做了一丁點(diǎn)讓自己驕傲或者感覺有意義的事情,論文啥的都是百度百科復(fù)制粘貼,不知不覺就到了找工作的時(shí)候了,真的是感覺自己是虛度了四年,別說面試官了,我自己都找不到一個(gè)讓對(duì)方要我的理由,這個(gè)不努力啥都沒干,啥都不會(huì),還沒特長的我,好在最后被一家外包公司也就是我的上家收留了,雖然這也讓我未來的兩年很痛苦,這估計(jì)也是懲罰我吧,懲罰我無所作為無累積的三年,我無數(shù)次都在思考過,如果我報(bào)了自己更擅長的物理估計(jì)也不會(huì)這樣度過四年了,一定是個(gè)學(xué)霸,哪怕是軟件工程也比現(xiàn)在強(qiáng)很多,至少人家教的東西比我們更實(shí)用啊,我會(huì)什么?就一個(gè)c語言c艸,還只是連皮毛都不算的水平,不過不管怎樣大學(xué)結(jié)束了,第一批小白鼠成功出獄了。

再然后就是畢業(yè),在外包公司的兩年,怎么說呢?錢少也就算了,最不能忍的是它帶偏你,這家外包業(yè)務(wù)主要分兩類國內(nèi)和對(duì)日,我比較不幸被分到對(duì)日的部門了,這兩年怎么過的?首先是公司地點(diǎn),在深山之中一座大高樓,上下班門閘必須打卡且員工卡是絕對(duì)不能借用的,然后是穿:必須穿襯衫,不讓穿牛仔褲,短褲,休閑褲,七分褲,不讓穿運(yùn)動(dòng)鞋,涼鞋,球鞋,板鞋,休閑鞋,帶鞋帶的鞋,然后是午休時(shí)間一個(gè)小時(shí),然后是室內(nèi)到處都是的攝像頭,手機(jī)不允許放到辦公桌上,有的部門還會(huì)把手機(jī)鎖在門口的一個(gè)柜子里,

如果說這還算可以理解的話那:

電腦人離開的時(shí)候必須鎖屏

鎖屏密碼必須每個(gè)月?lián)Q一次且?guī)讉€(gè)月之內(nèi)不能重復(fù)

電腦不許插U盤(這點(diǎn)我是能理解的),

電腦不許上外網(wǎng),嗯只有局域網(wǎng),不能百度

手機(jī)不可以拍攝屏幕,

需求是日語的,什么意思要靠第六感猜,沒有百度翻譯。

要求一行代碼一行注釋,日語注釋,沒有百度翻譯,不會(huì)打日語自己去找復(fù)制粘貼。還要求每行代碼都要同步文檔。

文檔有哪些呢?表結(jié)構(gòu)字段設(shè)計(jì)書,基本設(shè)計(jì)書,詳細(xì)設(shè)計(jì)書,單元測(cè)試設(shè)計(jì)書,結(jié)合測(cè)試設(shè)計(jì)書,checklist等等等等數(shù)都數(shù)不清,要全都同步,也就起說,代碼改一處,這些東西全都要同步改,測(cè)試要重測(cè),而設(shè)計(jì)開發(fā)測(cè)試全都是你一個(gè)人,如果不改還好,可惜客戶一個(gè)星期能改八遍。

測(cè)試文檔要求截圖+日語說明的,截圖工具也是上古級(jí)的,特別難用。截什么圖呢?挨個(gè)打斷點(diǎn)看每一個(gè)變量,加頁面截圖,加數(shù)據(jù)庫的數(shù)據(jù),加各個(gè)服務(wù)器的log日志,改動(dòng)的位置要字體標(biāo)紅,而且紅色啦字體啦要和其它的一致,僅僅看起來差不多還不行,因此最保險(xiǎn)的手段還是復(fù)制粘貼,順帶一提中間那些內(nèi)容少一點(diǎn)忘一點(diǎn)都是要重新測(cè)試的,覆蓋率要求呢?100%!對(duì)你沒聽錯(cuò)就是百分百,甚至于跑到所有的if else以及所有可能和異常都不夠,還有各種業(yè)務(wù)的邊界條件比如時(shí)間你就要考慮,一號(hào)30號(hào)凌晨十二點(diǎn)凌晨零一秒等等等,有點(diǎn)常識(shí)都知道異常不是那么好測(cè)的,你要制造異常數(shù)據(jù),為了造這條數(shù)據(jù)你要解析這個(gè)異常前面的所有代碼,有的根本就不是很容易創(chuàng)造異常條件的比如系統(tǒng)時(shí)間相關(guān)的,有的要斷網(wǎng)絡(luò)的,只能debug打斷點(diǎn)改值,給java改值還好,別忘了還有存儲(chǔ)過程debug呢,反正都是干神仙的活,最后也都弄出來了。

如何測(cè)試呢?不是說沒有外網(wǎng)嘛!公司給了一個(gè)虛擬機(jī)終端,終端里可以訪問外網(wǎng),然后有個(gè)類似網(wǎng)盤的東西從虛擬機(jī)傳上去,再在本地下下來,那虛擬機(jī)多大內(nèi)存呢?2g,公司電腦多大性能呢?4g i3,窗口超多且卡的不行,順帶一提,虛擬機(jī)是每天都會(huì)還原的,且沒有截圖軟件,而且還不可以下外網(wǎng)的東西,因此要自己用那個(gè)網(wǎng)盤先傳一份上去安裝,更多麻煩的流程細(xì)則不多贅述,總之工作之前,需要重復(fù)的準(zhǔn)備好多好多東西。這活才能開始,然后一重啟電腦全都沒了,要測(cè)什么呢?火狐 谷歌 ie對(duì)還有ie安卓3G沒錯(cuò)就是那個(gè)非智能機(jī)時(shí)代的3G。所有的測(cè)試和點(diǎn)點(diǎn)點(diǎn)截圖文檔斷點(diǎn)等,都要再重復(fù)五遍

總算聊到架構(gòu)了,代碼什么樣呢?2000行一個(gè)文件,還不是java代碼是而存儲(chǔ)過程,存儲(chǔ)過程還會(huì)調(diào)存儲(chǔ)過程你不知道會(huì)調(diào)多少層,java會(huì)調(diào)存儲(chǔ)過程,定時(shí)任務(wù)也會(huì),shell也會(huì)調(diào),java幾百上千行調(diào)個(gè)幾十層類和ifelse也是蠻常見的,如何配置呢?用表的字段來配置,一個(gè)表幾十個(gè)字段,命名flag1 flag2一直flag20多每個(gè)都有其含義,什么含義自己去看文檔去,多少個(gè)表呢?200多個(gè),多少個(gè)存儲(chǔ)過程呢?也200多個(gè),但還不是一一對(duì)應(yīng)的,之前不是要截?cái)?shù)據(jù)嘛,測(cè)試的時(shí)候還要把關(guān)鍵數(shù)據(jù)字段標(biāo)紅,而且那個(gè)紅也不是你選的,最保險(xiǎn)還是復(fù)制粘貼,每個(gè)存儲(chǔ)過程開始都是先來幾個(gè)表的聯(lián)合查詢,這也是我為什么如此痛恨sql腳本的原因,有框架嗎?很可惜這是一個(gè)十年前的日本框架,我離職之后根本說不清楚這究竟是什么框架,非常的非主流,繼承用的滿天飛,遺留累積了十年的垃圾代碼,你想改?你想重構(gòu)?不可能!你想用新技術(shù)?不行!就日本人膽小的樣子,你寫點(diǎn)新技術(shù)的東西他們根本看不懂,最重要的是日語文檔注釋我根本不會(huì)寫,還沒有外網(wǎng)下東西,而且我改了幾十行的代碼就要看好幾千行代碼,調(diào)查幾十個(gè)文檔,日本方式的測(cè)試還是親自測(cè)重構(gòu)是會(huì)死人的,最重要的是他們不敢,別說新技術(shù)了,三目運(yùn)算符都不讓用,代碼風(fēng)格創(chuàng)新一點(diǎn)都不行的,必須完全看不出來是你寫的,而且日語的代碼還有一個(gè)問題就是,他們是分全角半角的,全角的英文數(shù)字空格,我無數(shù)次被這個(gè)東西坑過。

就這樣產(chǎn)出是什么樣子呢?一個(gè)星期幾十行代碼也就差不多了,什么?少?getter setter是純手敲的,那樣的文檔那樣的架構(gòu),那樣的測(cè)試和測(cè)試環(huán)境,還是日語的需求,而且客戶說改就改哪怕只改一點(diǎn)全重干,還想要輸出?如今我一個(gè)星期寫幾千行都是很平常的事情,你想快就先把那些破規(guī)矩都去掉。而且盤根錯(cuò)節(jié)的代碼與業(yè)務(wù)寫幾十行要調(diào)查接近無限的代碼是不可能快起來的。

期間我想過很多次離職的事情,可是我的技術(shù)在外邊根本沒有什么談資,java基礎(chǔ)還好,因?yàn)槲覝y(cè)試的時(shí)候是挨個(gè)打斷點(diǎn)debug的,java的內(nèi)存模型,都用身體記住了并且瘋狂java也看了很多遍了,并且我還抽空看過shell tomcat spring這些東西,我并沒有完全按部就班的按照對(duì)日的那套走,然而即便這樣沒有項(xiàng)目經(jīng)歷是最傷的,人是受限于環(huán)境的,盡管我,承受著巨大的工作壓力,干著神仙才能干的活,然而真走的話卻毛線都說不出來,所以一直都不敢走,主要是不會(huì)什么主流的開源框架。就這點(diǎn)讓我沒有說走就走的勇氣,也是很多干對(duì)日的人不敢走的根本原因。因?yàn)槟愕闹R(shí)體系和主流嚴(yán)重脫節(jié)。

最終復(fù)制粘貼出鼠標(biāo)手離職了,雖然還沒有準(zhǔn)備好,但是我已經(jīng)徹底看透,即便在這里干十年,也不會(huì)改變什么,工資漲不上去,技術(shù)不會(huì)漲,跳槽還會(huì)越來越難,這就是外包的本質(zhì),錢給的少點(diǎn)可以,但是你不能帶偏我,吐槽一下公司的領(lǐng)導(dǎo),感覺我還是涂樣啊。一邊說讓你搞技術(shù),一邊自己上線把服務(wù)器搞掛掉然后讓你來擦屁股;一邊要你全力開發(fā),一邊一天打斷你個(gè)十幾次讓你寫不了代碼;一邊說不搞傳統(tǒng)公司一套,一邊想事起來大半夜來你個(gè)電話;一邊把說著自己看不起的公司,一邊把自己看不起的一套全做一遍。我真的想不懂有些人天天想些什么。

終于開始了找工作的環(huán)節(jié),其實(shí)面了不少家,主要是其實(shí)我的基礎(chǔ)還行,主要坑在沒什么項(xiàng)目經(jīng)驗(yàn)上,沒辦法我寫的東西根本絲毫沒有我原創(chuàng)的空間啊,說白了就是復(fù)制粘貼,你可以不復(fù)制粘貼自己寫,然而客戶領(lǐng)導(dǎo)不讓啊,有的公司面試官喜歡在你面前貶低你,跟你秀設(shè)計(jì)模式git等等等,最終到了如今這家,可能一般工作經(jīng)歷正常一點(diǎn)的人體會(huì)不到,沒有門閘,不管穿什么,沒有攝像頭,沒有信息安全的工作環(huán)境是多么爽,最主要的是沒有日語。

其實(shí)工作一段時(shí)間會(huì)發(fā)現(xiàn),互聯(lián)網(wǎng)公司除了架構(gòu)之外其他人的水平也沒有高的神乎其神,相反,越是高級(jí)的技術(shù)使用起來反而越簡單,然而正是因?yàn)楹唵瘟?,你才能更進(jìn)一步去做一些什么,在被大量細(xì)節(jié)束縛的時(shí)候你是無心也無力去做自己的原創(chuàng)的東西的,至少我是做不到的,并且設(shè)計(jì)模式也不是絕對(duì)的好東西,絕大部分人也是if else橫飛的??蚣芤簿蜁?huì)個(gè)皮毛,但是因?yàn)榱鞒谈?guī),分工更明確,我由原來的“偽全棧”,成為真正的服務(wù)端開發(fā)了。至此我彎彎曲曲的程序員生涯才剛剛步入正軌。過去的六年只能用慘不忍睹來形容。

然后偶然的機(jī)遇,我遇到了函數(shù)式編程,并且嘗試在實(shí)際項(xiàng)目中開始使用,起初只是簡單的stream foreach 再然后會(huì)了map filter 收集器和reduce 然后會(huì)了Optional容器,再然后開始會(huì)高階函數(shù),重新理解閉包的概念,再然后理解了柯里化,結(jié)合泛型設(shè)計(jì)模式重新理解函數(shù)式編程和面向?qū)ο?,到上個(gè)月的組合式異步編程,現(xiàn)在開始入坑Scala 讓我的編程水平短短幾個(gè)月上升了n個(gè)級(jí)別,根本停不下來,因?yàn)楦唵胃鼘?shí)用的東西這些年終于遇到了。如果大學(xué)學(xué)的不是c語言而是scala如今可能早已是另外一番景象了,如今的代碼是什么水平呢?我只能說這東西無法用時(shí)間來衡量是需要一點(diǎn)天賦的,就和過去的六年我沒有編程天賦一樣,如果硬要衡量一下的話大概是,我高中的物理有多強(qiáng),如今的敲代碼能力就有多強(qiáng),因?yàn)楹瘮?shù)式編程的最基本思維方式就是映射,就是套公式,原理是如出一轍的,知道這點(diǎn)之后,以前的套公式技巧審題技巧就全都可以遷移到這里了,這也正是很多人感覺它很別扭的根本原因,在過程式編程浸淫的越久就越難習(xí)慣。越難理解。

至此回顧一下我所有的彎路和給新人的一些建議,首先,編程的學(xué)**要分三大門派,其一就是,先學(xué)各種數(shù)學(xué)和電路和算法數(shù)據(jù)結(jié)構(gòu)操作系統(tǒng),然后再去寫程序的,另一種是先學(xué)如何寫個(gè)網(wǎng)頁,寫個(gè)小游戲,等一些很amazing的東西,前者我們稱之為魔幻派,后者我們稱之為實(shí)用派,還有一種就是介于兩者之間混合派,我更傾向于實(shí)用派,而不幸的是大學(xué)的教育方式絕大部分都是魔幻派的,這導(dǎo)致了我整個(gè)大學(xué)都處在迷茫的階段,還有就是ide的選擇最好選擇新一些的工具和技術(shù),機(jī)器能替你做好的事情,人就不要花精力去操心了,語法檢查交給編譯器就好了,其次就是教材的選擇,譚浩強(qiáng)的書作為大學(xué)考試筆試應(yīng)試還是不錯(cuò)的,然而真想學(xué)c建議還是c primer一本錯(cuò)的教材會(huì)讓你懷疑人生的,然后就是大學(xué)教材包括業(yè)界主流都只強(qiáng)調(diào)面向?qū)ο蠛兔嫦蜻^程兩種編程模式,再好一點(diǎn)的能來個(gè)面向切面編程,而函數(shù)式編程這種與圖靈機(jī)并駕齊驅(qū)卻生不逢時(shí)的編程模式卻鮮有提及,就這么說吧函數(shù)式編程對(duì)于剛進(jìn)大學(xué)入門的人來說絕對(duì)比面向?qū)ο蟾菀捉邮?,也更符合未來的編程主流。還有就是不要選擇外包和測(cè)試,但凡有一點(diǎn)回旋的空間都不要進(jìn)外包,萬劫不復(fù)啊,還有就是測(cè)試,雖然測(cè)試門檻不高,但是任何門檻不高的工作都要付出更慘重的門檻不高的代價(jià)的,如果是自動(dòng)化測(cè)試還好,點(diǎn)點(diǎn)點(diǎn)是沒有前途的,將來做產(chǎn)品嗎?好想也行,最后就是離職這件事,我是工作兩年才跳槽,有一方面一直顧及的是一個(gè)工作忠誠度的問題,這是不對(duì)的,工作前兩年如果發(fā)現(xiàn)公司沒什么前途或是價(jià)值觀有問題就趕緊走,割肉止損,前兩年HR是能夠理解你跳槽次數(shù)多的,他會(huì)認(rèn)為你在試錯(cuò),但是兩年之后再跳槽就不能那么沖動(dòng)了。

責(zé)任編輯:張燕妮 來源: 玩物科技
相關(guān)推薦

2017-11-06 10:50:49

服務(wù)器區(qū)域

2021-12-14 15:45:27

KubernetesSecretLinux

2022-10-19 09:05:45

編譯程序員后端

2023-05-12 17:45:15

MySQL索引排序

2023-07-03 22:28:19

6GHz6G技術(shù)

2020-05-08 15:30:42

PostgreSQL數(shù)據(jù)庫數(shù)據(jù)

2015-08-24 08:51:01

程序員讀書

2015-04-29 15:49:06

網(wǎng)易有道在線教育

2010-08-24 14:08:33

喬布斯

2019-05-06 14:28:09

英特爾處理器架構(gòu)

2013-01-16 09:56:46

程序員跳槽面試

2015-09-16 14:20:25

2018-05-23 07:03:48

2018-10-24 12:53:05

AWS機(jī)器學(xué)習(xí)人工智能

2015-02-28 10:45:24

App國內(nèi)國外

2023-05-15 09:06:39

2021-04-21 09:20:15

three.js3d前端

2013-06-08 14:37:20

編程軟件

2019-08-15 10:33:23

大數(shù)據(jù)IT互聯(lián)網(wǎng)

2022-02-23 09:52:15

InnoDB數(shù)據(jù)索引
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)