Klaus Marquardt

程式設計師需要溝通#

程式設計師的工作核心就是溝通。在某些時期,大部分的溝通對象是電腦——透過程式語言將想法以機器可讀的方式表達出來。將想法變成現實、且幾乎不涉及任何物理實體,這至今仍然是令人振奮的前景。

與機器溝通:學習多種抽象#

程式設計師需要精通機器的語言——無論是真實的還是虛擬的,以及透過開發工具與之相關的各種抽象。學習多種不同的抽象非常重要,否則有些想法會變得極其難以表達。好的程式設計師能夠跳脫日常慣例,關注那些對其他目的更具表現力的語言。投入的時間總會有所回報。

與人溝通:超越技術#

除了與機器溝通,程式設計師還需要與同儕溝通。現今的大型專案是社會性的工作,遠不止於程式設計的技藝。理解和表達那些機器可讀的抽象之外的事物非常重要。作者認識的最優秀的程式設計師,也都非常善於使用母語,通常還精通其他語言。良好的語言表達能力不僅僅是與他人溝通——說好一種語言也帶來思維的清晰度,而這對於抽象化問題是不可或缺的。

與利害關係人溝通:領域語言#

專案中有許多利害關係人——測試、品質、部署、行銷、業務、以及終端使用者——他們大多沒有技術背景。你必須理解他們、了解他們的關切。

如果你不能說他們的語言——他們領域的語言——溝通幾乎不可能成功。你可能以為對話進行得很順利,但他們可能並不這麼認為。

  • 對會計師說話,你需要了解成本中心會計、綁定資本、已用資本等基本知識
  • 對行銷或法務人員說話,他們的行話和語言(以及思維模式)你都應該熟悉
  • 這些**領域特定語言(domain-specific languages)**都需要專案中的某個人來掌握——理想上就是程式設計師自己

語言之外的語言#

正如查理曼大帝所說:懂另一種語言,就是擁有另一個靈魂

在軟體產業之外的人際接觸中,你會感激自己懂得外語。懂得何時傾聽而非說話、懂得大部分的語言是無需言語的——這些都是語言能力的延伸。

Whereof one cannot speak, thereof one must be silent. —Ludwig Wittgenstein