程序員的成長離不開哪些軟技能?

程序員要如何討人喜歡、令人欣賞、通過自己富有積極性和支持性的行為去激勵他人?
比如說關心自己,關愛自己的背部、臀部乃至大腦重要嗎?如果你不關心它們,它們終究會壞掉。怎樣這些可以不壞掉?我們有什麼需要學習的軟技能?


自學能力!
這個真的很重要,行業在飛速發展,不可能一直靠著學校教的東西來吃老本的。不要以為給本書,給個文檔,是個程序員就能學會一門新技能。事實上人和人的差別真的很大,我見過自學能力驚人的人為了看懂日劇日漫自學日語達到可以和日本人交流的程度,也見過很多連HTML+CSS入門都要別人一口一口喂的。

為了時刻跟上行業的發展速度,保證自己不被淘汰,我也一直在努力提高自己的學習能力。

我理解的自學能力分這幾點:

首先是學習內容的選擇能力,就web前端開發而言,每年甚至每個月都有新東西出來。這就涉及到一個選擇性學習的問題,你不能今天搞一下angular,明天又去弄一弄vue,要弄清楚自己學習的真正目的。比如我們公司就會有涉及到不同的產品線,有的人負責PC端的ERP應用開發,有大量的數據處理和DOM操作,面對產品那邊不斷過來的新需求,會有大量的可復用組件需要封裝。所以負責這一塊的同事更多的是學習jQuery和類似庫的操作已經PC各瀏覽器的兼容性和性能。同時還有hybrid APP的產品在開發,負責這一塊的同事就天天抱著一堆手機在弄,平時研究得更多的就是移動端的一些技術了。所以有時候別看大家都在做前端,其實有時候做的事情差別還蠻大的。家裡還有老婆孩子等著去照顧,我們有時候真的沒有那麼多精力去學會這個行業的所有的東西,找准自己的興趣點和方向很重要。

其次是學習的速度和質量平衡。去一家新公司或者介入一個新產品的開發,很可能會碰到之前從來沒接觸過的技術,這就是考驗我們能不能在很短的時間內迅速上手。我們在學校學習的時候可以捧著各種「權威指南」慢慢啃,但是工作中很多時候壓根就沒太多時間去學習。我的做法是在了解之後迅速看各種實例以及公司現在的相關源代碼,爭取讓自己感覺能上手幹活,然後再慢慢去研究裡面的一些細枝末節的東西。

我在學習的時候發現很多時候我學過的知識點很容易過一段時間就忘記。比如JavaScript中的面向對象這一塊,我最開始學習的時候只是捧著高程使勁看,跟著書裡面的思路去理解,發現其實挺簡單。但是過段時間又忘記該怎麼開始了,反覆循環了幾次之後,我用了一個很笨的方法,那就是對著書使勁敲。邊理解邊敲,發現其實很多地方自己記憶有盲點,記得並不是很牢固。這裡我主要用了兩本書,一本是《JavaScript高級程序設計》,一本是《JavaScript面向對象編程指南》。在確保自己對書上的各種封裝繼承實例爛熟於心之後開始去github上找相對應難度的實例去看,這樣在看了很多對面向對象的直接應用方法之後慢慢有了更深刻的理解。

說一句題外話,我從開始學習敲代碼的時候就喜歡對著書上的代碼使勁敲,多敲幾遍真的很能鞏固自己的記憶和理解。但是有時候覺得厚厚的書拿在手上很不方便,所以去淘了一件神器,夾住書立在我電腦旁邊,覺得還蠻不錯的。

註:大家去某寶搜索「夾書」,「書夾子」之類的關鍵字,找自己喜歡的款式喜歡的價格就行啦,很好找的,這裡就不打廣告了,嘿嘿。


Perl語言的發明人Larry Wall說,好的程序員有3種美德: 懶惰、急躁和傲慢(Laziness, Impatience and hubris)。

懶惰:

是這樣一種品質,它使得你花大力氣去避免消耗過多的精力。它敦促你寫出節省體力的程序,同時別人也能利用它們。為此你會寫出完善的文檔,以免別人問你太多問題。

急躁:

是這樣一種憤怒----當你發現計算機懶洋洋地不給出結果。於是你寫出更優秀的代碼,能儘快真正的解決問題。至少看上去是這樣。

傲慢:

極度的自信,使你有信心寫出(或維護)別人挑不出毛病的程序。

懶惰、急躁和傲慢(Laziness, Impatience and hubris)

為什麼上面得贊多的回答都那麼長?!贊我!(這一句完美體現了我的懶惰、急躁和傲慢)


能夠 debug 人類(自己或他人)行為的能力。簡單來說,就是回答以下問題:「為什麼這個人的行為跟我預想的不一樣?」、「如何能夠讓這個人的行為變得跟我想要的結果一樣?」、「需要付出多大的代價才能讓這個人的行為變得跟我想要的結果一樣?」你需要回答的這些問題跟你在 debug 程序時需要回答的問題很相似,但需要用到的能力很不一樣。


最近也在思考這個問題。大概說說我的想法吧。

我現在在矽谷某廠當程序猿,目前是個小技術負責人,下面帶幾個小朋友做項目。弊廠碼農人數還算多,所以多了很多大公司扯皮部分,對小公司不一定適用。另外,我好多詞實在想不出中文是啥,請輕拍(或者請幫忙翻譯)。

1. 臉皮要厚。從項目最開始,就要搞清楚需求,有什麼可能的技術難點。要搞清楚誰是stakeholder,搞清楚了之後要臉皮厚不停地騷擾,一定要在項目開始之前達成共識。不理你不代表他默許了,所以一定要臉皮厚,不停騷擾,直到他們理你。

當然騷擾也要有技巧,騷擾一兩次不成,就讓上司出馬。上司出馬不成,就讓上司的上司出面。如果都不行,可能需要反思一下,是不是在做正確的項目。一個有影響力的大項目,大家都是會很樂意幫忙,然後署個名之類的。至少,我launch letter上面,一般會把騷擾過的所有人感謝一遍,或者列在合作組。

在大公司,很多人級別比你高很多。在矽谷,很多大佬不是華人。一定要厚臉皮和他們打交道。經常還是會被噴回來,最慘的一次,因為我級別低,跑去和大佬談,然後大佬直接就噴我老闆了,說你們組沒人了嗎,派個這麼低級的人來和我談。作為一個柔弱妹紙,我當時差點哭了。不過當時的老闆挺好的,安慰我說,反正你看,別人噴也是直接噴他,他頂鍋,我該幹嘛幹嘛。

2. 要會提高visibility。我以前是個很沒存在感的人。我大一暑假全班大部分同學一起回高中,只有數學老師和化學老師還知道我名字。語文老師記得我去哪個學校了但是不記得我名字。物理和英語老師完全對我沒印象了。虧我還是去N個號稱全國第三的高校之一。我工作的頭幾年也是這樣,導致我成長很慢。很多明明是我管的東西,沒有人來問我,然後又重複造輪子,造到一半我老闆發現了,再和別人撕,搶地盤。還有很多東西我做了,組員,甚至老闆都不知道我做了。

然後,我學會了,整理自己做過的東西,掛在公司內部網站上,想查的人能查的到。主動聯絡其他組的老闆,說可以在別人組的組會給tech talk。積極回答mailing list上面的問題。我還做了幾個巨大的poster貼座位附近的牆壁上,會議室的門口,給自己項目在內部打廣告。

現在我覺得我還是有點存在感。我整個領域的相關問題,大部分別人還是知道,應該問我,或者問我們組。

3. 要會表達。我覺得雖然我英語很爛,但是很多溝通問題,即便我是用中文,也未必能表達得好。主要兩個問題吧。1,要給人提供context(上下文)。經常說了一大堆,別人不知道我在說什麼。一個相關例子是我一次做一個review slides,我按照論文presentation的風格,頁面簡潔,圖表多多,關鍵問題準備都靠說。然後被老闆批了一頓,說又沒有論文給我backup,這個slides是要被存檔,給大家閱讀的。要把context都寫清楚,別人不讀其他參考文檔不聽講光看也要能看懂。2. 溝通要有效。有次婉轉給同事表達了意見希望他能改正,但是沒有任何效果。後來我明確告訴他我的期望他怎麼做,否則有什麼不好的影響,云云,他立刻表示馬上改正。當然也可能歐美人不習慣委婉這種事吧。

先想到這麼多。。。


題主的這個問題非常好,我來針對矽谷互聯網公司(或者中國外企)的情況來回答一波。在這個時代,酒香也怕巷子深,程序員軟技能的提升迫在眉睫。

第一點,我覺得我們的中國的程序員,主動表達的能力和意願,還有很大的提升空間。高級程序員的職場進階,這種soft skill比你的代碼能力更為重要。君不見在矽谷諸多老印都有舌燦蓮花的本事,可能代碼能力並不強,但可能爬得卻很快。要是在5年前,我會跟你一起鄙視這種人,很不屑地說:「就會搞關係。」 但到現在帶了人之後,我也能理解這類能很好表達自己的人,可能他付出了你看不到的努力,有時這種有效的表達,再加上實打實的工作成果,的確要比埋頭碼三天三夜代碼的價值要高。這一點說起來很殘酷,卻是現實。

我舉個真實的例子,當年我剛進組不久,只認為埋頭努力寫代碼就是最為重要的:希望用實力和勤奮在此擁有一席之地。而你的老印同事Mohid(之前微軟的高級經理)經常問組裡人要不要咖啡或者別的東西,他正好出門給帶一下。有一天,他又給我帶了杯香草拿鐵,然後坐在我身邊,開始和我交流最近組裡的項目,並高度讚揚了我負責的代碼,他這一下讓我瞬間改變了對於印度人的看法:

又有一天,我依然在努力地碼代碼,Mohid說發現一家特別不錯的印度餐館,而且味道和他家鄉的一樣,他想邀請大家去嘗嘗,我因為在趕due而婉拒,而大多數同事都去了;

到後來,在項目快要完成的時候,PM突然說要加一個功能,我氣地面紅耳赤說不出話來(英語實在是捉急),而Mohid站出來和PM激烈的撕B,並戰而勝之,保住了我們工程師3個月的成果,我們都對他感激得不行;

後來一段時間我偶然發現,Mohid和幾個組的Leader都很熟悉,沒事的時候總能攀談幾句,甚至約一起去周末的hiking,而逐漸地我只能點頭示意或者say hi。

最後到了年底,我已經發現雖然我夜夜debug到很晚,但是很多時候我在戰略上犯了懶惰的錯誤,沒有有效地去考慮impact。而整天看似「談笑風生」的Mohid因為有效地保證了兩個核心項目的進度,最終deliver項目上線,Perf review很好(當然我也不是很差,畢竟我感覺自己的努力程度比他高上不少)。後來我開始反思,努力並不僅僅指的是埋頭做事,這跟學校不同,更要學會站在更高的層面思考,這就是後來雷軍說的一句:「不要用戰術上的勤奮來掩飾自己戰略上的懶惰。」 在職場,為感動自己而工作,是最可怕的。

後來我回國後,怕我英語退化,開始下載扇貝單詞和英語流利說,每天讀和記。我覺得自己之前不擅長和陌生同事打交道,現在逼自己多參加一些活動和約人吃飯。這時我突然想起之前開復老師有一年強行要求自己工作日的中飯不能自己一個人吃,要約人聊天,原來是背後他也曾有過這樣的苦惱。

有些時候,特別是技術工作了三年以上,「碼代碼,修bug」逐漸成為一個技術人員的舒適區域。而有的人在這一步里停滯不前,而有的人繼續咬牙前進,因為很多時候,過來人都清楚代碼可能只是項目成功、職場全壘打的一部分(甚至是一個小部分)。

第二點,愛惜身體,保持健康的體魄。一直有一句俗話:「吸煙有害健康」。我之前每次回國都驚訝於國內的煙民如此之多,本來中國的全名醫療保險就基本沒有,我們年輕人更要愛惜身體。另外多運動,我的親身體驗是,運動一小時,思路會變得很清晰。最重要的是,不要給自己懶散的生活態度找借口!

第三點, 善於復盤和總結工作上的優缺點,死磕自己,永不妥協。每天寫一段「新」代碼 + 每天複習英語 + 每天鍛煉,這三件神器都是有複利屬性的,只要你能堅持3個月開始養成習慣,這對於你整個以後的人生都是改變巨大的。關於這一點,我在另一篇回答中有一些如何記錄和總結的經驗分享,有興趣的可以移步。哪些事做起來無聊但堅持越久意義越大? - 覃超的回答 - 知乎

- Salvation Lies Within.


這是公司之前給我們培訓Soft Skill用的全套培訓材料,受益匪淺,是我職業生涯中黃金般的能量。
需要的人就點贊吧,我要把這套東西整理、翻譯到這裡來,工程有點大,我真不知道能不能堅持下去!

第一更:職業生涯的四個階段:

1. 受助和學習階段

1)在別人的幫助下完成分配的任務
2)適應和熟悉工作環境
3)遇到問題的情況下能夠及時彙報問題,並在別人的幫助下解決問題
2.獨立貢獻階段
1)按時高質量完成分配的任務
2)獨立完成有挑戰性的任務
3)獨立解決非預期問題。
4)對整個項目/系統有整體的認識
3. 帶動他人一起貢獻階段
1) 具備深度和廣度相結合的專業知識和技能
2) 能夠根據需要完成團隊組建
3) 能夠為他人分享經驗
4) 協助他人處理問題並傳授處理問題的方法
5) 創建團隊協作環境
6) 帶領團隊關注結果
4. 領導創新階段
1)對行業和領域具備一定的前瞻性
2)專業水準得到組織內部及同行的認可
3)根據專業判斷為組織制定發展戰略

第二更:工作壓力及如何緩解壓力

心理壓力源

(1)認知性

目標模糊、不確定
,約定的目標難以執行 ,時間緊或等待 ,難以選擇或沒有選擇

(2)情緒性

恐懼、焦慮
、失敗、悲傷、憤怒、挫折、損失和負罪感 ,厭倦產生的動機衝突、想家 ,精神上的誘惑導致喪失信仰 ,人與人的感情

軀體壓力源

(1)睡眠缺乏 ,營養缺乏、疲勞 、傷病


如何判斷自己壓力過大?

如果你有發現自己有如下情況,可以判斷為壓力過大

  • 不斷地讓自己接受新的工作,同時也不放棄原有的工作
  • 開始懷疑生活、事業或者工作的意義。
  • 雖然很喜歡自己的工作,但投入過多的時間時有感到很內疚。
  • 有時候會莫名其妙地心煩意亂,甚至感到透不過氣來。
  • 你知道你的工作需要感情投入,但不知道怎麼做到。
  • 希望對工作更有自信心。
  • 似乎沒有其他時間學新的東西。
  • 在工作空閑的時候也很難放鬆。
  • 有時候會莫名其妙地心煩意亂,甚至感到透不過氣來

如何緩解工作中的壓力?

立刻緩解法:

  • 停下手頭的工作,去喝杯水或者看看窗外。
  • 戴上耳機聽一會音樂。
  • 隨便找個話題找你身邊的人聊上幾句。
  • 換個其他事情做一下,轉移一下注意力。
  • 閉上眼睛,可以快速澆滅怒火。
  • 轉轉脖子,緩解僵硬。
  • 擁抱自己,用雙臂緊緊擁抱一下自己。
  • 聞聞植物,離綠色植物10厘米左右,深呼吸5次。
  • 自我解嘲。
  • 擊掌、跺腳,兩三分鐘即可。

長期緩解法:

  • 設置一個明確的目標,努力弄清楚自己想做什麼,該怎麼做,越早好。盡量做自己喜歡的事,設置今後幾個月或幾年的目標。
  • 和諧的關係。努力在同事、合作者間尋求和諧輕鬆,有所回報的關係。
  • 完成工作的時間表。制定每項工作的完成時間。
  • 學會心理換檔。每小時工作中抽出5分鐘來放鬆自己。
  • 及時處理問題。越棘手的問題優先解決。
  • 快樂的工作。
  • 多參與戶外活動或者體育活動。

第三更:如何控制需求

當測試人員發現一個BUG,第一時間肯定是交給開發人員修復,那麼這些BUG都是開發造成的嗎?不一定!很多BUG其實是由需求造成的。那麼如何控制需求呢?

接到需求需要問的幾個問題:

1. 就這個需求而言,客戶/用戶真正需要的是什麼?如果客戶提出「我需要一匹跑的更快的馬」,你可能會為客戶提供一匹汗血寶馬。但是客戶的真正需求是「更快」,而馬只是一個解決方案,因為在汽車剛發明的時候,他可能從來沒有見過汽車。
2. 這個需求真的有價值嗎?如果用戶提出在一個在線遊戲平台做一個虛擬商品拍賣的功能,但是虛擬商品的有效期非常短,那麼明顯這個拍賣功能就沒什麼價值,因為拍賣不可能那麼高時效性。
3.這個需求是合理的嗎?有沒有隱藏的疏漏或者BUG。
4. 給出的需求信息裡面是否完整包含「作為一個【角色】, 我想要一個【功能描述/目標期望】以滿足【商業價值】」這裡面的三個要素。
5. 這個需求是否還有其他關聯/隱藏的疑慮需要考慮?

如果上面問題都解決了,那麼就可以接著解決以下兩個問題:

1. 這個需求能否分解為更小單位的需求?這樣可以方便分配開發任務。
2. 這個需求如何進行測試? 任何需求都需要保證能夠被測試。

在保證需求沒有問題以後,就可以按照下面的步驟處理需求:
1. 對需求進行優先順序排序。
2. 把需求分解為最小可開發的Task(任務)
3. 如果還有遺留的問題/風險,建一個Task來處理這些風險/問題。

第四更:如何高效的管理自己的時間(感謝@林嗣幫忙翻譯

  1. 定期回顧一下前一段時間都做了什麼,時間都花費到哪裡了
  2. 分析一下自己的強項和弱項,弱項更可能花費更多的時間
  3. 列出自己近期的目標,並按優先順序排序
  4. 確保自己的工作方向與上級工作要求保持一致(避免返工)
  5. 掌握瑞士乳酪法--在一個比較大的任務中使用"見縫插針"的方法利用時間,而不要消極等待整塊時間的出現
  6. 詳細的規劃自己的任務進度
  7. 結合自己的工作計劃建立自己的日程表,並保持不斷的更新
  8. 把工作和生活劃分開,留出固定的時間給私人生活(不然會很累)
  9. 把簡單的工作儘早完成
  10. 可以不參加的會議堅決不要參加
  11. 不要太為難自己--如果你覺得事情太多掌控不過來,那就從最重要/最緊急的一件一件的去做

第五更:寫電子郵件的10要10不要(感謝 @丁丁幫忙翻譯!)

10不要:
Don』t write a novel—avoid long sentences
不要在郵件裡面寫小說 - 避免長篇大論,避免使用長句子
Don』t use email to discuss confidential information
不要用郵件討論機密信息
Don』t write in CAPITALS
不要全部使用大寫字母(不要使用怪異字體)
Don』t copy a message or attachment without permission
不要在未經許可的情況下複製消息或附件
Don』t overuse the high priority option
不要濫用「重要」標籤
Don』t leave out the message thread
多使用郵件的回復功能以保留必要的背景信息
Don』t ask to recall a message
不要要求對方撤回郵件
Don』t make things 「urgent」 if they are not
不要濫用「緊急」標籤
Don"t forward virus hoaxes and chain letters
不要轉發惡作劇病毒和連鎖信件
Don』t reply to spam
不要回復垃圾郵件

十要:
Do be concise and to the point
表達做到簡潔到位
Do know the appropriate use of: To, CC, and BCC
知道得體的使用「收件,抄送,密送」
Do minimize the use of the 「reply to all」 button
做到儘可能少用「回復給所有人」按鈕
Do use proper spelling, grammar punctuation
恰當的使用字母拼寫,語法和標點符號
Do answer all questions, and preempt further questions
確保回答所有的問題,避免更多的問題
Do answer swiftly
做到迅速回復
Do take care with abbreviations and emotions.
謹慎使用縮寫和表情符號
Do use a meaningful subject line
使用有意義的標題
Do avoid sending personal emails from your office address
避免在辦公地點發送私人郵件
Do read the email before sending
發送郵件前通讀一遍確認

第六更:撰寫郵件的幾個技巧
記住KISS原則... Keep It Short and Simple!
1.抓重點,郵件第一句話就把五個W講清楚(Who, What, When, Why, Where)。
2.郵件結尾寫明你需要對方做什麼或者你會做什麼。
3.站在閱讀方的視角來寫郵件
4.一封郵件盡量只說一件事
5.如果有多個問題,用數字標出來,這樣對方更容易根據問題序號一個一個回答
6.做好保密工作,特別在回復所有人的時候。
7.謹點發送按鈕(確認是否發送對象是否正確、是否缺少附件等)

第七更:自我總結
上面提到的這些技能是職場或者辦公室相關的一些工作技巧和溝通技巧,這些軟技能有助於打造自己的專業素養綜合素質,但是就程序員本職工作來講,我認為還有以下技能掌握了以後會讓你在共走中更得心應手,這部分是我在回答其他問題的時候總結的,列在這裡供大家參考:
1. 程序員如何快速上手一個自己不太熟悉的新項目?有什麼技巧? - Jim Jin 的回答
2. 程序猿如何快速高效的改 bug?改bug都有哪些技巧? - Jim Jin 的回答
3. 程序員怎樣避免高強度的工作? - Jim Jin 的回答


較真


一個人的命運啊,當然要靠自我奮鬥,但是也要考慮到歷史的行程。下面,牛妹來談一談個人對程序員所需軟技能的理解:


一、自我奮鬥篇1、老司機說:編程=英語+搜索
編程作為一門應用性很強的學科,不管是在工作中還是學習中,借用現成的經驗不重複造輪子很重要。所以「搜索」就變得很重要了,當然,這裡的搜索是廣義的搜索,可以理解為平時要多積累工作和學習的資源,比如博客,網站,github等等。

牛妹自己的一些私藏,分享給大家:

(1)題庫網站

TopCoder:全世界規模最大的程序競賽網站,其中包含了演算法競賽。

Codeforces:俄羅斯最大的演算法比賽網站,是自我學習的好地方。

CodeChef:印度最大的演算法競賽網站。

AtCoder:日本最大的演算法競賽網站,題風很棒,有英文和日文題解。

leetcode:世界知名的演演算法面試考題網站。想要省時省力的面試官從裡面挑題目,於是求職者 不得不去練習這些題目。部分題目還要收費。但是很多題目在實際工作中並不沒有用處,很多純屬考察腦洞。


nowcoder:牛客網,國內知名面試筆試題庫,不光是面試演算法題,還涵蓋各種語言版塊的題目,國內計算機軟體相關學生找工作必刷平台。討論區有許多面經乾貨,也經常有大公司的hr出現在討論區。

(2)教學網站

Matrix67:一直十分仰慕M67。數學愛好者的天堂。

Wolfram Math World:這個網站收集了豐富的數學資料。如果遇到數學問題,可以到這裡查詢資料。

http://planetmath.org:這個網站的目標是稱為數學的百科全書,有很多好讀的數學文章。


The On-Line Encyclopedia of Integer Sequences:收集了幾乎世界上所有出現過的數列,找規律題神器。

(3)計算機類的書籍推薦

有哪些你看了以後大呼過癮的編程書? - 迪公主的回答 - 知乎

有哪些你看了以後大呼過癮的編程書? - 伊比利亞猞猁的回答 - 知乎

(4)github的使用技巧


https://www.zhihu.com/question/20070065/answer/129775235

第一項軟技能就是:學會快速找到可以copy的經驗。

2、混江湖要守規矩**

做程序員,跟做其他職業本質上沒有區別,都是做份工而已。每一行都有每一行的規矩,每一家公司都有每一家公司的規矩,既然入了這一行,進了這家公司,你就要守規矩。有些規矩是明面上的,有些規矩是比較模糊的,但是比較模糊的一般都有前例可循,這些加起來就是常識,常識就是那條不能跨越的紅線。

現在大家對於科技行業,程序員圈子的描繪有點兒太過理想化,而忽視了現實的環境,丟掉了一些基本常識,出現了一些比較可惜的事情:有些人因為將零食區的零食拿了很多回家吃被開除了,有些人因為吵架踢了別人一腳被開除了,有些人因為搶月餅被開除了... ...不管事後輿論如何,對於這些人個人總歸是一段不好的經歷,雖然有些事情並非有意,也並不是什麼大事。

第二項軟技能就是:有常識,懂規矩(自帶勢能的new balance除外)。

3、臉皮厚一點成長更快些**

該條主要是對新進入職場的新人來講的。作為新人,肯定有很多不懂的地方,但是看到那些程序員老人們都在忙自己的事情,有時候就不太敢去問他們,怕太頻繁提問打擾到別人。

有時候碰到老程序員心情不好或者問煩了,說你兩句「這個不是就是xxxx嘛,這還用我告訴你嘛」「怎麼這麼笨啊」,我們就更不敢去問了。結果閉門造車,束手束腳,反而問題會越來越多。不如臉皮厚一些,挨罵了就左耳進右耳出,當然該要改進的還是要改進的。沒事的時候擼個串,扯扯淡,關係自然就親近了。

第三項軟技能就是:臉皮要厚,抗壓能力要強。

二、歷史「進程」篇
所謂的歷史行程,也就是規律,一般通過大數據統計能發現。而且,越是穩定的環境,這種規律性越明顯。

早期的互聯網還是一個草根與精英共生的環境,各種背景的人都在行業裡面追逐財富和夢想。隨著十幾年的發展,這個行業也越來越成熟,慢慢開始出現階層固化。比如,越來越多的大企業開始只招收985、211的學生,總監或者VP級別的很多都要求清華北大的教育背景。

對於剛入行或者年輕的程序員,更是要求我們弄清楚自己的目標,找好職業發展的關鍵點。

最近是校招季,很多人在牛客網的討論區討論offer比較的問題,有的人說選擇錢多的,有的說選擇給戶口的,有的說選擇名氣大的公司... ...這些選擇都有其各自的道理,但是很多人或者說絕大多數的人都沒有考慮到整個的職業發展的問題。進入了職場之後也是如此,好多人只是在埋頭幹活,卻忘記了抬頭看路。

有人說,我剛入行怎麼能知道未來的發展方向呢?其實很簡單,有些路別人已經走過了,你可以跟那些老司機聊聊,看看他們的職業發展是怎樣做選擇的,那些職業發展比較快的人是怎樣做選擇的,慢慢你就能夠梳理出來適合你的發展路徑了,剩下的就是個人奮鬥的事情了。

第四項技能就是:做好職業規劃,看清職業進階的路徑。


推薦一本軟技能的書,不合適可以拍磚。

軟技能:代碼之外的生存指南

這是一本真正從「人」(而非技術也非管理)的角度關注軟體開發人員自身發展的書。書中論述的內容既涉及生活習慣,又包括思維方式,凸顯技術中「人」的因素,全面講解軟體行業從業人員所需知道的所有「軟技能」。 讓你成為一名優秀的軟體開發人員。

其中講「十步學習法」的章節值得閱讀

「十步學習法」的基本思想就是:要對自己要學的內容有個基本的了解——了解自己不知道什麼就足矣。然後,利用這些信息勾勒出學習的範圍,即需要學哪些內容,以及學成之後又會獲得什麼。依靠這些知識,你可以找出各種資源(不局限於書)來幫助自己學習。最後,你可以創建自己的學習計劃,列出要去學習哪些相關課程,篩選學習材料,只保留能幫助自己達成目標的優質內容。


一旦完成這些工作,你對自己要學什麼和怎樣學都瞭然於胸,你就可以把控自己的學習計劃中的每個關鍵點,通過「學習—實踐—掌握—教授」(Learning, Doing, Learning and Teaching,LDLT)的過程,獲得對該學科的深刻理解,同時你也向著自己的目標前進。


「十步學習法」的第一部分是研究,它是一次性完成的。但是從第7步到第10步則是重複的過程,貫穿於你的學習計劃的各個模塊。這個方法非常奏效,因為它迫使你提前明確自己的學習目標,也持續不斷的激勵你通過實踐(而不僅僅是讀書或聽講座)向著目標前進。

認請自己,讓你知道自己是哪類軟體開發人員。

作為成長期的程序員可以學會:

  • 如何管理職業生涯,如何在職業生涯中做出正確選擇;
  • 如何以更好、更有效的方式學習,以及如何儘可能富有成效,以及在缺乏動力而心灰意冷的時候該如何去做;
  • 有關理財的基礎知識,有關身心健康的基礎知識,以及——作為一個軟體開發人員,乃至於作為生活在這個星球上的一個「人」,這些事情會如何影響到我。

作者很帥,嘻嘻!我這算花痴嗎?

收穫作譯者簽名版啦!!!!用美圖修了個圖,修的不好,輕點吐槽,哈哈


這個問題也是我司在面試過程中經常被問到的,其背後的含義是「我的哪些軟技能能讓你們心動?」這個問題很難用一言兩語來解答,講幾個同事的小故事哈,答案就在這兒了:

1、自信,就是在不確定的情況下把事情做好

ThoughtWorks招過一個程序員,剛來時普通話說的有些吃力,工作三年依然有著畢業生的羞澀。而如今,他是一名資深的諮詢師,專業的演講師,熟練的培訓師,還在一個大項目承擔Tech Lead的職責。同樣是三年,他在ThoughtWorks完成了一個從青澀走向成熟的蛻變。

這些還不是關於他的全部,他在業餘時間還寫了一本書,正在亞馬遜熱賣。

從程序員到Tech Lead,過渡是自然而然,感覺還能hold住。而轉型諮詢師卻不然,初到客戶現場時,他就像武俠里被廢了武功的除名弟子,被扔進谷底。以前玩的是飈代碼,現在拼的是服務客戶,套路上隔著十八班武藝。

「我當時沒什麼自信」,回憶起來那段經歷,他這樣說。

既然改變已經發生了,那就儘力做好。沒有自信,可以建立自信,沒有武功,可以從零學起。

他在「絕情谷底」總結了三條生存法則:

  1. 不要多想,直接去做,反正也沒有時間想別的;
  2. 不敢演講,那就多練 ,反正客戶等著,不講也不行;
  3. 不斷提高,那就多學,反正總有建(tiao)議(ti)和反(tu)饋(cao)。

他為自己設立了一個目標,一周演講兩次,這樣一年下來就講了三四十次。時間長了,突然有一天,他發現自己在人前講話不緊張了。

那時感覺自己是被逼的,不過現在挺感謝逼我的人,當時在不確定的情況下我只想一件事情,那就是把手頭的事情做好。做著做著就發現,原來我真的可以做的很好。

自信就這麼來了。這個人叫格茸扎西。

2、成長,從單一領域技術員到全領域多面手

「你覺得角色轉換對你成長有幫助嗎」?我問我的sponsee安輝。(試用期過後,每個人會有一個幫助他成長的sponsor)

「肯定有,在很多提升能力、拓寬眼界方面,不同的角色會帶來不一樣的體驗和視角。」安輝的回答。

做QA的時候需要培養硬技能,研究自動化測試、性能測試的理論和技術;做BA的時候要和客戶打交道、管理客戶期望,會用到一些綜合能力;做PM時需要對全局有好的認識,做風險的識別和管控,這些會給予人不同的鍛煉和收穫。

「真正換了角色之後,再從另一個視角看以前做的事情,會有不同的收穫,也會有新的認識。所以如果有一天我繼續回去做QA,應該會做的更好」。安輝總結著自己的經驗,也分享自己的心得。

「我現在挺喜歡自己正在做的事情,也很喜歡這種工作狀態,因為這份工作我還不能完全勝任,所以會覺得每天學到新東西,有挑戰也有激勵。」

角色的多樣化成就了他的快速成長,反正做什麼練什麼,練什麼就學什麼,如果你面臨角色轉換而猶豫不決,安輝會告訴你:

機會這麼多,多嘗試一下。有了不同的視角之後,認識會更全面,也會有新的見解出來,這對以後的職業發展很有幫助,這些經歷會讓你從一個純粹的技術人員,成長為一個比較全面的真正獨當一面的專業人士。

3、發展,是帶領別人一起突破一起堅持

發展別人是一件很難的事情,真的非常困難。

她叫林冰玉,是ThoughtWorks中國區QA社區的負責人,同時也在北京的一個團隊上面做QA。

QA的社區活動做了好多年,越來越有影響力;冰玉也在持續寫文章、做演講,多渠道的輸出自己在QA領域的經驗和洞見。在身體力行做這些事情的同時,她影響了更多的人,越來越多的追隨者加入進來,為向外輸出經驗、培養人才提供了力量來源。難能寶貴的是,在參與社區活動的同時,每個參與者都在項目工作中表現的十分出色。

一家專業服務公司要保持持續的競爭力,必須有不斷成長出來的人和持續發展的人的能力。

「其實,有得必有失。比如花在社區發展的時間多了,在QA專業這條道路的時間就少了,這是必然的結果,也是需要權衡的問題。做社區活動,很多地方需要操心,絕對鍛煉人的思考能力以及其它一些綜合能力,這也是一種收穫。」冰玉總結自己的心得經驗。

有的時候,工作的轉變可能來自一個外部因素,但做著做著,外因就變成了內在的動因,支持這些事情持續進行下去。因為既然做了,就要做好,是內心的那股勁讓很多事情落地生根,從而凝聚了一批志同道合的人。

......

現在流行「跨界」這個詞,跨界人才指的是具備兩個專業以上的知識或經驗的複合型人才。在ThoughtWorks,這已經是一種常態。

(文/陳慶敏)


1.頭髮的護理與再生
2.抵禦外界各種秀恩愛
3.學會甩鍋
4.治好拖延症


對於程序員來說,學習技術從來不是問題。真正重要的職業發展之路,軟技能在程序之外:

最佳的職業發展之路,是堅持從事技術工作,注意技術面的擴展,努力成為能夠一個人做出產品的技術牛人而不是在個別領域牛逼的技術專才;注意積累項目評估方面的知識和經驗,多結識技術領域以外的人,進則爭取上對車,跟對人,在浪潮之巔贏得人生的輝煌,退則在成熟的公司安穩的工作。

下面做幾點解釋:


一、為什麼要」堅持從事技術工作「

傑出的技術人才,最突出的天賦自然是技術才華,自然應該堅持從事技術工作,這樣才能價值最大化。如果最傑出的天賦不是技術,比如是經營,儘管技術也有天賦,自然應該去從事自己更有天賦的經營工作。

如果放棄技術工作,去轉崗從事其他工作,對於傑出的技術人才來說,就明珠暗投了。


二、為什麼必須成為「自己一個人就可以做出產品的技術牛人而不是在個別領域牛逼的技術專才」

最富有的技術人才,基本上都是偉大企業成立的早期去從事技術工作,在這些早期的偉大企業,最容易位居高位的都是通才,而不是專才。一個技術人才一旦成為局部領域的專才,99.99%的概率就放棄了成為張志東那樣的巨富的機會。


三、為什麼必須」注意積累項目評估方面的知識和經驗,多結識技術領域以外的人「

傑出技術人才必須以投資者的態度來選擇創業項目,識別早期的偉大公司,如果是以技術人才就業的心態去選擇項目,基本上百分之百會遭遇職業生涯中的災難。

因為創業公司無論年薪開多少,有多少錢來燒,只要它最後不能成功,去創業公司總是不如留在成熟的大企業。傑出的技術人才如果不是為了成為巨富,根本不應該去參加任何創業公司。

僅僅局限在技術人員的小圈子裡,永遠不會積累出「上對車"所需要的知識,經驗和人脈。


歡迎回復討論,請大家各抒己見。


沒看見一個認真回答的。我來說幾個大類別:

1. 與人交往的能力(People Skill)。這是個大課題,可以列舉很多。大家可以在網上搜索。

2. 交流技能。演講、幻燈片製作能力,寫作能力,語言能力等等。

3. 自我管理能力。這又是個大課題,從管理自己的時間,自制力,管理自己的情緒的能力,自我決斷能力,等等。

4. 領導力。

5. 視野和相關的知識面。簡單的市場常識,用戶需求的常識,基本的財經知識和法律知識,等等。


首先來我來公開贊一下本問題回答者覃大神的廣告能力,扇貝背單詞,我去。想不到一個通過托福GRE考試在美國呆了2年以上(碩士及以上),又在矽谷工作了2年以上的人,回國會突然發現自己要練習英語能力。。


另外都回國了,要練習英語能力,黑人問號?我看他應該是練習了中文能力,才能把廣告打的這麼溜。


其次我必須要指出他的這個問題下回答的硬性不足。雖然覃超先生在自媒體的道路上越走越遠,都忘記了自己搞培訓,搞內推的正業了,之前風投機構也是黑人問號了,但:


居其位,行其事。一個E3, E4的人天天想如何SOFT SKILL那也真的是想多了,他們的評價指標首先是代碼的能力和質量。相反,一個E5,E6的人,他們的評價指標是帶項目的能力。為了把一個大的PROJECT做完,就一定需要SOFT SKILL,才能保證進度,了解進展,輔導一線程序員。


從看到一個印度MANAGER級別的IC來組裡喝咖啡,滑雪,搞人際關係,結果review比自己好,就得出自己也要向他學習的結論?不同級別的review標準都不一樣好嗎。一個在工地里搬磚的工人,看到了項目經理來向總經理介紹的時候穿了皮鞋喝了茶,是不是也要想:恩,我也要穿皮鞋搬磚?本末倒置,止增笑耳。


通過看一個SENIOR的行為反饋到自己身上作為自己的行為準則,是不是有一點誤人子弟,管中窺豹了呢?那怎麼不去看Mark每天都在幹嘛呢,要不要也學習一下,學習一個演講的能力?以前不是每天都在和Mark談笑風生嗎?怎麼這麼重要的問題下,又隻字不提了呢。


Facebook很多中層都是中國人,我從沒見過他們去買咖啡或陪VP滑雪的。你這麼說,是有欽定的意思了?


不要為了販賣觀點而先入為主,編纂故事。 謝謝。當然了,不這麼寫,怎麼騙到雞湯錢呢?不過還是得向咪蒙學習一個,畢竟換做咪蒙來寫同樣的內容,一分鐘點贊破10萬。。不要問我為什麼,失敗人士就是這麼多!


利益相關:本人是矽谷老實人,徐老師的前室友,在斯坦福讀書的時候去facebook實習過。實在看不下去了,特來評價。


更多真實的不裝逼矽谷諮詢,請關注我們的微信公眾號(CEO江老師,COO徐老師,客座編輯我和勃老師等):

矽谷老實人


強行安利我寫在 GitHub 上的一本電子書:《增長工程師修鍊之道——讀書、寫作、編程》 (PS:總算對得起 MD 程序員這個稱號了)。


閱讀鏈接:增長工程師修鍊之道 -


目錄如下:

  • 前言
    • 我的成長四步曲
      • 能做到你想做的: Tasking與學習能力
      • 用更好的方法來實現功能
      • Better Code amp;amp; Architecture
      • Growth Hacking
      • 小結
  • 內容之美
    • 人生苦短,為何不寫作呢?
    • 分析篇:什麼樣的文章受歡迎?
      • 文章的類型
    • 創作篇:寫作的要點
      • 文章類型
      • 寫作要點
      • 文章排版
      • 收集靈感
  • 寫一個博客
    • 我的博客
      • 現在,我的博客是如何工作的?
      • 微信公眾平台
      • 技術組成
    • 數據分析與收集
      • Google Analytics amp;amp; WebMaster
      • APM: New Relic
  • 深入理解原理
  • hello, world
  • 影響力
    • 分享和創造
      • 為什麼人們關注你?
    • 技術、影響力amp;amp;賺錢
      • 代碼、寫作與分享
    • 提高影響力
      • 跨平台的平台:ID
  • 開源
  • 高效
    • 目標
    • 激勵
    • 有節奏的休息
      • 休息時間
      • 有節奏的休息
      • 小結
    • 習慣
    • 精力管理
    • 快捷鍵
    • 碎片時間
      • 必然出現的碎片時間
      • 碎片時間應該怎麼玩:以收集為主
  • 練習的藝術
    • 管理你的Ideas
      • Github管理Idea
    • 程序員如何批量生產idea
      • 如何產生Idea:從「只差程序員」到「不差Idea」
      • 對創新的練習:產生Idea
      • 開始記錄你的問題/Idea
    • 造輪子
      • 從GitHub生成輪子
  • 創建自己的產品
    • Growth 應用
  • 專業
    • 測試
    • 代碼質量
  • 三年職業編程生涯里,遇到的那些挑戰
    • 實習:同儕壓力
    • 初入職場:Interview ++ 和 Coaching 新人
    • 第二年:Be Profressional
    • 第三年:Lucky amp;amp; Unlucky
  • 閱讀
    • 為什麼需要閱讀?
    • 讀書路線
    • 買什麼書?
    • 如何閱讀?
      • 花錢買時間
  • 簡歷與面試
    • 如何寫好簡歷
      • 一份優秀的前端開發工程師簡歷是怎麼樣的?
      • 簡歷的 N 種錯誤姿勢
      • 打開姿勢
      • 程序員該如何去寫自己的簡歷
      • 小結
    • 面試
    • 談判
  • 技術演講
    • PPT的設計
    • 即時演講
    • 應對提問
    • 收集反饋
  • 工具箱
    • 文檔篇
    • 圖形工具篇
    • Chrome插件篇
    • Ops
    • 硬體篇
    • CLI
  • 寫一本書
    • 如何去寫?
    • 銷量

找對象


Amazon上有本200多條評論的五星級圖書《Soft Skills: The software developer"s life manual》應該是已經很好地回答了這個問題:https://www.amazon.com/Soft-Skills-software-developers-manual/dp/1617292397/ref=sr_1_1?ie=UTF8qid=1468314931sr=8-1keywords=Soft+Skill


1: 自學能力
2: debug
3: 表達能力


女裝?


Copying and pasting from GitHub and Stack Overflow from scratch.


推薦閱讀:

從 2015 年起的未來五年內有哪些創業方向?
阿里公關在月餅事件上請了水軍么?
知乎不可以解決哪些問題?
有哪些特殊的搜索引擎?
如何在讀研兩年內達到輪子哥的一半水平?

TAG:互聯網 | 程序員 | 軟體開發 | 編程 | 軟技能 |