廢話少說直接上本文
本文
今天有有人需要我從資料庫匯出一份excel表,這個人是非技術人員,他的的需求是:
19號到25號選手的投票資料,匯出excel格式
ok大家看清這個需求了,
我的第一想法
找到選手使用者表,然後在看了一個投票記錄表,
聯表查選,找出19號到25號選手的投票數。
我把結果發給對方,對方很快就告訴我錯了,這個不是他想要的,我正納悶呢,
結果他說他需要的是19日到25日的選手投票資料,
第二次:
按照他的要求很快寫好mysql語句,到資料庫查詢,不知道怎麼搞的,總是沒有資料,
首先我懷疑我的時間條件寫的有問題,在網上找半天就是沒有解決,萬般無奈之下只好求助技術老大,
未果,經過再三溝通,最後發現他要的投票資料不是選手的投票數,而是投票記錄的日誌(對應的表也就是投票日誌表,而不是投票記錄表),
現在在來分析一下的他的需求:
歧異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。