程序員的自我修養摘記

◆ 第一章 談職業生涯

◆ 一、寫給年輕程序員的10點啓示

  • 正確地認識自己
  • 比一般人更加努力
  • 適時建立個人權威
  • 遵循最佳實踐
  • 保持好奇心並樂於探索新的事物
  • 拋開代碼與人溝通
  • 要爲優秀的人工作
  • 生活、睡眠、旅行
  • 相信自己的天賦和創造力

◆ 二、那些程序員們後知後覺的職涯經驗
1.你的薪酬與工作量無關
你的薪酬其實取決於很多因素,技術能力、經驗資歷、工作量等,但最本質的卻是,你對公司是否重要,換句話說你是否容易被取代。
2.儘可能持續做一件事
技術深度及完整項目經驗的重要性
參與10個項目,不如完整參與一個項目。持續做一件事是要你把每一件事做透、做好
3.唯一不變的就是變化本身
成爲一個領域的專家一定要花費10000小時以上的時間,而對於程序員來說,所謂的100小時定律同樣重要——花100小時學習或修煉一門新的技術,往往就能超過一般人很多。你需要提升自己快速學習的能力,當你學得越多,往往就能夠學得越快,因爲知識之間總是存在關聯性。慢慢地,你會發現自己能夠非常從容地面對那些不斷出現的變化,甚至可以提前預判趨勢,當機會來臨時,總能成爲那個有準備的人。
4.你的聲譽非常重要
嚴謹
5.理解溝通的意義
6.你的右腦將是你成功的關鍵
談到那些我們眼中非常成功的技術大牛、IT高管,都會出人意料地將一些非技術能力作爲自己獲得成功的關鍵。比如,編寫文檔或做PPT的能力、演講的能力、說服他人的能力,等等。
右腦將會是決定你能否成功的關鍵。
既可以用左腦來想出那些技術方案,也可以用右腦來爲用戶提供更人性化和具備良好用戶體驗的設計方案。
在工作中你就可以找到很多途徑來提升你運用右腦的能力。比如,在你編寫一個文檔或PPT時,除了內容之外,能否再多考慮一下字體和排版,讓人讀起來更加舒服呢?在你與用戶討論需求時,能否嘗試着從程序員思維轉換到用戶的角度來看待問題呢?在團隊內部開會時,是否能提前做些準備,多爭取在大家面前進行講演的機會呢?當你持續這麼去做以後,你會發現自己在各個方面都會變得越來越好,這其中也包括了你的編程能力。因爲,這些技能總是在你看不見的地方互相作用和促進的。
7.不要輕易說簡單或不可能
8.你不應該總是單打獨鬥
不要總是單打獨鬥,要學會在團隊中協作,並儘可能讓優秀的人圍繞在你身邊,這將擴展你的能力範圍,讓你變得更加強大。
9.你的能力顯而易見
程序員的能力來自於大量的編碼實踐,以及持續學習的能力和勤于思考的習慣。任何自作聰明,不懂裝懂,以及投機取巧在明眼人看來都只會是東施效顰,顯得如此微不足道。

◆ 三、如何招到一名靠譜的程序員
1.簡歷看人
閱讀簡歷永遠是面試的第一步。好的簡歷一定是正確、清晰並且能夠體現候選人最有價值一面的。我首先會過濾掉那些包含錯別字,文句不通或沒有邏輯性的簡歷,因爲如果一名程序員連自己的簡歷都不願意去仔細檢查並完善的話,很難想象他寫出來的代碼質量會如何。
接着,我會重點閱讀簡歷中的項目經驗部分,在這裏我能夠看到面試者的開發經驗,技能棧,並且判斷他們熟悉的技術框架、工具是否與目前公司的要求相匹配。
你需要用儘可能簡練的文字來描述項目的背景,你在項目中承擔的角色、參與項目的時長,你用到的技術,以及你在項目中的亮點等信息。優秀的程序員們往往善於歸納,並能夠一針見血地發現問題或把一個問題說清楚。
如果你要成爲一個領域的專家,那你必須花費超過10000小時,而這光靠工作時間是遠遠不夠的。
2.給面試者10分鐘介紹自己最擅長的
這個人對他所做的事情是否充滿激情。
他是否能在自己的團隊中有效地進行溝通。
他是否在自己的專業領域足夠擅長。
你的團隊是否會樂於和這個人一起工作。
3.基礎打牢了嗎?
4.技術深度夠嗎?
一些人會將最基本的代碼語法或關鍵字寫錯。
5.選擇適合所在企業文化的人
6.行爲面試法
請談談你在這個項目中遇到的最大困難或挑戰是什麼,你是如何解決的。
7.給他們一個虛擬任務

◆ 四、每個程序員都應該瞭解的一件事
這些普通人眼中的大神們很少會提及自己的技術有多牛,反而更多地把功勞歸於那些看似與技術毫無關係的能力。
其實在我看來,他們所謂的這些祕籍,都可以歸納爲一種能力,那就是自我營銷。只有具備了這個能力,你才能脫穎而出獲得成功,這一點對程序員同樣適用。
你寫的代碼可能毫無用處,直到:
人們理解你在做什麼。
人們對你所做的事情感興趣。
人們爲你所做的感到興奮和激動。

1.讀與技術無關的書
2.會寫文檔
文檔可能是你完成代碼編寫後一個最佳的展示機會。當代碼實現了它的功能之後,就很少有人會再去看它,除非它出錯了。但文檔被閱讀的概率卻大得多。從一個文檔中,我們可以看到關於作者的很多東西,思路是否縝密,邏輯性是否強,設計方案是否優秀,等等。可以說,文檔質量的高低是衡量一名程序員是否優秀的重要標準之一。即使你離開了公司,你所寫的文檔很可能還會保留很長時間,被很多後來者閱讀,而你的聲譽也是在這一次次的閱讀中構建的。
優秀的文檔能夠讓人們對你產生信任和好感,相反,質量差的文檔則會使你的聲譽受損。
3.學會包裝
說到包裝,人們往往會產生一種不好的感覺,把它與虛僞、假的東西聯繫在一起。其實,我所說的包裝應該包含兩層意思:
•知道什麼是美的(優秀的)。
•精心製作。
4.嘗試多講
敢說,讓說的和你想的一致。
5.建立社會化聯繫
通過這些社會化的活動能夠使你的想法和技能更加完善。
能夠使你建立權威,你的技術博客,在一些社區上的技術問題解答,以及你的開源項目等都會使人認爲你是這方面的專家。
同樣,你也可以獲得他人的幫助,來解決棘手的難題。
你可以找到與你有相同興趣的人,一起做有趣的事情。
你的社交網絡將因此擴大,這意味着你所獲得的機會將會更多。
這樣一個時代,程序員是一個充滿可能性的職業,你可能成爲下一個馬雲,甚至可能是喬布斯(馬雲和喬布斯都有一個共同點,那就是他們很早就掌握了自我營銷的能力)。如果,你並不想僅僅是一名程序員,那麼你只需要在潛意識中埋下一顆“自我營銷”的種子,讓它跟隨着你慢慢成長,相信我,你的未來將會因此產生很大的不同。

◆ 六、提給年輕程序員的職涯建議
現代社會要求的是T型人才,也就是有一技之長,又能有其他相關技能。

◆ 第二章 談實踐與認知

真正優秀的程序員在與用戶進行溝通時,總是試圖去理解用戶所提出需求背後的真正原因,因爲他們知道用戶往往會按照自己對問題的理解去給出他們認爲正確的方案,而很多情況下,他們所給出的並不是正確或是最優的。那些優秀的程序員會站在用戶的角度,認清問題,並像專家一樣給出他們認爲最優的方案。
如果你每次提出的意見都被證明是正確的,那麼不需要多久,你也會被大家認同爲是一位真正的專家了。

◆ 全棧工程師如何快速構建一個Web應用
沒有最好的架構,只有最合適的架構。
能夠快速構建出一個Web應用或APP是全棧工程師的核心競爭力,這也是爲什麼那麼多初創公司都在尋找全棧工程師的原因。

◆ 如何成爲一名優秀的全棧工程師
對於將持續學習作爲一種生活習慣的人來說,學習新東西並不會成爲一種負擔,反而是一種樂趣。

◆ 我無法寫出易讀的代碼
因爲代碼並不是自然語言,它本來就是難以閱讀的,況且代碼是否易讀不僅與代碼本身有關,還與閱讀代碼的人對系統的理解程度,以及他們自身的技術水平有關。
如何讓你的代碼更易閱讀
推行模式(Patterns)而非建立規範:在項目進入開發階段前,就將那些開發過程中會遇到的相同類型的問題進行分類,併爲它們創建統一的模式(標準的處理方式)
深入理解並尊重你所使用的應用框架
不要使用過多的所謂技巧
Design Review與Code Reivew都很重要
讓你的架構師忙起來:架構師應該承擔起應用架構、代碼規範制定、系統接口定義、技術風險識別、指導團隊開發等很多工作。
小比大好:當一段邏輯變得比較長時,就將它拿出來,起一個與這段代碼功能相對應的名字,封裝成一個新的方法。,這聽起來顯而易見,但我告訴你大部分程序員並不會那麼做,因爲他們似乎遵循着另一個原則:只有當一段邏輯會被多次調用(大於等於兩次)時,才爲它創建一個新的方法。

◆ 第三章 談個人發展

◆ 那些優秀程序員身上的共同特質
1.至少深入理解一門編程語言
•掌握這門語言的使用哲學:包括那些最佳實踐、設計模式及它們背後所蘊含的原則。
•深入理解語言的特性
•瞭解語言的侷限
2.看上去有些“傻”
•不會停止學習的腳步
•使得他們在工作中變得更加嚴謹
3.他們都是現實主義者
•優秀的程序員懂得平衡
•優秀的程序員也深知完成即是價值的道理,他們知道從來沒有絕對的對與錯
•優秀的程序員尊重流程,但會靈活應用。
4.從自己的失敗中學習
5.很懶卻又很高效
6.善於發現並改造輪子
7.並行工作,有效利用時間
8.具備不錯的軟技能
9.身邊有一些優秀的夥伴
10.對生活充滿熱情

◆ 成爲一名自由程序員
(1)Coding碼市(https://mart.coding.net/)
(2)豬八戒網(http://www.zbj.com/)
(3)Freelancer(https://www.freelancer.com/work/)
(4)猿團(http://www.yuantuan.com/)

◆ 未來,有關程序員的10個預言
1.程序員將變得更加全能:與技術相關的行業門檻都在不斷降低,以及專業領域間正在不斷地融合。
2.程序員將更具多樣性
3.工具大爆發讓程序員們效率倍增
4.雲服務加速創新
5.程序員的職能進一步擴展:程序員們也需要能夠掌控全局,而不僅僅侷限於代碼的編寫。
6.程序員成爲更多人的終身職業
7.自由程序員將大量出現:隨着猿團、碼市(Coding)、豬八戒等IT衆包平臺的不斷成熟,以及遠程辦公條件的成熟,軟件開發服務將越來越多地由自由程序員或他們組成的開發團隊去完成,程序員的用人市場也將逐漸流向薪資水平總體偏低的二三線城市,自由程序員將會在那裏大量出現,他們不再受到地域的限制,大部分人將在家辦公。
8.程序員更加國際化
9.出現一些偉大的程序員
10.編程教學改變下一代:編程並不是教會一門開發語言那麼簡單,它讓人們得到一種新的思維方式,而這種思維方式如果能在更小的年齡階段掌握,會讓孩子們在長大後能更好地適應未來的工作和生活。

◆ 第四章 談編程中的教與學

◆ 推薦幾本教孩子學編程的書
(1)《Scratch少兒趣味編程》
(2)《趣學JavaScript——教孩子學編程》
(3)《父與子的編程之旅:與小卡特一起學Python》

◆爲什麼我們不再購買技術類書籍
《精益創業》《增長黑客》《瘋傳》《遊戲化思維》等,能夠讓我更貼近所處的這個時代,作爲一個匠人設計和開發出更優秀的產品來。

◆ 我眼中的技術乾貨與溼貨
我眼中的技術乾貨與溼貨
年輕人喜歡乾貨,因爲他們急切地渴望成長,那些所謂的技術乾貨就是他們眼中的高效助長劑。
大棚裏的蔬果總有着漂亮的外形,但說到口味和營養,卻仍是那些在自然環境下經過風吹日曬,在雨露滋養中生長的會更勝一籌。
程序員也是一樣,一味追求乾貨以期獲得快速的成長,只會讓你如過度施肥的植物般,很快遇到瓶頸而失去持續成長的動力。
演講:閒時我會看TED的演講,除了技術相關的,我也看一些與人文藝術有關的演講。從這些各個領域的人身上,我獲得了很多靈感,也使我發現了不同的興趣。除了技術你還應該去發現不同的興趣愛好,這會使你變得更好。

◆ 爲什麼你應該讓你的孩子儘早學習編程
大部分的家長可能都會讓自己的孩子至少學習樂器、運動或棋類中的一項甚至幾項。但你有沒有想過讓你的孩子儘早(6~8歲)開始學習編程呢?相信很多家長都會有這樣的疑惑:爲什麼要讓那麼小的孩子學習編程呢?編程對孩子有些什麼好處?如果孩子連數學、語文、英語這些基礎都沒掌握好,他們能學好編程嗎?我暫且不談我的觀點,而是試着讓你瞭解那些你可能更信任的人是怎麼說的:

編程應當與ABC字母表和顏色同時得到教學,所有人都應該更早地學習如何編程。——美國前總統 奧巴馬
人人都應該學習一種計算機語言,因爲它將教會你如何思考。——蘋果創始人 喬布斯
人工智能將取代所有簡單重複腦力勞動。——百度CEO 李彥宏
未來20年,美國可能被機器人取代的職位比例爲47%,英國爲35%。——牛津大學研究報告
富士康正在實施百萬機器人計劃,替代目前大量使用的一線工人。——富士康總裁 郭臺銘

比爾·蓋茨和扎克伯格等一些科技大佬們更是直接通過在線視頻教授孩子學習編程。這些各個領域最優秀的人物爲什麼會不約而同地認識到編程對於孩子甚至每個人的重要性呢?我想,或許是因爲他們比我們大多數人都更早地意識到了社會正在經歷的變革及它的發展方向。

◆ 爲什麼應該讓你的孩子儘早學習編程呢?
1.學習編程能讓孩子們變得更好
孩子們通過編程製作出了包含家人照片的簡單網頁,他們覺得這是一件很酷的事情,朋友們看到後都很羨慕他們的這個新技能,孩子們變得比以前更加開放,更有自信了。
•通過一次次的動手開發,我看到孩子們變得更有耐心,也更有專注力了。而更重要的是在這個過程中,他們會嘗試着去自己解決遇到的問題。
•在完成我佈置的一個個任務之後,孩子們往往會自己想着用掌握的這些很基礎的編程技巧,去實現他們想象的更復雜的東西。他們將自己的創意通過編程轉化爲了現實。
•更多好的想法,隨着他們編程技能的增長不斷地被激發出來。你會發現他們的好奇心和求知慾都變得比以前更強了。
2.學習編程非常簡單而且快樂
若不是從小玩遊戲,我絕不會學編程。——Facebook CEO 扎克伯格
•教孩子編程的培訓機構相對較少,並且費用往往很高。
•我們都不會編程,所以很難去指導孩子,以及衡量孩子是否學得好。
3.對學校教育有很好的促進作用
國內的學校對孩子基礎課程的教育都是非常重視的,比如,語文、數學、英語這些,有些更是走在了世界的前面,但在另一些我認爲非常重要的方面缺乏足夠的重視,比如,美學教育(Art and Design),計算機教育(Computer Science)。下面這張圖顯示英國要求5歲以上的孩子必須學習電腦編程。
對國內的孩子來說,我也建議儘可能早地開始學習編程。只要他們已經具備了比較好的語言表達和理解能力,以及一些最基本的邏輯思維能力作爲基礎就可以開始學習編程了。和學習語言一樣,學習編程也是越早越好。通過學習編程,能夠非常有效地拓展孩子的思維,你會發現孩子思維的邏輯性與延展性變得比之前更好了。另外,他們也會自己創造出一種更好的學習和處理問題的方法,這對閱讀、算術、寫作等幾乎所有學科都會產生很好的促進作用。
4.更好地適應未來的科技社會
今天的許多職業都將會因科技的進步而漸漸消失,但同時會有更多新興的職業產生,而它們中的大部分可能都需要具備編程能力,這可能也是有人預測程序員可能是未來最後一個被人工智能所取代的職業的原因。
總之,我相信編程已不僅是信息行業對人才的需求,而且將成爲所有行業的需求。儘早讓孩子們學習編程,能夠讓他們更好地適應未來的科技社會,並在未來具備更強的競爭力。

◆ 學習編程從“玩”開始
有很多編程書,雖然名字是教孩子編程,但往往一上來就會介紹編程語言,以及它們的語法等,好像學編程就是學一種編程語言一樣。然而,對於孩子來說,這種做法其實並不可取。編程與我們今天做的很多創造性工作非常類似,對於學習編程來說,更重要的是學習這樣一種思維方式。因此,我們應該首先站在更抽象和宏觀的角度來向孩子介紹編程,並同樣以孩子特有的發散思維來加以引導,而不應過早將它與具體的某一種編程語言聯繫起來,這樣反而會限制學習者的思維,降低孩子們的學習熱情和興趣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章