不要做被業(yè)務(wù)代碼寫廢的程序員
作為程序員,我們在選擇公司時(shí)甚至?xí)患铀伎嫉恼J(rèn)為進(jìn)大廠更有利于我們以后的發(fā)展。大廠不僅能給我們帶來豐厚的薪資,更能讓我們接觸到一批技術(shù)大牛,有了技術(shù)大牛的指導(dǎo)與栽培,我們成為大牛似乎也是順理成章的事情,此外,大廠的IP也會(huì)給我們再次就業(yè)加分添彩。大廠技術(shù)架構(gòu)成熟而穩(wěn)定,小廠技術(shù)雜而不精。大廠在經(jīng)歷了多年發(fā)展之后,技術(shù)體系不斷完善成熟,為了提高工作效率,專門的人做專門事,也就是因?yàn)槿绱耍?strong>大部分的程序員會(huì)被成熟的技術(shù)體系框在一個(gè)小圈子里,如果自身沒有學(xué)習(xí)與鉆研的精神,思想很容易會(huì)被這個(gè)圈子所束縛,從而淪為了業(yè)務(wù)程序員。
在日常的工作中,我們經(jīng)常會(huì)聽到”寫業(yè)務(wù)快寫廢了“,”除了增刪改查一無所知“等等的吐槽。淪為業(yè)務(wù)程序員不僅會(huì)讓技術(shù)無法匹配自己的工作年限,還會(huì)影響到后期跳槽面試的表現(xiàn)。慢慢的將會(huì)被淘汰。為了定義清楚什么是業(yè)務(wù)程序員,我將技術(shù)分為三大類:外圍技術(shù)、業(yè)務(wù)能力、工作經(jīng)驗(yàn)
一. 外圍技術(shù)
這里的外圍技術(shù)指的是即便我們不會(huì),不了解其原理,也不會(huì)影響到我們對需求的實(shí)現(xiàn)。例如服務(wù)器的維護(hù)、存儲計(jì)算分布式系統(tǒng)的搭建與維護(hù)、各類中間件、網(wǎng)絡(luò)安全知識等,我們并不需要懂,這不會(huì)影響到我們項(xiàng)目的開發(fā)與上線。
回憶一下我們項(xiàng)目開發(fā)的流程,創(chuàng)建一個(gè)web項(xiàng)目,申請線上機(jī)器(機(jī)器各種環(huán)境都已經(jīng)配置好了,完全不用擔(dān)心),設(shè)計(jì)數(shù)據(jù)庫表提交工單(DBA負(fù)責(zé)創(chuàng)建,分配DB節(jié)點(diǎn),數(shù)據(jù)備份冗余安全等問題不需要我們考慮),配置監(jiān)控、日志功能,接入公司MQ、Redis,RPC,統(tǒng)一配置平臺等。一切配置之后,就可以進(jìn)行業(yè)務(wù)代碼的編寫,編碼完成之后經(jīng)由測試通過發(fā)布平臺進(jìn)行發(fā)布。服務(wù)成功啟動(dòng),為了能讓外部用戶訪問,然后配置下NG。
到此整個(gè)項(xiàng)目完成,除了編寫業(yè)務(wù)代碼,其他都是企業(yè)已有的成熟的技術(shù)體系,配置即用,作為程序員貌似完全沒有必要去學(xué)習(xí)這些外圍技術(shù)。此外,大廠都有一個(gè)通病,就是每一個(gè)公司幾乎都有自己的一套完備的外圍技術(shù),換工作時(shí)很大一部分成本也是在學(xué)習(xí)這些技術(shù)如何使用。
二. 業(yè)務(wù)能力
項(xiàng)目環(huán)境搭建完成之后,就可以開始業(yè)務(wù)代碼的編寫。業(yè)務(wù)能力也相當(dāng)?shù)闹匾?,但是與技術(shù)的關(guān)聯(lián)性并不高,不再展開。針對業(yè)務(wù)邏輯不同層次的程序員實(shí)現(xiàn)也不同。一般的程序員就是對業(yè)務(wù)代碼進(jìn)行簡單拼湊。優(yōu)秀的開發(fā)者會(huì)使用一些設(shè)計(jì)模式的思想將業(yè)務(wù)代碼進(jìn)行抽象,使應(yīng)用低耦合性、高穩(wěn)定、可擴(kuò)展。但不管設(shè)計(jì)好壞,兩者都可以實(shí)現(xiàn)最終的業(yè)務(wù)需求功能。而領(lǐng)導(dǎo)主要關(guān)注結(jié)果,不會(huì)因?yàn)楹笳咴O(shè)計(jì)的有多好會(huì)對后者有所褒獎(jiǎng)。技術(shù)水平一般卻能與技術(shù)好的人得到一樣甚至更好的待遇也是促使很多人淪為業(yè)務(wù)程序員的一大原因。
三. 工作經(jīng)驗(yàn)
在編碼過程中,我們會(huì)經(jīng)常碰到一些并發(fā)、線程安全、事務(wù)、分布式、一致性等問題,雖然這些都是在寫業(yè)務(wù)代碼的時(shí)候碰到的,但是我更傾向于將這部分技術(shù)歸為工作經(jīng)驗(yàn)。因?yàn)檫@些技術(shù)只要在項(xiàng)目中接觸到,就會(huì)去被動(dòng)學(xué)會(huì),屬于必備技能,關(guān)鍵問題是在項(xiàng)目開發(fā)中有沒有碰到過,碰到的越多,掌握的就越多,工作經(jīng)驗(yàn)就越足,這也就是為什么程序員工作年限越長越值錢的原因。
總結(jié)
業(yè)務(wù)能力除了在公司內(nèi)部工作時(shí)用來討論,在面試(面試同業(yè)務(wù)方向除外)或者技術(shù)分享上幾乎見不到他的影子。而在面試中最重要的便是工作經(jīng)驗(yàn),工作經(jīng)驗(yàn)的考察主要體現(xiàn)在基本技能的考核和項(xiàng)目兩點(diǎn)上,懂得外圍技術(shù)的核心思想也是面試的加分項(xiàng)。所以作為程序員我們要認(rèn)清楚自己的角色,不要將自己置身于從技術(shù)角度來講最無關(guān)緊要的業(yè)務(wù)代碼中。我們應(yīng)該有自主學(xué)習(xí)的能力,對于所使用的的中間件等外圍技術(shù)不能僅僅停留在會(huì)用的階段,去了解了內(nèi)部實(shí)現(xiàn)機(jī)制,真正的去認(rèn)識它,不僅僅能讓我們可以和業(yè)務(wù)程序員拉開差距、在面試再就業(yè)時(shí)有一個(gè)較大的優(yōu)勢,還有利于我們編寫出更加健壯穩(wěn)定的代碼。
都說程序員是一碗青春飯,雖然有點(diǎn)夸張,但這并不是空穴來風(fēng),等我們慢慢老去,我們開始不能熬夜,不能加班,市場競爭力就會(huì)變低。突然有一天意識到自己還是一個(gè)程序員,想去搭建一個(gè)網(wǎng)站自主創(chuàng)業(yè)的時(shí)候才發(fā)現(xiàn)離開了公司的技術(shù)體系外,自己除了能寫業(yè)務(wù)代碼外,什么也做不了。所以趁著還年輕,保持積極主動(dòng)的學(xué)習(xí)心態(tài),不要讓大廠完善的技術(shù)體系限制了自己的成長。