posts - 64,comments - 22,trackbacks - 0

          對程序員們來說挑戰(zhàn)自我非常重要,要么不斷創(chuàng)新,要么技術(shù)停滯不前。新年伊始,我整理了12個月的目標,每個目標都是對技術(shù)或個人能力的挑戰(zhàn),而且可以年復一年循環(huán)使用。

          01. 變得有耐心

          02. 保持健康

          03. 擁抱變化帶來的不適應

          04. 學習一門新的編程語言

          05. 自動化

          06. 學習更多數(shù)學知識

          07. 關(guān)注安全

          08. 備份你的數(shù)據(jù)

          09. 學習更多理論知識

          10. 接觸藝術(shù)和人文

          11. 向新的軟件學習

          12. 完成一個自己的項目

          接下來我會對這些建議逐個介紹。

          變得有耐心

          程序員們會擔心鍛煉耐心付出的努力得不到應有的回報。其實,培養(yǎng)耐心只要付出很小的投入就能夠得到相對而言很大的收獲。下面是開始鍛煉耐心可以嘗試的一個列表,只要全身心投入其中任意一項,都可以在一個月左右脫離門外漢(成為有經(jīng)驗的新手)的階段:

          烹飪、徒步、滑雪、天文、慢跑、木工、武術(shù)、舞蹈

          保持健康

          程序員通常久坐少動,因此在日常工作中會面臨健康問題,但通常都被我們忽略了。一年中花整整一個月來調(diào)整你的生活習慣、飲食和生活環(huán)境,這會促使你養(yǎng)成持久、健康的生活習慣。每年去一趟診所檢查血壓、膽固醇和血糖,看看這些指標最近有什么變化。如果你的手腕開始疼痛或者已經(jīng)疼了很久,馬上停掉手上的工作開始與“鼠標手”(重復性勞損)作戰(zhàn)。注意你的坐姿,尤其是肩膀和脖子。我使用了矯姿器來幫助治療。

          跟蹤你的體重、攝入以及燃燒的卡路里。如果有必要,可以改變生活方式以養(yǎng)成健康的飲食習慣和減肥。

          擁抱變化帶來的不適

          在我20剛出頭的時候,通過觀察身邊年紀稍大一些的伙伴我發(fā)現(xiàn)有些人停滯不前而另一些則活力充沛,我試著尋找背后的原因。答案就是舒適感。舒適會讓技術(shù)停滯不前。當找到一個能夠為我所用的系統(tǒng)時,我們會一直使用它。但技術(shù)是不斷進步的,而那些停留在舒適區(qū)的人永遠不會意識到這些進步能夠為他們帶來好處。不破不立,要讓自己適應不舒適的感覺。

          下面列出的事情一開始可能會讓你感到不適應:

          • 使用德沃夏克鍵盤
          • 使用vim替代emacs,反之亦然
          • 不使用鼠標
          • 使用不同的窗口管理器
          • 喝清咖啡不加奶油和糖,或者喝清茶
          • 嘗試一個月“流行且無聊的新事物”
          • 一個星期中有一天不開手機
          • 學習使用一種可以單手輸入的設(shè)備
          • 嘗試一個不同的操作系統(tǒng)
          • 一個星期中有一天不上網(wǎng)
          • 試著對飲食加以限制:嘗試吃素,成為純素食主義者,不吃乳制品,等等
          • 每天吃一種你不喜歡的食物
          • 將你習慣使用的胳膊用繃帶綁起來
          • 學習用你不習慣的那只手寫字
          • 開一個博客
          • 參加公共演講
          • 一個月聽一種你不喜歡的音樂
          • 去醫(yī)院或退休家庭護理做志愿者
          • 一個星期有一天快生活
          • 去一個與自己文化或語言不同的國家旅行
          • 讀一篇廣受好評但卻不是你喜歡題材的小說
          • 看一場廣受好評但卻不是你喜歡風格的電影或演出
          • 學會用變速桿(手動)開車
          • 反對你相信的一些事情

          在一個月的嘗試之后,你可以決定是否繼續(xù)采用新方式,或者找到新方式中好的經(jīng)驗與原有方式的結(jié)合點。例如,在我從使用了10年的emacs轉(zhuǎn)向vim時,我會為插入模式設(shè)置emacs風格快捷鍵從而繼續(xù)使用vim。

          學習一門新的編程語言

          編程語言起起落落。如果只了解一門語言,程序員的解決問題能力以及職業(yè)前景都會因此受到限制?;ㄉ险粋€月時間吸收一門新語言或者一個新的編程范式,并用它寫一個小程序。

          下面是一些可以學習但不是非常主流的編程語言:

          Racket、 Haskell、ScalaErlang、Clojure、SML/NJOCamlSqueak、Prolog、Datalog.

          如果你無所不知,那么你可以實現(xiàn)一門新的編程語言。

          自動化

          程序員擁有最強大的待開發(fā)技能就是將虛擬和現(xiàn)實自動化的能力。如果你從來沒有造過一個機器人,那么去做一個吧。至少學會使用Lego Mindstorms或者玩一玩 Arduino board。

          檢查一下你每天的任務,看看其中有哪些可以完全或者部分自動化。自動化在家庭生活里已經(jīng)有了長足的進步,甚至可以像Insteon那樣對系統(tǒng)進行DIY。

          投資一個月的時間來進行自動化:

          • 調(diào)整你的郵箱過濾器或者設(shè)置procmail
          • 為頻繁進行的工作編寫自動化shell腳本
          • 編寫shell腳本幫助寫作
          • 學會如何使用cron工具
          • 改造櫥柜燈由感應控制
          • 盡可能地用無線替代有線
          • 停止手動同步:將信息存到云端
          • 安裝一個遠程控制音頻系統(tǒng)
          • 通過你的服務器控制家里的空調(diào)
          • 安裝數(shù)字監(jiān)控攝像頭
          • 安裝數(shù)字內(nèi)部通話系統(tǒng),兒童監(jiān)控系統(tǒng)
          • 讓咖啡機自動打開
          • 為寵物安裝自動給水槽
          • 為寵物安裝自動感應門
          • 將Roomba改造成個人信使

          譯注:

          procmail:procmail軟件包包含一個自動的郵件管理器,可以很好的過濾和排序郵件。

          cron:linux下的定時執(zhí)行工具。

          Roomba:Roomba是iRobo公司生產(chǎn)的定時智能機器人。

          學習更多數(shù)學知識

          計算機科學本質(zhì)上講是數(shù)學的一個學科。好的數(shù)學家中間會產(chǎn)出優(yōu)秀的程序員。不要讓你的數(shù)學能力喪失殆盡。

          考慮每年花一個月時間復習列表中的一項:

          邏輯學、離散數(shù)學、微積分、概率論、統(tǒng)計學、抽象代數(shù)、數(shù)論、范疇論、偏序理論

          關(guān)注安全

          很少有程序員具備好的安全習慣。如果你對自己的數(shù)字安全很在意,你就會對你寫的代碼安全性更加關(guān)心。確保你在每個站點都使用了唯一的高安全系數(shù)密碼。使用加密的密碼管理器來管理你的密碼,例如PasswordSafe或者KeePassX。如果你還沒有對整個磁盤加密,留出時間完成它。(在Mac上可以輕松完成)

          每年都要研究過去12個月中前10位的安全漏洞。他們是如何發(fā)生的?在編程中需要怎么做能夠避免在你的代碼中出現(xiàn)這些漏洞?

          下面是另外一些你需要嘗試的安全任務:

          • 在Apache中加入SSL驗證
          • 使用RSA或AES實現(xiàn)密碼系統(tǒng)
          • 試著破譯你的無線網(wǎng)絡(luò)密碼
          • WireShark偵聽你的網(wǎng)絡(luò)通訊
          • 設(shè)置基于密鑰的無密碼ssh登錄
          • 自己運行nmap;配置你的防火墻
          • 建立端口掃描
          • 為USB驅(qū)動器加密
          • 監(jiān)控日志文件
          • 設(shè)置cron任務定期更新你的程序

          譯注:

          nmap:linux下的網(wǎng)絡(luò)掃描和嗅探工具包

          備份你的數(shù)據(jù)

          每年花一些時間檢查你的備份策略。

          花一個月時間將備份花費的時間減到最小。

          使用基于云的備份服務,比如MozyCarbonite,很容易建立無縫自動備份。

          更全面地防御可以選擇為每個人分發(fā)硬盤,對每臺電腦使用像Time Machine這樣的自動備份工具進行備份。

          對重要文件使用異地遠程倉庫進行版本控制。

          學習更多理論知識

          計算機科學有豐富的理論基礎(chǔ)。

          了解最新進展的同時還要加強對經(jīng)典開發(fā)理論的掌握。

          每年在下列主題上花一個月時間:

          • 形式語言
          • 自動機與可計算性理論
          • 計算復雜性理論
          • 形式化方法
          • 語義學
          • 算法與數(shù)據(jù)結(jié)構(gòu)

          譯注:

          形式語言:按一定規(guī)律構(gòu)成的句子或符號串的有限或無限的集合。

          自動機:是有線狀態(tài)機(FSM)的數(shù)學模型。

          可計算性理論:研究計算的可行性和函數(shù)算法的理論。又稱算法理論。它是算法設(shè)計與分析的基礎(chǔ),也是計算機科學的理論基礎(chǔ)。

          計算復雜性理論:計算復雜性理論是理論計算機科學的分支學科,使用數(shù)學方法對計算中所需的各種資源的耗費作定量的分析,并研究各類問題之間在計算復雜程度上的相互關(guān)系和基本性質(zhì),是算法分析的理論基礎(chǔ)。

          形式化方法:在邏輯科學中是指分析、研究思維形式結(jié)構(gòu)的方法。

          語義學:研究自然語言中詞語意義的學科。也可以指對邏輯形式系統(tǒng)中符號解釋的研究。

          對于剛起步的程序員,可以先看一看下列文章:

          譯注:

          CEK:CEK機器是由Matthias Felleisen和Dan Friedman開發(fā)的λ-演算的力學模型。

          Haskell:一種純函數(shù)式編程語言,以美國數(shù)學家Haskell Brooks Curry命名。

          接觸藝術(shù)和人文

          工程師往往輕視藝術(shù)。他們沒有意識到藝術(shù)和人文是基礎(chǔ)升華的重要因素。史蒂夫·喬布斯樂于指出將技術(shù)與人文結(jié)合的重要性,事實也卻是如此。

          藝術(shù)和設(shè)計原則同樣適用于人和計算機之間的交互。不要忽視這些原則。藝術(shù)和人文的訓練讓直覺更加敏銳,而這方面的練習是難以用數(shù)字來計量。工程師需要知道如何衡量那些他們不能計量的事物,而不是只是統(tǒng)計他們可以計量的內(nèi)容。

          每年至少有一個月學習下面列出的主題:

          • 工業(yè)設(shè)計
          • 哲學
          • 攝影
          • 繪畫
          • 素描
          • 音樂及音樂理論
          • 電影
          • 文學

          社會科學同樣會對計算機科學家有很大幫助,尤其是經(jīng)濟學和哲學。

          向新的軟件學習

          一個為自己的軟件尋找靈感的好辦法就是向新的或新型應用程序?qū)W習。例如,如果你從來沒有嘗試過3D建模軟件,可以嘗試Blender。抑或是,如果你從來沒有接觸過LaTeX,請真誠地試著去了解它。

          在學習過程中,請注意你喜歡什么和討厭什么。真誠地問自己,這些觀察到的內(nèi)容是否在你的軟件中存在。在工作中很難看到自己的缺點,但發(fā)現(xiàn)別人的不足卻很容易。天下沒有哪個父母認為自己的孩子長得難看。請學習看到自己作品的不足。

          完成一個自己的項目

          如果你整天為別人寫代碼,那么為自己寫程序能讓你記得當初為什么會成為程序員。每年為自己選擇的項目分配一個月的時間,完成核心功能,將其開源發(fā)布。

          原文鏈接:http://blog.jobbole.com/11590/

          posted on 2012-01-31 23:00 hellxoul 閱讀(195) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 奈曼旗| 太白县| 海淀区| 贞丰县| 沽源县| 襄樊市| 武安市| 高平市| 甘洛县| 吉安县| 洛浦县| 麻江县| 家居| 霍山县| 鄄城县| 博客| 靖宇县| 武鸣县| 本溪| 长治市| 富蕴县| 义马市| 英德市| 玛多县| 阜南县| 泰安市| 罗定市| 习水县| 裕民县| 大关县| 惠州市| 从化市| 孝昌县| 莆田市| 武宣县| 长汀县| 承德县| 永仁县| 阿鲁科尔沁旗| 托里县| 军事|