很少被教的軟件開發基礎
英文原文:The Rarely-Taught Basics of Building Software
譯文/臘八粥
我經常想忘掉,在沒有經驗的團隊里開發軟件有多糟糕。他們的大部分開發實踐和 Hobbes 關于原始人的描述類似。生活是“孤獨、貧窮、骯臟、野蠻和短暫的”。就像原始人一樣,這些人認識不到更好的生活是什么樣子。
生活不必是這樣的。我推崇的工具是軟件,拷貝它們是自由的,唯一的成本就是人們需要學習該工具的時間。缺乏的是了解,人們需要知道如何使用這些工具,他們需要知道這些工具解決什么問題。最重要的是,他們需要知道這些工具是現成的。
下面是我認為基礎工具的概覽,它們是我認為合理的工具,缺少它們就像缺少電力和抽水馬桶。悲催的是,它們都沒有出現在我的計算機科學教育里。
備份
這適用于每個人,但是大量技術高手沒有備份,我對此感到吃驚。如果你缺少備份,你將最終失去重要數據。我希望每個人在小學時就經歷過硬盤壞掉的遭遇。就算丟失數據的幾率很低,也要吸取備份的教訓。
不管你用什么操作系統,備份總是比安裝容易:
- OS X 有時光機。
- Windows 有文件 File History。
- Linux 沒有標準的備份方案。Ubuntu 有一個備份功能,但是它有些難用,我從來沒有用它嘗試過還原。Ubuntu 的社區維基有一些關于備份的優秀資料。 </ul>
- Pro Git Book
- Mercurial: The Definitive Guide
- Version Control with Subversion </ul>
- 注1:Arch Linux 是朝向輕量(lightweight)以及簡單(simple)的 Linux 發行版。其中“簡單”(Simplicity)被定義為“避免不必要或復雜的修改”,也就是說,是由開發者角度定義,而非用戶角度思考。http://zh.wikipedia.org/wiki/Arch_Linux
我不能夸大備份的重要性,如果你要接受本文建議中的一條,那就是備份。
源代碼控制
源代碼控制記錄了誰在什么時間改動了什么地方,可以輕松回退到已知良好的版本。它讓每個人對他們做的修改負責,也讓每個人容易地看到代碼庫隨時間的變化情況。即使只有你一個人在維護代碼,也要使用源代碼控制!
Subversion、Git、Mercurial,你用哪種軟件不重要,用任何軟件都比不用強。與編程相比,這些工具學習起來沒有難度。每一個流行的源代碼控制軟件都有與之相關的免費書籍:
SSH Keys
在 ssh 中使用密碼驗證是壞習慣,SSH Keys 允許你不用給遠程服務器發送密碼就可以身份驗證。Arch Linux【注1】 wiki 提供了一份優秀的 SSH Keys 指導。
避免用 Root
使用 sudo 而非 root,較容易地讓你避免昂貴的錯誤。
人們掃描 ssh 服務器,并猜測普通的 root 密碼是很常見的。為了應對這種攻擊,關掉 root 登錄,通過 ssh 設置/etc/ssh/sshd_config 里的 PermitRootLogin 為 no。
保持學習
提高開發和部署軟件的經驗,有無數種方法,人們每天都在創造新的工具,我只是列出了我認為絕對基礎的一些工具。一個人的知識很容易停滯不前,一定要堅持從書本、朋友和同事那里學習。如果你堅持了,有一天你可能嘗試開發屬于自己的工具。
<span id="shareA4" class="fl">
</span>