程序員要學(xué)會交流
擁有東西還不足夠,還要考慮如何包裝它。即使你擁有最好的想法、優(yōu)雅的代碼和實(shí)用的思考,如果你不能與他人進(jìn)行有效溝通,這些都將不會結(jié)出果實(shí)。沒有有效的溝通,好的想法就會變成孤兒。
作為開發(fā)人員,我們必須在多個層面上進(jìn)行溝通。我們在會議中花費(fèi)數(shù)小時,傾聽和交談。我們與最終用戶合作,了解他們的需求。我們編寫代碼將我們的意圖傳達(dá)給計算機(jī);我們編寫文檔將我們的思想傳遞給下一代開發(fā)人員。我們編寫提案和備忘錄,解釋資源請求,匯報狀態(tài)并提出新的解決方案。我們每天都在團(tuán)隊內(nèi)工作 - 提出觀點(diǎn),調(diào)整做法或提出改進(jìn)意見。我們?nèi)粘4蟛糠謺r間都在進(jìn)行溝通,因此我們需要在這方面表現(xiàn)出色。
將英語(或者你的母語)視為另一種編程語言。用自然語言編寫散文,就像編寫代碼一樣:尊重DRY原則、ETC、自動化等等。
(程序員的軟技能:ke.qq.com/course/6034346)
英語是另一種編程語言。
了解你的受眾。
溝通涉及傳達(dá)信息。為了將信息傳達(dá)出去,你需要了解受眾的需求、興趣和能力。我們都曾參與過那些會議,其中一位技術(shù)愛好者關(guān)于復(fù)雜技術(shù)的復(fù)雜性細(xì)節(jié)滔滔不絕,讓市場副總裁一臉迷茫。那不是溝通,只是說話,而且很煩人。想象一下,你想提議為最終用戶實(shí)施一個基于Web的系統(tǒng),讓他們提交錯誤報告。根據(jù)受眾的不同,你可以以不同的方式描述這個系統(tǒng)。最終用戶可能更喜歡全天候的錯誤報告提交,而不必等待電話。市場部門可以利用這個功能來促進(jìn)銷售。支持經(jīng)理可能會因此而感到高興 - 由于錯誤報告可以自動化,所以需要更少的員工。最后,開發(fā)人員可能會對獲得基于Web架構(gòu)的經(jīng)驗或嘗試新的數(shù)據(jù)庫引擎感到興奮。通過對每個群體有效地提出建議,你可以讓他們都對你的項目感到興奮。
與所有形式的溝通一樣,關(guān)鍵在于收集反饋。不要只等問題出現(xiàn);自己主動提問。注意身體語言和面部表情。神經(jīng)語言程序設(shè)計有一個前提假設(shè):“溝通的意義在于你獲得的反饋。”在溝通過程中,不斷提高對受眾的理解。
知道你想說什么。
在更正式的商務(wù)溝通中,最難的部分可能是弄清楚你實(shí)際想要說什么。小說家通常從一開始就用大量的細(xì)節(jié)概述他們的書,但技術(shù)寫作人員往往坐在鍵盤前,打出如下:
1、介紹。
2、浮現(xiàn)在腦海中的事物。
計劃你想說什么,制定一個大綱,并問自己,“我是否以正確的方式向我的受眾傳達(dá)了我想說的內(nèi)容?” 將其壓縮至盡可能簡潔。
這種方法不限于撰寫文件。當(dāng)你即將參加重要會議或給重要客戶打電話時,記下你的想法,并準(zhǔn)備多種策略以使你的觀點(diǎn)被理解。
既然你知道受眾想要什么,現(xiàn)在是計劃如何傳遞的時候了。
選擇時機(jī)。
現(xiàn)在是星期五下午6點(diǎn),審計員在周圍已經(jīng)有一個星期,你老板的年幼兒子在醫(yī)院里,外面正在傾盆大雨,讓你回家的旅程成了一場噩夢。這可能不是詢問她是否升級你筆記本內(nèi)存的最佳時機(jī)。了解你的受眾的一個方面就是找出他們的優(yōu)先事項。當(dāng)經(jīng)理剛剛因為丟失了一些源代碼而受到老板的責(zé)備時,抓住機(jī)會與他們討論代碼庫的想法更有可能。你說的話不僅必須與受眾有關(guān),還必須及時。有時,只需要一個簡單的問題:“現(xiàn)在是討論......的好時機(jī)嗎?”
選擇風(fēng)格。
根據(jù)你的受眾調(diào)整表達(dá)方式。有些人希望得到正式的“只是事實(shí)”的簡報。其他人在進(jìn)入正題之前更喜歡一點(diǎn)閑聊。他們在這個領(lǐng)域的技能和經(jīng)驗如何?他們是專家還是初學(xué)者?他們需要指導(dǎo)還是只需要一個“太長;沒看”版本?如果有疑問,就問問。
然而,請記住,溝通是雙向的。如果有人想讓你用幾句話解釋一些事情,而你發(fā)現(xiàn)這不能用幾句話來概括,那就告訴他們。這樣的反饋也是一種溝通方式。
使之看起來很好。
想法很重要,但受眾也想要一個好的展示。
太多的開發(fā)人員(包括他們的經(jīng)理)在編寫文件時只關(guān)注內(nèi)容。我們不同意。任何廚師(或者烹飪節(jié)目的主持人)都會告訴你,甚至連一個不起眼的外表都會毀掉你在烹飪上花費(fèi)的幾個小時的辛苦努力。
如今,制作格式不良的文件已經(jīng)沒有借口了。無論是使用Markdown還是文字處理軟件,現(xiàn)代工具都可以輸出漂亮格式的結(jié)果。你只需要學(xué)習(xí)一些基本的命令。如果你使用文字處理軟件,請使用其樣式表以保持一致性。(你的公司應(yīng)該已經(jīng)準(zhǔn)備了可直接使用的樣式表。)學(xué)習(xí)如何設(shè)置頁眉和頁腳。查看軟件包中的示例文檔,研究它們的樣式和布局。打開拼寫檢查功能,首先讓自動檢查修復(fù)拼寫錯誤,然后手動校對。畢竟,有些拼寫錯誤可能會逃過自動檢查。
將受眾納入其中。
通常,我們發(fā)現(xiàn)制作文件的過程比最終稿更重要。只要可能,讓讀者參與到文件的初稿中。傾聽他們的反饋并借鑒他們的智慧。這有助于建立良好的工作關(guān)系,并通過這個過程產(chǎn)生更好的文件。
做一個傾聽者。
如果你希望別人聽你說話,那么你必須掌握的一項技能就是傾聽他們。即使你擁有所有的信息,即使你站在一個正式會議中的20個衣著光鮮的人面前 - 如果你不聽他們說話,他們也不會聽你說話。
通過提問鼓勵人們談話,并試圖讓他們總結(jié)你的觀點(diǎn)。將會議變成對話,以更好地傳達(dá)你的想法。誰知道,你甚至可能會學(xué)到一些東西。
回應(yīng)他人。
當(dāng)你問一個人一個問題時,如果他們不回答,你會認(rèn)為他們很粗魯。因此,當(dāng)有人通過電子郵件或發(fā)給你備忘錄向你詢問信息,要求你提供某些東西時,你有多少次沒有回應(yīng)?繁忙的日子常常會導(dǎo)致忘記事情。永遠(yuǎn)記住回復(fù)電子郵件,甚至簡單的“我會稍后回復(fù)你”都足夠了。及時通知他人 - 這使得人們更容易原諒你偶爾的疏忽,并讓他們知道你沒有忘記他們。
(程序員的軟技能:ke.qq.com/course/6034346)
你說什么和你怎么說同樣重要。
除非你完全與世隔絕,否則你必須學(xué)會溝通。你的溝通越有效,你的影響力就越大。
文檔。
最后,還有一個通過文檔進(jìn)行溝通的問題。通常,開發(fā)人員不會投入太多精力去編寫文檔;充其量,他們把它視為一項義務(wù)性任務(wù),最糟糕的情況下,他們將其視為一項低優(yōu)先級任務(wù)——希望在項目結(jié)束時項目經(jīng)理會忘記它。
實(shí)際的程序員將文檔視為整個開發(fā)過程的一部分。為了使文檔更容易,避免冗余工作并節(jié)省時間,通過保持文檔隨時可用來直接在代碼中編寫。實(shí)際上,用于編碼的所有實(shí)用原則也適用于文檔。
嵌入文檔,而不僅僅是附加文檔。
使用源代碼中的注釋生成吸引人的文檔非常直接。建議為模塊和導(dǎo)出的函數(shù)添加注釋;這對其他使用它們的開發(fā)人員非常有幫助。
然而,對每個函數(shù)、數(shù)據(jù)結(jié)構(gòu)、類型聲明等添加注釋的做法是有問題的。這種機(jī)械式的注釋做法實(shí)際上可能使代碼更難維護(hù):修改某些內(nèi)容意味著更新兩個地方。因此,非 API 注釋應(yīng)該限制在討論其存在的原因以及其意圖和目的。當(dāng)代碼已經(jīng)展示了如何完成事情時,注釋變得多余,違反了DRY原則。
在源代碼中進(jìn)行注釋是記錄項目細(xì)節(jié)的絕佳機(jī)會,這些細(xì)節(jié)在其他地方無法記錄:工程權(quán)衡、決策原理、被拒絕的替代方案等。
總結(jié)。
· 知道你想說什么。
· 了解你的受眾。
· 選擇適當(dāng)?shù)臅r機(jī)。
· 選擇合適的風(fēng)格。
· 使其視覺上吸引人。
· 讓受眾參與其中。
· 做一個好的傾聽者。
· 回應(yīng)他人。
· 將代碼與文檔綁定在一起。
線上溝通。
關(guān)于書面溝通的一切都適用于電子郵件、社交媒體帖子、博客等。尤其是電子郵件已經(jīng)成為公司內(nèi)部主要的溝通方式;它用于合同討論、糾紛解決,甚至作為法庭證據(jù)。然而,出于某種原因,人們在發(fā)送破舊的紙張時會猶豫,但卻不介意向全球發(fā)送看似混亂和不連貫的電子郵件。
我的建議很簡單:
· 在發(fā)送之前進(jìn)行校對。
· 仔細(xì)檢查拼寫,并捕捉可能的自動更正錯誤。
· 使用簡單的格式。并非所有的電子郵件客戶端都像現(xiàn)代瀏覽器一樣呈現(xiàn);你精美格式化的電子郵件可能會變得混亂。許多網(wǎng)站的評論和回復(fù)不允許使用HTML標(biāo)簽。
· 少量引用原始文本。沒有人喜歡收到一封回復(fù)電子郵件,里面有幾百行自己的文本,然后只有一行寫著“我同意”。
· 如果引用某人的電子郵件,請給出引用并進(jìn)行內(nèi)聯(lián)引用(而不是將其放在附件中)。社交媒體平臺上的引用也適用于此。
· 避免在線侮辱他人;不要成為一個喜歡被惡搞或被攻擊的網(wǎng)軍。如果你不會對某人的面孔說某些話,也不要在網(wǎng)上說這些話。
· 在發(fā)送之前檢查收件人列表。這是一個經(jīng)常提醒的警告 - 如果你在部門的電子郵件中批評你的老板,請注意不要將你的老板添加到轉(zhuǎn)發(fā)列表中。當(dāng)然,最好的方法是根本不要在電子郵件中批評你的老板。
一旦發(fā)送,電子郵件和社交媒體帖子就是不可逆轉(zhuǎn)的;許多大公司和政客都陷入了這個陷阱。因此,將電子郵件視為任何書面?zhèn)渫浕驁蟾妗?br>
(程序員的軟技能:ke.qq.com/course/6034346)