此篇將是該系列的終章。
也許軟體開發中最難的部分並不是軟體開發本身,而是溝通和協作,前端和設計師、產品經理和程式設計師、前端和後端、老闆和產品經理、測試和程式設計師,想要高質量的實現需求,溝通最多的往往都是程式設計師。程式設計師木訥不愛說話?這裡一定有誤會。
今天我們一起來扯扯後端和前端協作的淡。
套路現實中,很多公司都會按照職能的不同把程式設計師劃分成前端、後端、客戶端等不同角色,後端負責實現數據業務邏輯,提供 api 供前端和客戶端調用,前端和客戶端通過 api 調用實現 ui 的數據交互。
為什麼要按這樣的套路分?
一個人很難做到前端、後端都懂,而且水準達到專業級別。
基於第一點,大多數公司招人不會要求你既懂前端又懂後端
基於第二點,大多數公司的團隊中程式設計師的崗都只負責一端
基於第三點,協作不可避免了,因為前端不懂後端,後端不懂前端
協作帶來的問題是什麼?
溝通成本上升
這世界上還有比兩個人扯來扯去都不知道對方在扯什麼更浪費生命的東西麼,我想沒有了。和一個認知不在同一領域甚至是不在同一水平的人溝通就會帶來這樣的問題,雞同鴨講,但是大家好像都樂意,因為開個會之後…很快就到下班時間了。
誰該妥協
數據是該放到後端組織還是前端組織,這樣的問題在前後端協作中真的是不勝枚舉了。有時候數據就是應該前端組織,但是前端不幹,有時候數據就是應該後端組織,但是後端不幹,有時候數據放到前後端都可以,但是前後端都不幹。怎麼辦?打一架吧,我經常這樣說。
步調難以一致,任務切換頻繁
有些很詭異的問題,是需要前後端通力合作的,後端要控制輸出,前端要控制展示。前端做好了,可能要等等後端,前端不能幹等,於是前端的 CPU 發生一次任務切換,後端做好了通知前端,前端的 CPU 再把剛才 resume 的任務 rewake,把任務狀態從內存(大腦)中恢復過來。任務的切換都是需要花費時間的,而且佔用計算資源。 這種事,前後端反過來也一樣。
其實還有很多...
既然這個套路很有問題,為什麼很多團隊還是要用這個套路。原因也許很多,最重要一點通曉前後端的人才難覓。
成長最需要什麼?認知的改變,認知改變帶來思維的轉變,思維轉變帶來行動的改變,無論是個人還是團隊,改變這個套路的現狀很難,並不表示沒有改變的可能,團隊的改變必然會帶來利益的犧牲,甚至短暫的效率下降,個人改變會帶來強烈的陣痛,但是一切都是暫時的。
老司機帶你上路,改變並不難之所以你只是個前端或者後端,那是因為你身邊肯定有一個後端或前端,跟著老司機學習和自學相比就像是1000 萬的學區和 200 萬學區對比,老司機可以帶著你輕鬆跨過很多坑,少走很多彎路。
在 wecatch, 龍哥(客戶端程式設計師)是被我帶入後端的,落在深海(前端程式設計師)是被龍哥帶入 IOS 的,我(後端程式設計師)帶著落在深海寫 Python,落在深海帶著我前端。
Learn by doing邊學邊做,既然是工作一般沒有很多時間讓你去學一個完全新的東西,這樣邊做邊學,邊學邊做。
從小項目開始
小項目能夠很快完成並且能得到及時反饋,可以有效降低新手受挫的可能性,即使完不成讓更專業的同學救火也完全來得及。
從沒有複雜 UI 交互的項目開始
後端學前端最怕的是寫 CSS 和 動態特效,如果可以完全藉助 framework 來實現各種功能能夠迅速降低入門的門檻。
從內部項目開始
內部項目對性能、體驗、bug 率都有一定程度的容忍度,因而只要能有人把好關,新手完全可以大膽實踐,不怕犯錯。
二者都學,到什麼程度為止任何一項技能,唯有深入持續的研究學習才有大成,既學前端又學後端對於大部分人來說都很難做到樣樣精通,此時一定要有所偏重,依據自己的興趣、專業程度、職業發展前景來衡量和選擇。如果你的後端專業水準能做到完美,那前端的水平達到 7 成足以,不需要完全懂 html5,各種 CSS3 特效,大部分時候可能你都不需要會這些技能就能解決問題,即使真的需要,那就找更專業的同學。
二者都學,這不就是全棧麼一直以來我都認為全棧是個偽概念,幾乎沒有人能真正做到全棧都精通,太難了。會點皮毛也敢說是全棧,說明還涉世未深,沒碰到過高手。
程式設計師,無論前端也好,後端也罷,跨國自己的專職多學一點,完全無可厚非。技多不壓身,不僅提高了自己的產出,擴大自己的技術視野,而且以後不論在什麼樣的團隊,只要有前後端協作的地方,那些前後都懂的人明顯具有天然的優勢,因為他痛過,所以能懂。
我的理想是大家前端後端,我中有你,你中有我,其樂融融。至於讓後端懂前端,前端懂後端真的能帶來什麼好處麼,試試你就知道了。