閱讀54 返回首頁    go 技術社區[雲棲]


程序員效率的奧義

自我感覺還是蠻在乎效率的人。為了提高效率,我特別重視如下幾點:


工具化
我是個典型磨刀不誤砍柴工的人。

2011年的時候,在開發一個項目前,我先花了幾個禮拜自己開發了一套Web框架。

因為我之前做過一段時間的Ruby程序員,一對比,我發現,Java的Web框架都太不好用了,Java的ORM框架也不好用,Java 的MongoDB Client 也不好用。於是我決定開發一套一站式Web框架。

正好除了搜索的任務以外,公司希望做一個全站通用的標簽係統。當時在選型上,老大說用Spring,我當時說,給我點時間,我自己開發一套開發框架出來,老大說,你有信心做好麼,我說有。老大給予了肯定的答案

來自:這些年,我工作上走過的路

這套Web框架就是ServiceFramework。自己現在很多開源項目也都是基於這套Web框架是做的。比如StreamingPro編譯的時候依賴的Web庫是ServiceFramework,配置引擎則是ServiceframeworkDispatcher,都是自己非常常用的工具。

其實都是造輪子,然而這些輪子我們先不說它是否優於其他相似的開源項目,至少我對它們是把控力的,而且解決的也是我工作中比較常遇到的問題,所以用了起來特別的順手,自然也就效率很高。

所以,積累自己的工具庫,是非常有必要的。再提下剛才的StreamingPro,它的誕生是為了解決我使用Spark的問題。而為了解決運維相關的問題,我和同事也做了非常多的工具,有些我們花了一年以上的業餘時間在持續完善。


預見和練習
雖然很多人似乎不Care所謂語係,不Care所謂工具,總覺得自己掌握了開發的真諦,其他一切我隻要用的時候學下就能搞定了。

實際真不是這樣。我們還是以語言為例,我學Scala隻用了幾天時間。在等火車,以及在火車上把官方的tutorial 看完,覺得差不多了,然後寫了些簡單的程序後,就能寫一些業務了。然而我真正用順了,用的不堵了,卻花了幾年的時間。對於一個不趁手的語言,代碼質量是否能保證我們先姑且不論,其實也嚴重影響了開發效率。

所以我工作中潛在的可能會用到的東西,我都會先花很多時間去調研和練習,等真正用到的時候,就能如魚得水,隨心所欲。比如Scala,我早先隻是簡單用了下Spark,我完全可以用python或者Java去開發Spark 應用。但是我覺得Scala是有必要學習的,所以我花了很多時間去做練習。所謂練習其實就是真的把他應用到項目上。我之前有很多項目是java/Scala 混合的,這就為我後續對Spark Core的研究做好了鋪墊。

所以對於一個程序員,對於自己工作技能的預見性能讓你未來越來越遊刃有餘,而高強度的練習,則保證你做事情可以做的很順手,不會用起來畏首畏尾。


打破慣性
所謂語言之爭其實某種角度是守舊勢力之爭。每個勢力都不願意深入到別的地方看看,然後就說自己的地方是最好的。程序員是擁抱變化的,體現在程序員常說,一天不學習,就感覺自己進入了古代。然而程序員又是害怕變化的,對於自己不熟悉的東西,總是會比較排斥,這或許也是人類的天性。

尤其是在時間比較緊張的情況下,我們會常說,用最笨的辦法先把這個解決了吧,這其實是在用蠻力替代一個良好的思考。好比命名可以用一個for循環解決的問題,你非要複製黏貼100遍。

所以,喜歡調研和測試新技術的程序員,往往是具有打破慣性的特質的群體。他們在不斷的嚐試過程中,不斷的更新換代自己的武器,讓自己保持某種先進性。這就好比一個國家不斷更新自己的武器裝備,一家工廠不斷更新自己的機床車間。


讓你身邊的人也高效起來
這個是我直到今天才感悟到的。我一直努力讓自己更加高效,不讓時間虛度。然而當我們麵臨越來越複雜,越來越繁瑣的任務時,我們不得不借助於團隊。道理我都懂,然而卻一直不上心。我們一直說團隊是最重要的,然而我們終究並沒有把心思完全放在團隊上,為了自己的那點小九九。

隻有身邊的人也如你般高效,才可能釋放出你來去做更多讓更多人高效起來的事。更多的人更加高效,即節約了他們的生命,也反過來再次讓你變得高效。

當你能夠讓身邊的人也越來越高效,或許你就真的到了高效的最高境界。

最後更新:2017-04-01 17:13:52

  上一篇:go 讓CarbonData使用更簡單
  下一篇:go 基於用戶畫像的實時異步化視頻推薦係統