1. 程式人生 > >軟技能——如何成為優秀的軟體開發人員?

軟技能——如何成為優秀的軟體開發人員?

你是否經常製造各種bug百思不得其解?

你是否常常效率低下而不得不通過加班來彌補?

你是否常常在迷失技術的海洋中,不知所措?

你是否對自己的職業生涯感到迷茫,毫無計劃?

你是否對自己的腹部日漸隆起而羞愧難當?

那麼,來看看《軟技能-程式碼之外的生存指南》吧!這是一本給程式猿(媛)們量身定做的全棧指南。(公眾號回覆 “軟技能” 即可獲得電子書)

全書關注的不是你能做些什麼,而是“你自己”,關注你的職業生涯、你的生活、你的身體、你的思想和精神,關注如何超越編寫程式碼本身?


1

第一篇談論職業生涯,很少有軟體開發人員主動管理自己的職業生涯,其實對於大多數人也是一樣的,可成功的結果都不是偶然的,他們都得先確定一個明確的目標,並且制訂好可靠的計劃,以及堅持不懈的行動力,才能達到。所以你需要通盤考慮好之後再決定,要做什麼,什麼時候做,以及如何義無返顧。請記住:工作是屬於公司的,而職業生涯卻是屬於你自己的。

  • 當你擁有一個商業心態時,把軟體開發事業當作一樁生意來看,你就會發現,你從被一紙“賣身契”束縛住的僕人轉變為一名擁有自己生意的商人,你就不再被特定的角色固化了你的整個職業生涯,你可以從仰人鼻息的弱勢地位轉換成為自我治理和自我引導的主動地位。

  • 積極思考未來,設定你自己的目標。大多數人都害怕為自己的職業生涯設定一個長遠的藍圖,懼怕選定後要一往無前,因為他們希望自己有多個選擇。“如果這條路錯了該怎麼辦?”,“如果我不喜歡自己選的路又該怎麼辦?”為了安逸,就傾向遵循已設計好的路線,或者裹足不前。設定大目標不一定要非常明確,但是方向要準確,一旦確定好了,就需要設計好路線。如何吃掉一頭大象?--答案是一口一口吃。我們把大目標分解成一個個小目標,設定自己的年度、季度、月度、周、日目標,然後定時追蹤這些小目標,隨時調整自己的航線。

  • 人際交往能力,遠比你想象的重要。別管我,我只想一個人安靜地寫程式碼。可能很多和機器打交道的人都有這種罪惡的想法。實際上,學會與人打交道對我們都很重要,有幾點建議:1.每個人都希望感到自己很重要;2.永遠不要批評,多鼓勵;3.換位思考;4.避免爭吵。

  • 破解面試之道。一般面試流程:發出一堆的簡歷->獲得面試機會->面試;改進的流程:從期待加入的公司裡找到聯絡人->與該聯絡人建立緊密關係->獲得個人推薦->面試。你覺得哪個成功率更高呢?

  • 就業選擇。選擇1:僱員;選擇2:獨立諮詢師;3:創業者;你會選哪個?各個利弊都需要分析。僱員的優缺點:優點穩定、從業之路輕鬆、帶薪假期,缺點缺少自由、收入封頂等。獨立諮詢師:優點更大的自由度、可以持續不斷地做新專案、賺錢潛力等,缺點自己尋找業務、打理一切事務開銷、從為一個老闆服務到為許多老闆服務。創業者:優點完全自由、巨大的賺錢潛力、做你想要做的工作、沒有老闆;弊端風險很大、完全依靠自己、需要許多其他技能、可能長時間工作。

  • 你是哪類軟體開發人員?給的建議是專業化很重要,在一個專業方向上擁有自己的專長。專業化的規則是:專業化程度越深,潛在的機會就越少,但獲得這些機會的可能性越大。

  • 公司和公司是不一樣的。小公司:優點 承擔多種職責,靈活的角色轉換,對工作影響較大,回報潛力大;缺點 沒法安靜地坐下來寫程式碼,工作在眾目睽睽之下,穩定性差。中等規模公司:優點,工作穩定,加班較少;缺點,變化很慢低下,沒有機會使用前沿技術。大公司:優點,完備的流程和規範,培訓機會多,大型有影響力的專案;缺點,充斥著官僚主義作風,可能只負責程式碼庫的一小部分,很難獲得關注。

  • 攀登晉升階梯。1.尋找機會主動承擔責任。2.引人注目,每天記錄自己的活動日誌,提供演講和培訓,發表意見,保證“曝光度”。3.自學。4.成為問題的解決者。

  • 成為專業人士。成為專業人士是一種心態。如果我們總是與恐懼、自毀、拖延和自我懷疑作鬥爭,那麼問題就是:我們正在像外行那樣思考問題。外行毫不起眼,外行人廢話連篇,外行屈從於逆境。專業人士可不這麼想。不管怎樣,他引人注目,他恪盡職守,他始終如一。

  • 為贏得自由-考慮如何辭職。如果你還不想為自己工作,就繼續享受作為一個員工的好處。如果夢想有天為自己工作,成為自己的老闆,那麼就得清楚自己每天真正工作的時間有多久,對自己實際承擔的工作量有個實際的預期,並訓練自己能提前處理更高強度的工作負荷,並邁出這一步,成為自由職業者,開啟自己的一片天地。

  • 當然,在職業生涯中必定會遇到自己無法處理的情況,這時候你是選擇知難而退還是勇敢地出來直面挑戰?“假裝自己能成功”,堅信挑戰與機會並存,擁有破釜沉舟的勇氣。

2

第二篇自我營銷,營銷是一場爭奪人們注意力的競賽。一般人對營銷人員都會皺眉頭,認為是急功近利使用不誠信的手段,或是一個兜售騙局。其實營銷追求的是“實現價值在先,要求回報在後”。

  • 針對“碼農“的營銷:自我營銷意味著什麼?意味著為他人提供價值。其實無論你試圖說服他人接受你的想法,還是面試求職,都是某種推銷。自我營銷就是學習控制好自己要傳遞的資訊,塑造好自己的形象,擴充套件資訊送達的人群。當你營銷自己的時候,就是在積極地管理的自己的職業生涯。

  • 建立部落格。作為軟體開發人員,推銷自己最佳媒介之一就是部落格。面對面交流畢竟有限,所以你需要另一種方式推銷自己。面試的時候,簡短的簡歷和短暫的面試來評估開發人員的技能可能困難,但是有自己的部落格,可能有豐富的相關資訊,包括程式碼示例,以及對軟體開發各方面的深入分析,這對於求職,提升自己的影響力是有非常大的優勢的。

  • 你的目標:為他人增加價值。不要努力成為一個成功的人,而要成為一個有價值的人。正如阿里巴巴的口號,“讓天下沒有難做的生意”,在幫助別人的同時成就了自己。

  • 對於營銷自己的其他方式:善於運用自己的社交媒體,保持活躍度與你的目標受眾保持聯絡;通過演講、報告和培訓,做說話的極客,走上講臺發表演講,面對面與聽眾交流、直接獲取反饋,這是其他方式不能比的;著書立說,吸引追隨者;萬事開頭難,想做好一件事不容易,要百折不撓,越挫越勇,天下豈有難事乎?不為則難,為之,則易。

3

第三篇學習,教育就是當一個人把在學校所學光全部忘光之後剩下的東西。

  • 如何自學:你要學習怎樣學習,如何自我教育。教育的首要目標,並不在於“知”而在於行。想學習一些東西最好的方法就是付諸於實踐。

  • 我的“十步學習法”;

  • 1-6步,只做一次即可。1.瞭解全域性,這一步就是了解自己到底要學什麼?2.確定範圍,對自己學習的主體及其全域性有一個大致瞭解;3.定義目標,確立成功的標準是什麼。4.尋找資源,利用各種資訊來源,收集相關資料。5.建立學習計劃,觀察別人如何教你感興趣的主題。6.篩選資源,對收集到的資源中選出最能幫助你實現自己目標的資源。

  • 7-10步,需要迴圈往復。通過“學習-實踐-掌握-教授”的方式真正領會知識。7.開始學習,淺嘗輒止;需要快速學習基礎知識,立刻開始實際操作。8.動手操作,邊玩邊學;主要是勇敢探索,不要擔心結果。9.全面掌握,學以致用;閱讀收集的資料進行深入學習,試著掌握每個模組,向著終極目標前進。10.樂為人師,融會貫通。你告訴我的,我都忘了。你教會我的,我都記得。讓我樂在其中,我就一定能學會。-本傑明.富蘭克林。

  • 每個人都有自己的短板,有時候短板會影響到你的工作效率,這時候就需要揪出來進行彌補。下面是檢測知識短板表:

4

第四篇生產力。一個好的程式設計師的生產力十倍於初級程式設計師,同樣對於我們富有效率的工作會為職業生涯添上一對翅膀。

  • 我的私房“生產力提升計劃”,基本思路,把一週的時間分配給一個用時不超過兩小時的小任務。使用看板來安排自己的一週活動。看板是一個簡單的白板,有幾個列,可以輕鬆地在各列之間移動任務項,在敏捷方法世界裡,看板通常還包含展示這些任務項所處的不同狀態,典型的狀態有“未啟動”“進行中”和“已完成”。看板中每一列就是一週的每一天。在工作中使用番茄工作法來保持專注,“番茄工作法”,即每半小時為一個單位,在前25分鐘不中斷地專注解決一個問題,後5分鐘起來休息喝水,每兩個小時左右休息20分鐘左右。

  • 我的“定額工作法”:我是如何做到超額完成工作的。用定額工作法確保自己每天、每週都朝著自己最重要的目標取得明確的、可度量的進展。例如每週跑步3次,每週釋出一篇部落格等。明確自己要做什麼,多久做一次,接下來就是做出承諾,除了想方設法完成工作,不留其他選擇。

  • 要不要多工並行?多工並行一般都糟糕,就像計算機的任務切換一樣,切換時需要儲存當前的狀態,然後設定新的環境,才能開始執行,這樣一來,真正做事的時間就少了很多。批量處理生產效率會更高,比如處理電子郵件,打電話,修復bug,開短會等,批量處理可以讓你更專注。

  • 時間是怎樣浪費掉的?文中提到電視佔用了人們大量的時間,現在的時間殺手應該是網路遊戲,各種小視訊、社交媒體、不必要的會議。所以跟蹤一下自己的時間都花在哪裡了,利用自己寶貴的時間去實現你的目標吧。

  • 培養習慣,重新整理你的程式碼。成就我們的恰恰是那些不斷重複的事情。因此,優秀不是一種行為,而是一種習慣。-亞里士多德。找出自己的壞習慣,努力改掉吧,養成好習慣,在生產力獲得雙倍提升。

  • 任何行動都比不採取行動好。任何行動往往都比沒有行動好,特別是當你一直停滯在不愉快的情勢下很長時間的時候。如果這是一個錯誤,至少你學到了一些東西。這樣一來,它就不再是一個錯誤。如果你仍然選擇停滯不前,那麼你就學不到任何東西。

5

第五篇理財-金錢只是一種工具,它會帶你去往任何你想去的地方,但不會取代你成為司機。--愛思.然德

  • 怎樣支配你的薪水,首先拒絕短期思維,明白資產和負債的概念。

  • 怎樣進行薪酬談判。你要明白薪酬談判始於求職之前,並很大程度受聲望的影響,獲得工作的方式也是至關重要的。

6

第六篇健身-人的身體就是人的靈魂的最好寫照。——路德維希•維特根斯坦

  • 為什麼要談論健身,身體是革命的本錢,如果你不注意自己的身體健康,並不看好你能成為頂尖的程式設計師。健身不僅是保持健康體魄的關鍵要素之一,也是靈活的、具有創造性的腦力活動的基礎。所以沒事多健身,有時間多賺錢。下圖為本書作者:

7

第七篇精神-如果你不征服自己,你就會被自己征服。-拿破崙•希爾

信念決定思想,思想決定言語,言語決定行動,行動決定習慣,習慣決定價值,價值決定命運。--聖雄甘地

  • 你要了解自己的思想是如何影響自己的身體的,並充分調動自己的積極性,發揮積極性的正面作用,“塞翁失馬,焉知禍福”,樂觀、自信地去面對生活,不僅僅對自己有很大的提升,對他人也有潛移默化的影響力。

  • 面對愛情與戀愛,計算機無法牽著你的手。為什麼總是嘲笑程式設計師沒有物件的時候自己New一個就好了,有一種流行的叫“永遠孤獨”的網際網路文化基因,也許深受這種文化感染導致的。可喜的是,最近的一份資料顯示,過一半以上的程式設計師都處在戀愛中。

  • 另外,積極面對失敗吧,跌倒七次、爬起來八次。生活中,也許你能學會讓你更成功的所有技能,但是如果你缺少持之以恆這個重要的技能,一切將是毫無意義的,以為那樣的話一遇到麻煩你就放棄——生活中我們都會面對很多麻煩。關於失敗,大多數偉大的人取得的最大成功與他們所經歷的最大失敗只有一步之遙。失敗不等於被打敗,只要我們活著,努力嘗試,不拋棄、不放棄,就會出現最好的結果。

最後,推薦一些書單:

  • 自我提升的,Steven Pressfield的《The War of Art》、Dale Carnegie的《人性的弱點》、Napoleon Hill的 《思考致富》、Maxwell Maltz的《心理控制方法》、Norman Vincent Peale的《積極思考就是力量》、Ayn Rand的的《阿特拉斯聳聳肩》。

  • 軟體開發類圖書,Steve McConnell的 《程式碼大全》、Robert Martin的《程式碼整潔之道》、Eric Freeman、Elisabeth Robson、Bert Bates和Kathy Sierra的《Head First設計模式》。

  • 投資類圖書,Gary Keller的The Millionaire Real EstateInvestor、Robert Kiyosaki的的《富爸爸,窮爸爸》。