也談優秀 我們真的必須知道什麼嗎?

2021-09-05 19:13:20 字數 2652 閱讀 1876

我向來喜歡跟風,首先幫dudu預先整理一下列表:

乙個優秀.net程式設計師的技能樹

我心目中的優秀開發人員標準 兼談oo和設計模式

.net 方向的 coder/designer 應當掌握什麼技能?

何必言精通——十年雜感 兼談其它

我心中的優秀開發人員

再說一下我的看法,我以前就說過, 首先要搞清楚自己的角色, 分開來說, 主要是研究人員和工程人員兩種。 但會有一些共同的要求。同時, 很多兄弟的角色是雙重的, 那麼就要根據不同的比重來調節掌握不同方向能力的深淺。 不過我個人提倡, 盡量把自己的身份單一化, 可能會比較有競爭力一些。

通用能力舉例:

1. 資料結構和簡單的演算法常識不用說了。

2. 作業系統, 大多數人沒必要精通任何乙個具體的作業系統。這一部分, 還有一些和作業系統相似的東西, 比如物件導向是咋回事, .net引擎下面是都有啥; 這些雖然不是作業系統, 但是是我們依賴的環境。 掌握的程度, 拿作業系統來說,應該知道乙個合理的作業系統會提供什麼, 它為了提供這些, 大概會怎麼做, 但更具體的則沒必要當作聖經。

3. 計算機組成原理, 這個還是應該有適當的了解的。

4. 非知識的能力, 包括kiss和分解事物的能力。

5. 收集資料的能力。

研究人員所需能力舉例:

1. 根據工作, 對自己領域的概念與演算法有高階的掌握。

2. 對it行業技術方向的方方面面感興趣、 有熱情、 能堅持, 同時可以進行廣泛的聯想以啟發自己。

3. 專注於學習能力的訓練和根本性的東西的掌握。

什麼是根本性的東西呢? 這個不太容易說什麼是, 但可以很清楚的分辨什麼不是: http這樣的東西不是, 因為它只是被實現成這樣,甚至為什麼實現成這樣的原因也不是, 而如何考慮相關問題的思想方法是。 同樣不重要的東西還有.net知識和具體軟體構建方**方面的如oo這樣的東西; 特別需要注意的是oo這樣的小型且具體的, 它表面上具有解釋事物的近乎本質的內容, 實際上只是通過創造乙個假象來幫助我們工作罷了 。 這樣具有迷惑性的東西尤其要小心對待, 不可過於昇華, 哪怕它自有其道理。 因為它相當的有針對性: 既有直接要解決的問題, 又是很具體的解決方法。把這樣的東西泛化, 對不是它針對的問題的理解、判斷和解決方式, 很可能造成不良影響。

工程人員所需能力舉例:

1. 責任心和個人的職業規劃, 這個必須要有。

2. 工程方面的能力, 比如對解決方案的分析與判斷、 流程管理相關的、 以及一直被忽略的如軟體估算等方面。

3. 一定的**能力: 當前和可以預估的未來, 我的工作可能會涉及哪方面知識和技能。(這個其實是通用的, 考慮到對研究人員是自發性的, 所以就在工程人員這裡特別提一下)

4. 對知識和技能的評估能力, 比如需要掌握到什麼水平可以應用於什麼樣的專案,帶來什麼樣的好處, 達到這一水平花費多少時間。

5. 各種需要用到的工具與方**的缺陷要有了解(大多數時候表面的了解已經足夠, 但不能不了解), 不提優點, 是因為優點是自然而然的。

還有一些, 如合作、溝通、 表達, 這些上面有些老兄已經提到了, 不過並非普遍性的, 比如乙個個人開發者就沒有太高的要求, 在這裡也不多說了, 大家也比我說的好得多。

至於其它的具體東西, 則都是停止與表面與使用就足夠了,在不恰當的目標與時機深入,有害無益。 拿.net來說, 其實大多數時候我們都沒有什麼必須知道的東西。 這麼說似乎很奇怪, 需要說明的是, 表面是變化的。  比如,經過了上面說的3這個過程, 我們也許會發現我們的任務需要某某方面的知識, 那麼這些知識以前是「深入」,而現在則僅僅是表面了, 而我們要做的僅僅是對這部分用到的知識進行表面性的了解, 其目的是使用。 在這裡額外說一句, 如果長時間從事.net領域,很多人不可避免的需要「深入」到一些表面, 王濤老兄的《你必須知道的.net》是相當不錯的。

要知道我們的工程時間, 和我們的生命都是有限的, 而乙個工程人員有做不完的事情。 這也是為什麼第4條相當重要的原因。 沒有4, 就無法判斷下乙個表面是多深, 也無法分配學習所需的時間; 如果不停的學習, 大多數時候不過是從乙個表面到另乙個表面的浪費時間, 所謂的「深入」,就成了自我欺騙的屁話。

這裡仍然要強調的是, 工程人員絕對不要期望自己像研究人員一樣生活和工作, 一旦達不到就抱怨。 以工程人員的時間分配, 大多數人永遠不可能夠格, 而且我們需要意識到發揮價值的方式是根本不同的, 而沒有一般人心裡的高下之分。當然, 如果想轉換角色到乙個研究人員, 事先做好計畫, 在一段時間內透支體力去加倍時間用於訓練, 逐漸淡出工程人員的身份還是可能的。研究人員轉換為工程人員則沒有太好的方法, 因為很多東西必須進入專案中後才能實際的學習。

找一下罵,說說另外乙個誤區: 過多的搞什麼哲學意義上的理解。 恕我直言, 很多人弄得那些玄乎的說法, 說實話既膚淺又可笑。 無論是工程人員還是研究人員, 大多數人平時進行的思考跟專職的哲學家、數學家比太少了,所得到的一些「感悟」、「真諦」, 對於人生態度也許會有積極的意義, 但是用在具體的學習、研究、 實踐上,並不會有太多的指導作用。 當然, 必須承認的是: 有一種自己的理解, 對於某種方**的使用, 是相當有好處的。 但是期望硬生生的拔高自己, 一通百通, 很多時候是赤裸裸的欺騙自己, 對於那些初出茅廬的聽眾而言, 則是不負責任的誤導了。

最後再找一下罵, 表面知識都有哪些呢? 我個人認為的, 平時經常出現的: 各種技巧、 clr內幕、 設計模式、 物件導向, 或者, 上面某幾位老兄的帖子裡能見到的大多數具體技術名詞(汗)。 同時在強調一下, 表面不代表我們可以不了解, 而是在恰當的時候開始, 做恰當的了解的東西。 首先、 且最重要的, 是需求分析, 不是嗎?

搞前端必須知道 jshintrc 是什麼?

jshintrc是jshint的一種配置方式。這種方式允許你每個專案有不同的配置檔案,只需要將檔案放在專案根目錄即可。jshintrc 配置選項 bitwise 是否禁用位運算子 camelcase 是否要求變數都使用駝峰命名 curly 是否要求迴圈或者條件語句必須使用花括號包圍 設定為true,...

優秀程式設計師必須知道的32個演算法

1 a 搜尋演算法 圖形搜尋演算法,從給定起點到給定終點計算出路徑。其中使用了一種啟發式的估算,為每個節點估算通過該節點的最佳路徑,並以之為各個地點排定次序。演算法以得到的次序訪問這些節點。因此,a 搜尋演算法是最佳優先搜尋的範例。2 集束搜尋 又名定向搜尋,beam search 最佳優先搜尋演算...

優秀程式設計師必須知道的32種演算法

奧地利符號計算研究所 research institute for symbolic computation,簡稱risc 的christoph koutschan博士在自己的頁面上發布了一篇文章,提到他做了乙個調查,參與者大多數是計算機科學家,他請這些科學家投票選出最重要的演算法,以下是這次調查的...