天天看點

産品vs程式員:你知道www是怎麼來的嗎?

Unix、Linux、Windows三大帝國集團發表《關于比特宇宙推進經貿合作的聯合聲明》的消息很快傳遍整個比特宇宙,位置偏僻的NextStep帝國也收到了這條消息。

NextStep帝國掌管着許多人類的文檔資料,但是人類一直隻能通過磁盤拷貝在比特宇宙的帝國間進行檔案傳輸,效率極低。Steve是NextStep帝國政府的進階産品經理,《聯合聲明》發表的消息一傳來,他敏銳的發現這是一個巨大商機。很快,Steve召集研發部門進行需求宣講,由首席程式員Tim牽頭着手來實作通過網際網路來進行文檔傳輸。

不過讓Steve沒有想到的是,項目還沒啟動就傳來消息:已經有其他帝國搶先推出了檔案傳輸協定——FTP。沒想到被别人搶了先機,項目隻好終止。

☆ 重新出發 ☆

沒過多久,Steve發現,這個FTP雖然好,但還是不友善:帝國管理的文本檔案居多,最好可以直接浏覽,不用下載下傳後再打開。更重要的是,我的這些文檔之間有很多互相引用,要是能夠在浏覽的時候,能夠自動點選把引用的文檔打開,那就太友善了。

思來想去,說幹就幹,這回不能再讓别人走在前面去了。

第二天,Steve召集研發部再次開會,進行新的需求宣講,兩個功能:

1、實作文本文檔線上浏覽,無需下載下傳再打開

2、實作關聯文檔點選自動打開

Steve:給你們一個星期,下周我要看産品示範哈

Tim:······

收到需求的Tim當天下午就召集研發小組進行需求評估和技術方案讨論。

Tim:實作第一個需求倒是簡單,我們用FTP下載下傳後,然後直接給打開展示就可以了。關鍵這第二個需求,你們有沒有什麼思路?

研發組Jerry:首先得想個辦法标記一下哪些地方是引用其他文檔

Tim:标記?好想法!

Peter:有了!咱們在文檔中插入特殊的标記<a>把引用文檔的關鍵字包裹起來,标記裡面寫上關聯的文檔位址,點選的時候自動把這個文檔下載下傳打開。但是在展示的時候,就隻展示文字本身,标記就不要展示了,看起來就發現不了。

Tim:等等,有點繞,你能簡單畫一下嗎?

Peter:喏,就像這樣:

産品vs程式員:你知道www是怎麼來的嗎?

Tim:贊!好點子,就這麼幹!

☆ 一周之後 ☆

Steve:怎麼樣,小夥子們,可以看下效果了嗎?

Tim:Jerry和Peter過來下,給産品大大展示下咱們的成果。

Jerry:好嘞,大佬看着哈,先收入賬戶,密碼,然後···

Steve:等一下,幹嘛要輸入賬戶密碼?

Peter:因為文檔是用FTP傳輸的,需要賬戶密碼登入啊。

Steve:這我不關心,我們以後的業務是要面向比特宇宙所有帝國,都能公開浏覽我們的文檔,你整這太麻煩了,必須改!

Tim:先不說這個,先看功能示範吧。

Jerry:好了,現在進來了,看吧我們用圖形化的視窗界面直接線上可以浏覽文檔,不需要再下載下傳到磁盤打開。

Steve:嗯,不錯,文檔關聯跳轉呢,給我看看。

Jerry:你看好了,你看到這個“泰迪”下面有下劃線嗎,這是可以點選的,人類一點我們就自動給下載下傳泰迪對應的文檔給展示出來了。

☆ 需求變化 ☆

Steve:嗯,整體看來還不錯哈!不過我過來找你們除了看功能示範,還想通知一下,帝國除了文本文檔,還有很多圖檔檔案,你們疊代一個版本,把圖檔加到文檔裡面一起展示哈,下個星期就要。

Tim:啥?需求咋說變就變。

Steve:這不很正常嘛,加油,我看好你們。

下午,研發部會議室開始讨論新的産品需求。

Jerry:這Steve也太過分了,說改就改,說要就要。

Tim:哎,忍忍,誰讓人家是老大,咱們得聽啊。别光顧着抱怨,要把圖檔和文字一起展示,你們有什麼思路沒?

Jerry:沒有思路。

Peter:我倒是想到了一個,之前咱們文檔關聯跳轉不是用的标簽嗎,咱們圖檔也可以繼續這個思路,用<image>标簽來表示圖檔,和<a>标簽一樣,用屬性來指定圖檔檔案的路徑,浏覽器拿到以後自動下載下傳圖檔檔案不就可以展示了嗎!

産品vs程式員:你知道www是怎麼來的嗎?

Tim:嗯,看來這個标簽大法好啊!就這麼幹!等下,為了節省空間,就用縮寫<img>吧!

☆ 需求再變 ☆

幾天後,Steve又來到研發部。

“産品大佬,這還沒到一周呢,别催哈”,Tim過來招呼。

“額,不是催你們,是和老闆商量了一下,緊急追加兩個新需求”,Steve拍拍Tim的肩膀。

“啥?又有新需求?”,Peter和Jerry放下手中的活,圍了過來。

“嗯,就是要支援一下圖文排版,可以指定文字的分段、字型、字号大小、顔色、對齊這些,讓人類閱讀起來視覺感受更舒服,哦漏了一個,圖檔也要支援大小和對齊”。

“這也太多了吧!”Jerry表示抗議。

“确實有點多,時間上也會給你們延後一點的,嘿嘿”,Steve龇牙笑着。

“這個我們得回去技術評估下,時間還不能馬上給你,明天給你消息”,Tim答複到。

“不行,下午下班前得給我,我明天一早就要給老闆做這個月的排期彙報了”,Steve不肯退讓。

“行行行,那我們抓點緊”,Tim有點不爽了。

☆ 技術評估 ☆

午休過後,Tim再次召集大家開會。

Tim:大家有什麼想法嗎?

Jerry第一個發言:大哥,咱們還是應該強硬點,别什麼需求都接。

Tim:再讓他一回,下次我可不會這麼輕易答應了,先說說眼前的事情吧!

Peter:繼續發揚标簽大法!

Tim:嗯,我的第一反應也是标簽。

Peter:段落用<paragraph>,居中對齊用<center>

Tim:段落太長了,就縮寫用<p>。字型、字号、顔色這怎麼弄?

Peter:放在段落<p>裡面的屬性吧,我來總結一下,現在的版本是這樣子了:

産品vs程式員:你知道www是怎麼來的嗎?

Tim:我感覺我們的文本文檔裡面标簽數量都快超過文本内容本身了。

Peter:現在咱們這已經不能算是普通文本檔案了,有很多其他資訊在裡面

Tim:不算文本檔案,那叫什麼?

Peter:要不叫超級文本檔案,哈哈!

Tim:這名字太中二了,叫超文本檔案吧,HyperText,你覺得怎麼樣,Jerry?

Jerry:嗯,挺好,我沒意見。

Tim:專心點啊,咱們在工作呢!

Jerry:老大,我在想另外一個問題,關于檔案下載下傳這一塊兒。

Tim:檔案下載下傳怎麼了?有什麼問題?

Jerry:Tim,這個FTP感覺用起來不爽,不僅需要賬戶密碼,還需要建兩個連接配接,一個控制通道,一個資料通道,甚是麻煩。

Tim:嗯,确實是,怎麼,你有什麼新的方案嗎?

Jerry:我想重新弄一套協定,定制開發,專門用于咱們這套系統傳輸文本檔案,哦不,是超文本檔案。

Tim:好的,傳輸協定這事兒就交給你了!另外,标簽的事情就由Peter來負責,你們各司其職,互相配合,下班前把開發計劃排一下給我。

☆ 排期之争 ☆

“這是我們新的開發計劃,你請過目,昨天下班時候想找你結果發現你已經走了”,Tim把開發計劃交給了Steve。

“納尼,這麼點功能你們竟然要一個月?”,Steve簡直不敢相信自己的眼睛。

“這次改動有點多,為了後面擴充新功能,我們要重新設計架構···”

“這個技術細節我不管,這些功能之前你們已經做過一段時間了,又不是從頭做,15天,我隻能給你們15天時間”,Steve砍價很兇。

“15天肯定做不出來,你這太誇張了”,這一回Tim并沒有直接答應下來。

“加加班嘛,不就趕出來了”,Steve露出了熟悉的微笑。

“我給的時間已經都是算了加班的了”,Tim還是不肯就範。

“好吧,那我讓一步,20天,最多20天,這個月底必須得給老闆示範,不能再少了”,Steve的語氣一下強硬了起來。

“唉,好吧,隻能加班加點趕了。”,Tim終于還是同意了。

☆ 996 ☆

研發部進入緊急開發模式,開始了996的工作時間。

“産品一張嘴,開發累斷腰啊”,Jerry向Peter抱怨着。

“你呀,少抱怨,我覺得這項目還是很有意義的,反正我是成就感很大”,Peter倒是不太在意。

“圖樣圖森破,生活不止眼前的代碼,···”,沒等Jerry說完,Peter回到工位繼續忙活去了。

産品經常變需求,我們的标簽不能想一個是一個,得重新整體架構設計,考慮擴充性。Peter索性把文檔内容全部用标簽來描述:

文檔頭部:<head>

文檔正文:<body>

文檔頭部裡面還有文檔的名字:<title>

文檔段落:<p>

換行:<br>

段落居中:<center>

······

産品vs程式員:你知道www是怎麼來的嗎?

而另一邊,負責超文本傳輸協定設計開發的Jerry,抱怨歸抱怨,抱怨完還是認真研究起來:

首先不要兩個通道,FTP太複雜了,咱就弄最簡單的請求——響應模式,控制資訊和資料資訊在一個通道中完成,但是要明确的分開。

有了,用2個換行符,把頭部和正文資料分開。像這樣:

産品vs程式員:你知道www是怎麼來的嗎?

這天,Tim來到Jerry工位,Jerry給Tim講解了自己最新的設計。

“嗯,确實簡單了不少,但是你要留點擴充性,這産品經理經常加需求,變需求,不能寫的這麼死,需要靈活一點”,Tim提了些建議。

“可以舉例說明下嗎?”

“比如你看啊,對檔案不一定是下載下傳,也可能有上傳功能,或者修改功能,你不能隻有下載下傳,雖然簡單但擴充性太差”。

“咱不就是做個文檔線上浏覽嗎,怎麼會上傳修改這些呢?”,Jerry還是不太了解。

“今天隻是浏覽,說不定下次就還要修改,上傳呢,産品經理誰說的準!”

“行,我明白了,我再仔細琢磨琢磨,謝謝老大的建議”。

“嗯,加油,有什麼疑問可以随時找我交流”。

Tim走後,Jerry開始重新審視自己的設計:

看來得加動詞來描述操作類型,用GET表示下載下傳,用POST表示上傳,用DELETE表示删除······

檔案類型以後可能也會多元起來,得加類型字段進行描述,就用Content-Type來表示吧

還有,考慮的再完善,以後可能還是會改,我得給協定也編一個版本号,便于以後的相容。

産品vs程式員:你知道www是怎麼來的嗎?

☆ 月底了 ☆

很快到了月底,示範前一天,Tim再次召開會議。

Tim:明天就要給上司示範了,你們都推進的怎麼樣了,把最新的情況給我說一下。

Peter:老大,我對超文本檔案格式進行了重新設計,這是我的手冊。我給這套規範取了一個新名字:超文本标記語言——HyperText Markup Language,簡寫HTML。可以實作對文字、圖檔的展示和排版,完美的實作Steve提的需求。

Tim:嗯,非常棒,Jerry,你呢?

Jerry:我的新的檔案傳輸協定也弄好了,就定名成超文本傳輸協定:HyperText Transfor Protocol,簡寫HTTP。專注于傳輸HTML檔案以及相關的其他檔案。

Tim:好,我總算放心了,大家最後再Check一下,明天的示範不要出岔子。

第二天,示範非常順利,效果讓上司不斷稱贊,Tim和他的團隊這段時間的付出總算得到了上司的肯定。

幾天後的月總結會上,Steve向帝國國會示範了這個産品,并在會議上決定向比特宇宙正式釋出,其他帝國隻需按照HTTP協定規範和HTML語言規範就可以釋出&浏覽文檔,還公布了項目中産品的正式名稱:

使用HTML語言規範編寫的文檔:網頁

提供網頁的機構:網站

負責網頁浏覽的機構:浏覽器

☆ 後續 ☆

很快,這一套标準得到了越來越多的響應者,無數帝國的企業開始盯上了這塊市場,競争激烈。

沒多久,以IE公司、Chrome公司、Firefox公司為首的幾家企業,逐漸瓜分了浏覽器市場。其中IE公司在Windows帝國集團擁有衆多分店,市場占有率最高。而Chrome公司和Firefox公司則在Linux帝國、Windows帝國、OS X帝國都開拓了市場。

網站市場的競争同樣激烈,而笑到最後的是Apache、Tomcat和nginx幾家巨頭。由于Windows帝國制度的管控,這幾家跨國集團都重點發展自己在Linux帝國集團的實力,曾經敗在Windows帝國集團的Linux集團憑借Web業務的發展,打了一個漂亮的翻身仗。

越來越多的帝國用上了HTML網頁技術,并用HTTP連接配接,而使用這套技術建構的網絡也有了一個新的名字:World Wide Web——網際網路。

www

繼續閱讀