標籤:
啥是優秀程式員?
記者和很多網民說熊貓燒香作者是高手
公司裡你出什麼bug他都能告訴你原因用什麼軟體有問題他都能回答你的你就覺得是高手
有人說徒手做產品的全棧才是高手
各語言的作者都是高手
有不寫代碼,扔出一個restful論文的
還有人說高德納是神,他如果是神,那他那些代碼一定是在考驗我們,嗯
。。。。
上面這些的確都算是高手,我琢磨著前兩年被開掉的moto公司員工裡肯定也有做功能機的高手和寫廉價板驅動的高手
你想自己選自己的方向還是被人忽悠方向?
我的想法是自己都嘗試玩玩,然後做自己喜歡的方向。當然,程式員的生態金字塔是上面做工具、基礎設施給下面人用來給普通人編程式,所以你選方向可以參考一下這個金字塔模型
方向定下,然後就是做事了,一大誤區就是 【追求最好的東西】,於是非得弄清楚:
如果你是一個*nix世界的玩家的話,你應該知道有一個jargon來上面的毛病,叫yak-shaving,我以前提過幾次yak-shaving,但是很多人看不懂,它的字面意思是Any seemingly pointless activity which is actually necessary to solve a problem which solves a problem which, several levels of recursion later, solves the real problem you‘re working on.
但一般都引申其意使用它,我這裡舉例一下:
你本來要開啟軟體寫一個helloworld,軟體提示你升級,你點了升級,提示你xx庫不夠新,然後你更新xx庫,提示你要升級yy驅動,然後你升級yy驅動,系統告訴你要編譯這個驅動,你必須下載s.f版本的編譯器和庫,你更新編譯器,系統說s.f版本編譯器必須在e.n系統上運行,然後你就升級系統了,幾個小時過去,你發現系統升級導致了幾個軟體損壞,然後你更新那些軟體,去找解決問題的方法,不知不覺到了半夜,你累成了狗,卻發現問題還有一大堆,而helloworld也沒寫成。。。。
這些問題我都遇到過,我的建議是挑一本大牛說的書就是了,看會了其他也會了。當然,如果你不幸不認識大牛(都上知乎了只要會搜尋這種事情不可能發生),或者單純好奇——就像我當年那樣的話,那就每種都試試,不過有的答案你自己知道就好,像是編輯器emacs比vim更好,寫程式ide比編輯器更好這種話,你是不應該亂說出來的。
對了,像是不同範式的程式設計語言、不同的開發環境是應該嘗試體驗一下的,不過這種建議書上都寫了,我這裡說顯得有些廢話了。
所以說,不能被無關的東西弄偏了目標,要專註,堅持。
等你學深了一門語言,就算是學另一們其他範式的語言也不會太難,你學會了opengl,dx也就看看就能寫了。
你看看武俠小說裡,段譽就是一個傻逼,仗著有時發出有時發不出的脈衝波和繞圈圈就能快跑直線的bug技就加上一門佛學能獨步武林最終迎娶了白富美,出任了CEO,走向了人生巔峰,喬峰永遠是一招降龍十八掌,更誇張。而慕容複文武雙才,基本精通天下武學,每天讀書4時辰練功4時辰,論用功誰能和他比啊。。。可到了30多歲還是一事無成,pk連段譽這種新手都搞不過,最後被人搶了老婆,就是因為方向不對,而且太不專註了。
所以求多不如求專,深度到了,再花20[[[[[%]]]]]的時間去擴充一下廣度即可。
以上東西你都做好了,要花個2年時間的樣子,對於學生來說,如果你有一個好的學校背景,人生可以就此揚帆起步了
但這不是終點,俗話說人靠衣裝,美靠封裝。封裝是門學問,這裡的封裝不是讓你西裝領帶亮皮鞋黑絲套裙白襯衫整一個營銷狗hr的造型,是說專業技能上的封裝。
為什麼這是最重要的部分呢?因為別人一般不和你說這麼多,尤其是懂得封裝的人,更不會傳你這些不傳之秘啦。。。。。
封裝自己的第一步是提高實力
沒有實力的封裝那是空中樓閣,只能靠每天日常搞外包的忽悠架構大資料雲端運算過活,明眼人也能看出來,所以純屬作秀,沒有意義。
在某個領域(編譯器、虛擬機器、開發架構、前端。。。)成為專家(專家的定義嘛,,我的理解是能在簡曆裡寫精通)後,封裝的實力就算具備了。
封裝的第二步是定位
提到美國會有一大堆人跳出來說是人類的希望民主的大救星,提到google就是最純的技術公司不作惡、軟體業的翹楚開發界的標杆、心美人美白蓮花。。。哪怕你列舉google賣假藥、惡意打壓yelp、挾持web標準等等等等這些事,他們也會說百度更差(咦這不5角錢常用的語句嗎怎麼被民主進步人士盜取了?。。。),可我根本沒提到百度好嗎。。。
這全是封裝造成的,所以封裝的巨大威力,以此可窺之。
google是搜尋引擎,百度難道也說自己是搜尋引擎?不,百度說自己是最懂中文的搜尋引擎。。。哈哈哈,你別笑,這的確很管用,就像google說自己不作惡是好女孩一樣。
程式員的封裝定位,無非稀缺和獨特這兩點。物以稀為貴,稀缺就是要做到不可替代,這很好理解,比如你知道世界第一高峰是珠穆朗瑪峰,如果沒看過禪師精選集你很難知道第二高峰是喬戈裡峰,但文青特別偏好乞力馬紮羅山,不爬不跟你結婚,為啥?獨特性嘛。。。我不跟你比高,我和你比文化底蘊,於是就贏了。
由於你有實力,所以你應該盡量把自己的實力封裝成稀缺屬性,你是專家嘛。。然後你實力多,應該把獨特的實力封裝出來,避免和他人共同曝光,以免被人壓在身下。
我說一個我朋友封裝自己的故事,他進公司接手了一個項目,已經是被隔壁組開發了3,4個月的一個軟體,其實這軟體2個月也能做好的,但是隔壁人忙而且也不上心,不熟悉這個技術,加上又不是自己的老闆,所以做事拖遝了那麼久才做好。他接手後一刻沒閑,晚上帶回家也做,做到半夜,10天做成,然後整個公司的人都知道他的名字了,他也就立穩腳跟了。
這個封裝的主題是,技術實力強,開發速度快。
封裝的第三步是推廣
推廣就是讓人知道你做得好,強化你的個人品牌,可以用部落格、知乎、mailing-list、github等,通過寫文章、參加線下聚會演講、回答問題、協助他人等方法。這個用好了是門學問,用不好就是裝逼,不展開了。。。
記住不要匿名,匿名你基本啥也得不到
有人明明技術實力強,但是由於沒有封裝好,或被埋沒了才能,或被貼上了各種不應該有的標籤,或被人偏見看待。比如 趙劼 的c#和 vczh 的微軟標籤
有人明明實力一般,但是善於鼓動小白,封裝得好,所以有一批忠實粉絲,這種人我都不太敢說名字了,呵呵。。
所以優秀的程式員應該善用封裝啊
怎麼成為一個優秀的程式員,而不是一個優秀的碼農?