為什么網上總有人說WEB開發(fā)沒技術含量?

2020-11-10 05:06:33

  確實,WEB開發(fā)毫無技術含量

  早在十幾年前,我就會WEB開發(fā)了。

  只不過,到現在,我還沒學完……

  

  目前總結下來一共經歷了下面幾個階段:

  第一階段:能跑就行、全面開花 第二階段:全棧開發(fā)、整站落地 第三階段:并發(fā)挑戰(zhàn)、容量挑戰(zhàn) 第四階段:理論探究、行知結合 第五階段:閱讀源碼、探求本源 第六階段:構建地基、制造輪子 第七階段:架構規(guī)劃、協調開發(fā)

  

  同時本文也可以作為各位WEB開發(fā)者甚至軟件開發(fā)者的進階指南

  不過我的水平有限,更高的階段還未開啟。僅供參考


第一階段:能跑就行、全面開花

  我最早開始WEB開發(fā)的切入點是……是WEB頁面設計。

  對的,你沒有聽錯,頁面設計!就是畫WEB頁面。當時加入了某校園網站。曾獲教育部十佳網站,日訪問在15萬到30萬之間。

  所以我熟練掌握各種PhotoShop技能。

  當時設計的很多網頁的源文件也都還在。剛在自己找了下作品看了下,那些作品放在十年前倒也還湊活。但是,總讓人覺著怪怪的。

  是的,當年的我也很快發(fā)現了這一點:技術還行,審美太差!

  我是我的業(yè)余職業(yè)生涯遇到了瓶頸。

  我這還沒入行,就遇到了瓶頸!你能感受那種無助么。。。

  于是我,轉行了!

  自此之后,我也會偶爾帶帶頁面設計的新人,但是守住底線,只傳授技術,絕不出作品。

  而后,我還是投入到新興的前端開發(fā)工作中,并帶起了一個前端團隊

  這方面的工作做了兩三年,熟讀《CSS權威指南》,導致我現在看到鮭魚都覺著熟悉。

  各種嵌套、定位、JQuery、浮動……都不是問題。當時最大的挑戰(zhàn)在于:瀏覽器兼容。

  有些老派的人在用IE6,而有些已經IE8IE9,更大的挑戰(zhàn)在于許多人用那時十分火爆的360瀏覽器、搜狗瀏覽器……各種瀏覽器對規(guī)范的支持各不相同,一片混亂。我們則是頁面寫一周,兼容調半月,苦不堪言。

  再后來,我學會了世界上最好的語言:PHP!

  頁面設計、前端開發(fā)、后端開發(fā),我打通了!

  于是,我自己開發(fā)了一些小的站點,幸福感爆棚。

  這時的我,還會Flash呢,用ActionScript寫點交互動畫也不是問題。還做過小游戲,開心~

  所以,那時的我自信地高呼:WEB開發(fā)沒技術含量!

  對于用到的工具是什么原理,管它呢!我的站點能跑!那么多人用!都說我是大神!

  對了,在這一階段,會CRUD+百度就足夠了!多了沒用!


第二階段:全棧開發(fā)、整站落地

  頁面設計、前端開發(fā)、后端開發(fā),全都會了,那還得了?

  在學校么,閑著也是閑著!

  拉了一幫人接活了!

  不過,確切說是總有活找上來,有時候看著學期初沒啥事,就接了。

  各個方向都找一個人,我做協調,四個人就能接手個項目。甚至,或者就某個方向的人不用找,我頂上,三個人也能開工。反正我也會。

  有些學院的網站開發(fā)之類的,直接接過來做掉!

  這時遇到了服務器、域名、部署、升級、運維問題。

  沒事,兵來將擋,水來土掩。有百度呢!

  曾經接過香港高校的單子,是個實驗室的項目。賺的都是港幣!不過當時真沒經驗,鉚足了勁要價,要低了人家還給機會讓我們再報一次,還是要低了……真是沒見過世面,不會要太高。

  幾個項目搞下來,發(fā)現技術毫無長進,就是不斷重復。倒是團隊磨合了不少,簡直都快流水線作業(yè)了。幾個人不用見面,都能把活干了!

  技術沒長進,就說明WEB開發(fā)的技術已經到頭了,一定是這樣……哈哈

  所以,WEB開發(fā)不過如此。

  

  所以,那時的我會悄悄地說:WEB開發(fā)沒技術含量!

  注意,要悄悄地!自己賺錢的東西,大聲說,這不絕了自己的財路。

  不過在開發(fā)中,也遇到了一些算法問題。

  管他的,網上都能搜到!修改下,就能跑!

  又不是不能用!

  


第三階段:并發(fā)挑戰(zhàn)、容量挑戰(zhàn)

  之前做的項目都是能跑就行。簡單來說,能跑就是成功,不能跑就再改!

  但是,進入公司正式工作開始面臨一些新的問題:并發(fā)問題、容量問題。

  比如典型的,一個應用需要部署多個節(jié)點啊,多個應用的分布式節(jié)點之間互相依賴啊。依賴存在先后關系啊等等。

  于是乎,分布式登場了,攜帶著一眾相關知識:分布式一致性、分布式存儲、分布式計算、分布式鎖、分庫、分表、分流、讀寫分離……還附帶了一眾相關框架:KafkaRabbitookeeperRabbitMQRocketMqEtcd……

  以上我就不列舉了,大家耳熟能詳。

  那段時間,我就主要在學習。

  當然學習不只是學會用,也要考慮其實現原理。可以動手自己實現下。

  例如下面是個RPC的最小實現,用來學習RPC就很好。

  

用極少的類、方法演示了RPC的實現原理,是一個學習RPC工作原理的良好示例。

  

  而且那段時間我在參與一些集群部署的項目。就是通過網站來完成應用的部署、升級、配置等工作,涉及到制品管理、質量管理等各個環(huán)節(jié)……表面呈現是一個網頁,后面東西一大堆……

  但是,我知道,那些都是紙老虎,沒什么難的!

  畢竟,WEB開發(fā)沒技術含量,能有什么難的。

  



第四階段:理論探究、行知結合

  并發(fā)挑戰(zhàn)、容量挑戰(zhàn)遇到的多了,我也學的多了。

  功夫不負有心人,腦袋里終于成了一鍋漿糊……

  于是,我開始走上另一條路:理論研究

  我開始直接研究分布式理論,還包括相關的論文啊,都掏出來讀一讀……

  尤其是論文,這東西,就是一個引用鏈,越讀越多。

  對了,我研究生階段也搞了些這個,但是理解沒這么透徹,反而是這個階段的閱讀讓我對研究生階段的工作理解的更深了……神奇啊……

  這個階段,WEB開發(fā)技術沒啥長進。但是理解透徹了。

  這段時間在設計一些分布式的系統(tǒng)。然后發(fā)現我開始會用理論模型指導系統(tǒng)架構了!這技能,就是妙手偶得之啊!

  賺了。

  我就說么,WEB開發(fā)有啥難的,讀讀論文就能順便提升了。

  



第五階段:閱讀源碼、探求本源

  WEB開發(fā)也回了,論文也讀了。整體框架也清晰了。

  什么各種中間件啊,在整個系統(tǒng)中的誕生原因,發(fā)展方向,在理論知識的指導下,也都能理得順順的。甚至我能夠設計一套出來。

  哎?

  這時問題來了!

  那我設計的,和開源成品有沒有區(qū)別啊?我和人家的差距在哪?

  這個問題,除了我,沒人能給我答案:首先,周圍極少有人熟悉中間件的原理細節(jié);其次,別人也不知道我想怎么設計啊。

  于是,沒辦法了,下水!

  自己開始啃源碼。

  難!真難!

  別人寫的上萬行、上十萬行代碼,你要看懂,能不難么?

  當我啃了幾個項目的源碼之后,發(fā)現過程很難,但是收獲真的很大。

  漸漸地,我甚至覺著應該寫一本書來幫助其他人閱讀源碼。

  • 最開始,書中想向大家總結源碼閱讀的方法和技巧;
  • 又怕大家覺著太虛,沒有實際的示例,所以直接以MyBatis的源碼作為示例;
  • 又怕大家讀不懂MyBatis內核的源碼,所以每個章節(jié)前增加了閱讀本節(jié)源碼所需要的基礎知識;
  • 既然源碼都讀了,于是便一邊讀一遍將項目的架構思想總結出來,教大家一些架構思想。

  于是,書成了包含基礎知識+真實源碼閱讀示例+架構知識總結+源碼閱讀經驗總結的書。

  是的,后來這本書真的寫成了,歷時許久,整整有400頁。光配套項目就寫了倆。

  書厚成本就高,于是想刪減一些,結果出版社編輯老師覺著寫的太棒了,不舍得。又不能賣的太貴,最終也只能定個相對于400頁是個極低的價格。

  于是就有了這本《通用源碼閱讀指導書》,最近剛剛上架(可能很多店鋪還沒貨,只是預售)。

  淘寶價格便宜不少,這個有貨了:

官方正版 通用源碼閱讀指導書--MyBatis源碼詳解 易哥 架構師程序員提升源碼閱讀系統(tǒng)架構軟件開發(fā)能力書籍 電子工業(yè)出版社

  書寫的比較誠心,不是奔著賺錢去的。不過為了編輯老師,我還是要多說幾句。

  400頁賣100,價格就比較低了,然后編輯老師覺著這本書寫得好,還要出繁體字版。

  而我就怕賣的不好連累她。然后,一句“經濟效益好當然好”讓我覺著更加對不住。畢竟,分享知識是我的業(yè)余愛好,知乎不給錢我不也寫的開開心心。還時常丟出幾個段子。

  但出版書籍卻是編輯老師的工作。工作可不能“經濟效益好當然好,不好就當作為傳播知識做貢獻了。”

注:

寫書的時候為了大家能讀懂,所以把MyBatis用中文注釋了一遍,于是有了MyBatis中文注釋版。這個不用買書就能看,因為我把它開源放出來了,放在https://github.com/yeecode/MyBatisCN

然后為了大家讀源碼能讀懂,又寫了好多示例項目,也開源了。這個就不在這推薦了,因為沒有書本內容,這些示例也就沒有了前后文,很難對大家有幫助。

寫書那段時間是最累的,上班寫代碼、下班寫書寫代碼,基本是從早9點到晚上1點。體重一度重了20斤。所以勸大家還是不要學我,身體最重要。

曾經有一段時間我覺著不值得,現在到覺著還好,因為書寫完后自制力約束我重新健身,現在身體恢復了。

  當然,這本書也得到了外方出版社的肯定。所以,接下來會在臺灣發(fā)行繁體版。

  如果買了,別忘了先讀讀前言,感受下一個讀源碼的程序員的自白。

  不過總的來說,編程不難,你看我,讀讀源碼技能就提升了,還能寫本書。順便讓身體體驗下增重減重的感覺。有啥難的。

  讀源碼一兩年,我發(fā)現,我的設計方案和源碼十分一致了。甚至我有很多地方有更好的方案。

  所以么,看,WEB開發(fā)有什么難!看看源碼就能提升!



第六階段:構建地基、制造輪子

  理論也積累了,人家源碼咱也看了。

  那寫代碼肯定就是統(tǒng)籌規(guī)劃全面設計了啊,復制粘貼這種事情離我是越來越遠了。

  實現功能也開始考慮各種設計模式、范式、軟件質量指標、架構規(guī)范、架構風格……于是寫出來的模塊也越來越通用了。

  這就不是輪子么?!

  當然,工作上的輪子都是保密的輪子,不能往外拿。

  下班回家也寫點小輪子玩,這個會開源出來。就例如下面的。

  這些項目都不錯,大家可以收藏

高性能輕量級分布式權限系統(tǒng)強大且易用的操作日志記錄系統(tǒng),支持對象屬性的變化分析在程序運行過程中動態(tài)增刪和切換數據源的工具

  

  上面都是我寫的一些小輪子,大家看看題目,喜歡的就去隨便取用,留著將來自己造車就好。

  業(yè)余寫輪子挺開心的,有時候半夜突然有個好的想法,可以開燈就寫!自由度很高!兼職就是程序員自己的樂土!上班寫的項目是不可能這樣的,畢竟,得考慮業(yè)務影響。

  這燈不錯,用了幸福感強,與我的超寬屏也很相稱。

  對的,要想開源寫得好,家中設施不能少。怎么選配工作電腦之類的,可以看我的這篇文章。

怎樣配置一臺實用且性價比較高的辦公類電腦?

  總之,搭建一個不錯的工作環(huán)境,能讓你在家坐下就不想起來,碼字如有神!對著筆記本寫幾個開源項目,指尖疼的厲害。我之前用K380,寫了幾十萬字的書之后,手指都要廢了。

  還有,開源輪子寫到后期,也得保證穩(wěn)定和兼容。現在上面的ObjectLogger項目我就動的很謹慎了,因為從聯系我的人來看,應該不少人用了它。

  

  就是么,輪子都能造了。WEB開發(fā)有啥難的!

  當然,在這個階段也規(guī)劃開發(fā)了好過項目,涉及面很廣……Linux、PowerShell的腳本、FTP、文件存儲等等,還給一些工具開發(fā)了一些插件,設計開發(fā)了許多系統(tǒng)等等。

  漸漸地就發(fā)現,WEB只是一種用戶交互的展現形式。其內在實現,需要各方面的知識

  組里前端小伙伴也在造輪子,什么SVG實現Graph的自由組裝和動態(tài)編排、自由拖動的樹組件啊啥的,都是他的頭發(fā)換來的。也是厲害的很。

  


第七階段:架構規(guī)劃、協調開發(fā)

  能力越大,責任就越大。

  上班造輪子、下班造輪子那可不行,得負責項目規(guī)劃開發(fā)啊

  從項目需求開始、然后模型、然后論證、定方案、攻克核心難點、排期、控進度、推廣……

  業(yè)務要求、人手、項目質量、擴展性……這些內外部因素都是要考慮的。

  其中架構規(guī)劃項目是首要的,因此,要熟悉各方面的知識:前端、后端、服務器、文件存儲、分布式、各種中間件等等……

  項目協調也是需要的,因此,各個需求方的討論、方案的討論、反饋地接收、項目匯報的準備、項目方向的把控等等……

  這方面我就不多說了,知道的也有限,慢慢學吧,我還年輕。

  

  不過話說回來了,WEB開發(fā)有啥難的,把上面的都做好就行了。

  


  一點貌似無關但是很重要的事情:

  你要說真正的難點……從第一階段到第七階段,健身都不能落下,頭發(fā)也盡量別落下。要不容易倒在半路上。

  我從研究生就一直健身,每周夜跑兩三次,每次8公里左右。高峰期可以夜跑25公里、臥推85kg。

  最差的時候,就是寫《通用源碼閱讀指導書》的時候,明顯感覺肚子上的肉有褶。整個人也很虛弱。

  沒辦法,無論是寫程序還是寫書,都是不到一個階段不好停下來的,所以經常一坐就4、5個小時。

  現在漸漸恢復了,體重、體脂都回到了標準值,腹肌也回來了。小米體重秤健康評分100,身體年齡20左右。我活過來了!

  還是希望大家在編程的前進路上一定要記得保重身體,畢竟,編程只是興趣和工作,而身體則是健康和生命。

  


  

  繼續(xù)說回到WEB開發(fā)。

  其實,WEB只是一種用戶交互的展現形式,同桌面客戶端、移動客戶端、命令行一樣,只是一種展現的形式,是皮毛

  而軟件系統(tǒng)最核心的應該是內在架構、算法、風格、組件,這些都是和展現形式無關的

  如果一個開發(fā)者還停留在用展現形式來衡量一個軟件的難易程度的水平,段位不會太高。

  同樣的,如果一個開發(fā)者用編程語言來衡量軟件項目的難易程度,段位也不會太高

  

  另外,評論中有一點我也比較贊同。是說如果沒有強大的自驅、大神指引、業(yè)務驅動,一個人處在上面的每個階段,都會有自己到達了天花板的錯覺。一旦這樣,便會讓人長時間難以進步,這是要克服和避免的。

  我不是什么大神,也在不斷學習中。但以上是我十年摸索進階的總結,希望能給大家?guī)磉M階上的指引。如果大家讀完能有收獲,我也萬分榮幸

  技術的道路上,多做、多學,原本會的也便不會了,原本不會的也便會了。


  

  大家好,我現在是一個高級軟件架構師

  所以,表面上這是一篇逗逼文,實際上這是一張目前我能勾畫出的進階圖。逗逼的言語,只是為了能讓你讀完,然后多些收獲。

  軟件開發(fā)也一樣,堅持做下去,就會有收獲。

  

  前進道路上的你我,一起加油!

  為自己、為社會、或偉大、或渺小!

  

  來,最后再來一句:WEB開發(fā)有啥難的?

  我是架構師易哥,我會偶爾分享軟件架構和開發(fā)相關的知識。關注我,讓WEB開發(fā)不再難。

Copyright ? 2020 6180.cn 使用牛蟻前必讀 粵公網安備 44030602004139號 粵ICP備18081859號 法律聲明及隱私權政策

09:00-18:00

400-012-6180

微信掃描關注