*--本文基于我在2011-9-10Qclub大連站上的演講整理。--*
IT業是服務業的一種,而IT人員作為服務業的一員,目的就是要讓客戶滿意,這里所說的客戶可能是公司內部的業務用戶,也可能是公司外部的業務人員,但不管怎樣,我們的目的應該是一致的。
想要讓客戶滿意,我們要達到的工作效果如何呢?借用之前一位前輩的話,他當時是在闡述什么樣的軟件產品或者說軟件系統能夠容易銷售,“有兩條特性, 一是幫客戶省時間,一是幫客戶省錢,如果這兩條能夠達到一條,那么就算是基本合格了,如果都能夠實現,那么就不愁賣了。”同樣,我們想要自己的服務令業務用戶滿意,同樣應該達到上述的目的——省錢、省時間。如果借助我們的服務,能夠幫助業務用戶和公司賺更多的錢,那么我們的服務就更上層樓了,那應該可以借助人工智能的優勢達成。
然而,上述只是我們的理想,它和現實之間往往會有很大的差距,在很多時候,業務人員并不認為IT能夠幫他們省錢、省時間,更不用提生錢了。他們認為IT部門是燒錢的部門,每年的軟件系統會花費大量的資金,但是并不能帶來多少實質性的改變,甚至于無法很好地支持業務。更不客氣的說法,IT根本就是浪費錢。
盡管IT人員,特別是銷售工程師,都會苦口婆心地告訴業務部門的人們,IT系統能夠幫你節省成本,你看,之前很多東西你都需要打印出來才能簽字,我們現在可以幫你實現無紙化辦公,這樣可以節省不少打印的成本啊;還可以提高工作效率,你想計算機算數多快啊,電腦啊,總比人腦厲害的。
然而業務人員在經歷了各種系統之后,并不那么認為,上面的那些話根本就是一大堆謊言,為什么呢?有如下問題:
- 諸多需求變更無法滿足
- 輸入麻煩,無法大塊地復制粘貼,浪費更多時間
- 因為程序bug、網絡、電力等各方面的原因,故障頻發,而且一旦出現問題,造成的損失會很大
- 靈活性不夠,很多在實際業務中很容易實現的操作因為系統的限制無法進行。
的確,軟件系統因為各種原因,存在著上述問題,所以我們作為程序員,更應該從我做起,提高自己的能力,從而更好地讓業務用戶滿意。接下來讓我們從軟能力和硬能力兩個方面來敘述一下,如何才能夠更好地提升滿意度。
**軟能力**
說到軟能力,很多程序員朋友會認為沒有技術能力重要,但是,我覺得這方面的能力在某些時候是保證我們能夠讓客戶滿意的重要條件,因為缺少了這些能力,我們甚至都無法了解到客戶在什么地方不滿意,為什么不滿意,怎樣做才能夠讓他們滿意,又從何談起提升滿意度呢?
**溝通能力**
其實在任何工作過程中,溝通和交流能力都是非常重要的,特別是對于能夠接觸到最終用戶的程序員來說,這一能力尤其重要。
不過在溝通之前,或者說在溝通之中,我們要盡可能地和客戶成為朋友,因為只有成為朋友之后,才能進行更好的溝通。
這首先要求我們要擺正自己的位置。很多情況下,作為程序員,應該都至少擁有不錯的學歷,掌握的也是高新科技的知識,不可避免有些程序員會覺得自己高人一等,而業務用戶特別是一般企業中的業務員,可能沒有這么高的學歷,計算機知識也不是特別豐富。然而他們也擁有我們所不知道的東西,三人行必有我師,在溝通的情況下,他們也是我們的老師,如果一味地拒人于千里之外,那么就根本談不上什么溝通了。
接下來,想要成為朋友,我們可以從細節做起,對于一個人來說,比較重要的東西很簡單,首先是名字,其次是生日,如果我們能夠清楚地記住一個人的名字,并且在下次見面的時候就能夠準確無誤地喊出來,那么一定會贏得好感。如果能夠在生日的時候送上一句祝福,那么也會帶來意想不到的效果。而做到這兩點,我們并不需要付出太多,只要留心就好。另外一個細節就是要了解業務用戶的愛好或者興趣,如果正好和自己的有重合的話,就可以經常討論一下,那也是增進友誼很好的方式。
溝通的方式有多種,比方說:
- 面對面溝通
- 電話
- 即時通信工具(Messager、QQ、Gtalk等等)
- 郵件
個人認為優先選用前面的兩種方式,那樣會得到更好的溝通效果,溝通的效率也會比較高。因為這兩種方式更為直接,而后面的兩種方式則會因為距離而產生更多的誤解和歧義。
**分析能力**
對待一個問題,哲學上有三個步驟的說法,也就是:發現問題,分析問題和解決問題,所以我們會看到,其實分析問題是一個承上啟下的步驟,作用也是非常明顯的。而想要提高分析能力,真正能夠把問題分析清楚,絕對是解決問題的必要條件。
在此我想推薦高德拉特先生的《目標》等一系列圖書,其中講述的是,我們在分析問題的時候,要根據情況的變化而適時調整,不斷地尋找流程中的瓶頸,其實也就是問題的關鍵點,找到之后使用一定的方法解決,但是,并非是解決了一個瓶頸之后就萬事大吉了,因為解決了一個瓶頸之后,整個流程的瓶頸就會轉移到另一個地方,我們必須加以調整。
另外,我在分析問題的過程中,經常會使用到思維導圖,從了解這個工具到現在,我已經形成了習慣,每次分析問題的時候都會不自覺地拿出一張白紙,然后用筆在上面寫寫畫畫。
**學習能力**
當前的各種知識不斷更新,因此對于想要解決問題的我們來說,學習是非常必要的。而對于想要解決業務問題,更必要的是要學習業務領域的專業知識。這并非是說IT相關的專業知識不重要,但想要更好地理解業務的問題,并更好地為業務用戶提供解決方案,掌握業務領域的知識是非常重要的。
想要學習那些知識,一種途徑是看書,但另一種更加有效的途徑就是與業務用戶多多交流,甚至在條件允許的情況下,融入到業務團隊中,在一段時間內,和他們一起工作。那樣得到的經驗會非常寶貴,絕對是第一手。并且這非常有利于我們轉換思考的角度,真正做到從業務用戶的角度來思考問題。
在IT系統中存在IT的架構,或者說軟件系統中有系統架構,在業務領域同樣有業務的架構,只有二者可以完美地契合,IT的系統才能夠更好地為業務服務,從而更有利于業務部門的發展。
**硬能力**
除了上述的軟能力之外,想要實現解決業務問題的方案,我們還需要增加硬能力,也就是技術能力。對于程序員來說,這方面的能力主要指的就是語言和工具。但是,學以致用,我們不僅僅要學習這些知識,還要了解到它們的優點和缺點,那樣才更有利于使用它們來解決問題。俗話說,尺有所短,寸有所長,我們要做的就是取長補短。
**使用合適的語言和工具**
在軟件開發的過程中,對于每個項目都會有一些規范和限制,但是對于一些特定的工具類程序,或者是那種即拋性的小程序,我們就可以采用一些在常規開發過程中不可能使用的方法來做,那樣會取得事半功倍的效果。
比方說,在大型項目的開發過程中,我們一般不會使用中文作為變量名,但是,之前我開發的VBA宏程序中,因為用到了很多保險術語,想要為之起合適的英文名非常難,而且那些單詞可能過段時間之后自己都不認識,所以里面很多變量名都使用了中文,這樣對于開發以及后續的維護都帶來了很大的方便。
盡管說在那些程序中可以比較隨意地使用一些平時不能使用的方法,但并不意味著可以不注意代碼規范,比方說縮進、命名規則等等,如果代碼的格式很亂,那樣的代碼的可維護性還是會很差,而且那些問題應該是程序員最基本的素養,在任何程序中,即便是即拋性的小程序中,也需要認真對待。
另外,就是可以根據需要采用一些不常用的語言和工具,在項目開發過程中,很多東西都是只需要臨時維護,對于那些程序,最重要的就是開發的時間,盡可能快遞把程序提交給用戶使用,才能夠發揮出應有的作用。所以,在這種時候,盡管在核心的系統中我們可能使用的Java、.NET等等,我們大可以采用諸如F#、Python等動態語言,或者其它工具諸如Reporting Service等等,那樣就可以通過縮短客戶的等待時間而獲得更高的滿意度。
**組合的方式解決問題**
正如上面所說的,各種語言和工具都有自己的優勢和劣勢,所以,在某些時候,我們可以對其進行組合來解決問題,那樣會發揮出各種語言和工具的優勢,而避免各自的劣勢。
比方說在之前的一個小型的項目中,我們就采用了多種技術的組合來解決問題。項目的目標是要生成一些數據,然后以sftp的形式上傳到某個網站中,該網站的廠商會做后續的處理。
所要生成的數據因為實在Oracle數據庫中,所以最合適的語言就是Oracle自身的PL/SQL,我們使用存儲過程來開發了這部分功能,從而可以避免網絡傳輸,而且不需要高級語言通過數據庫連接來調用數據庫。并且在數據庫中設置了相關的Job,在特定的時間就會生成相應的數據。
由于安全性的限制,在數據庫中的操作就到上面為止了,接下來我們采用C#并而借助enterprise library庫來生成相應的文本文件。
最后一步上傳,我們并沒有使用.NET中的類庫,因為它對于sftp的支持比較麻煩,所以我們直接建立進程,調用putty來執行上傳操作。而該操作使用的東西很簡單,就是批處理文件(.bat)。
這樣,我們在項目中組合了多種技術,這樣開發的時間被大大縮短,效果也很好,而且在各個環節,我們可以監控到中間的產物。
**結論**
由上述內容我們可以看出,在很多企業中,IT的最終目標就是要解決業務的問題,而想要更好地達到這個目的,我們就要軟硬兼施,提高自己在各方面的能力。