<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                關于本系列文字的來源,初衷和內容定位可以參考第一篇的開頭部分,鏈接地址如下: http://blog.csdn.net/binarytreeex/article/details/8174445 http://www.cnblogs.com/WideUnion/archive/2012/11/12/2766397.html 本文前一篇地址如下,感興趣的可以訪問下面的連接: http://blog.csdn.net/binarytreeex/article/details/8888607 http://www.cnblogs.com/WideUnion/archive/2013/05/06/3061994.html 這次討論一個和解決問題有密切關系,并且也是大家非常熟悉的話題:能力。實際上能夠解決問題就是一種能力的表現,但是兩者并不完全等價。這篇博文打算從我個人成長經歷的角度回顧分享一些關于如何提高開發者自身能力的一些體會和心得。當然這些體會不是什么特效藥,可以保證開發者能夠一天就能武功精進,相反還是需要開發者自己長期不斷的積累,才能完成能力的體升。但是我的這些體會和心得可以幫助開發者盡量少走一些彎路,并且在提升之路上能獲得一些幫助,帶給開發者正能量。可以解決問題是能力表現,但是并不等同于能力。因為具體的人在解決問題時所處的環境,可以使用的資源,能夠獲得的幫助和信息都會直接影響到是否可以解決問題。所以評估能力不能簡單從能否解決問題這一個思路上來考察,更要看解決問題的過程和思路。前三篇所講的內容是從方法本身方面來說的,從某種角度上來說見效會快一些。本文則是談如何直接提升或者培養自身的能力來提高解決問題的質量,更注重在一個日積月累的過程。 如果本文敘述的內容,和讀者已有的體會存在相異之處的話,我非常歡迎能夠和同行們交流。應該說文本的內容出自自己的實際經歷,所以我是刻意去避免說一些大家都知道,或者經典書籍,培訓課程上的東西(如果這些東西存在的話)。但是在實用性和實際效果方面,我相信是非常好的。同樣再次強點,本文介紹的內容來自個人的實踐,對于能力培養這樣一個宏大的話題和全體開發者這樣一個寬泛的群體來說,局限性和片面性是在所難免的。所以請同行們自行取舍,同時也要根據自己的經驗,實際應用場合做出適當的變化,這樣才能更好的應用本文介紹的內容。如果分享的內容可以為同行們帶來實際的幫助的話,那么我的目的就達到了。 **一. 能力是什么?** 在開始討論能力養成這個話題時候,首先要明確一下,能力是指什么,或者說什么是能力。在實際工作中,能力這個詞是大家非常熟悉的,也被頻繁使用,甚至可以說被用爛了。我這里不考慮各個公司對能力的定義和內容,本文所說的能力只被限制在一個相對狹隘的范疇。在這樣一個范疇中,能力可以通過具體的實際的表現來衡量。這個標準就是一個開發者能夠解決問題的數量的多少和質量的高低。 簡單來說數量和質量可以用一個等價數字來表達,數字高的可以認為是能力強,而低的則相對較弱。這可以理解為是絕對標準。于此相對,還有一個所謂的相對標準。這個意思是不僅僅從數量和質量來考察,還需要考察問題的上下文環境,解決問題的開發者的自身情況等因素,綜合考慮之后再確定開發者的能力處于一個什么水平。這就是所謂相對標準。 **二.能力的內容** 本文只討論和專業相關的能力,就是所謂的智力因素相關的能力。對于更為普遍的所謂非智力因素的能力,本文就不討論了,比如:如何培養能力從一個程序員成為一個項目經理,等等。 **三.提升能力的途徑和方法** 總體來講,提升能力的方法和途徑大致有以下幾點:學習,積累,思考,實踐。這些方法是可以貫穿在整個職業生涯的。當然在不同的階段,具體的操作和使用會有所區別。 下面我從一個大學生開始介紹一下提升能力的體會。作為起點從校園開始講,那是因為我覺得大學是一個提升能力的很重要的階段。 **1. 學生提升能力的方法** 普遍的觀點認為,大學畢業生沒有經驗,所以在實際解決問題時表現出來的能力是比較差的。這點我不否認,但是這種觀點過于流行的程度,使我認為這種看法是不全面的,學生是可以有能力的。我建議學生們做好以下幾點: a.讀好你的書 在校園中的時間,學生主要的任務當然是學習。這種學習的效果在開始工作時可能不會有所體現,但是從長遠來看,這是能力提升的一個瓶頸。所以在校園中盡量把課程學好,尤其是幾門重要的基礎課和專業課的課程學好是非常有必要的。具體課程的內容,可以參考本系列學習篇中的相關內容。當然我也相信在學校中會有很多相關的內容,幫助學生學好自己的課程,所以可以參考一下,這里不太過多討論了。 b.做好你的作業 這個作業具體可以指這樣幾門課程:數學相關的課程,尤其是排列組合相關的內容;編譯;數據結構;操作系統等等。完成作業是最直接使用知識的一個途徑。我建議學生可以從使用知識,解決問題的角度來看待自己的作業。其實這樣做應該不是太難,尤其像數據結構這樣的課程,做到這點是比較容易的。對完成作業的解題方法的質量,我建議學生可以對自己提出一點要求。這個意思就是說,能不能找出多個不同的方法完成題目,或者努力一下找出一個更好的完成題目的方法。這樣的要求可以幫助學生更多更好的思考,從一個相對要求更高的層面上來使用自己學過的知識。當然也能幫助學生對自己學過的知識更加熟悉起來,為以后在實際工作中使用這些知識做好準備。 c.多多練習 計算機專業是一個實踐性很強的專業,所以作為計算機專業的學生,只是在作業本上完成習題是遠遠不夠的。對于數據結構或者某一門具體的編程語言的課程,我建議學生保證一定量的編碼練習。我覺得在學這類課程時,你每天晚上都應該是比較忙的,當然是忙著寫代碼和調試程序。 d.畢業設計 從你大學生涯的第一天學習計算機專業的課程開始,你就要對自己的畢業設計做什么有一個大致的看法。如果覺得有困難,那么我建議學生提前2年開始考慮這個問題。因為當年在我自己做畢業設計的時候,我的老師說過,畢業設計要綜合運用到自己在大學里學過的知識。所以你的專業一定是在你的畢業設計之前就要學好的,否則你的畢業設計就會有問題。提前思考你的畢業設計,對你學好專業課會有一個更為明確的目標和動力。我看到的大部分學生完成的畢業設計的質量是很低的。之所以說低,是因為完成后的畢業設計沒有使用到自己學過的知識,尤其是專業課程的知識。所以學生失去了一次非常好的實踐機會。一個好的畢業設計你可以認為是一個mini項目。 e.嘗試做一些項目 項目可以自己找,也可以去實習,這個自己看著辦。我想強調的是要去做。比如利用寒暑假做一些小程序。我可以說一下自己當年做過的練手的程序: 挖地雷: 這個可以幫助你設計最基本的界面,可以熟悉GDI+,可以考慮地雷位置的生成算法,等等。是一個非常好的可難可易的練手的題目。 俄羅斯方塊: 這個程序可以練習鍵盤控制,界面響應,圖形操作,以及一些基本的面向對象的設計構思。我建議學生可以考慮多次反復的完成這種練習,每次會有新的體會,能力就逐步提高了。這個游戲我在不同的階段用不同的語言做過好幾遍。 那么做到以上幾點對于一個學生提升能力有什么幫助呢?我覺得當你離開校園踏上工作崗位的時候,你具體以下的優勢: 第一點, ?扎實的基礎功 這可以保證你在很長的職業生涯中維持著一個不錯的狀態也是你能夠長期勝任開發崗位的一個重要因素之一。 第二點, ?具備基本的或者較強的調試程序的能力 調試程序的能力不一定需要有實際工作經驗以后才能具備。學生完成足夠的編碼,并且編碼的內容具有足夠的難度和質量,那么一個畢業生同樣可以具備非常出色的調試程序的能力。這是任何一個愿意去努力的學生完全可以做到的。 第三點, ?基本的解決問題能力。 學生解決自己作業中的問題,解決自己上機練習中的問題,這些經歷實際上就是一個能力積累的過程。這為工作后解決實際問題或者更有難度的問題打下了一個非常好的基礎。 **2. 工作中的能力提升** 在工作中要注意積累。對于大部分人來說,開發的歲月是在完成一個一個項目的過程中度過的。那么當一個項目完成后可以問一下自己我得到了什么?尤其是剛開始工作的那幾年,正是提升幅度最大的階段。思考一下自己收獲,掌握的新的技能,如果可能還可以寫一點筆記。我在最開始的兩年能夠做到每一周寫一篇筆記。所以至今回憶起來,在我創業之前那個階段里,收獲最大的是我沒入行自學的那個階段。而到了北京入行以后,基本上是使用之前積累的經驗。雖然不能說在北京工作的那段時間一點長進都沒有,但是從編碼開發的角度來說,長進確實不能和自學階段相比。所以建議大家做好積累的工作。 勤于思考。這個思考主要是考慮項目中可以改進或者有缺陷的地方。當然具體的環境是否允許你提出來,這個自己看著辦。我的意思是你需要主動的去這樣思考。你的能力可以在這樣的思考中慢慢提高。另外思考之后,可能會發現更好地作法,如果這樣的話,我建議你再多做一點工作。那就是嘗試去尋找證據來證明的你想法是對的,這點非常重要。在剛開始的時候,可能會覺得有難度,但是次數多了就會慢慢順手了,你的能力也就得到提升了。 盡量高質量的完成自己的工作。做到這點可能會受制于具體的環境,比如時間非常緊的項目可能不允許花費過多的時間來做這個事情。但是如果有機會的,希望能盡量去嘗試。其中一個非常有趣味的問題在于,把工作或者說把編碼做到什么程度算是更好的質量呢?這個問題我相信不同的人會有不同的理解,大家可以自己去定位一個,然后努力去做。我可以給出一個參考標準:用盡量少的代碼行數完成相同的工作。當然,前提是可讀性和可維護性的損失在可接受的范圍內,零損失當然是理想的。這種判定標準的確定和具體判定時的取舍,實際上也是一種能力的體現,多多練習也是很有裨益的。 **3. 生活中的能力提升** 我一直覺得從事開發工作是要有一點基礎條件的。其中一個就是,是否能從程序員的角度來考察和思考現實生活中的事情。這屬于勤于思考的范疇,但是內容卻更為豐富,也更有趣味。下面我可以舉兩個例子。 一次和同事一起坐電梯,同事一邊看自己的手機一邊進入電梯,電梯門關上后他發現手機信號還是滿的。這個問題如何解釋?思考這個問題的答案和程序員有什么關系?首先從我們知道的事實來講,手機可以顯示所處環境的信號的強弱,所以可以肯定手機和基站有通信。如果在電梯門一關上手機就能馬上察覺沒有信號,那么手機必須保持足夠高頻率的檢測。比如電腦掃描鍵盤是頻率是每秒18.2次。以人類生理極限來說,這個頻率可以足夠保證你的每次按鍵都可以被捕捉到。那么手機有必要么?基于當時我做過的通信項目來說,是完全沒有必要,保持一定間隔的查詢就可以了。到這里和程序員的開發就有關系了。對于這個例子一個可能解釋是,手機顯示的信號是兩次檢測間隔中的信號,而上一次是在電梯外,下一次檢測時間還沒到,所以造成電梯門關上后,還顯示滿信號的情況。當然如果從來沒有做過通信程序可能想不到這個答案,但是你可以在生活中盡量使用你知道的知識和經驗來解釋你看到現象。 第二個例子還是和手機相關的。我記得葛優在一部賀歲片中有這么一個橋段,不關機直接去下手機電池。這個時候別人打入電話時聽到的提示是無法接通,而不是已關機。那么這是為什么呢?這個問題同樣可以從通信角度給出一個解釋,當然我不肯定這個解釋是對的。手機和基站的存在通信這個是肯定的。正常關機的話,手機的操作系統一定是按照固定步驟完成關機的。顯然假設其中存在一個步驟通知基站手機關機,這是非常合理的。從而更新數據庫中的相關數據確認手機已關閉。所以正常關機后再打入電話就提示已關機。如果直接取下電池,那么所有程序立刻停止,基站或者服務器端沒有得到任何信息,當然任然認為手機是開著的。這時再打入,那么服務器還是認為手機開的,然后發出呼叫信號,等待應答,當然等到花兒都謝了也不會有應答了。這樣服務器端只能提示無法接通。 就這個問題而言其實還可以做更多實驗,比如卸下電池后過一天再打,提示如果是已關機,那么說明服務器和手機之間通信有連接檢測機制。或者,去下電池再裝上,別開機,然后打入,再馬上開機,看看是否能接到。如果可以,說明服務器端有等待并多次嘗試連接的通信機制。 以上例子說明在生活中要注意觀察勤于思考,用我們知道的知識來解釋我們看到的現象。另外一個訓練的法方法是,向自己提問:一件事情如何盡可能多的通過寫程序讓計算機來完成。從這個角度上來說,當一個程序員遇到事情時不能總是想著自己來做,而是要想著如何讓電腦來做。堅持這么思考,你會慢慢發現計算機能做的事情會越來越多的,項目中要求實現的有難度的功能越來越少了。當然這種思考不會每次都有結果,但是保持這種習慣對提升能力很有幫助。 **4. 智力的培養** 在我的看法中智商是最重要的因素。當然智商是先天決定的,但是智商也是可以后天培養的。對于這個事實,我以前的看法是感覺有幫助,但是確認可以后天提升,那是不久前看到的一個報道。這個事實由英國科學家通過研究得到確認了。所以在這里介紹給大家。當然這種提升和先天的智商還有很大區別的,主要有以下幾點: 1. ?提升的幅度有限 也就是說只能在一定程度上改善智商,但是這點改善就我的體會來說已經很受用了。 2. ?應用領域受限 先天的智商可以在不同的領域發揮作用,這取決于個人的選擇。而后天培養的智商只能在培養的方向上起作用。當然這一點肯定不是一個問題,能提升能力就行,別的行業我們不關心。 3. ?需要持續的培養 這就是說,如果一旦你停止,那么后天的智商就會衰退。所以啊,要勤奮的不間斷的培養。 就智商提升的具體手段來說我的體會如下: 1. ?看大公司的筆試題面試題 大公司的很多題目都是和專業知識無關的動腦筋的題目。不用去做這些題,你可以簡單思考后直接看答案,然后體會一下,并記住思路。這樣題目大家可以自己在平時的生活中點滴收集。我可以給一個例子,我曾被問道這樣一個問題:如何判定一個單向鏈表中存在環。這個題目的解非常優秀,很值得欣賞。 2. ?向智慧的案例學習 不要理解成益智的案例,或者益智的游戲,類似阿凡提之類的故事不要去看。我舉兩個例子: 某一屆港姐選舉時,一個選手被問到這樣的問題:希特勒和莫扎特你會選擇和誰結婚?如果答案是莫扎特,那么當然不錯,但是沒有亮點,顯然很普通。該選手的答案是選希特勒,理由是這樣世界將不會有第二次世界大戰,這個答案大亮。 另一個例子是來自周恩來,一次外國記者問中國銀行有多少錢,其用意是想通過回答的數字來諷刺中國政府很窮。當然總理看出其意圖,總理回答是18元8毛8分。這個故事廣為流傳,這里就不多說了,不了解的自己google吧。 生活中注意這種訓練是會有實際益處的。比如我曾在一次應聘開發職位的面試中被問到這樣一個問題:如果給你足夠的權力和資源,你會如何把長城從北京搬到溫哥華?如果長期堅持對自己智商的訓練,那么應對這類問題的難度就會降低,其中的一部分就有可能給出正確的回答。當然更為實際體現還是在我們的開發工作中。我相信應該還會有其他的方法來訓練,我也愿意聽到大家的經驗,如果愿意告訴我,我表示非常感謝。 好了,這次就寫到這里,如何解決問題的話題到這里就算是告一個段落了,通過這次回顧我自己也有相當的體會,確實也收獲了一些東西。同行們有興趣進一步交流的可以加我的群:244054966,這個群定位是創業,新手就不要去了。另一個是:231233168,這個群沒什么限制。入群時請加上消息:CSDN博客。由于最近工作原因,這個系列是否可以定期發表我不敢保證了,但是我會盡量保持定期。下一篇的話題是什么現在還沒有想好,可能是職場相關的,或者設計相關的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看