很少被教的軟件開發基礎

jopen 10年前發布 | 6K 次閱讀 軟件開發

英文原文:The Rarely-Taught Basics of Building Software

  譯文/臘八粥

  我經常想忘掉,在沒有經驗的團隊里開發軟件有多糟糕。他們的大部分開發實踐和 Hobbes 關于原始人的描述類似。生活是“孤獨、貧窮、骯臟、野蠻和短暫的”。就像原始人一樣,這些人認識不到更好的生活是什么樣子。

  生活不必是這樣的。我推崇的工具是軟件,拷貝它們是自由的,唯一的成本就是人們需要學習該工具的時間。缺乏的是了解,人們需要知道如何使用這些工具,他們需要知道這些工具解決什么問題。最重要的是,他們需要知道這些工具是現成的。

  下面是我認為基礎工具的概覽,它們是我認為合理的工具,缺少它們就像缺少電力和抽水馬桶。悲催的是,它們都沒有出現在我的計算機科學教育里。

  備份

  這適用于每個人,但是大量技術高手沒有備份,我對此感到吃驚。如果你缺少備份,你將最終失去重要數據。我希望每個人在小學時就經歷過硬盤壞掉的遭遇。就算丟失數據的幾率很低,也要吸取備份的教訓。

  不管你用什么操作系統,備份總是比安裝容易:

  • OS X 有時光機
  • Windows 有文件 File History
  • Linux 沒有標準的備份方案。Ubuntu 有一個備份功能,但是它有些難用,我從來沒有用它嘗試過還原。Ubuntu 的社區維基有一些關于備份的優秀資料
  • </ul>

      我不能夸大備份的重要性,如果你要接受本文建議中的一條,那就是備份

      源代碼控制

      源代碼控制記錄了誰在什么時間改動了什么地方,可以輕松回退到已知良好的版本。它讓每個人對他們做的修改負責,也讓每個人容易地看到代碼庫隨時間的變化情況。即使只有你一個人在維護代碼,也要使用源代碼控制

      Subversion、Git、Mercurial,你用哪種軟件不重要,用任何軟件都比不用強。與編程相比,這些工具學習起來沒有難度。每一個流行的源代碼控制軟件都有與之相關的免費書籍:

    • Pro Git Book
    • Mercurial: The Definitive Guide
    • Version Control with Subversion
    • </ul>

        SSH Keys

        在 ssh 中使用密碼驗證是壞習慣,SSH Keys 允許你不用給遠程服務器發送密碼就可以身份驗證。Arch Linux【注1】 wiki 提供了一份優秀的 SSH Keys 指導。

        避免用 Root

        使用 sudo 而非 root,較容易地讓你避免昂貴的錯誤。

        人們掃描 ssh 服務器,并猜測普通的 root 密碼是很常見的。為了應對這種攻擊,關掉 root 登錄,通過 ssh 設置/etc/ssh/sshd_config 里的 PermitRootLogin 為 no。

        保持學習

        提高開發和部署軟件的經驗,有無數種方法,人們每天都在創造新的工具,我只是列出了我認為絕對基礎的一些工具。一個人的知識很容易停滯不前,一定要堅持從書本、朋友和同事那里學習。如果你堅持了,有一天你可能嘗試開發屬于自己的工具。

      • 注1:Arch Linux 是朝向輕量(lightweight)以及簡單(simple)的 Linux 發行版。其中“簡單”(Simplicity)被定義為“避免不必要或復雜的修改”,也就是說,是由開發者角度定義,而非用戶角度思考。http://zh.wikipedia.org/wiki/Arch_Linux

                          <span id="shareA4" class="fl">                  
                              </span>
       本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
       轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
       本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!