作為乙個剛工作一年多的新手程式設計師,談這個話題似乎有點關公門前耍大刀的嫌疑,但溝通是普遍存在於各行各業的,只要是人和人的合作,就需要有效的溝通來使各自的工作成果能有效的結合,所以基本社會中的每個人只要對自己過往的工作經歷認真思考,都應該能得到關於如何與人有效溝通的經驗。我在做程式設計師之前做過房地產公司的施工員,工作中和各種工程隊的隊長,技術員,民工,以及監理方,甲方人員都有廣泛的溝通,內容涉及從施工規範到安全培訓,從專案檔案備案到各個專案承包商資源,場地,車輛機械的協調,可以說是和各色人等交流各種問題,也算積累了一些溝通經驗,尤其是和非專業人員講解專業知識的經驗。
對於程式設計師來說,溝通的含義相對純粹,因為我認為程式設計師之間的溝通不會包含一些所謂公關的技巧,我們的目的不是通過什麼談話技巧,思維引導術,委婉的,或詭辯的使別人接受自己的想法,屈服於自己的意志。我們的目標很簡單,就是能清楚明白的說清楚自己的想法,自己的設計,自己的意見,自己的建議。程式設計師的溝通主要是清楚的表達自己的意思,因為我們工作中要解決的問題都比較複雜,而工作的過程就是大家都清楚的陳列自己的想法,相互檢查,一起思考,群策群力,最終得到乙個共同認可的可行方案,然後開始實施。
所以很難得但是很必要的一點要求就是:保持客觀!因為通常來說,被證明自己是錯誤的之前,每個人都會固執的認為自己是對的。讓思維不帶有個人情緒或主觀意見是乙個很難達到的境界。 但是任何人都無權指責乙個堅持己見的人,不論他的想法對於錯。我對這一點也沒什麼好說的,但還是希望,團隊中的每個人心態平和一些,如果大家共同商討乙個問題,那麼就是每個人挖掘出自己能挖掘到的資訊,每個人提出自己構思的方案,如果能力強的更可以提出自己翔實的解決方案。但盡量不要有唯我獨尊,非我莫屬的想法, 確實在軟體開發中,有時候會有多個
可行方案,而且哪個更好哪個更壞,業界都沒有統一的標準,這是就是個人主義開始抬頭的危險邊緣。雖然通常乙個人沒有能力左右團隊的決策,但是如果大家各自為政,一盤散沙,團隊可能很快會陷入困境,總之一句話,堅持己見沒有錯誤,但看問題一定要客觀,自己錯了要承認,別人正確了也要承認,不要因為堅持己見而變得看問題主觀,偏激。
溝通的首要前提是認真的聽別人的陳述,溝通是乙個過程,聽者 和 說者不斷的互換角色,交流彼此的資訊,最終實現本次溝通的具體目標,比如:
請求幫助解決乙個問題,請求了解一些情況,一起討論決定乙個方案,教授一些知識\技巧。在這些過程中,主要的責任都是在說者身上,聽者唯一要做的就是調動自己的積極性,注意聽,認真想,仔細領會說者的內容。因為溝通的物件智力,經驗,專業技能,可能並不是非常優秀,所以,要想實現有效的溝通,主要的責任確實都是在說者身上,聽者只要認真聽就可以了。
人的理解能力,知識,經驗都是有高低的,同乙個問題對不同的人有不同的解釋方法,優秀的演說者,會洞察這種差別並做相應的調整,如果你懂相對論,跟街道的大媽也可以講的通,她肯定不懂什麼高深理論複雜公式,但思辨的過程是共通的,你總能在他的世界觀中找到類似的過程,向他陳述乙個類似的比喻,讓他有乙個概念上的認識,從今以後,她就多了一種思考問題的方式,就像是給cpu新增了乙個指令集一樣,cpu不會知道你用這個指令集來幹什麼,但他確實多了一種演算法,可以解決更多的問題,擁有更高的效率。我們溝通的是思維方式,指令集,而不是資料,資料每個人都可以自己獲得,就是資訊,思維方式是占用很低,但價值很高,資料通過溝通來獲取是低效的,所以說溝通的核心就是告訴對方:我是怎麼想 」我們正在談論的這個問題「 的, 你用各種比喻,描述技巧說清楚這個,對方會理解,學習,並評價你的思維方式,這就是溝通的價值,相互促進和提高。
實際上我們也要資訊資料上的溝通,而且非常重要!要清楚的表達自己的想法,要有足夠的上下文(問題所在的環境描述), 這也是為何程式溝通成本較高的原因,當有乙個問題自己解決不了,向別人請教時,被請教的人需要完整的理解整個上下文才能得出正確的結論,通常你遇到乙個問題,或許是因為你的思維僵化,無法跳出圈子,或者就是你疏漏了某個關鍵條件,如果你迅速的描述了你所掌握的核心條件,那麼對方可以立刻按照自己的思維方式開始分析問題,那麼他可能很快的得出自己的結論或者發現你的條件中有重要的專案缺失。否則,對方需要首先花一樣的精力去了解你之前獲得的資訊,然後才能開始思辨過程,相當於他完整的解決了這個問題,那還不如直接將工作移交給他來處理。所以說,提供足夠的上下文資訊,會使參與交流者盡快大發揮其思辨作用,提高溝通的效率。
溝通要突出重點,首先能簡明的描述自己的核心邏輯,框架設計,問題要點,這樣,在你陳述細節時,對方可以開始思考,不會被某個突然出現的細節導致思維停頓,而跟不上你的思維,如果你一開始,沒有乙個提綱來強調主線,而直接進入正文,並充斥大量細節內容,聽者很快就會迷失,因為他不知道什麼重要,什麼不重要,他必須努力記住全部細節,或自己實時分析歸納,簡單的問題還可以,複雜的問題,對方很快就會暈頭轉向,記住新細節,忘掉舊細節,無法調動自己的大腦開始思考。當然除非他非常有經驗,解決過類似問題,否則,他只是被拉進細節的泥潭,不知到該聽什麼,記什麼,完全無法思考,進入了聽不懂的狀態!
說話注意語氣,這是一種技巧,但卻有必要性,在重要的線索上加重語氣,可以達到更好的效果,人畢竟是動物,有情緒反應的本能, 保持乙個語調的演說通常會讓人昏昏欲睡,而抑揚頓挫,有輕重緩急的語調,能暗示對方某些東西重要,某些東西次要,這種隱性的 」註解「 能力,對溝通有極大幫助!
無論多麼有溝通經驗和技巧,在軟體行業,有的問題是很難用語言一次說清楚的,有的也是說不清楚的,有的即使說清了也很難聽懂,我們的目標是讓對方聽懂,所以不管用什麼方式,哪怕荒誕的方式,滑稽的方式,目標是讓對方聽懂,而不是只要自己講清楚了,就推託責任,或者乾脆指責對方笨,這都是極大的錯誤!首先要建立正確的心態,非常複雜的東西,不要指望說一遍,對方就能聽懂,理解,並記住所有細節,這是不太現實的。所以反覆的溝通,交流,確認,核對,最終達成共識的溝通過程在程式開發過程中是會經常出現的,心平氣和的完成這個過程才是成熟理性的表現。
如何檢查溝通的效果, 最簡單的辦法就是讓聽者複述說者的內容,複述核心概念、核心邏輯、核心思路,讓說者聽對不對,先確保對方清楚自己的意思,這就是基本的成功,然後兩個人開始就這個話題展開討論,其中的任何碰撞,火花,都是這次溝通的收穫。
最後,溝通要主動,發現問題要及時溝通,不要懶惰
程式設計師工作中常見的錯誤型別
成長是乙個學習的過程,我們經歷過各種的錯誤經歷並進行反思才能進步。錯誤的出現是為了幫助我們成長而不是阻礙我們進步。所以我們要端正對待錯誤和超綱需求的態度。以下是我在極客時間專欄中學習到的內容。稍作修改記錄下來方便以後查閱。1,伸展性錯誤 在完成工作中,涉及到了自己從未了解過的知識或者從未涉足過的領域...
作為乙個程式設計師,工作中我們應該有哪些素質
說實話我不知道懷著什麼樣的心情寫下這篇文章,我不是什麼樣的大神程式設計師,我也沒有資格要求別人什麼,在因為近期在工作中遇到的事情,我決定寫下這篇文章,簡單說一下程式設計師應該具有哪些素質 純屬個人理解 基本的學習能力 現在程式設計師這個職業在一線城市的門檻越來越高,但在二三線城市卻沒有這麼嚴格,但不...
程式設計師日常工作中如何正確的偷懶?
這是北京的雪,昨天剛拍的 又是乙個艷陽天,張大胖像乙個天真無邪的孩子屁顛屁顛的歡快的走進公司,做到辦公桌前,深情的開啟了陪伴自己多年的電腦,如往常一樣按部就班的和他玩耍了起來,大老遠就聽到張大胖那裡噼里啪啦敲鍵盤的聲音,透露著堅定和對夢想的執著,但似乎又讓人感受到一絲悲涼。突然鍵盤的聲音戛然而止,只...