論:一個合格程序猿的自我修養!

來源:古籍故事    2020/2/16 12:11:50
責任編輯:李平
字體:

一個優秀的程序員必須不斷學習的課程:1、專業的的理論教程,系統的知識學習面。要成為一名出色的

最近讀一本神書 我編程,我快樂,書名很土,內容卻異常精彩。原書名 - The Passionate Programmer:Creating A Remarkable Career In Software Development ,或許叫 成為大師之路 應該更賣座。能讀到如此良心的小書,感覺分分鐘的收獲都是賺了幾百美金!

花了好幾周的時間,終于把這本書看完了。 總得來說,作者是花了很大的力氣來寫這本書的,于細節中可窺一斑

全書分為5大章

保持對代碼的熱情,持續學習從現實工作的角度考慮,這可能不是最重要的一條,畢竟持續學習這類話,已經

選擇市場

在產品上投資

還不錯的一本書,主要講了裝載,鏈接,庫,三個方面,是程序員調試程序,了解程序運行原理不可多得的一本好

執行

推銷

保持技術領先

本書主要介紹系統軟件的運行機制和原理,涉及在Windows和Linux兩個系統平臺上,一個應用程序在

共53節,每個小節都提出一個觀點或建議。最重要的是給出練習指導,讓我們能動手實踐、吸收觀點。所謂 知道了很多道理,卻依然過不好這一生。,最根本的原因就是 紙上得來終覺淺,絕知此事要躬行。

分手后主動淡出對方的生活,懂得放手,不想不見不打擾,過好自己的生活,是一個合格的前任應該有的基本素養

于是,我把53條總結成最重要的7條,指導以后的實踐。(為啥是7條呢,其實沒啥原因,我寫個10條也可以。只不過寫完7條,我就寫不動了)

1、C語言標準庫提供了一系列文件操作函數。文件操作函數一般以f+單詞的形式來命名(f是file的簡寫

1 - 練習,練習再練習

刻意練習 (豆瓣) 是最近特別火的概念。核心思想就是

在極限處練習,跳出舒適區。尋找不熟練的部分,不斷地練習練習再練習。

重點聯系一個又一個的片段,而非重復哪些已經掌握的部分或是整體。所以,如何練習也是刻意練習的重要一環。

一些小練習:

在github尋找一個感興趣的開源庫?纯碩odo list、尋找bug、改善文檔等等,然后提交一個PR。這就是貢獻開源庫的一個良好開端。

關注工作中的一個難點,比如一個很難修的bug。記錄下自己是怎么處理的。然后精進自己這方面的能力。

我是怎么重現bug的?

我是怎么定位bug所在的代碼?

用了哪些工具,哪些工具好用,哪些我不熟練。

遇到了什么困難?為什么會卡在那里?我又是如何解決的。

什么時候我該尋求幫助了?尋求幫助的途徑又有哪些?

下一次遇到了類似的問題我該怎么辦?可以如何改進。

編寫一個很難卻又精巧的小程序。比如在 Topcoder 、Code Kata 。進一步的挑戰,可以把程序的行數限制在100,再看看能不能解決問題。

選擇一本軟件開發方法論的書。研究這個方法例如這個方法論的優劣,結合工作看看能不能運用。例如 - 敏捷軟件開發 (豆瓣)

選擇一個小項目,閱讀源碼。做好筆記,列出優劣,寫寫想法。

檢驗學習成果最好的方法就是講給別人聽。嘗試講給朋友聽、嘗試當眾演講、講給外行聽。

2 - 學習技術

技術永遠是程序員熱愛的話題,但技術是永遠學不完的。如何運用有限的時間,去學習無限的技術是個學問。這也是以后是 rest and vest 還是繼續苦逼寫代碼的問題。

這里,我們可以做一個練習。拿出一張A4紙,從左往右列出最新到最老的技術,觀察它們的關聯。標記出自己擅長的、不精通的、完全不知道的。然后去一些技術網站、招聘網站,看看現在需要的技術是哪些。列出這些技術的優劣。選出想要學習的前幾門技術,每周最少花2個小時,大致去了解一下這門技術。

當我們對這些技術有了大致的了解,就可以更理性、更有依據地去學習下一門技術。

另外,當我們學習技術時。光使用是不夠的,我們應該想想它的底層是怎么工作的。例如,當用Java時,了解Java的虛擬機是怎么運行的;使用C++時,了解程序是如何編譯、鏈接、運行的;動態語言和靜態語言的各自優劣;使用一個框架的時候,了解一下這個框架是如何運作的,讀讀它的源碼。

3 - 了解你的公司,業務和行業

程序員不能只寫代碼。代碼說到底,只是一種工具、手段或者技術。它所要實現的目的才是關鍵。我們可以常常問自己一些代碼以外的問題,例如:

我的公司是干什么的?

競爭對手有哪些?

在行業的地位?

公司的財務情況怎么樣?

品牌形象

盈利模式

現在面臨的挑戰是什么?

這個行業正在為什么目標努力?

有什么新鮮事最近在這個行業發生?

有哪些可以提高公司的盈利、改善品牌形象、拓展新業務、改善流程等等

除了程序員的工作模式。我了解 designer、data scientist、pm、manager是怎么工作的嗎?

這里有一本不錯的小書,讓我們可以學習一下商業知識 - Ten days’ MBA

4 - 計劃、記錄和反思

有沒有覺得一天不知不覺就過去了,也不知道時間用在哪里了。這里,引入了一個 三步走的工作方法:

計劃

每天早晨計劃一下今天要做的事,然后給每件事算一下要用多少時間,如果一件事大到要2個小時以上,那就可以把它分解為更小的任務。

人總是喜歡做更容易,更快能看到成果的事。這也就是為什么長遠而重要的事,我們總是不愿去做。并非我們不知道它的重要,只是它太過抽象、巨大,以至于我們體驗不到能即刻做完之后的成就感。

所以,要盡量把大的目標分解成小而容易的任務。這樣我們就更有動力去完成。

記錄

對于時間的記錄,可以幫助我們在一天的最后有效地反思。對于時間的如實記錄很無聊,但也是最有效能看清時間去哪兒了。

曾經有一個近乎變態的時間記錄者,一做就是一輩子。然而他記錄時間之精確讓人咋舌。 奇特的一生 (豆瓣)

反思

經過一天,做一個快速的反思是對工作有效地復盤。想想這些問題:

今天我做了什么?這些任務的意義在哪里?

有哪些可以改進的?

我把時間用在了哪里?明天可以改進時間的使用效率嗎?

有哪些完成了?有哪些沒有完成?為什么完成/沒有完成?我一天大概可以完成多少任務?

我如何不斷改進這個一天的流程?

如何計劃

這里有一個不錯的時間管理方法 - 番茄工作法 其基本思想就是:

把每個任務分成25分鐘,容易記錄。

更容易讓人在番茄時間集中精力 - 這也間接完成了本書作者提倡的每天 8小時激情燃燒 理論

記錄的另一個好處

如何避免恐慌,應對焦慮。這是個有意思的話題,其實或多或少現在的程序員或者工作的人都會有。對于未來的不確定、對于快節奏的恐慌、對于時間流逝的焦慮。

適當的壓力和焦慮反而能讓人更有創造力、效率更高。那么如何去應對呢?吳曉波(財經作家)_百度百科 說去工作,努力地工作!這是從高處給了答案。本書作者在給出了一個實用方法。記錄你的恐慌,或者叫恐慌/反思日記。

很多事情當時看來是災難性的,但過了些時候再回顧,不過就是人生中一個很小的漣漪。我們可以想想一周前那件讓我們恐慌和焦慮的事、一個月前呢、一年前呢。所以,大部分我們認為的災難并沒有那么糟。

那么,知道了這點就能克服恐慌了嗎?很抱歉,還是不能。因為人不是完全理性地,所以在危機來臨時,我還是會照樣束手無措,因為我他媽忘了上次我是怎么處理的、又或者每次恐慌都不一樣。我還是繼續恐慌和焦慮。

這時,一個有效的辦法是記錄下自己的恐慌情緒、當時的反應和處理方式等等。然后過一天,一周,一個月,一年再去回顧、去反思、去復盤?纯次覀冇龅竭@種類似的情況該怎么應對,從過去的經驗學習。當我們抽離了當時的恐慌情緒而直面問題本身的時候,我們會怎么辦?再加上,有了未來(相對于過去的恐慌)的后驗知識,我們可以總結更好地應對之法。慢慢地,我們發現其實和恐慌相處不會那么難了。

5 - 未雨綢繆

永遠不要高枕無憂,跳出舒適區。

互聯網技術發展得太快了,所以沒有什么是永遠存在的。今天用的技術可能過幾年就過時了,永遠要保持學習之心、好奇之心。對于新技術要能明銳的感知,當它來臨時,努力成為開拓者。比如最近的AI first潮流,很明顯 Google的 TensorFlow 已經成為了一個準未來AI框架。

同時,想想如果明天就去面試,我現在做的事有多少競爭力。

我的項目的impact / metric 在哪里?

我項目的挑戰在哪里?

我在項目中起到了什么作用?

我最近在成長嗎?

我準備好隨時就能離開現在的公司嗎?還是被公司的框架和工具困住了?

我到底在為誰工作?為公司嗎?還是為自己?

不要只把自己放在一個公司去考慮問題,要把自己放到一個行業里。想想自己在行業中,現在的競爭力怎么樣?

從更長遠來說,我要一輩子都為一家又一家的公司打工嗎?我的終極目標是什么?為了這個終極目標,我該做什么?我又缺少什么?

6 - 推銷自己

走出你的項目組、你的公司。去推銷你自己。這在這個互聯網的時代變得異常容易:

把你的想法寫出來,發到網上去

參加聚會

演講

要變得卓越有兩種方法

成為你這個領域的top 1%

成為你這個領域的top 20%,然后在另外一個領域也是20%。之后你把兩個領域的技能結合起來。

而第2種方法要容易的多。

我發現對于程序員,寫作和演講成為變得卓越屢試不爽的方法之一,而且成本低廉。池建強 、羅永浩(錘子科技創始人)_百度百科、 馮大輝_百度百科 都是很好的例子。

一周狀態報告,讓你的老板更了解你。我記得以前有個同事每周都給老板發一周工作總結。這樣老板清楚地知道了他在干什么,在寫performance review的時候也有據可循。從此以后,我也就養成了這個習慣?赡苊恐芤嗷ò胄r,但好處也是顯而易見的。

對于自己工作的總結。不但對老板有交代,而且對自己干了什么也更清晰。

沒有哪個老板會不讓你寫吧。既然沒有壞處,好處呢就是 >= 0的。

這個總結報告,其實也是寫作的一種?梢援斪鲆环N寫作的聯系。

在這個互聯網的時代,讓你的文字成為你的標識,讓你的名字成為你的品牌。

7 - 沒有終點的旅程

或者說這趟旅程的終點就是到你死

李開復:人類很多工作會被取代,只剩下兩類-鳳凰國際智庫 ,為了不被取代,最好的辦法就是 學習學習再學習,思考思考再思考 。 保持危機感、保持好奇心、保持創造力。學習去跨界,把兩個領域的知識結合起來。

你我都身處這個時代的洪流之中,時代太快了,我們注定是回不到一生只夠愛一人的從前了。所以,要不就被時代所棄,要不就跑得比這個時代更快。

最后,引用 了不起的蓋茨 的結束語:明天我們將跑得更快,手臂伸得更遠。于是,我們奮力拼搏,好比逆水行舟,超越極限。請注意:本文為編輯制作專題提供的資訊,頁面顯示的時間僅為生成靜態頁面時間而非具體內容事件發生的時間,由此給您帶來的不便敬請諒解!

擴展閱讀,根據您訪問的內容系統為您準備了以下內容,希望對您有幫助。

一個程序員需要有怎樣的自我修養?

作為一名程序員,一個“程序員的自我修養”是什么?

盡管我們不一定要像尹天仇那么的認真對待自己的事業,但,一些基本的修養,作為一名新時代的碼農,總應該是要具備的吧。不過真要說修養,方面還是挺多的,技術自我提示自不必說。但我并不打算從這個大家都覺得理所當然的技術方面入手,而是談談,可讀性代碼,這個容易被大家忽視的基本素養。

1、遵從所在團隊的代碼規范。

一個高效、成熟的團隊,必定有一個屬于自己的代碼規范,這個規范是團隊的寶貴的財富,它是整個團隊從各種坑中爬起來后積累的經驗教訓。什么是規范,它是人們從無數經驗中總結出來的規則,標準。而代碼規范,指導團隊成員如何以最短的時間寫成最高效,可讀性強的代碼。試想,如果成員不遵從規范,你用駝峰命名,他用下劃線,這對程序的可讀,將造成多大的影響。我想,應該沒有一個人愿意去閱讀一段,各種變量命名形式都能見得到,private, public 方法隨意排序,甚至常量類都散落在各個角落的代碼吧。

代碼,一個作用是讓機器閱讀,另一個重要的作用是讓人閱讀。!

2、遵從行業內通用的規范

在團隊的代碼規范未涉及到的,那請按照行業內的規范來編寫代碼。規范的一個好處是,可以明顯減少學習和交流成本。在java中,當我們看到全大寫的變量名時,我們就知道這是常量,而不需要去看注釋,不需要去看代碼邏輯。為什么這么迅速,因為行業里大家都習慣把常量用大寫命名。但假如你用其他命名方式命名常量,比如team_nums命名常量,不僅不能讓人迅速知道這是個常量,而且可能讓人誤會這是個變量,增加了團隊成員學習和溝通成本,甚至可能誤導他們。就見過一位仁兄,明明用的是工廠模式,偏偏按模版模式的命名方式來命名,問他,他說他知道這是工廠模式,但他覺得,更應該叫模版模式。。。我的天,,你這么任性,以后還能做朋友么?

舉個例子,我們需要根據支付類型,來生產多個支付產品,于是,我們寫了個工廠類,命名為FactoryPay。當其他人看到一個類叫FactoryPay,他們會猜測,這應該是個工廠類,負責生產各種支付產品的工廠,然后按照這個猜測去閱讀代碼,就能比較快速的理解整個類的作用。但是,假如我取名PowerPay,別人還不知道是啥,看了半天,才明白,這是個工廠的作用。這就明顯增加了他人的學習成本和維護代碼的成本。

不管你是新手還是老鳥,務必了解施行行業規范,切勿為了標新立異而違反規范。這么低端的裝*,就沒必要采用了,要裝也寫個高端的框架來提升*格唄。

3、變量、方法命名要能表達變量作用

在程序員這個圈子很久了,就發現,程序員這貨,都喜歡這套,“這個接口干嘛用的,有文檔么”,“自己看代碼去”。很多時候都是一臉黑。

盡管程序員閱讀別人代碼技術都是一流,不管你是有沒有注釋,不管你是怎么循環嵌套,也不管你是怎么命名,他們都能耐心的,把代碼分析個所以然來。但,對于程序員這個視時間寶貴如生命,分分鐘都能創造幾百萬價值的群體來說,您行行好,給我們省點時間吧,把變量是干啥用的,說清楚唄,沒準節省的這幾分鐘,多賺個幾萬,還能請大家出去嗨呢。

每每看到部門的某大神,用一個神一般的變量名“flag”,我就有吐血的沖動,他還這個flag一直雪藏,不用,只是傳遞到第n個方法才使用,頓時心力交瘁,我的天,這個flag都是是干嘛用的啊,后來才明白,是isPay的意思,用來標識用戶是否支付成功了。當時一口老血吐屏幕上,心里狂吐槽,老兄,你命名個isPay會死么,我的腦細胞這么不值錢么。到后來看到,去魔法數字,用int NUM_7 = 7,而不是MAX_MEMBERS來表示最大成員、用x y z來命名變量名,各種只有作者,或者作者后來都忘了的獨特命名方式,都見怪不怪了。更有甚者,一個變量命名為passed,作用居然是“未通過”的意思,當時就石化了,作者還真是用心良苦,這都要考我細心不細心。

一個好的變量名,能幫助閱讀者了解變量的作用,也輔助了對整段代碼的理解。

4、不要show英語,鄉下的孩子傷不起唉

LZ所在的團隊,英語一直都是團隊的硬傷,但總是能看到,某位仁兄,加上大把大把的英文注釋,有些變量名也取些高大上的復雜的英語單詞。敢問,你這么高的*格,以后我們怎么和你玩啊。(那位仁兄其實就是LZ,年輕時唉,罪過罪過)

代碼是用來溝通的,傳遞作者意圖的,都看不懂,怎么溝通交流。建議英語好的童鞋,英語能力可以放到閱讀英文書籍中展示,在代碼中,如果團隊英語能力很弱,避免使用英文,變量命名也盡量按照團隊英語水平來命名

5、添加必要的注釋

正如上面LZ說的,經常遭遇“你仔細看看代碼,就知道干嘛用的”這樣的神回復。盡管閱讀代碼是每個程序員的強項,但必要的注釋,比如邏輯比較復雜的地方,添加必要的注釋,對提升團隊成員閱讀熟悉代碼的效率是有很大幫助的。試想,一個類,幾百行,沒有一行注釋,對于閱讀者來說,閱讀它將是一個多么恐怖的事。

6、注釋保持簡潔,避免沒有必要的注釋

即看過一行注釋都沒有的代碼,也看過注釋比代碼還要多的程序。一個是讓人生不如死,一個是讓人痛不欲生。(唉,有時不僅感嘆,在程序員界混,真的是難)。

LZ就經?催^,一大段注釋,啰嗦了半天,要不就是沒表達清楚重點,要不就是只為說明它是個循環的作用。!譬如i++這樣的代碼,有必要加個“每個計數增加1”這樣的注釋么,這完全是把讀者定位為非程序員啊,或者就是嚴重鄙視讀者的編程水平。

注釋是幫助閱讀的人更好的理解程序的邏輯,只是輔助,如果不重視通過命名等方式來傳遞代碼的作用,而是依賴于注釋,這就是本末倒置了。而且,冗長啰嗦的注釋,這到底是幫助人理解,還是阻礙人理解啊,是讀程序還是讀小說啊!

7、擁有自己的編碼規范

規范是為了讓團隊更快的理解、熟悉代碼的,同理,擁有自己的一套規范,就能幫助其他人更快的理解我們所寫的功能,減少學習和溝通成本!

8、代碼清晰簡潔的表達出作者的意思

在我們每次寫完一段代碼時,一定要問問自己,代碼是否表達清楚了我的意思,是否需要添加些注釋,名字取得是否恰當了,別人在閱讀時是否吃力。。每每看到別人一團糟的費解的代碼,就時刻提醒自己,一定要把代碼寫好咯,我也確實是這么做的,一遍又一編的檢查,看變量名、方法名是否表明了它的用途,是否有些不必要的、只是為了提升*格的代碼,別人是否能在短時間內看懂。所有的這些,只是為了寫出一段更優美的代碼。

9、堅持并捍衛上面的準則

經常能聽到,有些公司是代碼行數來定義績效的,但作為一個有操守,并秉承基本自我修養的程序員,我們絕不能為了各種*或者脅迫,甚至是自己的惰性、個性,而放棄寫出簡潔清晰,可讀的代碼。

以上的幾點,并不是嚴格的意見或者建議,只是提醒廣大程序員同胞們,在癡心與高端的技術時,千萬不要忘了,代碼不僅機器要閱讀,人也需要閱讀。就算你寫出再復雜的代碼,但它讓人完全無法閱讀,這有什么用呢。這就如同,你很牛*很牛*,但別人聽不懂你說的話,還不是沒用。如果你真的寫出了可讀性強的代碼,但你也不應該鳴鳴得意,我覺得,寫出一段優美,健壯,可讀性高的代碼,是一個程序員最基本的自我修養。本回答被提問者采納

一個合格的程序員應該讀過哪些書

程序員的自我修養:

第一階段:

《C語言程序與設計》

《Java通識》

《C++進階寶典》

《Swift入門與實踐》

第二階段:

《教你怎么不生氣》

《佛經》

《老子》

《沉默的憤怒》

第三階段:

《頸椎病康復指南》

《腰椎間盤突出日常護理》

《心臟病的預防與防治》

《高血壓降壓寶典》

《強迫癥的自我恢復》

《精神病癥狀學》

第四階段:

《活著》

一個程序員所必須學習的有哪些,以及自我修養是什么

一個優秀的程序員必須不斷學習的課程:

1、專業的的理論教程,系統的知識學習面。

要成為一名出色的程序員,從數據結構、算法。數據庫都需要系統全面的了解和認識,并可以靈活運用。對自己所從事的編程語言要靈活調用。

2、不斷嘗試,樂于挑戰。

編程高手都是從不斷的失敗和嘗試中走出來的,所以對于一個剛入門的新手來說,任務就是不斷的去編程,發現自身存在的缺陷,以及更熟練的掌握各種數據接口的調試和數據調用的應用。

3、好學,不恥下問。

成功都是建立在無數次嘗試的基礎上的,同時也需要利用前輩們已經得出的一些規律,盡量的少走彎路。

4、保持良好的心態。

編程每天對著的都是一些枯燥的單詞以及數據,所以保持一個良好的心態是至關重要的,只有擁有一個良好的心態,才是端正自己學習和勤奮的根本。

5、善于從生活中發現需求。

每一個程序都是為了滿足網名的一種需求,所以發現網名的的需求,并把這種需求利用程序解決,可以極大的促進自己的職業發展。

6、擴大自己的視野。

編程的同時,我們也要緊跟時代的步伐,學習更多的前進的經驗以及技術,更好的為自己所用。

為您準備的好內容:

www.ykbrdx.live true http://getqq.haoxyx.com/g/3528/35280816.html report 12165 最近讀一本神書我編程,我快樂,書名很土,內容卻異常精彩。原書名-ThePassionateProgrammer:CreatingARemarkableCareerInSoftwareDevelopment,或許叫成為大師之路應該更賣座。能讀到如此良心的小書,感覺分分鐘的收獲都是賺了幾百美金!全書分為5大章選擇市場在產品上投資執行推銷保持技術領先共53節,每個小節都提出一個觀點或建議。最重要的是給出練習指導,讓我們能動手實踐、吸收觀點。所謂知道了很多道理,卻依然過不好這一生。,
最近關注
首頁推薦
熱門圖片
最新添加資訊
24小時熱門資訊
精彩資訊
精彩推薦
熱點推薦
真視界
精彩圖片
社區精粹
關于本站 | 廣告服務 | 手機版 | 商務合作 | 免責申明 | 招聘信息 | 聯系我們
Copyright © 2004-2017 haoxyx.com All Rights Reserved. 好心游戲網 版權所有
京ICP備10044368號-1 京公網安備11010802011102號
公式规律区杀四肖