1. 程式人生 > >人們眼中的程式設計師

人們眼中的程式設計師

在形形色色的行業中,程式設計師絕對是非主流:除了 IT 從業者之外,我的同學、親友們 幾乎都不能一下子就明白我做的工作是什麼。

這自然是一個悲劇,在外人眼裡,隨便挑一個程式設計師出來都會認為他是一個 geek…… 更悲劇的是,很多程式設計師自身都難以清晰地解釋程式設計師的意義。

於是那篇文章指出一個核心觀點:程式設計師是將人類想法翻譯成計算機語言的人。

兩個物種,兩個世界

我們可以把“計算機”看成一個新物種,這種“生物”的特點是,能夠保證全理性地執行工作。 就是說,你告訴他要做什麼,他就做什麼。

另一方面,人類本身是複雜的生物,記憶力有限、注意力容易分散……所以相比而言,計算機 擁有超過人類成千上萬倍的工作效率。因此,計算機能做的事情,我們都給它做,這樣生活就會更好。

這當中存在的一個問題是,計算機不可能直接領會人類的意圖而執行任務。於是我們需要程式設計師 來告訴計算機我們要做什麼。 容易忽略的一點是,程式設計師不僅僅要和計算機打交道,更重要的,他必須“明白人類的需求”, 所以“需求分析”是那麼的重要。
程式設計師需要具備的能力

這是最後最重要的結論。正因為程式設計師是和兩個世界打交道的人,因此他必須具備兩方面的能力。

理解人類的需求並提出解決方案

  1. 溝通——與人建立聯絡的能力,能夠同他人親密的交談,並有勇氣去嘗試分享自己的觀點。
  2. 意圖——從談話中提取有用的資訊,理解並使之有意義。
  3. 邏輯——為不懂讓步的計算機整理、剔除那些人類思想中含糊而有爭議的內容。
  4. 創造力——挖掘、轉變人類的想法,從而建立優秀的解決方案。
  5. 構思——利用人類友好的介面和便捷的互動性來包裝程式設計思想。
  6. 大局觀——清楚解決方案是如何適應全世界的使用者、企業以及其他,從而使你的程式更有用。

告訴計算機該做什麼,並建立解決方案

  1. 邏輯(再次強調)——把程式設計師的想法組織整理成有凝聚力的軟體思想和計算機指令
  2. 技術——發現並理解科技黑箱(對於 99% 的人來說是黑箱)。
  3. 程式語言——學習美觀的、富有邏輯的、清晰明瞭的語言,從而把程式設計師的想法提供給電腦。
  4. 演算法——精通讓計算機完成任務最高效的方法。
  5. 建模——在軟體程式碼中建立抽象和模型,從而掌握並操控想法。
  6. 實踐(比如程式碼重構、單元測試、持續整合)——週期性活動,以保持系統可靠、健壯與可改變。

   最後,不與人溝通的程式設計師不是好程式設計師。 一個優秀的解決方案需要計算機世界與人類世界的雙重技能。 只有連線起兩個世界,才能成為一個真正的優秀程式設計師。