起因
先聲明,只是談自己看法,和大家討論一下,沒有別的意思
當(dāng)了幾年的程序員了,一直都在想一個(gè)問題,什么是程序員,程序員應(yīng)該做好那些事情,什么樣的程序員是有素質(zhì)的程序員?什么樣的程序員算是負(fù)責(zé)的程序員呢?
工作當(dāng)中我發(fā)現(xiàn)有不少員工是為了工作而工作,怎么回事呢?他們只是把我分配的工作分毫不差的完成,但從不問為什么?有些程序員是喜歡隨便改變需求,自己感覺不錯(cuò)就得改,改了還不做報(bào)告,最后上交項(xiàng)目時(shí)才發(fā)現(xiàn)和需求不一樣?于是傻了。
我根據(jù)自己的經(jīng)驗(yàn)把程序員分為以下幾種
單純沒有腦子的
這種程序員是最讓經(jīng)理氣的一種,因?yàn)榇蠖嗍莿側(cè)腴T的,或是學(xué)生剛走出校門,不喜歡問,也不懂得分析,只是一味的很聽話,為什么說他們單純呢?那是因?yàn)樗麄儚膩聿粫?huì)問,不會(huì)說也沒有自己的想法,你讓干什么就干什么,讓自己怎么干就怎么干,聽上去感覺特好的員工,很聽話,如果只是這樣就好了,可怕的是他們沒有腦子,比如你說讓他完成一個(gè)增加的功能吧,他們很聽話的給你做出來,但只是一個(gè)增加的功能,他根本不會(huì)在增加功能之后再給你處理一下刷新數(shù)據(jù)的問題,或是做一些必要的驗(yàn)證,更說不上代碼的擴(kuò)展性,那都是見不著邊的事,不可能。
你說讓做一個(gè)查詢功能,他完全有可能給你做出來一個(gè)查詢所有的功能,不會(huì)管你要不要根據(jù)時(shí)間,要不要分頁,或是其它的方式的查詢,人家還可有理,會(huì)告訴你,你需求上沒說啊,只說要有一個(gè)查詢的功能?然后你無語。
有腦子先斬后湊的
這類程序員大致是工作有一年或是兩年工作經(jīng)驗(yàn)的人,自認(rèn)為自己有些經(jīng)驗(yàn)了,做了幾個(gè)項(xiàng)目,感覺自己NB的不得了了。分配一個(gè)功能總有一些自己的想法,其實(shí)他自己不知道這些想法還不成熟,只是個(gè)人主觀意向,你說讓人家做一個(gè)導(dǎo)航條吧,你清楚的告訴他是在頭部用的,要直排下拉類型的。
好了得到需求了,他根本不管你為什么要這樣做,在做的過程中,他發(fā)現(xiàn)自己以前做一些項(xiàng)目里有導(dǎo)航條的,而且很好看,他們想,經(jīng)理是怎么想的,設(shè)計(jì)的還不如我設(shè)計(jì)的好看,我給他改一下說不定還能得到他的獎(jiǎng)勵(lì),于是自己把直排下拉的導(dǎo)航改成了,直排出面板那種的,因?yàn)楹每矗疫€不告訴經(jīng)理,想給大家一個(gè)驚喜,誰知道經(jīng)理一看,說怎么改需求了,客戶不要這樣的,然后他就跟你講理,說這樣的好看,而且什么擴(kuò)展性還好,技術(shù)先進(jìn),流行,然后你會(huì)很無耐的告訴他,你做的確實(shí)很好看,但是客戶不付錢怎么辦,于是沒辦法在你的“強(qiáng)逼”之下他不得不改,于是你對(duì)他的工作很不滿意,首先是這個(gè)人不好管,老自己做主,不把你當(dāng)回事,怎么辦,好點(diǎn)的經(jīng)理會(huì)慢慢引導(dǎo)一下,脾氣大的經(jīng)理會(huì)直接扔出兩字“滾蛋”
我們來分析一下他的心理,第一種可能就是感覺自己做了很多項(xiàng)目,有一點(diǎn)自大,目中無人的心態(tài),看不起別人設(shè)計(jì)的東西,總以為自己的技術(shù)和代碼很棒了,因?yàn)樽约涸诔绦蚪缑罎L打一兩年了,也算是有所見識(shí)了。但他們確不明白,現(xiàn)在的自己正像當(dāng)前的曹仁學(xué)曹操一樣,只是學(xué)得其形而為盡其神。大部分的軟件,網(wǎng)站,不能只看網(wǎng)站本身的價(jià)值,成功不成功,不是自己說了算,也不是經(jīng)理說了算,還得看客戶,一句話客戶喜歡的就是好東西,客戶不懂技術(shù)啊,你寫的再好,客戶不懂哦,所以一定不要亂改需求,軟件要和市場結(jié)合才能真正體現(xiàn)出它的價(jià)值,做讓大家喜歡的軟件,而不是單純的技術(shù)堆積。
第二種可能就是,自己懶,因?yàn)閮赡陜?nèi)也寫了不少代碼,手上有很多的源代碼,直接找個(gè)好點(diǎn)的能上就行了,為什么要自己寫啊,而且好看還快速。
第三種可能是自己實(shí)現(xiàn)不了,而又不想學(xué)習(xí),感覺浪費(fèi)時(shí)間,所以直接改動(dòng)一下得了。感覺自己如果寫的話,寫好了還好說,寫不好,耽誤時(shí)間,一個(gè)導(dǎo)航幾天能不完,會(huì)很丟人的。于是要加速。
這類程序員有腦子,但是不聽話,管理是問題,一定要好好的引導(dǎo),也希望在這個(gè)階段的朋友們注意了。加強(qiáng)學(xué)習(xí),認(rèn)真做項(xiàng)目,讓自己正規(guī)化。不要入魔道了。多看看資深的程序員的代碼,想一下經(jīng)理為什么要這樣做,聽聽他的理由,在改需求的同時(shí)一定要寫報(bào)告,或是直接找經(jīng)商量一下,不要自己做主。
有腦子,很聽話,很認(rèn)真,但基礎(chǔ)不好,代碼有局限性
這類型的程序員大多是工作一到兩年的程序員,但和上面的不同,他們很有腦子思路很好,而且很聽經(jīng)理的話,做東西很認(rèn)真,做不完了自己會(huì)加班寫,學(xué)新的東西也很快,但是有一點(diǎn)不好的是,他們有很多理由說自己沒時(shí)間學(xué)習(xí)基礎(chǔ),這些人一般是在學(xué)校沒有學(xué)好,出來之后后悔了,學(xué)起來很認(rèn)真,由于學(xué)了些新的知識(shí),起點(diǎn)高,看不起基礎(chǔ)的東西,從不想著沒事去看看編程基礎(chǔ),看看算法,看看數(shù)據(jù)結(jié)構(gòu),總是以為我都能做出這樣的項(xiàng)目了,還看那些小東西會(huì)很丟人的,于是在公司從不看回家更不想看,時(shí)間長了,技術(shù)會(huì)有很大的局限性,對(duì)某一塊技術(shù)很不錯(cuò),但是對(duì)其它技術(shù)不怎么好,于是在接到一個(gè)項(xiàng)目時(shí),總喜歡使用自己現(xiàn)有的,會(huì)的技術(shù)去實(shí)現(xiàn),轉(zhuǎn)了一圈又一圈總算是把東西寫出來了,而且還是加班完成了,但是代碼的性能,穩(wěn)定性,和效率上差的很遠(yuǎn),擴(kuò)展性也談不上,時(shí)間一長,項(xiàng)目一多起來,就會(huì)出現(xiàn)多次反工,因?yàn)樾枨笫菚?huì)不斷變化的,于是自己的代碼也要變化,感覺很是理所當(dāng)然,一個(gè)項(xiàng)目沒事,接手的多了就麻煩了,新項(xiàng)目剛到手,老項(xiàng)目就出問題了,不是這里有點(diǎn)小毛病就是那個(gè)功能要升級(jí),于是新項(xiàng)目放下,著手改老項(xiàng)目,手上能有三四個(gè)項(xiàng)目時(shí),就會(huì)忙個(gè)不停,改的多了,沒辦法再改了就得重新設(shè)計(jì),或是直接說這個(gè)功能實(shí)現(xiàn)不了。
其實(shí)在這個(gè)階段的朋友很有潛力的,只要花點(diǎn)心思補(bǔ)習(xí)一下自己的技術(shù)缺陷,多看看高手的代碼,寫之前想一下,設(shè)計(jì)一下,自然事半功倍,千萬不要有眼高手低的心態(tài)。
真正的高手Nb人物是怎么工作的------------程序員
1.不隨便改變需求
他們不會(huì)主觀的改變一些東西,不管是對(duì)還是錯(cuò),如果要改的話他們會(huì)在開會(huì)時(shí),或是私下跟你提出來,通過后再改,否則會(huì)按需求辦事
2.不寫沒有思想的代碼
在寫功能時(shí)會(huì)加上一些人性化的功能,比果加個(gè)小圖標(biāo),加一些驗(yàn)證,處理一些操作習(xí)慣,加加快捷鍵,處理好Tab順序,等這些,不用你說,他們自己會(huì)處理好。
3.不寫沒有遠(yuǎn)見的代碼
他們?cè)趯懘a時(shí)會(huì)想,不會(huì)是單純的實(shí)現(xiàn)功能,他要想,如果別人也要用這個(gè)方法怎么辦,以后要改的時(shí)候怎么辦,代碼這樣寫是不是合理,是不是會(huì)影響性能,然后才會(huì)”吝嗇“的出手。
4.不寫不負(fù)責(zé)任的代碼
我們寫代碼一是為客戶用,二是方便其他人看,不單單是自己維護(hù),要對(duì)自己的代碼負(fù)責(zé),從自己手上出去的代碼代表的就是自己的臉,代碼不好,人家會(huì)“打臉”的。他們不愿意挨打所以他們負(fù)責(zé)。
高手在編程效率方面可能并不比普通程序員快多少,因?yàn)樗麄儠?huì)吝嗇自己敲下的每一行代碼。這種“吝嗇”有兩方面的含義,一是項(xiàng)目的架構(gòu)性和整體性考量,二是從性能和優(yōu)化的角度進(jìn)行Coding。其實(shí),這里所映射的是一個(gè)開發(fā)者的技術(shù)視野。
有多位技術(shù)專家強(qiáng)調(diào)項(xiàng)目執(zhí)行時(shí)的全局觀。面對(duì)一個(gè)項(xiàng)目,即使是團(tuán)隊(duì)中的普通一員,也要力求從項(xiàng)目整體架構(gòu)的角度審視開發(fā)需求,對(duì)各個(gè)模塊、接口和通信做最優(yōu)化的預(yù)想和配置。這樣可以從全局審視整個(gè)項(xiàng)目的技術(shù)布局,預(yù)判可能出現(xiàn)的問題。
在確定了整體之后,落實(shí)到具體的模塊實(shí)現(xiàn),每一行代碼不但有上下文的考量與規(guī)劃,還要具備模塊間的整體布局。這是模塊內(nèi)的技術(shù)視野,比如接口的定義、注釋的可讀性、代碼的執(zhí)行效率等。當(dāng)你寫下一行代碼前,要考慮它是否會(huì)對(duì)整個(gè)系統(tǒng)造成影響,是否方便其他接口進(jìn)行調(diào)用,這些都是一個(gè)開發(fā)高手的“技術(shù)潛意識(shí)”。
據(jù)一些經(jīng)常帶領(lǐng)入門級(jí)開發(fā)者的技術(shù)經(jīng)理介紹,多數(shù)人只考慮自己所負(fù)責(zé)的模塊進(jìn)行開發(fā),缺乏一個(gè)全局性的技術(shù)視野和對(duì)代碼性能苛刻的態(tài)度,這樣雖然能按交付日期完成項(xiàng)目,卻對(duì)項(xiàng)目質(zhì)量和開發(fā)者的自我提高有很大阻礙。
開發(fā)高手是代碼閱讀者。大多數(shù)技術(shù)專家的代碼閱讀量是普通程序員的百倍,代碼閱讀的時(shí)間比寫代碼的時(shí)間要長得多。
多數(shù)程序員只把程序開發(fā)當(dāng)成一份工作,他們?cè)诤跗脚_(tái)的前景、語言的優(yōu)劣、報(bào)酬的高低;他們不愿為一個(gè)技術(shù)點(diǎn)反復(fù)鉆研,不愿為一個(gè)bug精心測(cè)試,不愿為自身技術(shù)水平的提高多花時(shí)間。而開發(fā)高手往往具有單純的技術(shù)夢(mèng)想,愿意為技術(shù)付出自己全部的時(shí)間。
-
程序員
+關(guān)注
關(guān)注
4文章
954瀏覽量
30305
發(fā)布評(píng)論請(qǐng)先 登錄
阿里云升級(jí)通義靈碼AI程序員,全面上線
TMS320C55x DSP CPU程序員參考補(bǔ)充

UCD3138A64/UCD3138128程序員手冊(cè)

機(jī)械革命發(fā)布CODE AI程序員本
Linux驅(qū)動(dòng)程序程序員指南

AI編程工具會(huì)不會(huì)搶程序員飯碗
第五屆長沙·中國1024程序員節(jié)開幕
京東上萬程序員都AI用它!

程序員節(jié)視頻創(chuàng)意大賽,用串口屏贏取千元大獎(jiǎng)

人工智能輔助編程工具的定義和工作原理
程序員節(jié)視頻創(chuàng)意盛宴,邀您共襄盛舉!

助力程序員告別困擾已久的夢(mèng)魘-Bug

大模型時(shí)代,程序員當(dāng)下如何應(yīng)對(duì) AI 的挑戰(zhàn)

評(píng)論