為什么網上總有人說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就很好。
而且那段時間我在參與一些集群部署的項目。就是通過網站來完成應用的部署、升級、配置等工作,涉及到制品管理、質量管理等各個環(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ā)不再難。