幾年程序員生涯后的一點思考

回顧畢業(yè)以來,當程序猿快四年了,其實早在學(xué)校未畢業(yè)的時候就兼職開始商業(yè)軟件開發(fā)。相比大牛們,目前技術(shù)水平一般、深度不夠,主要源于過去這幾年人太浮躁,走過太多的彎路。我覺得,只要肯靜下心來花費大量時間去學(xué)習(xí)鉆研技術(shù),思考能力別太差,每個人都可以成為所謂技術(shù)大牛或者成為某個細分領(lǐng)域里的大牛。

為什么說這幾年來我太浮躁,在于這幾年我學(xué)東西大都淺嘗輒止,抓的太多什么都想去碰一下,但每項都沒有花時間深入鉆研下去。畢業(yè)后,這幾年的業(yè)余時間也不是在游手好閑,除了讀了一些熱門看完雞血滿滿的書籍之外,也老想著做點什么東西出來,于是去弄了微信公眾號后臺PHP開發(fā)、學(xué)了Android等等,但結(jié)果是想做的東西沒有堅持做下去,最后技術(shù)沒有深入,其它方面也沒有令人滿意。

接下來表達的觀點不一定正確,希望各位看官獨立思考,取其精華去其糟粕。如果耐著性子讀完了,希望能夠作為前車之鑒對你有點參考。

技術(shù)上的深與廣

技術(shù)是程序員的立足之本,但對于程序員來說,學(xué)好技術(shù)不僅僅只是學(xué)會寫代碼或者去做單純體力勞動——復(fù)制粘貼代碼,應(yīng)有更多更深入的學(xué)習(xí),不要接觸的太寬泛,樣樣懂一點但樣樣都不精,而更應(yīng)該值得花精力把一門技術(shù)學(xué)得更加深入。有觀點說,如果將來選擇創(chuàng)業(yè),那應(yīng)該重視廣度,但我現(xiàn)在的觀點是,不管以后是創(chuàng)業(yè)還是繼續(xù)在職場中晉升,都應(yīng)先追求深度,在深度上達到一定程度后,再考慮擴展技術(shù)視野,最終成為T字型人才。為什么先追求深度再求廣度呢?因為技術(shù)思維在不同領(lǐng)域和平臺是相通的,如果你在一門技術(shù)上學(xué)得深入了,再去擴展其它方面,那就變成一脈相承的事,有舉一反三的快感;并且,就在深入某門技術(shù)時,你已逐漸提煉掌握了一套學(xué)習(xí)和解決問題的方法,而這個才是最重要的,有了某個方面的深厚經(jīng)驗再進入一個新的領(lǐng)域或碰到新的難題時就不至于像沒頭蒼蠅一樣到處亂撞。

我以前很在乎“多”,至今都難以改變。比如在iOS上并沒有深入學(xué)習(xí)的情況下,便去學(xué)習(xí)Android開發(fā),在Android上能寫應(yīng)用時又想去掌握前端開發(fā),同時還規(guī)劃去學(xué)習(xí)后臺。這樣蜻蜓點水似的學(xué)習(xí),對什么都只是一知半解,看似技術(shù)知識淵博,實則技術(shù)上并沒有得到質(zhì)的提升,在實際項目中也只能解決一些較淺層次的問題,碰到深層次的問題便不知所解了。這種在乎“多”的人其實不少,面試過程中有碰到,身邊同事朋友間也有,說到底這其實是一種浮躁。在如今分工很細的時代,在某個領(lǐng)域深扎、專業(yè)主義更值得大家推從。當然,并不是去否定掌握領(lǐng)域間的廣度,而是在沒有對某個領(lǐng)域有深度之前,就不要把更多時間同時花在其它領(lǐng)域上。或者,至少要有一個時間上的偏重,比如百分之八十的時間放在某個領(lǐng)域深度上,留百分之二十放在其它技術(shù)領(lǐng)域上。

就如李小龍所說:“我不怕練一萬招的人,只怕把一招練一萬遍的人!”,其實,不管在什么領(lǐng)域,只有專注了才能有所成績。當然,偶爾也要抬頭看路,關(guān)注下技術(shù)新動向,不斷去更新自己的技術(shù)棧,比如iOS開發(fā)中出現(xiàn)的函數(shù)式編程、新開發(fā)語言Swift等等。

多實踐多總結(jié)

程序員要避免眼高手低。接觸到某個技術(shù)點,如果腦子里第一反應(yīng)總是“這個太容易了”,而并沒有去實踐一下就以為已經(jīng)掌握了,而到真正運用時便什么也想不起來,尤其不幸被面試官問到時就只能支支吾吾不知所云。因此,學(xué)習(xí)某個技術(shù)點,要要求自己落到實處。

多做總結(jié),只有在總結(jié)時才能認清自己到底掌握了多少,才能把看到的學(xué)到的真正變成自己的。曾經(jīng)我以為自己學(xué)到了很多,但當我開始去總結(jié)回顧時,才發(fā)現(xiàn)自己掌握的都很空洞或者極其淺顯。總結(jié)最好以文字的方式記錄下來,形成文檔(博客),這樣不僅能理清思路,同時可掌握的更深刻。再說,人的記憶總是有限的,對某項技術(shù)有深刻理解或者一些難題解決的方法步驟或者一些好的工作方法,只有把它們寫成文檔才能永久保存,形成知識體系。總結(jié)之后就去敢于分享,分享出來在一定程度上更能監(jiān)督自己對某個技術(shù)點掌握的準確度。當分享給別人時,便不能只是湊合一下了,多少要有點用,至少要保證不亂說,如果理解上有誤也能得到同行的反饋,這些都有利于自我成長。以前覺得寫文檔很費時燒腦,要寫清一個東西十分困難,現(xiàn)在覺得這些精力是必須去花的。這些也是我才開始做的事情。

產(chǎn)品思維

程序員要樂于去和產(chǎn)品經(jīng)理“撕逼”。以前我以為程序員做好本分事寫好代碼做好功能就行,再好一點,追求下產(chǎn)品性能和穩(wěn)定。但對于產(chǎn)品功能需求卻很少思考,產(chǎn)品經(jīng)理說怎么做就怎么做,產(chǎn)品經(jīng)理說改個啥也沒有二話就去改了。然而,當產(chǎn)品經(jīng)理策劃出來的功能之后經(jīng)常又被自己否定而撤掉或者修改時,這說明產(chǎn)品經(jīng)理在做某項功能時也不一定是經(jīng)過很多的思考,很多都是拍腦袋拍出來的。因此,程序員在做一項功能的時候也必須去思考,這項功能(一般是一個大方向下的細節(jié)功能點)為什么要做,做了是否很大可能會達到預(yù)料中的結(jié)果,它的產(chǎn)品邏輯是否合理,如果有疑慮時,則必須去和產(chǎn)品交流一下,說不定在碰撞過程中,產(chǎn)品也想清楚了是否有必要做。程序員要有產(chǎn)品思維,不僅僅是為了減少返工,為了之后避免有去砍產(chǎn)品的想法,同時對自我也是提升,有產(chǎn)品思維的程序員才更能對產(chǎn)品理解到位,更能做好產(chǎn)品各項功能。

用戶體驗

程序員一定要懂得用戶體驗,追求好的用戶體驗,更能促進自己去寫出好代碼,寫某個模塊某個函數(shù)某行代碼時才會思考這么寫會不會影響產(chǎn)品性能。也只有追求好的用戶體驗,才會有意識去在功能上去做優(yōu)化,即便不是產(chǎn)品需求上規(guī)定的,也會自主去優(yōu)化一些細節(jié),去思考某個交互邏輯是否合理,去思考某個動畫怎樣可以更流暢更完美一點,而這些都是促進一個程序員變得更優(yōu)秀。

自測

程序員一定要養(yǎng)成自測的習(xí)慣,不是做完了就了事了。就這點我司就有位同事,因為沒有自測的意識不在乎細節(jié)、粗心大意,造成了兩次嚴重事故,而這兩次都是因為代碼上的低級錯誤導(dǎo)致,這也看出這位同事做完后連功能主路徑都沒有去測過。可能有人會認為這是測試同事的工作,存在問題沒被測試出來就是測試同事的失職。測試同事應(yīng)承擔(dān)責(zé)任不假,但如果程序員抱有這樣的心態(tài)去做開發(fā),那肯定也成為不了優(yōu)秀的程序員,甚至離淘汰的日子也不遠了。我司那位同事被指出過多次都不曾引起重視,最后就被勸退了。其實有很多異常路徑是測試同學(xué)想不到的,但程序員如果有很好的自測意識有對產(chǎn)品有責(zé)任心,對于一個復(fù)雜邏輯性較強的功能便會有意識去檢查驗證代碼上是否有漏洞,最后發(fā)布在最大程度上避免留下死角、造成嚴重的線上問題。


@湘籍程序員,公眾號ID: hncoder

簡介:湘籍,iOS開發(fā)者,略知Android、前端開發(fā)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容