由一句需求引發的mysql崩潰說起

廢話少說直接上正文

正文

今天有有人需要我從數據庫導出一份excel表,這個人是非技術人員,他的的需求是:

19號到25號選手的投票數據,導出excel格式

ok大家看清這個需求了,

我的第一想法

找到選手用戶表,然後在看了一個投票記錄表,

聯表查選,找出19號到25號選手的投票數。

我把結果發給對方,對方很快就告訴我錯了,這個不是他想要的,我正納悶呢,

結果他說他需要的是19日到25日的選手投票數據,

第二次:

按照他的要求很快寫好mysql語句,到數據庫查詢,不知道怎麼搞的,總是沒有數據,

首先我懷疑我的時間條件寫的有問題,在網上找半天就是沒有解決,萬般無奈之下只好求助技術老大,

未果,經過再三溝通,最後發現他要的投票數據不是選手的投票數,而是投票記錄的日誌(對應的表也就是投票日誌表,而不是投票記錄表),

現在在來分析一下的他的需求:

  • 19號到25號選手的投票數據,導出excel格式

歧異1:19號 25號 是指時間而不是指選手id

歧異2:投票數據不是指投票數,而是指投票日誌

但是這句需求也沒有什麼錯誤,站在任何一個非技術人員的角度來說上面沒有錯誤,

站在我的角度來思考:貌似我也沒有什麼錯誤,如果我提要求的話估計也是這樣提。

但是雙方的真正需求和了解可謂是天壤之別,不得不思考,作爲技術人員如何和非技術人員溝通?

正巧看到月光博客上一篇程序員的本質,經過下午的折騰,更是深有體會;再錄一段,

博客原地址;http://www.williamlong.info/archives/2907.html

一名優秀程序員所具備的能力

我們可以看到,一名優秀程序員應該具備應付兩個不同世界的兩套技能。

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

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

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

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

面向人類和麪向硬件對象/系統的程序員有很大不同。

不與人溝通的程序員不是好程序員。一個優秀的解決方案需要計算機世界與人類世界的雙重技能。只有連接起兩個世界,才能成爲一個真正的優秀程序員。

最後一句話很重要:

不與人溝通的程序員不是好程序員。一個優秀的解決方案需要計算機世界與人類世界的雙重技能。只有連接起兩個世界,才能成爲一個真正的優秀程序員。

最後一句話很重要:不與人溝通的程序員不是好程序員。一個優秀的解決方案需要計算機世界與人類世界的雙重技能。只有連接起兩個世界,才能成爲一個真正的優秀程序員。

那麼怎樣做好溝通?歡迎大家談論,也請管理員手下留情

Technorati 標籤: 程序員 溝通

知識共享許可協議本文基於署名-非商業性使用 3.0許可協議發佈,歡迎轉載,演繹,但是必須保留本文的署名:PHP10086博客網(PHP淮北):http://www.php10086.com,也可以郵件與我聯繫。據說每個程序員都應該挖一口自己的井,希望各位支持我的"井":PHP10086博客網(PHP淮北):http://www.php10086.com


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章