作為程式設計師的思考與反省
子曰:吾十有五而志於學,三十而立,四十而不惑,五十而知天命,六十而耳順,七十而從心所欲,不逾矩。人生又有幾個十年?
距離三十還有7年。7年看似很長但也很短。或許有人說我過早的杞人憂天。
三十歲對於一個程式設計師來說,是一個警鐘。雖然不少博文或者某些國外週刊說,有七八十歲的程式設計師,也有四五十歲的程式設計師,做一輩子的程式設計師沒有什麼不行。
但是那是國外。國內與國外的情形是不一樣的。IT的技術更迭是很快的,你想要不斷成長和強大,就需要不斷的學習。作為年輕的我來說,特別是雙休的時候,每天可以抽取八個小時的時間來學習。但是呢,
當我結婚生子後呢?我還能有那麼多時間專注於學習嗎?更多是陪伴自己的家人,教育孩子。
今天我主要說的話題是作為程式設計師有比寫程式碼更重要的事情、不能僅僅只關注於自己的領域、要有憂患意識、要有理想等。
一、作為程式設計師有比寫程式碼更重要的事情
那麼到底什麼是比寫程式碼更重要的事情?
記住,這句話不僅僅對我自己說,也是對同在IT一線奮戰的同志們說的:不要把自己看做碼農。
記得我在之前的文章說過,寫程式碼是思維運動,而不是體力運動。不要將腦力勞動變成體力勞動。
為什麼這麼說呢?
現在很多有三年甚至五年及其以上的工作經驗的開發人員,但是有這麼一個群體,僅僅只是將兩年的工作經驗或者是一年的工作經驗重複到五年或者三年以上再或者更久。
我想這也是為什麼有的企業在招聘網站招人有這麼一條,擁有和工作年限相稱的廣度和深度。
如下圖美團的Java高階工程師招聘:
或許有人說,這與你說的“作為程式設計師有比寫程式碼更重要的事情”沒有關係吧。
嗯,確實沒有關係。但是我只是想強調一點。編碼是一項腦力與體力相結合的工作,腦力為主,體力為輔。而不是體力為主,腦力為輔。
下面說說,作為程式設計師有比寫程式碼更重要的事情。
首先我說說我的想法:
(1)作為程式設計師不能僅僅只關注於功能實現,還要深刻理解業務,明確一條,技術是實現業務的工具,技術固然重要,業務也一樣重要,不要僅僅只關注於技術,而忽略業務;
(2)定期寫文件總結,回顧自己在工作中對業務的理解和解決的問題,並將其寫成文件或者博文的形式,內部分享或者是在不有損公司的利益情況下,分享給廣大的IT朋友們;
(3)溝通,溝通很重要,特別是技術團隊內部,不要埋頭苦幹,各自為戰;
(4)鍛鍊身體,身體是革命的本錢,前段時間的新聞,讓我心有餘悸,特別作為在一線奮戰的IT朋友們,一定要定期鍛鍊,就算不是跑步的形式,也應該去戶外走走,徒步也是一種鍛鍊的方式,當然了,如果能跑步,或時常上下蹲、俯臥撐、仰臥起坐等等,也是不錯的,鍛鍊身體能讓你的大腦更靈活;
(5)要有一顆恆心,回顧我的IT學習生涯,如果不是一顆堅持的恆心,恐怕我和班上一部分同學一樣,最後只能轉行去做做搬運工、流水線、普通工人或者餐飲的服務員等等,這裡我要強調一點,我這麼說,並不是歧視這些人,而是要強調一點,想要在一個領域有所成就,必須要有一顆恆心,當然了,機遇也很重要;
(6)要有熱情,你可以理解為興趣,興趣是最好的老師,要想在一個行業長久的發展下去,興趣(熱情)是很必要的,雖然有一萬小時這樣的理論,但是你要想有興趣的長期堅持一件事情超過或者等於一萬小時,或者是被動的堅持一件事情一萬小時是完全不一樣的,曾經選擇IT,僅僅只是因為看上工資高,到後來慢慢喜歡上它,因為它就如生活一樣,帶給我酸、甜、苦、辣、鹹;
這裡我要反省的是,上面的想法我目前而言並沒有完全做到,
談到(1),當初開發軟體時,我僅僅只是抱著功能實現就好,其他一切不管,最後的惡性迴圈是,不斷的出現問題,不斷的解決問題,同時呢?也不斷的加班。最終的結果,就是因為自己的不負責任、不理解業務造成的。
談到(2),定期寫文件總結,的確,這個非常有必要,之前我說過,人的大腦容量是有限的,當然了,也不能忽略一些大腦容量超常的人,不過畢竟那些是少數人,所以,作為大多數的人來說,無論是工作中還是學習中,定期總結和回顧是很有必要的,比如,我們Java團隊在與安卓團隊對接時,有些介面相關的請求url、請求引數、響應引數,時常因為彼此不記得翻程式碼找半天,這一點雙方都有自己的責任,作為Java研發團隊中的一員,我們的責任是沒有及時記錄,以至於找的時候花費很多不必要的時間。雖然說,介面寫文件是一件麻煩的事情,但是用一個叫Swagger的工具是可以完全實現自動化的,這個工作是我的,還是因為我的不負責任,沒有管它放任自如,我還是要反省自己。
談到(3),溝通很重要,我發現在實際開發中,bug出現的概率高的原因,除了我們沒有深刻的理解業務之外,還有就是溝通,我們溝通太少了,以至於時常因為這個那個浪費很多不必要的時間。曾經的我,之所以選擇了IT,是因為我不喜歡和人打交道,僅僅只想著,“雞犬相聞,老死不相往來”,,最好是大家各自幹各的,都不管彼此。事實證明我是錯的,每個人對每一塊的業務模組,理解是不一樣的,有的理解深,有的理解淺,通過溝通可以彼此互補,技術也是如此。在軟體開發整個流程,無論是曾經的瀑布模型,現在的逆向瀑布模型,還是現在的敏捷模型,軟體的成功因素,不僅僅取決於業務的前景和好的商業模型,更取決於整個團隊的良好協作,本質上可以理解為溝通二字。
談到(4),還有一點我遺漏了,那就是少熬夜和不熬夜,現在我很年輕才23歲,記得在上家公司工作的時候,經常是2點到3點才睡,那段時間也是沒有辦法的事情,因為我所面臨的,不僅僅是生存上的危機,還有來自很多外部的壓力,包括我什麼都不會,一切從頭來過和一些其他因素等。當我解決了生存危機後,感覺身體其實也沒有什麼,有段時間,我確實有點墮落了,享樂主義的思想逐漸佔據了我的大腦,熬夜看一些沒有營養的電子書(什麼修仙、霸道總裁等等)或者是看看娛樂電影等等。但是後來被一個人無情的打擊下,我逐漸醒悟。
前面說的,或許與少熬夜和鍛鍊身體沒有關係,但是我覺得享樂主義的思想是造成熬夜及其很少或者不鍛鍊身體的原因之一。
談到(5),要有一顆恆心,我同廣大的朋友們,都一樣,沒有深厚的背景關係,也沒有富裕的家庭。有人說,這個世界上充滿著不公平。在我看來,借用《深度思維》中的某句話所說的那樣,這個世界有兩個東西是公平的,一個是大腦思想和時間。雖說現在少年得志的人不少,比如前段時間受邀參加某個酒會,遇到不少年輕有為的CEO等。但是那只是少數人。更多的平凡人,其實也可以成功。只不過需要沉得下心,並不斷堅持的去做一件事情,可以是興趣愛好,也可以是職業。這個時代既是物價飛漲的時代,也是充滿機遇的時代。有人通過自己的興趣愛好而獲得成功,也有的通過專注與職業而獲得機遇取得了成功。成功並不是偶然的,也有其必然的因素。
談到(6),熱情或者是興趣,熱情對我來說也可以等同於興趣。對一件事情十分有興趣,就會不斷有動力去做。作為IT界中的一員,IT的技術不斷更迭,你想不落後,不僅僅只是靠擠時間去學,而且也要有興趣,有熱情去做。不然毫無興趣的去做一件事情,效率不高,也浪費時間。很多人總說,沒有時間去學習,包括我自己也說過很多次,其實那都是藉口,因為自己不想去做,也不願意去做,更沒有興趣去做,何談熱情去做呢?
二、不要僅僅只關注自己的領域
不要僅僅只關注自己的領域,為什麼要這樣的說呢?
原因有如下幾個方面?
(1)容易陷入偏狹,一葉而障目;
(2)我們需要了解業務領域的知識(比如做金融相關的開發,需要了解和熟悉金融的,做區塊鏈的,需要了解區塊鏈相關的知識等等),同時也不能僅僅為了業務而去學,平常也要有意識的去拓展自己的知識領域,就我而言,我對理財、文學、產品、物聯網等感興趣,我就會去看看相關的書籍和資料;
(3)借用吳軍先生的《見識》所說的那樣,你能走多遠,取決於你的見識;
其實這三個原因歸納下來,可以用一句話表示,那就是眼界的深度與廣度,不僅僅決定你的職業發展,同時也決定了你的未來。
我給自己的建議,也給他人的建議如下:
(1)多多閱讀,特別是對工作時間長,休息時間短的朋友們來說,閱讀是獲取知識的最佳途徑之一,閱讀不同的書籍,你可以領略不同人的思想或者是不同的行業,也可以是你自己的不同感受,說句慚愧的,我也有很久沒有看書了,只是最近覺得,我不能僅僅只關注程式碼和學習新的框架或是深度研究現有的框架原理等等,還得去了解這個世界不一樣的東西或者是這個世界不一樣的地方;
(2)溝通,不能僅僅只閱讀而不溝通,溝通能提高你的表達能力,同時通過溝通,也能學習對方的看待問題的方式及其獲取對方領域的知識(當然了,溝通也沒有壞處),特別是廣大的IT同胞們,如果表達能力不行的話,找女朋友不好找啊,每次朋友圈看著秀恩愛的那群傢伙們,心中總是有種莫名的憤怒,哈哈,稍微幽默下;
再貼個圖:
閱讀和溝通,不僅僅使你能擴大自己的知識領域的廣度,還能給你遇到問題時,會有很多的解決問題的思路和方式。這裡也要提到積累也很重要。
上圖中有四個紅色標記處,前兩個,你覺得你沒有想過的積累,你覺得你能夠勝任嗎?或許可以試一試。這個世界上,沒有你想做而做不到的。關鍵是前面說到過的恆心。長久的閱讀積累和溝通和技術的沉澱,總會給你帶來意向不到的驚喜和機會。
三、要有憂患意識
居安而思危。不要僅僅只滿足與安逸的環境下,有一點我要反省我自己,有段時間我確實有點放任自如了,覺得自己身處現在的崗位,就有些得意忘形。
人工智慧的發展是非常的迅速,編碼以後也會被機器人取代的。這個可能是未來的趨勢之一。先不說這個,再說近的,現在的培訓機構層出不窮。培養了大批的軟體開發工程師,同時現在的大學生,專科的、本科的、研究生或者博士越來越多,你還覺得你所處環境很好嗎?這句話是對我自己的說的。“我們不要僅僅只滿足於現在,還有著眼於未來“,這句話人人都知道。但沒有幾個人做到?我想這也是貧富差距的原因之一。
下面我要說出我自己的想法,同時也是給我自己的建議,廣大的朋友可以參考:
(1)要有職業規劃;
(2)要培養自己的核心競爭力;
(3)既不要妄自菲薄,也不要驕傲自滿;
(4)實事求是;
談到(1),Java開發工程師的職業規範一般為如下:
初級開發工程師->中級開發工程師->高階開發工程師->架構師/專案經理->技術總監->CTO
同時也可以變成這樣
初級開發工程師->中級開發工程師->高階開發工程師->產品經理->產品總監
還可以變成這樣
初級開發工程師->中級開發工程師->高階開發工程師->技術合夥人(參與創業)
職業規劃,意味著你知道自己的下一步想做什麼,有個目標總比沒目標強。很多人說自己迷茫,包括我自己也一樣。其實一點都比迷茫,只不過是為了逃避自己的責任罷了。
比如我,記得有段時間,經理想讓我做TeamLeader,但是我當時畏懼了,因為我怕同事們不配合我,同時也怕自己萬一搞砸了失去這份工作怎麼辦,還怕自己因為對於別人程式碼不熟和業務不理解被嘲笑等擔憂。這些擔心固然有一定的道理,但是換個角度來看,同事們不一定會不配合你,只要你做事負責任,搞砸了也不可怕,最重要的是你努力去做,不熟悉和不理解,可以通過熟悉和理解(嘗試通過與同事及其領導溝通來達到理解業務的目的等等)。在這裡我想強調一點,缺乏勇氣去嘗試,意味著你一輩子只能默默無聞,其實歸根到底就是因為不想擔責任,缺乏責任感。
在工作中,我想每個人都會遇到這樣的場景或者是這樣的人,比如某某人和某某人一起工作,突然某某人被領導提拔,而那個人覺得自己工作能力不錯,為什麼提拔的不是他(她),而是他(她)呢?很多人,包括我自己遇到一些問題和事情,最先想的不是如何解決,而是如何推卸責任。這一點,我真的要很反思。再比如戀愛中的情侶們,當在一起的一段時間裡,男方總會以自己的想法為由,大男子主義,往往忽略的女方,最後分手了,總是說,為什麼會這樣,不是我的錯。往往總是從自己的角度上看,而不換位思考。無論是工作中,領導總會給員工們升職的機會,或者你在追求某某人時,某某人總會給你的機會,只不過每次你都錯過了,任何事情看似偶然,實則必然。
接下來,我希望自己不僅僅要有明確的行動去實現職業規劃中的目標,還希望自己在人際交往中,無論是團隊,還是追求某人或者和某人在一起,都要儘可能的換位思考。
談到(2),要有自己的核心競爭力?
記得看過一篇文章中說過,隨著IT的門檻相對而言,越來越低,開發人員越來越多,伴隨著質量普遍不是特別高,我知道我說這句話,會有不少人噴我。但是事實就是這樣,開發人員流動性很強,跳槽更是普遍,寫程式碼不規範(除了一些大中公司有一定的程式碼規範約束,其他中小公司一般沒有什麼規範,全靠自覺,包括我自己程式碼也寫的是亂七八糟,不過意識到這一點後,我嘗試著讓自己的程式碼可讀性變好,改進自己的程式碼,業界中Java開發的程式碼規範,我覺得阿里巴巴的Java開發守則值得參考),僅僅只是關注用技術實現業務,很少深入理解業務,覺得理不理解業務不關自己的事情。
看下圖,我列舉的幾個招聘網站上的例子:
圖一:
圖二:
通過圖一和圖二,我只想表明兩個觀點:
第一、程式設計師的核心競爭力,不僅僅來自技術上的積累,還來自業務,技術是實現業務的工具,業務是用來賺錢,沒有業務,技術也毫無用場;
第二、隨著現在程式設計師越來越多,你要想不被淘汰,你要有意識的培養自己在某個領域的深度,可以是技術,比如分散式的研究,儲存等,也可以是業務,儘管你的技術不是非常牛逼,但是你對業務的深度理解,有助於進入業務對口公司;
記得看過阿里的某位技術人的文章,提到過,你對業務架構的價值領會的深度與廣度決定你身處的位置。在這裡還是要強調一點,程式設計師不能僅僅只關注技術,而忽略業務。如果你還想更進一步,業務是必須的。
總而言之,程式設計師的出路可以有很多,你可以選擇到30歲以後或者不到30歲去培訓機構當老師,還可以自主創業(當然了創業有風險),還可以一直專注某項技術成為領域專家,也可以進階到管理層面。
出路有很多,關鍵是出路是否長遠。這個需要自己深度思考。
談到(3),既不要妄自菲薄,也不要驕傲自滿。很多人,也包括我自己看到比自己強的人,會有點自卑,同時也伴隨著嫉妒。如果要說怎麼解決?答案是有很多解決方案。你可以選擇去向比自己厲害的人學習,也可以選擇給自己定一個小小目標,然後慢慢實現一個有一個,當然了,還可以選擇無視(不過你覺得你能無視嗎,我是不能,嫉妒也不能解決問題,解決問題的最佳方式是面對問題,這就好像人與人之間交際的過程中遇到問題時,問題並不是拖著解決的,而是通過面對解決的。驕傲自滿更是要不得,不要覺得老子天下第一,世界上比你強的人多的是,我曾經也因為自己寫過某段程式,而別人沒有寫出來而沾沾自喜。到最後發現那些都是屁,沒什麼好沾沾自喜的或是狂妄。我覺得還需要學習很多。未來還有很長,但是也不是那麼很長,我希望自己能夠虛心而不自大,樂於助人,樂於助人在於彼此提高。
談到(4),實事求是很重要,不要給自己定一個難以實現的目標,那樣既不現實,也會挫傷自信心。就像《深度思維》的作者說過,既然不能少年得志,那麼大器晚成也是很不錯的。
我還想強調一點,成長比金錢更重要,特別是對於工作年限不長的朋友們,當眼前的工資足以解決自己的溫飽時。有不少IT朋友們,是因為發現無法在這家公司獲得更多的成長時離職,也有是工資給的不到位,還有的是覺得太累的。不過我最想給自己的一句話是,在一家公司覺得自己有很大的成長空間時,可以暫時忽略來自外部的巨大誘惑,好好專注自己的領域,提高自己。
這篇文章我一直想寫,但是每次落筆時,無法進行下去,因為難以靜心。其實這次寫也是難以靜心,但是寫的過程中逐漸使我的心慢慢靜下來,同時思緒也打開了很多,即給自己看,又給廣大的IT朋友們或者是即將進入IT界的大學生們看。