?公司最近新入職了一個(gè)三四年工作經(jīng)驗(yàn)的程序員,自己寫了一套編程框架,總共三萬多行,說是要接下來的項(xiàng)目想要用自己編寫的編程框架來寫,于是我勸他,不管這個(gè)框架他認(rèn)為多好,暫時(shí)還是放一放,但是,這個(gè)程序員很不理解,一直問我為什么,我即使解釋了,他似乎也聽不進(jìn)去,最后把我搞急了,對(duì)他說:“不行,我走?”
這個(gè)程序員下稱小李,因?yàn)檎行±顣r(shí)我不在公司,所以是老板親自面試的,入職以后,老板就想讓我?guī)?,讓我看看他的能力到底怎么樣,而我手上正好有個(gè)項(xiàng)目快驗(yàn)收了,但是驗(yàn)收前還有一個(gè)需要解決的小問題,問題也不復(fù)雜,我認(rèn)為即使是剛畢業(yè)的程序員,只要不是太差,大概要全職花一個(gè)星期也能解決這個(gè)問題,但是我現(xiàn)在手上有其他項(xiàng)目也很緊,所以這個(gè)事情就一直拖著,正好小李來了,我就準(zhǔn)備讓他去解決!
這個(gè)快驗(yàn)收的項(xiàng)目,出現(xiàn)的問題是可以獨(dú)立出來的,而我寫的這個(gè)項(xiàng)目總共有將近15000行代碼,項(xiàng)目框架是我根據(jù)公司的項(xiàng)目情況寫出來的,其中,有將近3000行是框架代碼,比較簡(jiǎn)單,剩下的都是業(yè)務(wù)代碼,本身代碼量不多,但是理解這套框架和業(yè)務(wù)代碼也需要時(shí)間。為了不影響小李的試用期考核,于是我決定,將項(xiàng)目遇到的問題獨(dú)立出來,讓他先解決,然后我再告訴他怎么在正式項(xiàng)目代碼里面添加他寫的代碼。
吩咐完這一切,我就去忙別的事情去了,轉(zhuǎn)頭回來時(shí),發(fā)現(xiàn)小李正沉浸在自己的代碼世界之中,我習(xí)慣性地站在他旁邊看了一會(huì)兒,緊接著我就皺起了眉頭!
我看小李在IDE里面打開的項(xiàng)目似乎不像剛剛新建的,這里需要解釋下,我們公司所使用的技術(shù)棧是C#,通常我們?cè)谛陆ㄒ粋€(gè)項(xiàng)目時(shí)會(huì)先建一個(gè)叫作“解決方案”的東西,它就是一個(gè)項(xiàng)目的最底層的文件夾,解決方案下就是實(shí)際的項(xiàng)目代碼,像一些通用代碼,或者是分過層的代碼,基本上都會(huì)在解決方案下面通過新建項(xiàng)目獨(dú)立出來,主項(xiàng)目引用即可,當(dāng)然,也可以引用外部解決方案的項(xiàng)目,這種引用,其實(shí)就是項(xiàng)目依賴。
我之所以說小李的項(xiàng)目不像是新建的,是因?yàn)樗粋€(gè)解決方案下總共引用了將近二十個(gè)其他項(xiàng)目,我以為他不在干我安排給他的活,于是就問他他現(xiàn)在在做什么。
結(jié)果小李回答我,正在做我安排給他的工作。
我不解得問:“但是,我看你現(xiàn)在這個(gè)項(xiàng)目不像是新建的!”
小李似乎有點(diǎn)驕傲得跟我說:“對(duì),這是我自己搭的框架!”
我想都沒想,直接告訴他不要用,然后他問我為什么!
因?yàn)槲仪懊嬲f了,他寫的代碼最后我是要集成到我現(xiàn)在的項(xiàng)目里面去的,并不是想要給他練手的意思,他如果用其他框架且,最后又怎么集成呢?
結(jié)果他回答我:“沒事,我這邊的項(xiàng)目引用很靈活的,到時(shí)候直接引用一下包就可以用!”
聽他說完,我愣了一下,然后反問:“引用你這將近20個(gè)項(xiàng)目的包啊?”
他點(diǎn)點(diǎn)頭!
最后一番溝通下來,他還犟得很,非要用自己寫的框架,從頭到尾就沒松過口。
最后把我搞急了,我脫口而出:“要不你來坐我的位置,我走?”
我不用他框架的原因很簡(jiǎn)單。
第一,經(jīng)過溝通,我發(fā)現(xiàn)他自己寫的這套框架總共有三萬多行代碼,就像我剛開始說的,我自己為公司寫的項(xiàng)目框架總共也就3000多行,在這種情況下,我都不敢輕易讓一個(gè)剛剛?cè)肼毜某绦騿T去用,更何況是一個(gè)已經(jīng)寫了三萬多行的代碼框架,按道理,你一個(gè)剛?cè)肼毜某绦騿T應(yīng)該琢磨的應(yīng)該是現(xiàn)有項(xiàng)目的情況,而不是盯著你過去寫的代碼不放!
第二,即使他最后能把項(xiàng)目問題解決掉,我們還要考慮維護(hù)成本。
首先,我們不能為了用框架而去用框架,目前GitHub上成熟的、能夠?yàn)槲覀児舅玫目蚣苡泻芏?,我們?yōu)槭裁床蝗ビ??肯定有原因嘛?/p>
此時(shí),不管小李寫的框架有多么好,我也得暫時(shí)放一放!
首先就是理解小李這套框架的時(shí)間,如果不經(jīng)過專門的培訓(xùn),你讓一個(gè)程序員去研究一個(gè)三萬多行代碼的框架,即使是全職去研究,我估計(jì)沒有十天半個(gè)月也下不來吧!
然后就是即使我愿意讓小李用他的框架去解決現(xiàn)在的問題,但是一想為了解決一個(gè)小問題,后面要引用將近20個(gè)包,我想想都冗余!我自己現(xiàn)在項(xiàng)目用的代碼,框架本身也不超過5個(gè)引用!
其次,現(xiàn)在這個(gè)項(xiàng)目是我和他在維護(hù),后面萬一我和他都有事,這個(gè)項(xiàng)目出現(xiàn)了問題,接手這個(gè)項(xiàng)目的其他同事不光要研究我這15000行代碼,還得研究他那三萬多行代碼!想想都能把人逼瘋!
除非他是研發(fā)總監(jiān)級(jí)別的人物,可以讓大家強(qiáng)制學(xué)習(xí)他寫的框架,否則誰面對(duì)這三萬多行代碼不頭疼??!以后這代碼大概率也就只能他自己來維護(hù)了!
第三,有個(gè)實(shí)際的問題!那就是他才剛?cè)肼殻?/p>
即使他寫的框架代碼寫得比我寫的代碼還要優(yōu)雅、效率比我寫的還要高,萬一他沒過試用期呢?
說到最后,我感覺小李都對(duì)我有意見了,看我的眼神感覺我像是在欺負(fù)他,搞得我都有點(diǎn)不好意思了!但是我一想,心軟不行,于是讓他暫時(shí)拋棄這套框架,重新新建一個(gè)項(xiàng)目寫!
結(jié)語
我覺得,不管他寫的框架有多么優(yōu)秀,現(xiàn)在這種情況都不是用的時(shí)候,等大家都有時(shí)間了,他再去內(nèi)部推廣他寫的框架也不是不行!好的東西,我們是樂于接受的,不管他工作經(jīng)驗(yàn)有幾年,只要是好的東西,我都樂于學(xué)習(xí)!
但是,話說回來,如果拋開框架,代碼就寫不了了,這才是真的有問題!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.