文章來源于公眾號(hào):Java極客技術(shù) 作者:鴨血粉絲
前幾天阿粉說阿粉最近換了公司,而且入職之后干掉了公司里面的測(cè)試數(shù)據(jù)庫的事情,而接下來的事就比較有意思了,來自“科班出身”的哥們和來自“培訓(xùn)出身”的我的大型辯論(SIBI)現(xiàn)場(chǎng),也不能說是通俗的甩鍋,但是確實(shí)有那么點(diǎn)意味。
現(xiàn)場(chǎng)一
“科班程序員”:這功能很好實(shí)現(xiàn)呀,直接寫幾個(gè)嵌套for循環(huán),在里面判斷一下就行了,直接返回?cái)?shù)據(jù)就行了,為啥你這寫的這么墨跡呢?
“培訓(xùn)程序員”:內(nèi)心OS:嵌套 for?再加上幾個(gè) if,你確定你的數(shù)據(jù)超過1w條,沒有明顯的延遲么?于是,只能告訴他,兄弟,這么寫肯定是沒什么問題,但是你不想一下后期怎么維護(hù)么?你這才一兩萬的數(shù)據(jù)我都能感覺出明顯的延遲了,為啥不能優(yōu)化一下呢?
說實(shí)話,說到這個(gè)問題的時(shí)候,也避免不了被大家diss,覺得這不是科班出身的程序員能寫出來的代碼,而事實(shí)情況確實(shí)是這個(gè)樣子的,也可能是工作經(jīng)驗(yàn)不太足,所以很多代碼寫的不是很給力,也可能是之前的公司做過幾次 CodeReview,所以每次在寫完代碼之后都習(xí)慣性的去考慮一下這個(gè)代碼還能不能優(yōu)化的更加簡(jiǎn)單一點(diǎn),所以考慮的時(shí)間要稍微長(zhǎng)一點(diǎn)。
于是,兄弟就開始和我較真了,阿粉的策略一直很簡(jiǎn)單,兄弟,你自己寫個(gè)三個(gè) for 循環(huán),然后去看看你執(zhí)行完這個(gè)循環(huán)的時(shí)間,然后想想如果在循環(huán)中加入查詢數(shù)據(jù)庫的所有的操作,你再想想怎么處理,就比如說,你要比對(duì)循環(huán)里面的 List 里面是不是有這個(gè)的時(shí)候,不用寫那么多的 for 循環(huán),不然那不就是 X*Y 次了,為啥不再單獨(dú)的造一個(gè) List 用 contains 來獲取呢?
現(xiàn)場(chǎng)二
“科班程序員”:哥,這個(gè)功能是不是還可以再繼續(xù)把這些內(nèi)容加上,這塊我覺得加上它會(huì)更加的完善。
“培訓(xùn)程序員”:來自內(nèi)心的OS,加個(gè)錘子,需求上怎么定,我就怎么干,干完了不是就OK了,為什么要多此一舉,但是心里這么想,實(shí)際還是不能這么干,于是說,這個(gè)地方你看怎么改,郵件給我說,抄送給xxx,然后我再改。
也不是說加這個(gè)不行,確實(shí)是,按照需求完成了工作之后,你再過來給我扯東扯西的,有點(diǎn)讓人難以接受不是,你要是說這地方寫的有問題,是吧,咱們還能請(qǐng)教一下你這塊應(yīng)該修改成什么樣子,你現(xiàn)在過來給我說加功能,你這不是要搞事情,怎么能慣你這個(gè)毛病呢,于是二話不說,先發(fā)郵件,抄送給領(lǐng)導(dǎo),誰讓加的,別到時(shí)候你一句話,加了功能,到最后出問題了,第一時(shí)間找的還是我,于是這個(gè)功能需求上沒有的,自動(dòng)屏蔽。
阿粉在這里不是說“科班出身”,和“培訓(xùn)出身”之間的差距,沒有任何其他的含義,只是這次確實(shí)是比較巧合,這個(gè)哥們是剛畢業(yè)2年的本科,專業(yè)是計(jì)算機(jī)科學(xué)與技術(shù)的。僅僅是巧合,不要多想呦。
現(xiàn)場(chǎng)三
“科班程序員”:這個(gè)簡(jiǎn)單,幾天就能搞定了,不用那么麻煩,
“培訓(xùn)程序員”:這是啥呀,我得先看看基礎(chǔ),然后再實(shí)際動(dòng)手操作吧。
說實(shí)話,不得不說,有時(shí)候“科班程序員”雖然有些時(shí)候會(huì)讓你感覺到他們有著一些些的優(yōu)越感,但是技術(shù)也確實(shí)很給力,比如說在公司要使用一項(xiàng)新技術(shù),他們能夠二話不說的幾天就能開始干活,而在這些內(nèi)容上相比較,“培訓(xùn)出身”的程序員反而沒有那么給力,而是得先摸清楚基礎(chǔ),畢竟大部分的科班生都是經(jīng)過學(xué)校系統(tǒng)的學(xué)習(xí),知識(shí)體系更加完整,所以能夠更深入的解決問題,但是有一些礙于時(shí)間短的原因,沒有成功的積累起來經(jīng)驗(yàn)的時(shí)候,還是欠缺點(diǎn)火候的。
這不正是之前網(wǎng)上看的一個(gè)圖么?
現(xiàn)場(chǎng)四
這個(gè)場(chǎng)景就比較有意思了,就是雙雙聯(lián)合和產(chǎn)品battle,面對(duì)產(chǎn)品的靈魂提問:
“這個(gè)需求用戶/運(yùn)營說要改成這樣,”,
我們的統(tǒng)一回答,郵件呢?你發(fā)個(gè)郵件先,然后抄送給那個(gè)誰誰誰,單獨(dú)給我說,我實(shí)在是不敢給你這么干,不然改來改去,還是第一版怎么弄,你就先發(fā)郵件,證明我們?cè)诟苫畈皇菃??你先去?zhǔn)備郵件吧。
這話說的是沒有啥毛病吧,這是經(jīng)驗(yàn)總結(jié)出來了,不然等你開了頭之后,接下來的事情就比較難辦了,能做完還行,這做不完的話,那就相當(dāng)于你沒有干活,所以,對(duì)程序員來說,你把做的功能給我羅列清楚,然后提交上去,下發(fā)指定哪些功能確定之后,我再做也是完全不虛的。
說了也挺多的了,阿粉也在后邊給大家放上一個(gè)曾經(jīng)的面試題,是屬于那種上手實(shí)踐的面試題。
面試官給的一個(gè)面試題,而面試題很有意思,大家可以看一下。這個(gè)題阿粉是沒有回答上來,但是來自科班生的答案,讓面試官很滿意:
而他的實(shí)現(xiàn)方法和我從網(wǎng)上看到的是一模一樣的,
Task task = new Task(() => checkCustomerprice());
task.Start();
bool result = task.Result;
Task task2 = new Task(() => checkInventory());
task2.Start();
bool result2 = task2.Result;
if(result&&result2)
return true;
else
return false;
網(wǎng)上的大神也不確定對(duì)不對(duì),阿粉覺得這么實(shí)現(xiàn)確實(shí)也是有道理的,不知道大家的意見是什么樣子的呢?
以上就是W3Cschool編程獅
關(guān)于“科班出身”的程序員和“培訓(xùn)出身”的程序員的大型辯論(甩鍋)現(xiàn)場(chǎng)的相關(guān)介紹了,希望對(duì)大家有所幫助。