核心競爭力最早由普拉哈拉德和加里·哈默爾兩位教授提出,通常認為核心競爭力,即企業或個人相較於競爭對手而言所具備的競爭優勢與核心能力差異,說白了就是你的優勢,而且最好是獨一無二的的優勢,這就是核心競爭力。
那麼程式設計師的核心競爭力是怎樣的呢?
他不像PM,運營,市場那麼難以考核的。一名優秀的程式設計師肯定有以下的幾種能力:
這個毋庸置疑,做為一名程式設計師,能寫程式碼、寫高質量的程式碼,可以說是基本功,離開了這個,就像無根之木,無源之水,談再多也沒用。這個可以和公司內的高手學,私下利用業餘時間豐富理論知識,多看一些開原始碼,從模仿到動手嘗試、再創新。
本質上來說,老闆請你來都是來解決問題的,你能解決問題,才能體現你的價值,才有加薪的籌碼。
一個專案、一個任務,或者一個Bug,都可以看做是一個問題,你是否能夠快速的分析情況,脫離表象找到問題的根源,或者把一個大問題分解成若干可以處理的小問題,並在規定的時間內解決它,可以說是考量你技術水準的重要唯一標準。
培養途徑
眾所周知,程式設計師是一個很苦逼的職業,技術更新日新月異,產品換代更是以月為單位計,不學習如何能長久?
學習分為兩大塊
聽說讀寫都很重要,對新手來說聽和說尤其值得注意。聽是說一個任務下來,要聽清楚問題是什麼,需求是什麼,有什麼條件,聽清楚了再動手。說是要表達有條理,說的清楚來龍去脈,說的清楚解決問題的思路。有些工作了好幾年的程式設計師,連一個複雜點的問題是怎麼回事,都說不清楚,東一下西一下,一點邏輯結構都沒有,很明顯他的思路就是混亂的。
這裡還要補充兩點:一個是問,不清楚的一定要問,不要裝,其實你進公司做三天事,你大概是個什麼水準,什麼樣的思維模式,你的領導就一清二楚了,裝也沒用。
另一個是反饋,一件事領導交待給你,你要在關鍵結點給他反饋,告訴他做的怎麼樣了,有什麼困難,下一步準備怎麼做,需要什麼支援等等。不要等到領導來問,才告訴他你有什麼問題搞不定,許多Boss對這種情況是深惡痛絕的,這樣搞兩次以後,基本上就不會把很關鍵的任務交給你了。
不同的公司有不同的文化氛圍,有比較看重的價值觀。且以為對於程式設計師來說,最重要的一個態度,就是不能湊合。一般的程式設計師在發現問題以後,東試試西試試,能解決問題就行了,但是優秀的程式設計師不會輕易妥協,一定會試圖去分析產生問題的原因,根本的解決方法,甚至要去看Linux核心程式碼也一定要找到Bug的根源。
對一個問題,一類問題,以及不同型別的問題,善於歸納整理,不斷反思自己的問題,即便是不出Bug的程式碼,你經過一段時間去回頭看,也有很多思考不正確不合理的地方,有很多最佳化點,如果你覺得自己的程式碼一向牛逼,毫無破綻,那你一定是原地踏步,毫無進展。
工作經驗需要日積月累,但有些人工作3年就超越了那些工作10年的人,工作年限並不能代表你的工作能力,只有不斷增強自己的核心競爭力才能在公司處於一個至關重要的崗位,薪資才能快速增長。
故事一:能力是根本
工程師:程式設計師,客戶XXX的網路斷了。我現在手頭上有很多事情處理不過來,你幫忙解決一下這個客戶的問題。
程式設計師:額,客戶是什麼原因導致斷網了啊?
工程師:……
PS:我知道什麼原因導致斷網,還需要你去排查麼?網路不通了,怎麼去排查你不知道麼?你不知道先向客戶瞭解網路環境、拓撲麼?你不知PING閘道器麼?不會Wireshark埠抓包麼?
故事二:做一個主動的人
程式設計師:經理啊,客戶這邊說現在要增加一個歷史資料曲線查詢的功能,你看怎麼搞呢?
產品經理:……
正確的做法應該是:經理啊,客戶這邊說要增加一個歷史資料曲線查詢的功能,我仔細想了一下,大概設計有兩套實現方案。方案一:XXX,方案二:YYY。您覺得這兩個方案哪個更好,或者您有什麼其他方案?
PS:不要覺得你是個程式設計師,只需要負責程式碼實現,設計與你無關!誰也不希望擁有這樣的下屬。當你的上司真夠累的!
故事三:情商很重要
經理:這個介面怎麼沒有顯示任何東西,又報錯了?
前端程式設計師:肯定是他們後臺那邊哪個程式又把配置檔案寫壞了,導致介面讀取配置出錯。
PS:程式有Bug沒什麼大不了,你別老把問題往別人身上推啊。你這麼一說,後臺開發的兄弟們就躺槍了,得罪了一堆人。而且經理對你的印象也不會好到哪裡去不是?
核心競爭力最早由普拉哈拉德和加里·哈默爾兩位教授提出,通常認為核心競爭力,即企業或個人相較於競爭對手而言所具備的競爭優勢與核心能力差異,說白了就是你的優勢,而且最好是獨一無二的的優勢,這就是核心競爭力。
那麼程式設計師的核心競爭力是怎樣的呢?
他不像PM,運營,市場那麼難以考核的。一名優秀的程式設計師肯定有以下的幾種能力:
程式設計能力這個毋庸置疑,做為一名程式設計師,能寫程式碼、寫高質量的程式碼,可以說是基本功,離開了這個,就像無根之木,無源之水,談再多也沒用。這個可以和公司內的高手學,私下利用業餘時間豐富理論知識,多看一些開原始碼,從模仿到動手嘗試、再創新。
分析解決問題的能力。本質上來說,老闆請你來都是來解決問題的,你能解決問題,才能體現你的價值,才有加薪的籌碼。
一個專案、一個任務,或者一個Bug,都可以看做是一個問題,你是否能夠快速的分析情況,脫離表象找到問題的根源,或者把一個大問題分解成若干可以處理的小問題,並在規定的時間內解決它,可以說是考量你技術水準的重要唯一標準。
培養途徑
豐富的行業經驗,你經歷的多了,自然就會知道該怎麼處理了,俗話說沒吃過豬肉還沒見過豬跑嘛,大概就是這個意思。有意識的學習一些方法論,鍛鍊自己的結構化思維,不僅僅是對工作,對生活的方方面面,都挺有用的。推薦閱讀劉未鵬的《暗時間》,是專為程式設計師寫的方法論,他本身也是一名程式設計師。一些牛逼的PM,基本上不摸程式碼,但是聽手下人說一下情況,還是能快速的找到根結,離不開他們的從業經驗和系統的思維方法。自我學習的能力眾所周知,程式設計師是一個很苦逼的職業,技術更新日新月異,產品換代更是以月為單位計,不學習如何能長久?
學習分為兩大塊
一塊為技術知識的學習,包括程式設計技能,基本原理,演算法結構以及與工作環境密切相關的知識,另外值得特別一提的是經典開原始碼的學習,這是成為高手的必經之路;另一塊為產品知識、行業動態的學習,國內一般情況是寫程式碼比較好或者比較久的人,就開始帶團隊,如果沒有這方面的積累,就會比較困難,另外就算一門心思做技術,多瞭解一些也有利於加深對需求、功能的理解,不是什麼壞事。溝通能力聽說讀寫都很重要,對新手來說聽和說尤其值得注意。聽是說一個任務下來,要聽清楚問題是什麼,需求是什麼,有什麼條件,聽清楚了再動手。說是要表達有條理,說的清楚來龍去脈,說的清楚解決問題的思路。有些工作了好幾年的程式設計師,連一個複雜點的問題是怎麼回事,都說不清楚,東一下西一下,一點邏輯結構都沒有,很明顯他的思路就是混亂的。
這裡還要補充兩點:一個是問,不清楚的一定要問,不要裝,其實你進公司做三天事,你大概是個什麼水準,什麼樣的思維模式,你的領導就一清二楚了,裝也沒用。
另一個是反饋,一件事領導交待給你,你要在關鍵結點給他反饋,告訴他做的怎麼樣了,有什麼困難,下一步準備怎麼做,需要什麼支援等等。不要等到領導來問,才告訴他你有什麼問題搞不定,許多Boss對這種情況是深惡痛絕的,這樣搞兩次以後,基本上就不會把很關鍵的任務交給你了。
良好的工作態度不同的公司有不同的文化氛圍,有比較看重的價值觀。且以為對於程式設計師來說,最重要的一個態度,就是不能湊合。一般的程式設計師在發現問題以後,東試試西試試,能解決問題就行了,但是優秀的程式設計師不會輕易妥協,一定會試圖去分析產生問題的原因,根本的解決方法,甚至要去看Linux核心程式碼也一定要找到Bug的根源。
不斷總結歸納對一個問題,一類問題,以及不同型別的問題,善於歸納整理,不斷反思自己的問題,即便是不出Bug的程式碼,你經過一段時間去回頭看,也有很多思考不正確不合理的地方,有很多最佳化點,如果你覺得自己的程式碼一向牛逼,毫無破綻,那你一定是原地踏步,毫無進展。
工作經驗需要日積月累,但有些人工作3年就超越了那些工作10年的人,工作年限並不能代表你的工作能力,只有不斷增強自己的核心競爭力才能在公司處於一個至關重要的崗位,薪資才能快速增長。
程式設計師小故事分享故事一:能力是根本
工程師:程式設計師,客戶XXX的網路斷了。我現在手頭上有很多事情處理不過來,你幫忙解決一下這個客戶的問題。
程式設計師:額,客戶是什麼原因導致斷網了啊?
工程師:……
PS:我知道什麼原因導致斷網,還需要你去排查麼?網路不通了,怎麼去排查你不知道麼?你不知道先向客戶瞭解網路環境、拓撲麼?你不知PING閘道器麼?不會Wireshark埠抓包麼?
故事二:做一個主動的人
程式設計師:經理啊,客戶這邊說現在要增加一個歷史資料曲線查詢的功能,你看怎麼搞呢?
產品經理:……
正確的做法應該是:經理啊,客戶這邊說要增加一個歷史資料曲線查詢的功能,我仔細想了一下,大概設計有兩套實現方案。方案一:XXX,方案二:YYY。您覺得這兩個方案哪個更好,或者您有什麼其他方案?
PS:不要覺得你是個程式設計師,只需要負責程式碼實現,設計與你無關!誰也不希望擁有這樣的下屬。當你的上司真夠累的!
故事三:情商很重要
經理:這個介面怎麼沒有顯示任何東西,又報錯了?
前端程式設計師:肯定是他們後臺那邊哪個程式又把配置檔案寫壞了,導致介面讀取配置出錯。
PS:程式有Bug沒什麼大不了,你別老把問題往別人身上推啊。你這麼一說,後臺開發的兄弟們就躺槍了,得罪了一堆人。而且經理對你的印象也不會好到哪裡去不是?