2014 年底 martinfowler.com 狀態報告

2015 年 1 月 28 日



經營 martinfowler.com 網站是我在 Thoughtworks 工作的一大部分。傳統上,它的流量比我們的主要網站還要多,儘管隨著我們的主要網站改進,這種情況很樂觀地將會改變。我的網站是我們用來影響產業的媒介,作為我們第二支柱工作的一部分。

經營一個網站而不是為雜誌寫作的好處之一是,你可以透過分析資料獲得一些回饋。很容易沉迷於追蹤數字,但我發現持續關注它們很有用,主要是為了評估哪種類型的素材獲得最多關注。

今年年初,我決定花比平常更多一點時間檢閱流量資訊,以便更了解正在發生的事情。我利用這項工作與我們的內容策略人員分享資訊,但我相信更廣泛地分享這些資訊,所以我也在 Thoughtworks 中更廣泛地提供這些資訊(我稍後也可能會公開提及)。

網站目標

我對 martinfowler.com 的主要目標是傳播改善軟體開發技術的知識。我希望找到有用的技術,主要是透過我的 Thoughtworks 同事,並清楚地解釋它們,以便其他人可以嘗試並加以擴充。

雖然這個目標主要是第二支柱的工作,但它也對第一支柱產生了顯著的影響。在需求方面,它有助於在尋找工作時產生潛在客戶和/或提升我們的信譽。招募宣稱許多人來到 Thoughtworks 是因為我的網站讓他們認識我們,或者那裡的文章有助於人們認為 Thoughtworks 是可以轉職的理想去處。在交付方面,有時一篇文章可以幫助我們的顧問說服客戶採取更好的途徑,或者只是幫助教育我們的客戶,讓他們做得更好並欣賞我們正在做的事情。

對於第三支柱,我一直在撰寫和演講有關多元化問題和網路自由。我網站的大部分讀者都是為了技術資訊而來,但我認為確保他們了解我們面臨的重要社會問題也很重要,特別是技術人員可以產生影響的問題。

除了我自己的寫作之外,我覺得幫助有志向的人發展也很重要。例如,幾年前我花了不少時間與 Jez Humble 共同演講,以提升他的知名度並傳播持續交付的想法。儘管看到 Jez 離開感到難過,但我還是很樂意繼續這麼做。當我開始在 Thoughtworks 工作時,許多人將我視為 Thoughtworks 在業界的主要發言人,但我真的很高興看到現在 Thoughtworks 以許多人聞名,而不仅仅是我。martinfowler.com 上的許多熱門文章都是由其他人撰寫的,通常是 ThoughtWorkers,但並非總是如此。

除了這些網站的專業目標之外,它也有助於一些過著充實生活時會有的個人目標。我討厭演講,並努力盡量減少演講。同樣地,自 1992 年以來,我一直在某些航空公司的常客計畫中成為精英會員,而且我比較喜歡待在自己的辦公室,而不是坐在飛機座位上。網站影響力越大,我就能更合理地花時間撰寫網站內容,而不是前往另一個演講場合。

2014 年整體流量

讓我們考慮一些廣泛的虛榮指標。

圖 1:比較 2012-2014 年的每月獨立訪客

就簡單的訪客而言,該網站於 2014 年表現良好,與前兩年相比穩步增加,每月有 186-249K 訪客。頁面瀏覽量有類似的表現(過去兩者在我的網站上密切追蹤彼此。)[1]

圖 2:比較 2012-2014 年的獨立頁面瀏覽量

圖 3:自從我開始收集分析以來,訪客的長期情況

熱門文章

我傾向於對像這樣的廣泛頁面瀏覽量資訊有點懷疑。畢竟,擔心這個數字是否只會導致對我的讀者沒有任何實際用處的點擊誘餌標題?

所以我一直專注於不同的衡量標準 - 我有多少篇熱門文章。目前,我將熱門文章定義為一個月內獲得超過 1000 個獨立頁面瀏覽量的文章。

圖 4:比較每月獲得超過 1000 個唯一頁面瀏覽次數的文章數量

趨勢與總頁面瀏覽次數和訪客數非常類似,每年都比前一年穩定成長。這些總計數字讓我感到溫暖、模糊。但如果我想找出更多資訊,我需要查看實際文章。

首先要指出的是,有各種類型的熱門文章。如果一篇文章是新的,它可以獲得大量流量。

圖 5:文章發布後前七天的總唯一頁面瀏覽次數直方圖。區間大小為 500。文章發布於 2012 年至 2014 年。

從直方圖中可以看到,大多數文章在前七天內將獲得超過 1000 次瀏覽,其中少數將獲得超過 10,000 次瀏覽(通常是因為 Hacker News 的關注)。但如果我們查看六個月後的結果,我們會看到不同的情況。

圖 6:文章發布後六個月的總唯一頁面瀏覽次數直方圖。區間大小為 500。

六個月後,大多數文章每個月獲得的瀏覽次數少於 1000 次。我懷疑既夠舊又熱門的文章才是最有價值的文章。這些文章的時髦術語是「常青」。(由於很自然地會感到好奇,遠離群眾的是 James Lewis 和我撰寫的微服務文章。)

2014 年長青文章

為了確定 2014 年的舊熱門網址,我提出了以下定義

  • 2014 年期間的每月頁面瀏覽次數中位數必須大於 1000
  • 必須有至少四個月獲得超過 1000 次頁面瀏覽

第二個規則應該可以移除大多數暫時熱門的文章,同時允許我查看相對較新的文章。(3 個月直方圖的形狀非常接近 6 個月的形狀,但在某個時間點,我應該對早期到後期的頁面瀏覽分數進行一些適當的相關性分析)。

根據該標準,我在 2014 年獲得了 86 個常青網址。

排名路徑類型中位數數量發布日期
1/articles/microservices.html文章32391102014-03-10
2/articles/injection.html文章2894612
3/導覽2245612
4/articles/mocksArentStubs.html文章1155512
5/articles/continuousIntegration.html文章1141212
6/bliki/CQRS.htmlbliki1061412
7/refactoring/導覽779812
8/books/eaa.htmlbooks766712
9/eaaDev/uiArchs.html文章745012
10/design.html導覽717212
11/articles/richardsonMaturityModel.html文章685412
12/articles/is-tdd-dead/導覽622582014-05-19
13/articles/itsNotJustStandingUp.html文章596612
14/eaaDev/EventSourcing.html文章582812
15/nosql.html導覽5645122012-08-22
16/eaaCatalog/catalog552712
17/articles/lmax.html文章5327122011-07-12
18/eaaCatalog/repository.htmlcatalog465812
19/articles/collection-pipeline/文章465762014-07-21
20/eaaCatalog/unitOfWork.htmlcatalog423512
21/intro.html導覽404512
22/agile.html導覽401912
23/bliki/AnemicDomainModel.htmlbliki378712
24/articles/newMethodology.html文章362412
25/aboutMe.html導覽357712
26/refactoring/catalog/catalog350412
27/articles/designDead.html文章320512
28/bliki/TwoHardThings.htmlbliki315912
29/eaaDev/PresentationModel.html文章304712
30/books/refactoring.htmlbooks294212
31/bliki/FeatureToggle.htmlbliki293012
32/eaaCatalog/index.htmlcatalog279912
33/bliki/導覽275712
34/bliki/PolyglotPersistence.htmlbliki2617122011-11-16
35/books/導覽258912
36/eaaCatalog/dataTransferObject.htmlcatalog253712
37/eaaCatalog/dataMapper.htmlcatalog253212
38/articles/consumerDrivenContracts.html文章251310
39/eaaCatalog/domainModel.htmlcatalog249312
40/articles/enterpriseREST.html文章2488122013-10-21
41/delivery.html導覽246612
42/articles/testing-culture.html文章229882014-05-12
43/bliki/TestPyramid.htmlbliki228512
44/bliki/PageObject.htmlbliki2244122013-09-10
45/articles/evodb.html文章219912
46/bliki/BoundedContext.htmlbliki212712
47/bliki/CircuitBreaker.htmlbliki2101102014-03-06
48/articles/rake.html文章208012
49/dsl.html導覽206912
50/books/nosql.htmlbooks2038122012-08-17
51/bliki/FeatureBranch.htmlbliki203712
52/bliki/MicroservicePrerequisites.htmlbliki201652014-08-28
53/books/dsl.htmlbooks196112
54/bliki/TechnicalDebt.htmlbliki194912
55/bliki/BlueGreenDeployment.htmlbliki190312
56/bliki/FluentInterface.htmlbliki188212
57/bliki/InversionOfControl.htmlbliki184412
58/eaaCatalog/serviceLayer.htmlcatalog183512
59/eaaCatalog/activeRecord.htmlcatalog179212
60/articles/distributed-objects-microservices.htmlshort176052014-08-13
61/articles/asyncJS.html文章1712122013-09-03
62/bliki/ContinuousDelivery.htmlbliki1675122013-05-30
63/bliki/UnitTest.htmlbliki163782014-05-05
64/eaaCatalog/transactionScript.htmlcatalog160612
65/articles/useOfMetrics.html文章1580102013-02-19
66/bliki/TolerantReader.htmlbliki152110
67/tags/domain driven design.html導覽150210
68/eaaDev/PassiveScreen.html文章146912
69/articles/agileFluency.html文章1441122012-08-08
70/bliki/RulesEngine.htmlbliki141812
71/eaaCatalog/singleTableInheritance.htmlcatalog140312
72/eaaDev/SupervisingPresenter.html文章133012
73/articles/vagrant-chef-rbenv.html文章132742014-09-04
74/bliki/DeploymentPipeline.htmlbliki128392013-05-30
75/bliki/BusinessReadableDSL.htmlbliki125512
76/articles/enterprisePatterns.htmlcatalog124712
77/bliki/UbiquitousLanguage.htmlbliki119310
78/books/continuousDelivery.htmlbooks11889
79/bliki/GivenWhenThen.htmlbliki1169102013-08-21
80/books/buying.htmlbooks111310
81/articles/nonDeterminism.html文章110492011-04-14
82/articles/agileOffshore.html文章10717
83/bliki/BranchByAbstraction.htmlbliki106982014-01-07
84/bliki/OrmHate.htmlbliki104382012-05-08
85/bliki/DDD_Aggregate.htmlbliki101482013-04-23
86/eaaDev/EventAggregator.html文章10128

我將我正在檢視的網址分類為以下類型

  • 文章: 長篇文章,通常包含多個章節,會超過幾頁
  • 短篇: 較短的文章,通常沒有章節,且字數在 1500 字以下。
  • bliki: bliki 中的條目,這些通常很短[2],且採用定義其標題概念的形式
  • 資訊卡:一個資訊卡
  • 導航:導航頁面 - 例如我的首頁和各種指南和標籤頁面
  • 書籍:描述我的書(或我的系列)的頁面
  • 目錄:目錄的一部分,例如 EAA 模式目錄或重構目錄。

圖 7:常青文章的條形圖,按類型分類。

從這個分析中,有一件事讓我相當清醒。在過去的幾年中,我投入了相當多的精力來創建一種新的內容形式:資訊卡。我希望它們能提供一個引人入勝的媒介,有助於解釋主題,但常青的 86 個資訊卡中沒有一個。 [3]

近期文章表現

另一種查看此問題的方法是檢閱我在過去幾年中發布的 URL,並查看其中有多少已列入常青清單。當我發布新文章時,我會做個筆記,即使只是為了追蹤它在發布後在頁面瀏覽次數中的進度。

路徑發布日期類型資訊卡瀏覽次數排名常青?
1/articles/microservices.html2014-03-10文章372491T
2/nosql.html2012-08-22導覽524815T
3/articles/is-tdd-dead/2014-05-19導覽389023T
4/bliki/OrmHate.html2012-05-08bliki266736T
5/bliki/PageObject.html2013-09-10bliki232945T
6/bliki/TestCoverage.html2012-04-17bliki228847F
7/articles/enterpriseREST.html2013-10-21文章221750T
8/bliki/CircuitBreaker.html2014-03-06bliki211454T
9/books/nosql.html2012-08-17books200855T
10/articles/agileFluency.html2012-08-08文章198956T
11/articles/collection-pipeline/2014-07-21文章185662T
12/articles/asyncJS.html2013-09-03文章173566T
13/bliki/ContinuousDelivery.html2013-05-30bliki163168T
14/bliki/UnitTest.html2014-05-05bliki161869T
15/articles/useOfMetrics.html2013-02-19文章156870T
16/bliki/DeploymentPipeline.html2013-05-30bliki132677T
17/bliki/GivenWhenThen.html2013-08-21bliki129378T
18/bliki/MicroservicePrerequisites.html2014-08-28bliki126979T
19/articles/testing-culture.html2014-05-12文章120782T
20/articles/vagrant-chef-rbenv.html2014-09-04文章114684T
21/bliki/DDD_Aggregate.html2013-04-23bliki113485T
22/articles/distributed-objects-microservices.html2014-08-13short107594T
23/bliki/TellDontAsk.html2013-09-05bliki102996F
24/bliki/BranchByAbstraction.html2014-01-07bliki922102T
25/bliki/ImmutableServer.html2013-06-13bliki776113F
26/bliki/CanaryRelease.html2014-06-25bliki743118F
27/bliki/ReportingDatabase.html2014-04-02bliki743119F
28/articles/dipInTheWild.html2013-05-01文章701125F
29/articles/workflowsOfRefactoring/2014-01-08資訊卡684128F
30/bliki/SnowflakeServer.html2012-07-10bliki652131F
31/bliki/SelfTestingCode.html2014-05-01bliki613138F
32/bliki/CannotMeasureProductivity.html2013-08-29bliki588141F
33/bliki/StranglerApplication.html2014-06-30重新發布546150F
34/bliki/PhoenixServer.html2012-07-10bliki501162F
35/articles/schemaless/2013-01-07資訊卡460172F
36/bliki/FlaccidScrum.html2014-01-29bliki459173F
37/bliki/AggregateOrientedDatabase.html2012-01-19bliki458174F
38/articles/nosqlKeyPoints.html2012-09-12導覽425180F
39/bliki/SegregatedDOM.html2014-01-16bliki351199F
40/bliki/ParallelChange.html2014-05-13bliki326205F
41/articles/badri-hexagonal/2014-06-05導覽305212F
42/bliki/MaturityModel.html2014-08-26bliki284216F
43/articles/eurogames/2013-10-02文章282217F
44/articles/go-interview.html2014-03-25short263225F
45/articles/multiMobile/2012-06-19資訊卡237235F
46/articles/bigQueryPOC.html2012-09-04文章231238F
47/bliki/UserDefinedField.html2013-07-23bliki218246F
48/bliki/OpportunisticRefactoring.html2014-07-30bliki197263F
49/bliki/Datensparsamkeit.html2013-12-12bliki190266F
50/bliki/UserStory.html2013-04-22bliki178275F
51/articles/modernMockingTools.html2012-09-10文章162286F
52/bliki/PurposeOfEstimation.html2013-02-27bliki162288F
53/bliki/BroadStackTest.html2013-04-22bliki160290F
54/bliki/InternalReprogrammability.html2013-01-10bliki159292F
55/bliki/NosqlDefinition.html2012-01-09bliki138326F
56/articles/bigData/2013-01-29資訊卡128350F
57/articles/gap-scms-po/2013-04-23資訊卡124357F
58/bliki/ComponentTest.html2013-04-22bliki123359F
59/articles/mobileImplStrategy.html2012-05-21文章111372F
60/bliki/ComposedRegex.html2014-07-31重新發布104384F
61/bliki/EnterpriseApplication.html2014-03-24bliki102389F
62/bliki/SoftwareDevelopmentAttitude.html2014-03-11bliki101391F
63/bliki/ExtremeProgramming.html2013-07-11bliki96400F
64/bliki/BusinessFacingTest.html2013-04-23bliki89417F
65/bliki/ExpositionalArchitecture.html2013-04-23bliki89419F
66/bliki/JavascriptPromise.html2013-04-22bliki88421F
67/bliki/PrimingPrimeDirective.html2012-10-23bliki79446F
68/articles/eliminatingSalesCommissions/2013-02-18資訊卡73459F
69/bliki/EmbeddedDocument.html2013-06-04bliki71466F
70/bliki/UserJourneyTest.html2013-04-23bliki56510F
71/bliki/PreferFunctionalStaffOrganization.html2014-08-04重新發布52522F
72/bliki/ThrownEstimate.html2014-06-26重新發布46543F
73/bliki/HistoricallyDiscriminatedAgainst.html2013-10-10bliki43554F
74/bliki/StoryPoint.html2013-07-16bliki42561F
75/bliki/AlienatingAtmosphere.html2014-02-11bliki40568F
76/bliki/CloudComputing.html2013-07-11bliki38582F
77/bliki/StoryTest.html2013-04-23bliki33617F
78/bliki/ConfigurationSynchronization.html2013-06-13bliki30639F
79/bliki/NoDBA.html2013-02-25bliki29644F
80/bliki/FaultyTechniqueDichotomy.html2014-08-06重新發布27660F
81/articles/bothersome-privacy.html2013-07-25short26666F
82/bliki/CourtesyImplementation.html2014-08-27bliki26667F
83/bliki/DiversityImbalance.html2012-01-11bliki26668F
84/bliki/StoryCounting.html2013-07-16bliki24685F
85/bliki/TransparentCompilation.html2013-02-12bliki18757F
86/bliki/CharityCodeJam.html2012-01-25bliki17767F
87/bliki/ThresholdTest.html2013-09-12bliki16785F
88/bliki/TransMediaApplication.html2012-11-01bliki16786F
89/bliki/CommunalDashboard.html2012-08-22bliki15794F
90/bliki/PresentationSmells.html2012-02-09bliki10870F
91/bliki/ProbabilisticIlliteracy.html2012-11-05bliki10871F
92/bliki/gotoAarhus2012.html2012-10-16bliki9897F
93/bliki/Nexus7.html2013-10-08bliki6979F
94/bliki/API_Copyright.html2013-05-31bliki51008F
95/bliki/IdealTime.html2013-07-16bliki51020F
96/articles/201402-call-congress.html2014-02-11short41051F
97/bliki/Saba.html2013-02-01bliki41081F

類型的分類與之前相同,但已新增轉貼類型,用於轉貼較舊的文章,我已在 5 週年和 10 週年紀念日執行此動作。我並未將所有這些轉貼記錄在此表格中,因為我並未持續追蹤其發布情況。

此表格總結我發布的各種類型數量以及長青清單中的數量。

全部2014
類型全部長青全部長青
文章13844
bliki6410164
books1100
資訊卡6010
導覽4221
重新發布5050
short4131

檢視此表格,我較不擔心缺乏長青資訊卡組。我僅發布六個資訊卡組,且在那段時間內發布的 bliki 文章中,僅有六分之一成為長青文章。因此,目前沒有任何長青卡組並非表示此媒體較不容易成為長青文章。

另一方面,長篇文章似乎表現得較好,儘管我尚未確定此差異是否顯著。

微服務文章

今年網站上影響最大的文章,無庸置疑,是 James Lewis 和我撰寫的微服務文章。它立即成為網站上的第 1 名文章,每月平均瀏覽量為 32K,2015 年淨賺 345K。

然而,比 martinfowler.com 上的任何統計數據更重要的是此圖表。

圖 8:Google 的圖表顯示對「微服務」一詞的興趣。

我們在 2014 年 3 月期間分批發布了這篇文章,而您會看到 Google 追蹤到的對此術語的興趣在當時大幅增加。我並非聲稱微服務熱潮的所有功勞/過錯都應歸功於我們,這個術語已經存在一段時間了 - 首次出現在我們 2012 年初的技術雷達中。我確信談論這個主題的各方人士即使沒有我們的貢獻,也會大幅提升它的知名度,但我確實認為我們對它產生了顯著的催化作用。

遺憾的是,很難將 Google 圖表與其他軟體開發趨勢相提並論,因此,這裡有一個與我近年來試圖幫助普及的另一個術語:「持續交付」進行比較。

圖 9:Google 興趣圖表 比較「微服務」與「持續交付」

頁面檢視次數和對應的 Google 興趣水準是衡量文章影響力的有趣指標,但基本上不是我視為衡量文章價值的真正指標。這在於它更長期的影響力 - 主要是它如何對這個術語提出合理的定義,我們希望這有助於減少語意擴散,而服務導向架構從一開始就深受其困擾。遺憾的是,這很難繪製成漂亮的圖表。

字數和歷久不衰的人氣

我不時聽說短篇文章在我們這個受注意力不足過動症影響的現代社會更受歡迎。前面的一些部分暗示這可能不是事實,至少在您著眼於長期時是如此。為了進一步探討這一點,我蒐集了過去幾年 (2012 年 1 月至 2014 年 9 月) 的所有文章 (短篇和長篇) 和 bliki 文章,並針對最近的頁面檢視次數進行散佈圖。

圖 10:比較 2012 年 1 月至 2014 年 9 月間發布文章的字數與 2014 年 12 月的個別頁面瀏覽次數的散佈圖。(我刪除了兩個異常值,即微服務文章(37,249:5,746)和測試文化文章(1,207:27,596))

如果您能從此圖表中看出任何關聯性,請告訴我,因為我肯定看不出來。它確實強化了這樣一個觀念,即成功的長篇文章似乎比短篇貼文佔了更大的比例,但我的統計技能太有限,無法進一步分析這一點。

投稿作者

除了自己撰寫文章外,我也熱衷於取得他人的文章。許多此類貢獻文章來自 Thoughtworks 的同事,但有些則來自業界的其他聯絡人。編輯此類文章通常是一項相當大的工作,有時感覺比自己撰寫還費力,但我認為利用我擁有的平台來幫助擴大其他有價值的聲音對我來說很重要。

圖 11:自 2012 年以來發布文章的散佈圖,顯示其 12 月的頁面瀏覽次數、作者類型和文章類型。

包含貢獻者的九篇文章在長青名單上。

路徑鳴謝瀏覽次數排名
/articles/microservices.htmlJames Lewis 和 Martin Fowler323911
/articles/itsNotJustStandingUp.htmlJason Yip596613
/articles/consumerDrivenContracts.htmlIan Robinson251338
/articles/enterpriseREST.htmlBrandon Byars248840
/articles/testing-culture.htmlMike Bland229842
/articles/evodb.htmlMartin Fowler 和 Pramod Sadalage219945
/articles/asyncJS.htmlPete Hodgson171261
/articles/useOfMetrics.htmlPat Kua158065
/articles/agileFluency.htmlDiana Larsen 和 James Shore144169

腳註

1: 此資料有些許出入。我的 Google Analytics 分別針對 martinfowler.com 和 refactoring.com 產生報表,儘管我認為它們是同一個網站。因此,此訪客數字不包括任何造訪 refactoring.com 但未造訪 martinfowler.com 的人。

2: 80% 的 bliki 條目少於 1000 字,只有十幾條超過 1500 字(來自 464 條 bliki 條目)。

3: 明年可能會有希望,Toby Clemsons 的微服務測試簡報在最初幾個月表現非常出色(兩者都約有 14,000 次瀏覽)。

重大修訂

2015 年 1 月 28 日:發佈至 Thoughtworks 市政廳郵件清單

2015 年 1 月 13 日:傳閱至 Thoughtworks 內容策略小組