為什麼 Web 應用程序維護更重要
已發表: 2022-03-10傳統的軟件開發人員一直在向我們隱瞞一個顯而易見的秘密。 這甚至不是一個有爭議的事實。 這是他們商業模式的一部分。
我們談論的是高端企業軟件供應商還是小型軟件公司,它們編寫了我們在工作或業務中日常使用的工具,例如免費的系統日誌管理器,這並不重要。 它就在前面和中間。 他們沒有隱藏的額外費用,我們已經習慣支付這些費用。
那麼這個秘密是什麼?
嗯,許多傳統軟件供應商通過維護他們編寫的軟件賺的錢比他們在最初銷售時賺的錢更多。
不服氣?
快速搜索“總擁有成本”一詞將為您提供許多類似的定義,例如來自 Gartner 的定義(強調我的):
[TCO 是]實施、操作、支持和維護或擴展和停用應用程序的成本。
此外,斯坦福大學的這篇論文斷言,維護通常佔軟件產品 TCO 的 60% 到 90%。
讓它沉入一分鐘是值得的。 他們通過銷售持續的支持和維護計劃,遠遠超過了最初的購買價格。
我們不推動維護
我看到的問題是,在 Web 開發行業,Web 應用程序維護不是我們關注的事情。 我們可能會將它放在我們的提案中,因為我們喜歡每月保留的想法,但它們可能會涵蓋簡單的內務管理任務或新功能請求。
在我們的報價中為以後的迭代隱藏必要的升級和優化並不是聞所未聞的,因為我們不確定客戶是否願意為我們認為必要的改進付費。 我們試圖讓他們從後門進來。 或者換句話說,我們不是公開透明的,就像更傳統的軟件一樣,這些應用程序需要維護。
不管原因是什麼,很明顯我們正在為未來儲存問題。 我們正在構建的軟件應用程序是長期存在的。 我們需要像傳統軟件供應商一樣思考。 從現在開始,我們的軟件仍將運行 10 年或 15 年,並且應該保持良好的維護。
那麼,我們該如何改變呢? 作為一個行業,我們所有人如何確保我們的客戶受到保護,從而使事情保持安全和最新? 同樣,我們如何才能分到維修蛋糕呢?
什麼是維護?
在他們 2012 年的論文有效應用程序維護中,Heather Smith 和 James McKeen 將維護定義為(重點是我的):
將應用程序移植到新服務器、與不同操作系統交互、升級到新版本、更改稅表或遵守新法規——所有這些都需要應用程序——維護。 因此,維護的重點是升級應用程序,以確保其保持生產力和/或成本效益。 焦點小組首選的應用程序維護定義是——對應用程序進行任何修改以糾正故障; 提高績效; 或使應用程序適應變化的環境或變化的要求。 因此,嚴格來說,向現有應用程序添加新功能(即增強功能)不被視為維護。
換句話說,維護是需要在軟件應用程序上執行的基本工作,以便它可以繼續可靠和安全地運行。
它沒有添加新功能。 它不檢查日誌文件或確保備份已運行(這些是內務管理任務)。 它正在開發代碼和底層平台,以確保一切都是最新的,它可以按照用戶的期望運行,並且燈會一直亮著。
這裡有一些例子:
技術和平台變化
第三方庫需要更新。 底層語言需要更新,例如 PHP 5.6 到 PHP 7.1 現代操作系統會定期發送更新。 最重要的是維護,有時還需要更改代碼庫,因為做某些事情的舊方法已被棄用。縮放
隨著應用程序的增長,將會出現資源問題。 每天處理 10,000 筆交易的代碼中的例程與每小時 10,000 筆交易相衝突。 需要監控應用程序,但也需要在觸發警報時採取措施。錯誤修復
顯而易見但值得明確。 該軟件有錯誤,需要修復。 即使您在交付項目後包含一小段免費的錯誤修復,在某些時候客戶也需要開始為這些付費。
難賣?
有趣的是,當我與同行討論這個問題時,他們覺得很難讓客戶相信他們需要維護。 他們擔心他們的客戶沒有預算,也不想給人留下太貴的印象。
好吧,事情是這樣的:它實際上很容易賣。 我們正在與商務人士打交道,我們只需要以商業術語與他們討論維護問題。 業務人員了解資產需要維護,否則它們將成為負債。 這只是另一個標準的持續每月開銷。 做生意的成本。 我們只需要把它放在我們的提案中,並確保我們跟進它。
一個非常有效的方法是提供一個保留器,它以維護為核心,但也為客戶捆綁了很多額外的價值,比如:
- 報告進度與 KPI(例如流量、轉化、搜索量)
- 每月有限的“空閒”時間對網站進行小幅調整
- 報告停機時間、服務器更新或已完成的開發工作
- 通過電話聯繫您或您團隊的特定成員以回答問題
事實上,您可以讓聘用者為客戶節省資金並為自己買單。 一個很好的例子是客戶要求每月從數據庫中獲取一份簡單的報告或導出以進行離線處理。
您可以引用一些開發日來構建一個(可能比最初假設的更複雜)報告用戶界面,或者將客戶指向您的保留者。 在其中包括每個月的任務,讓開發人員手動運行預設的 SQL 查詢以手動提供相同的數據。
對您或您的團隊來說是一項微不足道的任務; 對您的客戶有很多價值。
一個實際的例子
當然,您會有自己的方式來編寫提案,但這裡有一些來自示例推介的片段。
在您可能描繪未來願景的提案部分中,您可以添加一些關於維護的內容。 以此為契機,播下建立長期關係的種子。
您正在尋求將長期風險降至最低。
您希望確保您的應用程序運行良好、保持安全且易於操作。
您還了解維護對任何業務資產的重要性。
稍後,在可交付成果部分,您可以添加有關維護的部分,作為獨立選項或與正在進行的保留器捆綁在一起。
在以下示例中,我們保持簡單並將其與預付費開發保留器捆綁在一起:
我們強烈主張所有客戶都將維護視為其網站的基本開銷。 現代 Web 應用程序需要維護,就像您的房子或汽車一樣; 你 保持 你 的 資產 以減少 它們 日後 成為 負債 的 有形 風險.
作為一個熱衷於保持應用程序維護以及添加新功能的客戶,我們建議每月 N 天(作為起點)進行一般維護和開發保留。
我們會將事情分散開,以便開發人員至少 [每週/每月的某個時間段] 在您的系統上工作,這為您提供了明顯的優勢,即如果在 [同一時間段] 出現問題,開發人員能夠切換到更重要的東西. 根據您的優先級,時間可以全部用於新功能工作或用於維護,這由您決定。 我們通常建議在新功能和重要維護之間分配 75%/25%。
如前所述,這也是一個很好的機會,可以將維護與其他增值的持續服務(如性能報告)、執行內務任務(如檢查備份)以及可能每月討論進度和優先級的電話聯繫起來。
您可能會發現,在您完成工作後,就不再提及固定器了。 這是可以理解的,因為您和您的客戶在項目開始時需要考慮很多事情,但是隨著項目的結束,是重新引入它作為項目卸載過程的一部分的好時機。
無論是談論第 2 階段還是簡單地介紹最終發票並移交,都提醒他們注意維護。 提醒他們正在進行的培訓、報告和可獲得支持。 推動保留者,記住用同樣的商業術語說話:他們的新資產需要維護才能保持閃亮。
維護會很煩人嗎?
一個常見的誤解是維護固定器可能成為額外的負擔。 令人擔憂的是,客戶會不斷給您打電話,並要求您進行一些小的調整,作為您聘用的一部分。 對於較小的團隊或單獨的顧問來說,這是一個特別關注的問題。
但通常情況並非如此。 也許一開始,客戶會有一個需要解決的問題列表,但這是課程的標準; 如果你有經驗,那麼你期待它。 這些很容易通過改進溝通渠道(使用問題跟踪器)並將所有請求集中在一起來管理,即一次性處理它們。
隨著應用程序的成熟,您將進入滴答模式。 這就是保持器對雙方特別有價值的地方。 這顯然取決於您如何構建保留者,但從您的角度來看,您每個月都在努力提醒客戶您的價值。 您可以將您的月度報告發送給他們,告訴他們您是如何解決該例程中的減速問題的,並且服務器已針對本週的全球操作系統漏洞進行了修補。
當然,您也可以參與一些額外收費的新請求功能。 從您的客戶的角度來看,他們看到您在那裡,他們看到了進展,並且他們可以從他們的列表中刪除“對網站的擔憂”。 顯然,“那些客戶”確實存在,所以最重要的是讓你的聘用者措辭正確並相應地管理期望。
如果您的客戶希望以較低的月費獲得成功,請推遲或重新談判。 在提供月度報告和其他輔助任務中,每月付錢給你做兩小時的維護和家政服務就是這樣; 進行大量臨時更改並不是一張空白支票。 提醒他們什麼包括在內,什麼不包括在內。
我們如何使維護更容易?
最後,為了確保為您的客戶帶來最佳價值並讓您的生活更輕鬆,在構建應用程序時使用其中一些策略。
長期支持 (LTS)
- 使用具有良好記錄的 LTS 版本和升級路徑的技術平台。
- 對於所有項目,都應該預期並考慮到正在進行的操作系統、語言、框架和 CMS 升級,因此跟踪 LTS 版本是輕而易舉的事。
- 一切都應該在受支持的版本上運行。 如果不是這種情況,應該敲響大警鐘。
良好的項目衛生
- 在您的功能積壓或問題跟踪系統中公開維護任務,並與您的客戶就優先事項達成一致。 不要隱藏維護任務。
- 代碼級別和功能測試使您能夠密切關注特別有問題的代碼,並且在將模塊拉出進行重構時會有所幫助。
- 監控應用程序並了解瓶頸和錯誤在哪裡。 任何問題都可以添加到開發積壓中並相應地確定優先級。
- 監控支持請求。 最終用戶是否向您提供了可能表明維護要求的有用反饋?
應用程序應該是可移植的
- 任何開發人員都應該能夠在本地輕鬆啟動和運行系統——不僅僅是你! 使用虛擬服務器或容器來確保應用程序的開發版本與生產版本相同。
- 應用程序應該有很好的文檔記錄。 至少,配置和部署工作流程以及部署到現場所需的任何特殊咒語都應該被記錄下來。
維護是真正的雙贏
維護是我們需要對應用程序進行的工作,以便它可以安全地靜止不動。 這是一個標準的商業成本。 在軟件應用程序的生命週期內,平均佔總擁有成本的 75%。
作為專業人士,我們有責任從一開始就對客戶進行有關維護的教育。 這裡有一個巨大的機會來獲得額外收入,同時為您的客戶提供有形價值。 您可以保持持續的商業關係,並且當他們有新要求時,您將成為他們求助的第一人。
通過您的聘用人繼續提供價值將建立與客戶的信任。 您將獲得一個平台來建議增強功能或新功能。 工作,你有很大的獲勝機會。 您的客戶降低了他們的生命週期成本,他們降低了風險,並且他們不再擔心性能或安全性。
幫您自己、您的客戶和我們整個行業一個忙:幫助使 Web 應用程序維護變得更加重要。