按此:與喬恩·馬丁(Jon Martin)一起避免在 WordPress 構建上浪費時間的技術債務

已發表: 2022-02-25

歡迎來到來自 WMR 的 WordPress 社區播客 Press This。 在這裡,主持人 David Vogelpohl 與來自社區的客人坐下來討論 WordPress 開發人員面臨的最大問題。 以下是原錄音的抄錄。

由 RedCircle 提供支持

David Vogelpohl:大家好,歡迎來到 WMR 上的 WordPress 社區播客 Press This。 這是您的主持人,David Vogelpohl,我通過我在 WP Engine 的角色來支持 WordPress 社區,我喜歡將最好的社區帶給您,每週在新聞上聽到這個提醒,您可以在 Twitter @wpdavidv 上找到我,或者您可以在 iTunes、iHeartRadio、Spotify 上訂閱按此,或在 wmr.fm 下載最新劇集。 在這一集中,我們將討論我最喜歡的話題之一,那就是避免浪費時間在 WordPress 構建上浪費技術債務。 加入我們的談話,我想歡迎喬恩·馬丁。 喬恩,歡迎按此。

喬恩·馬丁:非常感謝,很高興來到這裡。

DV:我知道我在演出前練習發音 Hallum,但當然我一開始就搞砸了 John 對此感到抱歉。 太棒了,對於那些聽約翰的人來說,他將分享他對技術債務對 WordPress 開發團隊的影響的看法,比如擁有技術債務意味著什麼以及它對您有何影響? 您如何考慮減少每個項目的技術債務。 然後為什麼你有責任與你的客戶分享技術債務的考慮

JM:如果你以自由職業者機構的身份工作。 所以我喜歡消除技術債務。 我喜歡消除它是我最喜歡的話題之一。

DV:我們將深入了解 John 對這個話題的看法,但在我們開始之前,John,我要問你我問過每位客人的同一個問題 告訴我簡要介紹一下你的 WordPress 起源故事。 您第一次使用 WordPress 是什麼時候

JM:所以我會在 2010 年代初期並不確定那個時期的正確表達方式。 所以我實際上是自己開始的,我一直是我們在 2008 年成立代理機構的首席執行官。當時,WordPress 仍然是一個非常重要的博客平台。 我們正在構建包含大量豐富內容的網站。 所以這是一個有點臟的詞,但我們當時確實使用了 Joomla。 但是,而不是

DV: Joomla 是一個骯髒的詞。 我個人喜歡所有開源 CMS。

JM:是的,我們想說這是一個很棒的項目。 我認為對我們來說關鍵是隨著時間的推移,當 WordPress 推出自定義帖子站點支持時,Joomla 真的非常強大。 就在那時,對我來說,WordPress 真的發生了真正的變化,將它從它作為一個博客平台提升到了一個成熟的 CMS,無論它是否適合你,你都可以做各種網站,真的很小一個人的企業或自由職業者或其他任何人,一直到大型企業級、複雜的網站。 我認為,對我來說,真的,真的,這對他們來說是一個致命的決定,因為這是 WordPress 現在如此受歡迎的部分原因。 是的,那是她開始在這裡使用的時候。 Sasha 之前的故事真的是我自己和現在的 CEO,我們是如何在一個樂隊中在一起的。 我們有一個聰明的想法,嗯,你知道嗎,在路上有更多的平等時間真是太棒了,而且很難從我目前的工作中抽出時間。 所以我們想,你知道嗎,讓我們成立一個代理機構並成為 Web 開發人員,因為這將真正有助於在那時獲得所有時間,這是一個偉大的決定。 我真的很高興,但他也肯定是一個幼稚的決定,因為認為為自己工作會給你更多時間絕對是一個錯誤,我認為我們稍後會認識到這一點。 在此之前,你知道,我對 SQL 有所了解,並且從那時起我就一直在構建計算機,實際上是因為顯卡非常支持顏色。 因此,對於任何知道 CGA 是什麼的人來說,這將幫助您了解我的年齡。 但是,是的,真的,那是 CPT 出來的時候。 脂肪改變了我們的一切。 實際上,我們幾乎在一夜之間就開始使用 WordPress,這成為了我們選擇的 CMS,從那以後我們就再也沒有回頭,而且,你知道,

DV:在我問過這個問題的所有人中,很少有人真正了解材料自定義帖子類型與他們的 WordPress 起源故事之間的關係。 這很有趣。 我有一個類似的故事。 我在 2010 年成立了一家代理機構。所以在你們所有人之後一點點,但是當自定義帖子已經進入時。我們開始使用 Joomla 構建並切換到 WordPress 出於類似的原因,但這是自定義帖子類型和自定義元我同意的領域,我實際上以這種方式呈現了各種格式,這是 WordPress 真正成為真正的 CMS 的時刻。 WooCommerce 成立一年後 WP Engine 成立,許多其他品牌的 WordPress 空間,這是一個變革性的時代。 聽到你的參考是你起源故事的根源,這很有趣。 不過,他們告訴我,嗯,你知道,如果你願意的話,那裡的創始時刻,但你能簡單地告訴我一些關於嗯,你是做什麼的嗎?

J M:是的,當然。 所以實際上,我們發現的那個機構並不是我們後來的駕駛方式。 好吧好吧。 嗯,這實際上的主要原因是因為,你知道,回到那些舊時代,我們建立網站與我們做 SEO 和所有這些事情之間有一個非常明顯的區別。 並且在世界範圍內並沒有太多的整合方法和真正考慮用戶體驗之類的事情,以及它如何與 SEO 和開發一起工作,所有這些東西。 所以,這實際上就是我們後來最終合併的原因,艾倫米蘭已經存在了大約 20 年,我們的創始人在 SEO 開始成為一件事的時候就成立了。 是的,所以我們合併了這兩個機構。 六七年前,也許更久一點。 我必須承認,我的數據記憶力不是很好。 然後然後真的,是的,這已經成為我們的方法是這種完全集成的方法,將所有這些不同的學科混合在一起以幫助人們看到界限? 所以現在我們做 PPC、搜索引擎優化、數字公關,很明顯,網頁設計,還有品牌延伸、數字戰略,以及所有這些東西,所有這些學科,你現在確實需要擁有一個強大的數字存在。 你在公司裡的角色是什麼? 所以我,我的職位是技術總監。 所以說實話,並沒有真正涵蓋我所做的一切。 我管理開發團隊很長一段時間。 所以所有的 WordPress 都在我的指導下。 我很高興地說,我們團隊中的開發人員比我們剛開始工作時的 Julio 和我曾經工作過的要好得多,這就是我們這些天做得更好的原因。 我們對事情的理解更深一些。 所以我最近在數據團隊的成本上運行了很長一段時間的開發團隊。 所以這意味著我可以玩機器學習,Python 和 Bartek 和其他人正在玩,儘管我必須想像所有這些玩。

DV:做很酷的獨立客戶會導致一些技術債務。 所以我很好奇你是怎麼想的,常見的技術債務類型是什麼,也許是 WordPress 特有的。 那些一分鐘,但是,你如何看待這個問題,你知道,你如何以及如何管理你的技術債務,就像你已經將它鎖定在 WordPress 構建的類型中一樣?

JM:是的,我們有。 我的意思是,不是。 不必要。 我們正在使用一種語言,我們不一定對事物進行分類或通過地區流程進行分類,但實際上,它們確實屬於三個不同的類別。 其中之一是當您在現有代碼之上構建錯誤代碼時,這可能是因為您可能在過去犯了一些錯誤,這可能是遺產網站和其他人的問題,無論原因是什麼,所以這就是有點像第一個桶。 第二個是構建不必要的代碼,也許現在沒有必要。 你知道,我敢肯定,我們都已經完成了來自客戶和品牌的功能請求,他們確實熱衷於特定的事情,但實際上可能不是正確的事情,就獲得實際價值而言為客戶。 然後是第三個,我們實際上看到的最大的一個是構建實際上應該在不同平台上的功能。 因此,了解這種架構部分,好吧,我們在這裡插入的不同部分是 CRM,這裡是網站,從根本上講,它實際上是關於營銷業務。 這是您的訂單履行平台,所有這些都不同。

D V:讓我問你,讓我在這裡問你一個基本問題,就像你一樣,你已經列出了三種類型的聲音,就像這些是你想要擺脫的三種技術債務 用壞代碼編寫壞代碼代碼,這不是可以在另一個平台上完成的必要功能。 就像你想要的第四個桶一樣有價值的功能,因此在這種情況下可能是好的技術嗎? 這樣說公平嗎? 那是第四個桶。

JM:是的。 100% 我的意思是,並不是所有的技術債務都是壞的。 你必須接受你要構建的幾乎所有功能都會產生某種類型的技術債務,並且你必須就該技術債務是否好用打個電話。 有些是好的,有些是壞的,真正依賴的是我之前說的關鍵字是關於價值的。 你會得到你需要的那個東西的價值嗎? 更重要的是,客戶,最終客戶,不是你的客戶,而是他們的客戶嗎? 他們會得到它的價值嗎? 對於是否接受技術債務,這通常是一個很好的指路明燈。

DV:是的,我想深入了解一下,你是如何看待那句話的不同類型的技術債務,尤其是那些你可能想要優化以消除的債務。 不過我接下來想做的是了解一下,是不是有什麼事情讓你越過邊緣專注於這個領域,但我們要第一次休息,我們會馬上回來。 是時候插播廣告了。 請繼續關注這一點。 大家好。 歡迎回來在 W EMR 上按此 WordPress 社區播客 這是您的主持人,David Vogel。 保羅。 我正在採訪約翰馬丁關於浪費時間殺死技術人員的問題。 約翰在休息前解釋說,你認為你可能想要消除的三種技術債務的方式是在糟糕的代碼上構建糟糕的代碼,創建對你正在處理的網站的成功來說不必要的代碼。 然後可能為可以在另一個平台上更好地服務的功能構建代碼。 不過,在我們開始喜歡引用值得的公式之前。 我想知道,是否有一個特別的我不知道時間和你的旅程是技術債務的一個特定實例,這種表面對你來說是一個主要關注領域?

JM:是的,當然。 大約四五年前,有一個真正具有里程碑意義的項目讓我開始思考這個問題。 我見過很多其他的案例。 對企業來說,一直在積累時間,而不僅僅是通過 WordPress 通過各種方式來積累時間,實際上企業也在通過他們的運營流程來積累時間。 如果您必須成為創建該套牌的技術人員。 一,最讓我印象深刻的一個故事是客戶,我們與一家相對較小的公司合作,我們為他們做了很多付費媒體工作。 銷售本質上是在網上銷售東西。 這是一個電子商務業務。 他們有傳統的郵購方式,但他們的工作量很大,他們正試圖增加更多的在線流量,因此他們不必通過郵購,將通過網站進行管理,他們來找我們是因為他們已經為他們建造的網站是完全定制的。 那時他們已經存在了大約 10 年。 所以它變得很老了,開始有點蠕動。 你知道,標準並繼續前進。 技術在進步,是時候重新思考一下了。 所以客戶和我們坐下來,他們開始匯報他們在網站上所做的所有不同的事情。 我很快就非常清楚,網站中已經內置了各種業務邏輯和業務運營的東西。 這是導致訂單的邏輯,並且非常特定於他們與供應商合作的方式。 所以我不會詳細介紹,但我在供應商之間有一個相當複雜的安排,他們如何完成訂單,以及在發貨之前是否將其運送到他們的商店。 所以這一切都很複雜。 現在企業主和以前的關於他們如何工作的人,最終建立了一個幾乎可以管理整個事情的系統,這在當時是一個非常非常好的系統,並真正幫助該業務大規模發展。 現在,他們沒有真正想到的是,所有網站最終都有一個保質期,它們將在某個時候成為現實,就像任何軟件和營銷世界一樣。 與您知道的相比,保質期確實相對較短,例如​​,如果您投資 CRM,因為企業通常會在相當長的一段時間內出現這種情況,現在大約是 10 年,如果不是更多的網站的話。 一般來說,在兩到五年之間,我們發現大多數大品牌至少每三年左右就會重建一次。 所以問題是他們將所有這些複雜的邏輯都構建到現有網站中,他們必須重建整個網站。 突然之間,您還必須重建所有這些業務邏輯。 現在,我們為這個項目增加了成本,它基本上最終只佔年營業額的一半左右,只是為了重建我們已經擁有的東西。 這真的讓我開始思考這件事,好吧,如果他們最初以不同的方式解決問題,例如,讓我們考慮一下我們試圖在網站上實現的不同目標。 你知道,這是來自營銷是為了銷售產品。 這是為了履行訂單,這是管理我的業務流程的最佳選擇. 這對他們來說是一個真正的問題,因為他們有一個網站,基本上就是他們從中賺錢的地方。 它吱吱作響,因為它已經很舊了。 但與此同時,重建整個網站的成本會非常高,並使項目變得非常非常複雜。 我們設法找到了一些非常聰明但也不是很好的工作,以嘗試使用他們已經擁有的並整合它,但我們無法引用,但你知道,最終最終變得更加痛苦,更慢,更多比它需要的貴。 如果最初考慮過該架構。

DV:我有很多項目我想忘記它。 就像那樣,我可以想像它現在我帶我回到過去。 所以在我看來,這聽起來很清楚,我認為這是一個非常重要的課程,可以考慮與您計劃的重構相關的業務成本。 對我來說,聽起來明確的答案是你需要以不同的方式構建它。 如果你喜歡你應該做的事情,那可能是一條更清晰的道路。 但我認為,就像很多團隊在考慮技術債務時,他們會想,好吧,好吧,做這件事很酷,但值得嗎?

JM:隨著時間的推移,我維護這個東西值得嗎? 所以我很好奇你對這個公式的看法

D V:什麼時候可以引入技術債務? 你對這個公式有多少看法?

JM:是的,你談到了一個非常重要的觀點,你知道,你考慮開發人員的本質,開發人員進入這個領域是因為他們喜歡做很酷的事情。 那就是,你知道,我們的很大一部分動機是學習如何做新事物,新技術,你知道的,新的 JavaScript 框架,不管是什麼東西,這自然給了我們構建酷東西的動力,但我們不一定會長期考慮這一點,你知道,我們仍然會保持它。 你知道,我的妻子很想在我家弄個熱水浴缸,但我知道有人會打掃那個,老實說,我不相信任何打掃它的人,反正是那種想法。 所以這是一個非常非常非常值得思考的問題,首先它真的值得嗎?如果我們把它分解一下,你可以考慮一些不同的事情,首先,思考很長時間術語,擁有和構建測試和維護它的東西的總成本是多少,然後權衡我們獲得的價值? 例如,可能有一種非常簡單的方法可以解決這個問題。 使用電子表格或使用稍微不同的架構事物,公司內部可能有人在短時間內管理它。 這樣做會比構建這個非常複雜的功能更便宜,更有效。 但是,當您實際查看總擁有成本時,它的成本會比某人每週花費幾個小時來做某件事的成本要高。 不要誤會我的意思。 我非常相信自動化。 技術應該盡可能地自動化以避免那種管理,但是

DV:您正在註冊並使用類似這種手動方法來喜歡在編碼之前嘗試一些東西,以確保價值將在那裡。 我的意思是,我想簡化這個因素,比如,我們可以手動做這個嗎? 只是好奇你是否曾經從喜歡的測試角度接近它,看看最終的回報是否值得?

JM:是的。 100%。 所以我是敏捷方法論的忠實信徒。 從根本上說,敏捷的一大關鍵原則是你在正確的時間構建正確的東西。 你專注於盡快獲得價值。 所以你想要構建最小可行的產品。 現在,這意味著您當時不一定擁有功能完全豐富的東西。 但是它為您提供了一個平台,您可以在其中開始測試它,您知道,您是否真的從中得到了您想要的東西? 你的用戶有反應嗎? 就像您希望在 UX 或 Web 開發領域工作的任何人都知道,經常會收到來自客戶的請求,因為他們認為他們的客戶是他們的客戶,但實際上他們真的想要嗎? 所以這是另一個非常好的問題,一旦你考慮了長遠的觀點,人們會使用這個網站嗎?我們知道任何人都在使用它嗎?或者我們需要測試看看他們是否想要使用它? 然後,一旦您完成了該測試,我們就可以計算出我們不應該要求的內容,以及我們是否應該退縮並實際將投資放在其他地方。

DV:所以聽起來有點像回顧一下這個想法,我喜歡你從長期來看總擁有成本的想法,我想很多時候團隊甚至會考慮你認識的人,報價,從團隊會考慮需要多少小時或幾週或點差或點數,或者這個東西要構建多少。 但是,你知道,你需要考慮到你知道,需要多少小時或幾週或點差或點來維持,然後將這種平衡與你從維持中獲得的價值相提並論那個活動。 你顯然是一個合理的建議。 但是你也在想,好吧,我可以做些什麼來測試一下,看看我的假設是否正確? 這聽起來準確嗎?

JM:是的。 絕對地。 絕對地。 我們唯一沒有涉及的是我們之前談到的關於架構的問題,是否有更好的方法可以構建它以使其更好,並且有時間進行對象編程和其他東西我稍後可能會談到。

DV:是的,還有架構方面的考慮,就像我寫下了你的樣子,有沒有辦法改變規格? 就像在我的利益相關者培訓或談話中我經常說的那樣,你知道,規範提交嗎? 詢問您真正需要提交的內容。 所以問那些會撒謊並且是真正需要的,那又如何呢? 我發現問題非常關鍵。 所以聽起來這是你思考這個問題的關鍵部分。

JM:是的,因為該網站在開發中的每一分鐘都是它沒有在客戶面前獲得價值的一分鐘。 這就是思考它的簡單方法。 您希望盡可能快地啟動。 然後測試、監控、迭代、學習,你知道,看看你從那裡去哪裡,但這只是因為你是根據實際數據而不是你認為正確的數據來做的。 因為很多時候它們並不相同。

DV:是的,我喜歡這一點。 每分鐘。 它在開發中,不是一分鐘你沒有使用它弄清楚嗎?我會說與我擁有的另一個口頭禪以及項目管理和利益相關者管理的聯繫,這是兩個最好的詞和在我們臉上寫一個項目。 你怎麼能說話是的,我喜歡當我與利益相關者打交道時,或者當我有利益相關者時,這是一個強大的、強大的部分。 好的,酷。 嗯,接下來讓我們談談團隊如何減少技術債務。 但在我們這樣做之前,我們將進行最後一次休息。 是時候插播廣告了。 請繼續關注更多緊迫的問題。 歡迎大家回來在 W EMR 上按此 WordPress 社區播客。 這是您的主持人大衛移動保羅,我正在與約翰馬丁討論避免浪費時間與約翰馬丁討論約翰如何在休息前,我們談到了你的價值公式我真的很喜歡你關於減少的想法眼鏡。 並考慮 TCO,並採取一種迭代測試方法。 但是,現在讓我們深入研究一下團隊實際上可以做些什麼來減少他們的技術債務和 WordPress 構建。 您最喜歡減少技術債務的一些技巧是什麼?

JM:所以你可以使用各種技術技巧,你知道其中一些你會熟悉,所以你不會,但實際上我的出發點是,是一種更溫和的談話方式給你的客戶。 你必須記住,最終,你的客戶是這些品牌來找我們,因為我們是專家。 他們需要我們的建議,而且很容易掉入陷阱,你知道,我們在那裡只是做他們想做的,我們在那裡做他們想讓我們做的,但實際上,我們在那裡挑戰他們想做的事情並嘗試改進它。 因此,您可以做的第一件事就是與他們討論並解釋好,如果我們這樣做,這將是它的長期影響。 你知道,這需要我們多花一天的時間進行測試。 每次我們發布一個版本,每次我們需要維護網站並更新所有插件或其他任何東西時,都會增加一兩個小時。 但是通過提高這種意識,我們正在與他們進行這些對話。 您可以讓客戶參與討論。 然後最終他們成為解決問題的一部分,很好,我們必須一直教育我們的客戶,僅僅是因為他們不知道我們所做的一些事情。 如果他們這樣做了,他們一開始就不會成為工具。 所以實際上,這就是起點。 他認為記住這一點並簡化事情。 同樣,人們不一定像我們一樣技術。 所以用類比來談論它。 我總覺得房子是一種巨大的能量。 每個人都住在房子裡。 大多數人都有一些做某種房屋裝修的經驗。 所以很容易用這種能量來解決問題。 所以這就是第一點真正是獲得客戶或循環這些對話。 我們之前談到的下一件事是擁有長遠的眼光或總體擁有成本。 並問自己這些問題並質疑每個功能請求。 但是要多一點技術,以及如何在工作中做到這一點。 您使用 WordPress 標準的簡單事情,您知道,那裡有標準。 它們的存在是有原因的。 現在,他們將幫助我們的開發人員,也許你在一個項目上工作一兩年,然後你又回來了。 你必須刷新你的記憶,然後回到你第一次使用標準構建它時的位置,這會有所幫助。 他們也會幫助其他人。 因此,如果您不在團隊中,這意味著您擁有一種每個人都可以操作的通用語言,它在效率和幫助文檔和所有這些類型的事情方面非常非常有用。 所以這是一種通過制定任何人都可以工作的標準來減少技術債務的一種更溫和的方式。 它還可以幫助您知道,其他一些 WordPress 開發人員正在從事該項目的時間可能會到來。 它可以幫助他們將其視為回報社區並使您的開發人員更容易的一種方式。 所以,這是一個,你知道的,關於標準的一個很好的觀點,讓你自己和其他人都容易。 下一個是關於偉大的。 偉大的行業代碼,被親切地稱為鮑勃叔叔,多年前他寫了一本很棒的書,叫做清潔編碼。 我強烈建議任何開發人員閱讀那本書,因為他們還沒有讀過它。 事實上,我已經把它作為開發團隊的必讀書籍,任何加入團隊的人,主要是因為他有很好的方法來談論單元測試,所有這些東西,但從根本上說,很多是關於如何以一種靈活的方式編寫代碼,您可以非常快速地迭代和更改並向其中添加額外的位。 他談到的一個重要觀點是經常重構,主要的一點是你編寫的一段代碼並不一定意味著這段代碼已經完成。 您可以做一些事情來優化它,使其更便攜,使其更模塊化,或者使測試更好,無論您需要做什麼來花時間重構代碼。 當你反對它或者你知道時,它可能真的非常難以做到,也許這是預算的一個時間框架。 但最終,這種事情會阻止你積累技術債務,實際上,我認為這通常是被迫的,但作為一個項目截止日期,你必須趕上那個截止日期。 絕對地。 你必須做到這一點,但最好是擴大範圍,而不是編寫你將要編寫的糟糕代碼,

DV:我想,也要教育那些客戶,因為我從來沒有遇到過不想重構的開發人員。 代碼。 它始終是時間線。 它反對它。 嗯,好吧,所以這是最後一點,我只是好奇你是否喜歡我們,如果你認為卸載和使用現成的插件是另一種幫助避免技術或避免技術債務的方法。 這也在你的名單上嗎?

JM:是的。 100% 所以這是一個好方法,但實際上這是一個兼顧兩者的好方法,您可以避免技術債務。 但你也可以,這是你知道的,WordPress 是 BMC 的一種形式。 它是如此活躍,同樣,這也可能是它最大的敵人。 有一個插件可以做所有事情。 還有很多插件是為特定目的而構建的,但它們不一定與您自己的插件相匹配。 所以我特別看到了一些開發人員,他們喜歡使用插件和更多的指向和點擊方法來構建網站,而不是從頭開始編碼。 人們傾向於向事物扔插件。 我們與擁有 100 多個插件的網站合作過,其中有一些不再維護。 到處都有安全問題。 你試著做釋放率。 當你本可以在幾個小時內完成的時候,你實際上花了四天的時間來測試它。 所以插件可以是好的也可以是壞的。 在正確的時間插入正確的插件是一件非常美妙的事情。 WordPress 的最大優勢,但在錯誤的時間插入錯誤的插件也會造成嚴重破壞。 實際上可以成為最大的資本來源之一

DV:我肯定有過這樣的項目。 好吧,約翰,這真是太有見地了。 非常感謝您今天加入我們。

J M:我的榮幸。

DV:太棒了。 如果您想了解有關 Jon 的更多信息,可以訪問 hallam.co.uk。 謝謝大家收聽在 WMR 上按此 WordPress 社區播客。 同樣,這是您的主持人 David Vogelpohl。 作為我在 WP Engine 的一部分,我支持 WordPress 社區,我喜歡在 Press This 上將最好的社區帶到這裡。