Klaus Marquardt
程式設計師需要溝通#
程式設計師的工作核心就是溝通。在某些時期,大部分的溝通對象是電腦——透過程式語言將想法以機器可讀的方式表達出來。將想法變成現實、且幾乎不涉及任何物理實體,這至今仍然是令人振奮的前景。
與機器溝通:學習多種抽象#
程式設計師需要精通機器的語言——無論是真實的還是虛擬的,以及透過開發工具與之相關的各種抽象。學習多種不同的抽象非常重要,否則有些想法會變得極其難以表達。好的程式設計師能夠跳脫日常慣例,關注那些對其他目的更具表現力的語言。投入的時間總會有所回報。
與人溝通:超越技術#
除了與機器溝通,程式設計師還需要與同儕溝通。現今的大型專案是社會性的工作,遠不止於程式設計的技藝。理解和表達那些機器可讀的抽象之外的事物非常重要。作者認識的最優秀的程式設計師,也都非常善於使用母語,通常還精通其他語言。良好的語言表達能力不僅僅是與他人溝通——說好一種語言也帶來思維的清晰度,而這對於抽象化問題是不可或缺的。
與利害關係人溝通:領域語言#
專案中有許多利害關係人——測試、品質、部署、行銷、業務、以及終端使用者——他們大多沒有技術背景。你必須理解他們、了解他們的關切。
如果你不能說他們的語言——他們領域的語言——溝通幾乎不可能成功。你可能以為對話進行得很順利,但他們可能並不這麼認為。
- 對會計師說話,你需要了解成本中心會計、綁定資本、已用資本等基本知識
- 對行銷或法務人員說話,他們的行話和語言(以及思維模式)你都應該熟悉
- 這些**領域特定語言(domain-specific languages)**都需要專案中的某個人來掌握——理想上就是程式設計師自己
語言之外的語言#
正如查理曼大帝所說:懂另一種語言,就是擁有另一個靈魂。
在軟體產業之外的人際接觸中,你會感激自己懂得外語。懂得何時傾聽而非說話、懂得大部分的語言是無需言語的——這些都是語言能力的延伸。
Whereof one cannot speak, thereof one must be silent. —Ludwig Wittgenstein