各位猿友,LZ有禮了。
上一篇文章LZ與各位猿友討論了懶與勤快的內容,引起了小小的爭議。有支持LZ的,也有批判LZ的。本次開篇LZ准備先讓各位批判與支持LZ的猿友露個臉,都是一些熱心的猿友。
首先是支持LZ的,這里給出部分猿友的回復,非常感謝各位。
樓主就是在靜靜的時候思考后寫下這篇文章的!樓主說的着實是個現在猿友們的現狀,分析的很透徹喜歡你幽默的文字風格樓主文筆風趣啊,勤快又多思考就能逆天真棒,大家快來逆天先
就這么多吧,LZ這里對剩下沒提到的猿友真誠的說聲抱歉。下面是批判LZ的,在批判LZ的言論中,主要有以下幾點。
1、說LZ是標題黨的,這個LZ表示沒什么好說的,只能對這些猿友說一聲抱歉了,賺了您一個閱讀數,以下沒有提到的猿友請見諒,可能LZ沒找到你的回復。
請不要標題黨~~!! 這樣容易引起誤會 [羞澀]#74樓 2013-09-11 19:31 | cntnn11
標題黨。
樓主換個標題吧《改掉你的壞毛病,它會影響你的前途》#94樓 2013-09-12 10:45 | Albert Fei
一看就是標題黨!#30樓 2013-09-11 11:00 | 行動大於一切
純粹的標題黨
2、這第二種是討論勤快與懶的,涉及的內容五花八門,以下拿出部分猿友的回復。
這標題看到就忍不住想反對
這個問題上升一點層次就可以適用於IT技術工作者群體(包括技術管理者、架構師等專業崗位),即務實跟務虛,有的人只會埋頭干,有的人只會吹,兩方面都具備就是非常有前途的實干家。#54樓 2013-09-11 13:15 | zhanjindong
我是屬於白天很忙(為生活),晚上很懶(為自己)的人。
LZ的觀點認同,但是論證的過程不敢苟同。
“ 第二種,他們往往對一些重復且繁瑣的工作特別厭煩,更有甚者會經常抱怨連連。他們經常坐在工位上發呆,或是出去抽根煙,上上廁所什么的。”誰知道TM的是真的在思考還是懶得干活在意淫哪個美女呢?
對於剛畢業的新手來說,沒有不斷的實踐哪有靜下心思考的資本。#56樓 2013-09-11 13:26 | agassi
Lz的文章說的剛好相反,勤奮的程序員都是善於懂腦子的,懶惰的都是不懂腦的我覺得應該動腦和動手兼備吧
有些事情是要去做了才能明白下一步的
勤快的人還是要表揚的,
就怕有些人只動腦和口, 然后把粗活仍給別人
嚴於律己, 寬以待人樓主,我覺得再扯,沒有一個人是勤快的,自然寫程序,也肯定是奔着最省勁,最懶的方法去的,這包括腦力勞動和體力勞動了,這兩個是對等的。對於高斯那個熊孩子,我認為他不是用幾分鍾就想出那個公式的,肯定也下了很多功夫
3、最后一些大部分是讓LZ來點干貨的,以下是部分猿友的回復。
看到第五節,正以為要拉開大幕,大侃特侃時,再往下拉一點,沒了。your say a **#79樓 2013-09-11 23:57 | yingsuixindong
思考境界的提高,沒給出一些可行的嘗試建議
本次LZ這篇文章,主要就是想要盡量迎合第三種批判LZ的猿友們的,也就是搞點干貨,同時也是給支持LZ的猿友們更多的分享,另外也希望第二種批判LZ的猿友們繼續給予LZ建議。至於第一種批判LZ的猿友們,LZ好似只能表示無能為力了。
下面各位猿友就和LZ一起進入我們的正題吧。
何為用腦子寫程序?
看到這個小標題,有的猿友可能想要噴LZ了,LZ你個1+1貨,寫程序不用腦子怎么寫,難道還真把程序猿當成搬磚的了,況且,就算是搬個磚,要是不動腦子的話,也很容易砸着自己的腳的。
LZ還是要勸各位猿友先莫要激動,待LZ一一道來。
回答一下標題上的小問題,用腦子寫程序,並不是說在寫程序的同時要動腦子的意思,LZ想要表達的意思是,在動手寫代碼之前,先用腦子在腦子里(有點繞,0.0)把程序寫一遍,然后再動手去寫,此為用腦子寫程序。
用腦子怎么寫程序呢?
這個LZ估計每個程序猿應該都有過這種經歷,接下來LZ就說一下LZ是怎么寫的,僅供參考,不一定適用於每一個猿友。另外,LZ假設完成某個需求需要的時間大約是一天,也就是八個小時,下面LZ就以八個小時的耗費時間為例,給各位猿友分享一下LZ在各個步驟中所花費的大概時間。
第一步:看
將與要實現的需求的相關代碼仔細的看一遍,理清楚現有的相關代碼的邏輯。
舉個簡單的小例子,比如我們要給某一個列表增加一個顯示列,那么我們可能就要看下這幾個地方。首先就要看一下這個列表中的字段值是怎么從數據庫查出來的,過后就要看一下查出來的字段值是如何從后台傳到頁面的,然后再看一下在頁面中又是如何顯示的。
也有一種情況是,你對系統已經非常了解了,又或者現有的相關代碼是你剛做過的一個功能,那么有時候這一步是完全可以省掉的。LZ現在已經大部分都沒有這一步了,不過如果不確定的話,還是要稍微看一下的。
這一步按八個小時來算的話,LZ花費的時間一般在半個小時左右,不過也可能為零。
第二步:找茬
現在我們已經非常清楚現有代碼實現的邏輯了,而我們要做的就是在此基礎上修改一些東西或者增加一些東西,下面這個步驟就該找茬了。
找誰的茬呢?
答曰:找需求的茬。
找需求的茬就是要仔細的想一下,在現在的代碼基礎上,實現當前的需求會不會有什么不妥。
比如,會不會對原來的功能造成影響,會不會實現起來非常困難或者改動非常大,如果是的話,是否存在合理的替代方案,如果有的話,可以去找產品經理商討一下。當然還有的時候,應該直接拒絕某些需求,這並不是我們拒絕干活,而是對自己的系統負責任的表現。當然了,如果你做出這個決定的話,必須要有充足的理由說服你的產品經理,或者是業務人員,又或者是項目經理等等。
在這一步中,這一系列與需求相關的問題,就是我們要思考的。LZ一般在這個階段,思考的時間是最長的。按八個小時來算的話,這個步驟一般最起碼要花費LZ四到五個小時左右的時間。
這其中如果發現需求有問題或是對需求有任何疑問的話,也可能包括了與產品經理、業務人員或是項目經理溝通的時間,如果是系統之間接口的話,可能還包括了和其它系統人員溝通的時間。
第三步:在腦子里寫程序
需求確認完,並確保需求的可行性以后,剩下的就只是寫代碼了。不過LZ一般到了這個時候依然不會動手,LZ會在腦子里把程序寫一遍。
具體怎么寫的呢?
其實就是想好自己要改哪些地方,還有就是這些地方都怎么改,想好以后,再大概想一想會不會有什么問題。就還拿那個特別簡單的例子,就是給某一個列表增加一個顯示列的需求,那么就大概需要該這么幾個地方,以下是針對LZ現在維護的系統來說的。
第一個就是SQL查詢語句要改一下,要增加一個查詢的字段,之后就要把多出來的這個字段值與程序中實體的某一個字段做個映射關系存進去傳到頁面,然后就改一下頁面,在列表顯示的table中增加一列並顯示出相應的值就行了。
這就是一個簡單的在腦子里寫程序的過程,寫完以后,LZ一般會再想一想是否有什么遺漏的地方。這整個過程,一般大約會花費LZ半個小時到一個小時的時間。
第四步:真正動手寫程序
在上面三個步驟完成以后,一般已經花費了LZ大概五到六個小時的時間,接下來的時間就是將腦子里寫過的程序快速的寫出來而已。這個過程LZ花費的時間,大約在半個小時到一個小時之間。
第五步:測試
寫完之后,還有一點點時間就是要自己動手測試一下了,不過經過LZ實踐證明,大部分情況下,這時候寫出來的程序幾乎都是沒問題的。
小總結
以上便是LZ大部分時候去完成一個需求的大致過程,上面的時間是按八個小時算的,如果換算成比例的話。可以看出LZ每個階段花費的時間如下所示,為了計算方便,以16為分母。(分母。。是不是好久沒聽過了呢)
一、看:0至1/16
二、找茬:8/16至10/16
三、在腦子里寫程序:1/16至2/16
四、真正動手寫程序:1/16至2/16
五、測試:1/16至2/16
上面算出來的只是大概的時間比例,實際當中可能會有所波動,但一般情況下,LZ真正動手去寫的時間,不會超過1/8。換句話說,如果上司給了LZ一個任務,這個任務讓LZ在一天之內完成。那么你將直接看到的現象就是,你會發現LZ只有大約一個小時是坐在電腦前噼里啪啦敲鍵盤的,還有半個小時是坐在電腦前點來點去測試的,其余時間估計就看不見LZ了,或者是看到LZ在電腦前坐着,卻不是在敲代碼,而是在干別的事。
這些時間LZ都在干嘛呢?
其實這個很不一定,可能是上廁所去了,或是抽煙去了,又或者是與相關同事溝通需求的事去了,又或者是趁着溝通中一些等待的空擋干點其它的事,比如回回郵件,回復下業務人員的問題,幫助別人的系統解決下問題,或是帶帶新人等等(LZ的事比較雜,0.0),總之不是在工位上噼里啪啦寫代碼,但是不要忘了,其實LZ至始至終都在腦子里進行着當前的開發任務,因此LZ依然可以按時並且輕松的將開發的任務完成。
事實上,這並不是對工作懈怠不負責任的表現,從結果就能看出,至少LZ目前依然穩穩的在職,這說明領導是能看出來你到底是干活沒干活的,畢竟結果很重要,任務還是按時完成了。而且LZ這里敢負責任的說,LZ這樣看似晃晃悠悠一天寫出來的程序絕對比LZ坐那一天憋出來的代碼質量要高的多,只不過這是對於LZ個人而言,畢竟LZ也說了,LZ的方式不一定適合所有猿友,不過應該是存在一定的參考價值的。
這就需要各位猿友根據自己的情況去吸優排差了,將LZ所說的糟粕除去,然后收下其中的某些精華。
結束語
看過LZ上一篇文章的細心猿友可能會發現,LZ不就是上一章中的第二種程序猿嗎?
只是LZ到底是高斯,還是屌絲,或者是魚香肉絲,就不得而知了。請猿友們幫LZ鑒定一下吧。
覺得是高斯的請大聲的喊出來,如果是后兩個的話,請大喊下面這句話。
老衲和我的小尼姑們都驚呆了,0.0。
附錄
同學們,現在向我們走來的是程序猿方陣!他們穿着拖鞋,披着毛巾,左手拿着鍵盤,右手舉着鼠標,腋下夾着USB轉換器。他們因睡眠不足而顯得精神不振,喊着微弱的口號走過主席台,主席問候:程序猿們辛苦了!程序猿方隊異口同聲地答道:Hello World!