你討厭寫設計文檔,但它卻是必須的
英文原文:Why specs matter
大部分的程序員都是白癡,而余下的那部分都是狗屎。有時候我會覺得自己兩者都屬于,所以我敢信心十足的這么說。
狗屎
狗屎們在讀設計說明書時會用一把密密的梳子仔細梳理里面的內容,查找里面的漏洞、疏忽、或簡單的拼寫錯誤。當開發程序時,他們會嚴格的按照說明書的 需求規范——盡管是有問題的。當有人沖著他們叫喊說軟件有問題時,他們會得意洋洋的指著說明書里的某些語句,這些語句清楚的表明這嚴重有問題的軟件在技術 上是完全沒問題的,然后這個事件就會被他們放到博客里吹噓一番。
在狗屎們里有一小撮人是寫測試用例的。在寫說明書的編寫過程中這些人一般會留守,因為在說明書最終定版之前隨時都會把他們抽過來投入無盡的查補漏洞 的工作中。但不幸的是,狗屎們要比你想象的難對付的多,需要你花更多的時間。這就是為什么好設計說明書需要花這么長時間編寫的原因:大部分的時間都消耗在 了應付這些狗屎們的工作中。
白癡
白癡們,卻是另外一種情況,他們從來不看設計說明書,直到有人沖著他們大喊大叫。他的做法通常是,先不知道是從哪而弄到了一些demo,然后按照這 有限的demo開發出程序,差不多能用。自然,等這個產品發布后,他們不可避免的被人大呼小叫一番,因為有人碰巧用到了產品里的這部分功能,跟說明書里描 述的這部分完全不一致。有人會指著說明書里的這些語句,這些語句表明了他們的程序里有多么嚴重的問題,于是白癡們才修改這些問題。
除了常見的白癡外,這還有兩類特殊的白癡,值得提一下。前一種是做demo、打包程序,之后就像其他白癡一樣被人叫罵的。但當他們被叫罵著要求去讀 一讀設計說明書時,他們會神奇的轉變成狗屎型,他們會嚷嚷著設計書含糊不清,有歧義,或者是可忽略不計——因為沒有人會這樣實現它或它本身是錯的。這些人 可以被稱為 激進分子 。他們永遠寫不出符合要求的程序——不管設計書寫的如何詳細,這部分人可以被放心的忽略不計。
另外一種一小撮的白癡是寫demo、打包程序,然后被人叫罵的。但當他們被要求去讀一讀設計書時,他們會神奇的變成唱贊歌的人,他們會把從這些錯誤中學得的經驗寫成指導性文章。這些人于是被人稱作 專家 。事實上,世界上所有的教材指導都是由“白癡變成的專家”寫成的。
天使
有些人可能會不服,說并不是所有的程序員都是白癡或狗屎。可是你們錯了。例如,有些人會提出一種可以被稱作“天使”的程序員。“天使們”讀說明書仔 細,然后寫程序,在程序打包成產品前要通過測試套件進行周全的測試。可天使們其實并不存在,他們只是一個傳說,好讓軟件說明書的編寫者們心里感到欣慰。
為什么說軟件設計說明書重要
如果你的說明書不夠完善,那些白癡們絕對沒有機會把事情做對。只要有人抱怨說他們的軟件有問題了,必然會蹦出來兩個狗屎進行否認。如果說明書的目的只是為了在跟白癡和狗屎們的紛爭中進行仲裁,那它什么事情都解決不了,爭執會壓抑在心里郁積多年不散。
如果你的說明書寫的足夠好,白癡們就會有可能在第二次的時候經過努力把事情做對,而你也不會被狗屎們圍攻。同時,那些只擅長找紕漏的狗屎們再也找不到任何東西,他們最終會憤懣不已、轉而尋找其他的人進行騷擾。
翻譯說明:這篇文章的原文結束后作者加了下面這樣一句話:
這篇博客不再接受公開的評論,但你可以通過下面的表單里把評論發給我。(我不會把你的話公布。)
本人是個不太敏感的人,如果有人覺得把程序員說出“狗屎”和“白癡”太過分,請告知我。謝謝。
來自: http://www.techug.com/why-specs-matter