離職在即,在準備下一個工作環(huán)境的這段時間,忽然有一陣感慨,工作近五年,在這段時間中,體驗了兩種不同的工作環(huán)境:一個規(guī)模很大,各種開發(fā)體系完備的大公司;另一個(也是目前的)是一個規(guī)模100人左右的小公司。目前正在準備離職中,對于兩種不同的環(huán)境,很想評論一些什么,但是由于目前工作年限較低,也沒什么資格作什么評論,在這個時間,在這樣一個心態(tài)下,就給自己留點什么,對于今后彷徨時,給自己一個參考(不說誰好誰壞)。
很多人在買車時擔(dān)心,車子是好是壞,總是會參考各種論壇的各種評論,近來我也在逛論壇,也在參考其他人的評論,但是好壞參半,究竟如何選擇仍然拿不定主意,但是,其中的一條吸引了我的目光:汽車就像是一段路,而大家的口碑就是地圖,地圖只是一個參考,路好不好走還是要自己走走才知道。在離職的時候彷徨過,走了之后要找一個怎樣的工作,要去一個怎樣的公司,要走一個怎樣的方向,記得當時很流行的就是去一個小公司拼幾年,沒有那么多文檔,沒有那么多流程,你只要編碼就好,而且錢多多。當時真的就覺得,小公司沒有這些流程,效率一定會高很多,卻不甘心由一個那么大的公司跳到一個只有一間小辦公室這樣的公司。拿不定主意的時候又想到了北漂,多么流行的一個就業(yè)方向,雖然向往,卻沒有向北京投出一個簡歷,后來有一個外企的機會,借著這個機會,也去一趟首都,總不至于在中國這么久卻沒去過首都,太說不過去了,但是,當我真正坐在會議室里,看著面試官很悠閑的聽完我所做過的項目,就結(jié)束了面試后,開始感覺到現(xiàn)實的殘酷和自身的不足了,北漂適合我么?當我在游北京看到每天的地鐵二號線的人山人海時,我放棄了,這里不適合我。是啊,適不適合,不是別人一句話說的算的,還是要親自體驗才能知道是否合適。
流程控制不同
流程控制,大公司講流程,全程OA跟隨,每一個環(huán)節(jié)都有很正式的“小儀式”。參與過的一定都很痛苦,OA怎么那么煩啊,什么事都管,每天的例會,每周的早會,都會有OA嘮嘮叨叨……而小公司,流程上沒那么復(fù)雜,開發(fā)人員結(jié)束開發(fā)后,直接用下U盤將程序拷過去安裝和調(diào)試就OK了。
沒有那么多流程上的東西真的很輕松,換來的是我對自己開發(fā)的程序沒有底。就像我原來的部門朋友在一次聊天時和我感慨,原來的公司的體系真健全,我現(xiàn)在的公司都沒有什么流程上的控制,我做出來的東西都不敢往外發(fā)。是啊,當自己做的軟件人命關(guān)天時,都會有這種感覺,當然了,我也感覺到了,所以現(xiàn)在我認識到流程的重要性,也在公司沒人在意的情況下堅持有流程上的記錄,堅持按照以前公司的流程來進行開發(fā)(雖然只是有模有樣的參考)。流程還是有必要的。
客戶源不同
客戶源的不同,很隨便的做事風(fēng)格就會有很隨便的客戶。所以,大公司一般接到的項目都是一些成熟的企業(yè)的項目,小公司的客戶一般就很隨便了。
最直接的體會就是,我的第一個項目,在給客戶發(fā)布版本的時候,ReleaseNote中的發(fā)布程序的格式錯誤了,每一次發(fā)布都應(yīng)該是單獨的,而我將所有的程序版本累計加到了表格中,在連續(xù)三個版本后,客戶那邊就來確認這是怎么回事。而目前給我的感覺就是,我們和客戶交流,隨便說說,做做,沒問題就OK了。以前和客戶的溝通是郵件,而每一次的問題都會有郵件伴隨確認,而目前呢,只需要QQ就OK了。一個電話打完也就OK了。你隨便,客戶也就隨便了,什么事都沒有很好的依據(jù)了,想修改什么,就修改什么了,也沒辦法,我們服務(wù)于客戶了,我們就是在要飯吃,但是,如果我們太隨便,那就真的是要飯的了,在項目上,如果單靠嘴來確定什么,將來是很吃虧的……你都隨便了,客戶當然更隨便了。
開發(fā)習(xí)慣不同
開發(fā)習(xí)慣上的不同,來到小公司最開心的一件事是什么,我寫代碼不用去管編碼規(guī)范了。什么控制代碼行啊,什么格式啊,統(tǒng)統(tǒng)甩一邊。說實在的,原來在大公司里,要完成一個功能很不容易了,更何況還要參照編碼規(guī)范。但是究竟從什么時候開始關(guān)注編碼規(guī)范的呢,應(yīng)該是我在看到了一段又700多行一個函數(shù)的時候吧,沒錯,700~1000行的一個函數(shù),去掉注釋應(yīng)該有700行左右吧。當然這一定有他的道理的,開發(fā)時間短。當然每個人的開發(fā)習(xí)慣不同,導(dǎo)致開發(fā)習(xí)慣不同,能寫出700行的一個函數(shù)應(yīng)該算是高手了。但是對我可能不太習(xí)慣,在今后的開發(fā),無論條件多么寬松,都應(yīng)該嚴格要求,不是因為代碼多好看,而是今后的維護成本。
如果可以,別在新進入一個公司就承擔(dān)這個公司的基于base的優(yōu)化與重構(gòu)。基于此,我比較贊同大公司的經(jīng)驗豐富的熟悉系統(tǒng)的人來帶領(lǐng)較聰明或較勤懇地新人來做。而如果讓新人趕鴨子上架的方式單獨進行這方面的開發(fā),就有點得不償失了。如果是從0開始開發(fā)也許還不錯,但是如果基于base的,熟悉原代碼是一方面,另一方面修改與調(diào)試也是一項耗費成本的因素,修改的代碼是否能夠讓老代碼正常工作,不是一個小時的調(diào)試能檢測出來的。
當然,無論大公司還是小公司,研發(fā)工作都是一個費力不討好的工作,你的成績永遠蓋不過你的過失。在大公司,我可以用兩周的時間去調(diào)試別人四周未出結(jié)果的研發(fā)工作,卻在后來因為領(lǐng)導(dǎo)實在等不下去的時候以這么長時間沒弄出來而告終,當然,科技這東西就是要短時間出成果的,沒有實力就不要隨便去擔(dān)任研發(fā)工作。而基于base的小公司式優(yōu)化與重構(gòu),在時間周期短的情況下最好不要去嘗試,當然,如果你有足夠的實力和足夠聰明的腦子,還是要嘗試的,出于時間的考慮,boss一定會希望你在短期熟悉系統(tǒng),并進行重構(gòu)和優(yōu)化,boss永遠是boss,員工永遠要去完成boss的命令,這是必然的,無論對錯,在短時間的開發(fā)周期中,你要靈活……
總結(jié)我的這次重構(gòu)上的失敗,完全出于自大,開始有模有樣的設(shè)計出了一套框架,對于熟悉的部分,當然是重構(gòu)的有模有樣,但是在項目的后期,由于時間的關(guān)系,沒有時間去熟悉其他部分的功能,得到的命令是把原來的東西拿來用吧,但是你懂的,很隨便的程序開發(fā)出來,有很多東西是可以通過全局變量來解決的,但是你設(shè)計的各種模塊對于把老代碼整合進來還是有挺大困難……也許是我太笨(就是太笨)。沒辦法將這樣的系統(tǒng)整合在一起,但是我的想法中,如果真的整合在一起,這樣似模塊又毫無模塊可言的東西……真的不如沒有。
其實無所謂好與不好,每個人根據(jù)自己的工作個性,來尋找適合自己的工作環(huán)境,是這樣的,就像在正常情況下,測試和開發(fā)是有點敵對的,但是作為體驗了測試和開發(fā)的工作之后,在測試時我理解開發(fā)的固執(zhí),在做開發(fā)時我也能理解測試的找茬,這樣就很好了。都是為了項目能做好,只是出發(fā)點不同。
其實僅僅工作了五年就來談大小公司的區(qū)別,只是個人的淺見,離職之際,給自己的五年工作經(jīng)歷作一個總結(jié),沒有貶低小公司贊美大公司的意思,也沒有諷刺大公司歌頌小公司的意思。就像買車,試駕過多個車型之后,才知道自己到底喜歡什么車,而不是通過論壇的評論就決定的。
總結(jié)一下,無論下一次的工作是什么樣的環(huán)境,都要將經(jīng)歷中的好的方面作參考,不好的方面作警示:
1.與客戶要做到涉及項目要正規(guī),凡是項目上的東西有理有據(jù),一定要有確認。
2.遵守流程,無論大小項目,有流程上的確認才會有底,流程上別含糊,你含糊的不是客戶,含糊的其實是自己。
3.程序員更要有文檔,你根本不知道你留下的代碼會被多少人罵,你也不一定會記得一年前你寫的一個函數(shù)是什么意思。(老掉牙的建議)
4.不要輕易接受一個研發(fā)的項目或者重構(gòu)的項目,尤其是單兵作戰(zhàn)的時候,更何況沒實力呢,不要認為自己在一個公司里有了一點實力就很強大了,也不要被領(lǐng)導(dǎo)的信任沖昏了頭腦。