1. 程式人生 > >大神經歷學習_很有指導意義

大神經歷學習_很有指導意義

作者:yi bbbian
連結:https://www.zhihu.com/question/50516672/answer/121917292
來源:知乎

說一下自己的經歷,92年參加工作,專業是軟體工程,那時候這個專業還是很牛的。號稱高科技。到現在整整24年,現在還在做開發。不過已經很少編碼了。最近剛換了工作,開始了一個新的起點。哈哈,很少想到已經47了,是一個大叔了。

92年參加工作,到了中科院的一個研究所,做作業系統的,當時一個屋子裡8個人,6個研究生,年齡都是在30歲左右,還有一個是合肥科大的本科,比我早一屆,而我呢,只是一個普通大學的本科,壓力山大。6個研究生中,有4個是北大第一批的軟體工程的研究生,(他們之前國家是沒有軟體工程碩士學位的),你想一下吧,這幫傢伙是77,78,79的本科(清華、科大、北大的),然後讀研,然後一起工作,我當時去的研究室是做作業系統,unix,這都是一幫什麼牲口,說他麼是百裡挑一都是少的,千里挑一估計差不多。我去了1年後,這些傢伙做出了一個作業系統,叫POSIX,似乎是這個名字,說簡單點就是核心是Unix,但可以在上邊跑unix程式也可以跑DOS程式。在當時是沒有人做個這個東西的。鬼使神差到了這麼一個單位,本科做的那點東西在這裡就是一個渣。(我本科的程式碼大約是3w行左右)。於是我的碼農生活正式開始了。


1碼農7年
說實在的,我也是一個懶人,很少考慮未來,吃了不好虧,不過好在自己還算努力,也有貴人相助,所以現在還算不錯。很多事情已經很長時間了,記得不是很清楚,寫一些自己的逗逼的故事和獲得的感受吧。

畢設

我的第一個專案有三個部分,一個是unix的link程式碼的理解,這個是我 的畢業設計。牛逼不,不光當時壓力很大,一個是沒有經驗,沒有資料,只有程式碼。輔導老師有自己的專案,只是給我在主機上註冊了使用者,其他的事情基本沒有管。其他的事情都考你自己了。

A:進入機房,感覺自己很高大上,要換鞋,有工作服,當時用的hp9000,在學校的時候是60個人用一臺hp3000,卡的要命,現在是一個人一臺9000,50個終端你隨便用,那種感覺就像乞丐進了阿里巴巴的寶庫。記得第一天上機的時候登入了一個終端,下午就可以使用兩個終端,第二天就開始使用了三個終端,後來基本就是使用5個終端(當時的終端是字元終端,讀程式碼遇到函式,不想切換,於是乾脆多開一個終端),於是每天上班的時候,你都會看到整個機房只有我一個人,在各個終端前滑來滑去。


B:說一點題外的話,當時還是計劃分配工作,託人進了這個單位,老媽對我說三句話,一句是,我和你爸都不是搞科研的,現在給你送到這個單位,後邊的事情要靠你自己努力了,第二句是工作了不像在家裡,手腳勤快點,愛幹活的人別人才喜歡,第三句中科院牛人多,但沒有人有義務教你,關鍵看自己。別讓自己閒著。

C回到正題,當時見老大(室主任)。老大說得很簡單,畢設就是閱讀理解link原始碼,讀明白了就寫畢設,正式工作就是移植link程式碼,能幹下來就留下,否則滾蛋。滾蛋、滾蛋、滾蛋。就是這麼直接、粗暴,求我當時的心裡陰影面積。

D當時不知道老大(室主任)從哪裡搞來了UNIX C原始碼,全部程式碼,我的工作就是讀link程式碼,於是第一件事情就是將link程式碼全部打印出來。一萬八千多行,將近400頁,換行列印紙,裝訂好。於是我的碼農+搬運工的生活正式開始了。


E:當時每天的工作流程是這樣的,8點到單位(一個人都沒有),打水、燒水,收拾一下桌子,抽菸,泡茶、看一會兒書,大約8點半的時候自己上樓進機房,除了喝水、上廁所基本不出來。然後就是中午吃法,吃完飯,看老大他們打牌,到一點半準時上路,再下樓就是5點半了,然後是參加室裡的棋牌活動,7點回家吃飯,然後接著讀程式碼。

F:當時工作遇到最大的問題就是沒有資料,你想一下吧,沒有網際網路、沒有手機、沒有軟體工程的書、甚至沒有unix C的書,微軟c 2.0的書倒有,可惜除了基本語法,和unix沒有太大關係,所有的資料就是那一萬八千行的程式碼。而我閱讀的效果並不好,說實在的就是在原地踏步。知道遇到了老陳。

G:老陳是那100個研究生中一名,不愛說話,微禿。他是每天固定去機房的不多的幾個人,每天上機大約是4個小時。不過玩棋和電腦打俄羅斯方塊的時候可以看出老陳是一個反應極快的人。那時老陳抽的是2毛一包的無嘴春城,而且煙量很大,我有時候可以搞到好煙,經常散給他們。當時也不是拍馬屁,簡單說就是菸酒不分家。哈哈,一個偶然的機會,和老陳一起回家,他問我畢設的情況,我簡單說了一下,balabala。。。。簡單說就是不知道如何讀程式碼。老陳聽完,說了幾句話:1從頭開始讀,你現在讀亂了,找main從頭開始,
2寫註解,英文不好就寫中文,
3分層讀,不要一下就讀下邊的東西,先搞明白上層的邏輯,
4不懂的地方就猜,猜完寫註解,後邊發現錯了,就改註解。
簡單幾句話,當時不是很理解,第二天去單位,嘗試按照老陳的方法重新開始。牛,效率提高很多,畢竟原先還是仔細幹了點話,很快將原來的程式碼梳理清楚了。效率提高了很多。

H:老陳是我第一個教我工作方法的人,也是第一個在技術上吊打我的人,哈哈,後來我在單位做Ingress培訓,也是看了半個月的資料,老陳當時已經是我的室主任了,借去Ingress資料看了半天,然後開始給我講Ingress和Oracle的差異。靠就半天的時間,他講的東西我知道一半,其他還沒有來得及看,更無法做到比對系統優缺點了,於是又被吊打。被老陳吊打,後來被他的弟弟小老陳吊打,這些事情以後慢慢說,後來終於有機會報仇的時候,已經是將近10年後的事情,哈哈,慢慢說。

I:老陳教的方法很有用,後來看程式碼的時候,很多程式碼總覺得似曾相識,寫註解、猜測、反覆、閱讀、修改錯誤,讀不懂就先放下,一遍一遍來,每一次都有新的理解。後來畢設的了優+,說個好玩的,我的畢設是在單位答辯的,為什麼,我的題目拿回學校,沒有人懂,只能在單位答辯,當時覺得自己可牛了,不過正式工作後就開始被正式吊打了,而不是老陳這種友情出演式吊打了,哈哈

J:老陳教的方法,後來用於吊打別人,使用過兩次。一次是一年後,單位來的新同事,修改通訊程式程式碼,兩週搞不定。將老陳的方法告訴他,然後帶他讀了300行。後來這哥們2天拿下程式碼。還有就是14年後去航天智通,當時做測試部門負責人,測試終端嵌入軟體。C程式碼,C的程式有很多錯誤,而且不貴是隨機的,很難重現,而開發人員經驗比較少(研究生剛畢業),於是開發和測試吵得不亦樂乎。回來後,我告訴測試人員,第一上攝像頭,所有問題都錄製下來,第二給我程式碼,當時剛換工作,事情比較多,其他測試人員也幫不上忙。但畢竟經過長期訓練,於是讀了2周,下一次PK,我親自上,bug報告不認,好辦,逐一視訊演示,還不認,看程式碼,一行程式碼,一行程式碼說,可能產生指標錯誤的一個一個指出,最牛的就是將核心程式碼(核心函式的程式碼沒有給我),做什麼用的,引數是什麼,起到什麼作用逐一列出,當時將這個專案的主管(一個博士)驚著了,這是他的核心程式碼,連他手下的工作人員都沒有,後來的事情就簡單,開發人員逐一修改自己的錯誤。

K:說實在的,開發人員是一個很單純的群體,有自己的驕傲,但都是講道理的,如果他認為你說的對的,就會無條件去做,我自己和開發人員PK過無數次,無論輸贏,一旦大家承認結果,都會努力去做自己的工作,給人背後下絆子的有,但說實在的,那些人我真不認為他們的做開發的。在後續的工作經歷中會說很多非技術的事情,都是這類事情。

L:說幾個小老陳的故事吧,小老陳,老陳的弟弟,我剛到單位的時候,單位有一個事情,就是東北有一個企業做了一個專案,用的是Oracle,出現了一個問題是資料檢索速度很慢,當時單位沒有做過這個東西(92年,當時有人玩FOXBASE,oracle還處於養在深閨人不識的階段),於是我們室的老大懸賞找人,老陳說他弟弟會,請來,副主任帶他去東北,一天搞定,公司賺了10萬,給小老陳5w。5w,在92年是什麼概念,我們室主任工資是450.回來好奇,問是什麼問題,原來東北的哥們覺得資料庫資料比較多,看書發現加索引會提高速度,於是就開始加索引,可你別所有資料項都加索引呀,加索引也是要耗費資源的,越加越慢,越慢越加。小老陳去了,看了一下,於是將所有索引去掉,一切OK。小老陳因為這個事情,在單位算出名了,後來特招到單位,這個傢伙比他哥哥還牛,開始,我做作業系統,他做應用,後來他改做API,然後做作業系統,做編譯器,06年因為單位出現很大變化,他和我都離開了單位,他去微軟面試,直接將他的面試官幹掉(他的徒弟就幹掉過一次,他是第二次),去Sun也一樣,兩個公司的offer都拿到了,可他老人家都沒有去,問他原因,告訴我說,微軟中國和sun(中國)都不做核心和編譯器。所以不去。後來去了一家臺灣的公司,做核心去了,12年的時候,我們單位要做安卓,當時公司沒有人瞭解,我去問他,老人家一句話,那個東西不難,底層是Linux,上層是Java,哥們明白了嗎。明白了,諮詢結束。

不知道小老陳是否算是成功人士,如果單以金錢來衡量,他肯定不是。他應該是一個GEEK吧,一個是人比較聰明,一個是專注,如果一個程式設計師只完成自己手頭的工作,而不願意搞後面複雜的原理,他只能是一個碼農,而如果下功夫去學編碼後邊的理論,瞭解事情原理,才可能脫離碼農的地位。而這需要專注和時間,小老陳對技術的專注到什麼程度,舉兩個例子,一個是這老人家每天晚上12點回家,沒有人強迫他加班,是他自己願意在單位。不是一年,是將近15年的時間,第二個是他夫人(也是我的同事)當時懷孕8個月,讓他回家做飯,老人家11點才回家,說了一句我累了,明天要開會,然後倒頭就睡了,他夫人這個時候還沒有吃飯呢。為這類事情,他夫人沒有少抱怨,我們也沒有少吊打他,哈哈,對了忘說了,成為geek'最好娶一個善解人意,勤勞能幹好夫人是很重要的一個事情。

M:做畢設的事情,還有一個事情,我最早找單位做畢設的時候,不是後來去工作的單位,是中科院的另外一個單位,叫化冶所,那個單位有一個國家實驗室,做雙向流模擬顯示。後來因為要去後一個單位做畢設,就將化冶所的畢設專案讓給我一個哥們,那個哥們不喜歡程式設計,而我不能讓這個事情做砸了,所以也一直在做這個事情,化冶所專案有一件得意的事情,還有一個震撼了我一生的事情。先說得意的事情吧。當時做的東西是一個雙向流模擬程式,具體演算法記不得了,好像是從試管兩頭有不同的顆粒吹入,然後粒子做布朗運動。粒子之間會有彈性碰撞。開始比較順利,50個粒子的時候,計算、顯示都沒有問題,但隨著粒子的增多,計算速度明顯降低(大量的浮點數運算),顯示效果明顯有問題,最後基本不可使用,後來用了387晶片,有提高,但速度還是不行,後來想了辦法將計算和顯示分開,計算歸計算,顯示歸顯示,一下子解決了這個問題,牛逼吧。其實很簡單,就是先計算全部顯示的資料後儲存到一個檔案中去,然後,專門做一個顯示程式,由於資料已經全部計算完畢,只要專心顯示就可以了,而且由於只有一個讀盤操作,一個顯示操作,所以,即使大量顆粒的運動對於顯示的影響不大。這個事情當時很讓我嘚瑟了一陣,畢竟解決了一個當時誰都沒有辦法解決的問題。這個專案後來還獲得了一個什麼獎,不過那時我已經離開了實驗室,和我沒有什麼關係了。(這個專案最大的關鍵是顆粒碰撞的模型,這個是專業性很強的問題,我當時的碰撞公式用的是最簡單的彈性碰撞公式,後來他們又做了很多改進,不過顯示那個地方沒有在動,哈哈)。

震撼的事情就是發生在化冶所這個國家實驗室,一天晚上,我正在coding,快下班了,來了一個老頭,穿著很普通,拿著一個老式的書包,看見我在用計算機,就問我一些計算機的問題,很簡單,開機、關機、dos命令,wps的使用。當時因為搞定了幾個問題,心情不錯。所以就巴拉巴拉給老人家講了起來,老爺子一邊聽,一邊拿筆記錄,態度很認真。送走老人家,問旁邊的工作人員,那個老人家是誰,工作人員告訴我,他是郭慕孫,郭慕孫,郭慕孫。老所長。我靠,這是和三錢一批的牛人呀,老院士,竟然和我一個半吊子的本科碼農對計算機應用方面的問題進行了長時間的“深入探討”。這個待遇是很多他的學生都沒有的。


郭慕孫_百度百科
這個是郭老的介紹,說實在的,當時剛本科畢業,又是學的軟體工程,當時算高科技,而且去中科院工作,當時覺得自己牛的不行,不行的,偶遇郭老的事情,當時對我是一個極大的震撼,不是郭老的學識,而是他的態度,對知識的態度,對其他人的尊重,從哪以後雖然偶爾還會裝逼,但不敢太嘚瑟,這個世界能人太多。

好了最後說兩個事情就結束畢業這個專題吧

第一個事情,還需要說一個牛人,是我單位的,姓王,我們都叫他王大拿,王大拿的特點就是程式碼狂人,上邊我說過我們機房幾乎沒有人,除了王大拿,在我的心目中王大拿不是人,是個神。說他是神,是因為只要是計算機方面的問題,沒有他不知道的,我的乖乖,不僅僅是技術問題,整合方面的、趣事沒有他不知道的,當時遇到問題,問別人有不知道,最後就是一句話,問王大拿去。當時做shell命令移植,有問題,無解。當時屢受打擊,自信不足,知道王大拿一定會,但不敢去問。一次抽菸的時候,問老馬(副主任,我最尊重的老領導),老馬告訴我,問王大拿問題,需要準備幾個事情,第一,你能否描述清楚問題,第二你有沒有解決方法,第三你想讓你獲得什麼東西,這三個東西你沒有搞清楚,就不要去問,否則自取其辱。於是自己回過頭來,開始捋問題,記得當時捋問題的時候,實際自己已經有三個解決方法,各個方法都是各有利弊,但自己傾向第一種方案,但為什麼,不是說的很清楚。三個問題準備好之後,就鼓足勇氣衝了上去,一口氣將三個問題說完(緊張呀,面試都沒有這麼緊張),好在畢竟經過了準備,而且我的答案得到了王大拿的認可,然後給我講原因,balabala。。。。。回來後頗為得意,哈哈,我還不是笨蛋,竟然和王大拿的答案一樣(被打擊怕了),首次得到認可,頗為自得。

如何提問題,其實學問很深的,很多人不會提問題,特別是剛工作人,老馬教我的方法,對於提高自己的水平意義很大,後來和高水平開發人員交流的時候,作為初級開發的我,經常會捋問題,搞清楚後再問,而且這麼做有一個好處,就是強迫自己想答案,想方法,現在很多問題都可以上網問度娘,而我們當時沒有這麼好的環境,很多問題都要自己想,不過的確很提高自己的水平,所以,建議大家遇到問題的時候別上來就問,而是想一下自己如何解決,再去查資料。

說兩個王大拿的笑話吧,王大拿結婚,嫂子是一個能幹的人,也知道他的特點,所以家務一般不讓他幹,結婚的時候,買床,床架子大了,床墊小了,嫂子說,你想辦法,我出去辦點事。王大拿研究了半點,決定將床橫架子鋸短,而且從中間開始鋸斷(折半查詢?)。嫂子回來一看,暈菜,床架完蛋了,中間斷了,根本無法受力(中學物理問題),新換的床墊也沒法用了,(嫂子其實去換床墊去了)。只好重新買。第二個是我的親身經歷,一天老馬給我100元,讓我去參加一個產品展示會,和老王一起去,目的兩個,一個讓我見見世面(老馬對我一直很照顧),另外一個是將王大拿安全帶去帶回,沒有聽錯,在北京,必須安全帶回,帶回的標準是到單位門口,只要到單位門口,王大拿就知道怎麼回家了(當時沒有手機,丟了就麻煩大了)。為了方便我將王大拿帶回,可以打面的。這是第一次用公款打的的經歷,記憶深刻。釋出會沒有聽太懂,伙食不錯,畢竟第一次去五星級飯店吃自助餐。不過王大拿就像帶了一個小尾巴一樣,我是永遠跟在他後邊。

第二個事情,還是被吊打,在化冶所,不過這次是被清華的學生吊打,在化冶所那個國家實驗室做專案的時候,有一個事情,當時有一個繪圖儀,買了有一段時間,但沒有人用,需要寫一個驅動,當時實驗室的老大問我是否可以處理,我看了一下,說不會。這個事情其實不難,用C將原來的驅動包起來就可以了,而我當時之所以沒有做,其實是畏難,總覺得自己是學軟體的,硬體的東西不懂是名正言順的,老大沒有說什麼,讓當時清華的兩個實習的學生做了,2周搞定。那是兩個大二的學生,而我已經是大四了,很沒有面子,後來看他們的程式,的確不難。如果當時自己仔細看看資料,做幾個實驗其實可以做的,但因為畏難,喪失了一個機會,後來的技術生涯中遇到很多這類事情,慢慢學會了嘗試,學會去闖。每一次冒險其實都是自己的一次蛻變。最後的收穫是在我進入交通行業那10年了,在哪10年,給老闆闖了不少禍,但也成就了自己和公司。

畢設半年,最大的收穫是見識了外邊的世界,也做了一點事情,如果收最大的收穫是什麼,恐怕就是打掉了我的傲嬌之氣,後來在中科院幹了14年,也總是覺得知識的欠缺太多。這十四年學了很多,也喪失了很多機會,是好是壞,誰有說的清楚。

補充:
我父母都是中科院的職工,但不是研發人員,我的同學裡很多人的父母都是搞科研的,所以我接觸計算機比較早,考大學的時候,我是為數不多知道自己專業是做什麼的人,而且自己也喜歡這個專業,所以一直在做碼農。工作以後大家碰到的問題,我幾乎都遇到過,所以看到這個題目就強答一下,但如果只是簡單寫幾條,一個是說不清楚事情,第二大家也不願意看,所以囉囉嗦嗦寫了一堆。只是希望對大家有一點借鑑的作用。奉勸大家幾件事情,

1碼農這個職業道路是很艱辛的路,最起碼要精通兩個以上的行業,所以如果對編碼不敢興趣的話,最好早做規劃,可以做市場、銷售、管理等等,畢竟35歲以後轉行是太難、太難了。

2作為一個好的碼農,要知其然知其所以然,不能只會使用工具,其實後邊的機理更重要,老陳他們之所以能看半天書,就和我balabala講兩個資料庫的差異,是他們對後臺機理有足夠的積累,這個事情不是一天半會的事情。

3好的碼農要能耐得住寂寞,網際網路大潮,出現在前臺的技術碼農少,多的是商業奇才,即是技術大拿又是商業奇才畢竟是少數。

4好的技術,還需要好的應用,畢竟是通過應用體現出技術的價值,所以碼農們不要只談技術,而不管應用。

第一個橫向專案
中科院原來做的都是縱向專案,很少橫向專案,所謂縱向專案就是國家專案,比如我們室做的那個作業系統。橫向專案就是應用專案,比如給企業做一個資訊管理系統。一般來說橫向專案技術含量低,縱向專案技術含量高。在這裡有一個事情要說明一下,中科院做了很多事情,但多數沒有推向市場,有一些是因為無法推向市場(比如數學所的一個具體演算法),有一些是因為中科院的體制無法推向市場。比如我們做的很多產品就無法給回扣,還有就是在體制內只有管理和研發,沒有生產和銷售、市場。你想讓技術大拿們去推銷,靠。這事靠譜嗎?反正我在中科院是幹過軟體研發,整合(拿著電鑽到客戶那裡去打孔佈線),生產(自己到電子配套市場買零件,然後焊板子),銷售,推銷尋呼卡的編碼卡。而我的本職是碼農,是碼農。。。。這些坑慢慢填。。。。

好了,說第一個橫向專案,獨山子乙烯資訊管理系統。說簡單就是一個小mis。當時可要算大專案了。90w。這專案是自動化所一個博士交過來的,博士去那邊做自動化專案,客戶一看,呦,博士,中科院的,牛人,做自動化專案,我們這裡剛開始建設,要不您先幫我們做一個資訊管理系統,這個系統做好了,咱們接著做自動化系統,您是博士,這個東西不是問題吧。得,博士被架上去下不來了。一咬牙,做。我不會,其他所還不會,沒有問題,用Oracle,這是最新的資料庫,關係型的,很牛,你們這個資訊系統不是問題。啊呸,你博士沒有問題,你不是做軟體的,聽說了一個做Oracle是資料庫就敢用,92年呀,這個時候是92年,最牛的資料庫是什麼,是DBASE 3, foxbase。DB2和Oracle型資料庫很少在應用系統中用,博士真敢幹。於是回來,找到我們單位,做軟體的,根紅苗正。 我們室老大一看這個專案不錯,不錯,價格不錯,不過讓搞作業系統的做這個事情實在太屈才了,看看有沒有合適的人,於是非核心團隊人員中找找,最後,一個北大的研究生(不是那100個,是後邊來的),一個清華本科(5年工作經驗),一個剛畢業的郵電大學的研究生,還有我的一個師哥。沒有我,自信心受到了一萬點傷害,當時我很想參加這個專案,畢竟原來讀大學的時候做過一些小應用。而且當時我的專案剛結束,處於無事可做的狀態(中科院做專案,忙時忙死,閒時閒死,當時不懂自主學習)。私下找老馬走後門上專案。哈哈,可以參加,不過是打雜,做什麼,做報表的表頭。不過總算進去了。

這裡做一個科普吧,當時做mis系統是一個大工程。為什麼,當時PC使用dos,沒有漢字,字元介面,也就是無法畫圖,如果用漢字,ok,先將介面設定成影象介面,然後調入漢字型檔,通過拼音獲得漢字在字型檔的位置,取點陣,一個點一個點畫上去,輸入框要一個一個定位置,畫上去,選單就不要想了,也是一個一個畫,選單點選後出新介面,要先重新設定圖形介面,清除原來的內容,在將新介面一個一個畫上去,所有的輸入合法性檢查,全部自己編寫。哈哈,你想想這個工作量吧。那個時候做Mis系統是要先造磚頭,再蓋房子。

背景介紹完了,吊打開始,豬腳還是清華的那個五年工作經驗的傢伙,我們叫他蘇sir,這個傢伙在專案中完成了吊打全組工作人員的艱鉅任務,配角是北郵的那個傢伙,這個傢伙完成吊打我的任務,其他人都是龍套,有一個反面角色,就是北大的那個哥們,我們叫他張二明白,哈哈,這個傢伙不善於做開發,其實是一個好的市場人員,性格很好,可是編碼,實在是個渣,被所有人鄙視,這個專案後,他再沒有做編碼,後來做市場做的很牛逼,這是一個選錯行的例子,先讓他完成他的角色吧。

事情很簡單,小馬寫選單,蘇寫報表功能(修改、彙總等等),我師哥寫Oracle的sql,二明白寫輸入介面。我聽命於蘇sir。做表頭。2個月,所有人都說完成了工作,加班不用說了,記憶深刻的是,當時的報表都超長,多長,不記得了,但超過了255位元組,當時wps編輯的話,是有個最大長度限制,Wordstar,對長度沒有限制,但輸入中文有問題,所以,我只能先用wps輸入漢字,在用wordstar去排格式,估計現在沒有人搞得明白這兩個工具怎麼用了,總之,麻煩死了,一旦有一點格式的變化,就要重新排,蘇sir的格式總是變,我就不斷重新排。開始他忙著自己的事情,只要我做出來,就不管我,後來發現我工作效率極低,不明原因,問我怎麼做的,我展示了一下做法,老人家一句話,你怎麼不編寫一個程式(工具軟體),這個不會呀,(當時的確土鱉,沒氣死蘇sir,想想也真不容易)。靠,等兩天給你一個,蘇sir說完就忙他的事情,一天後給了一個程式,先定義長度,在定義寬度,然後在各個位置輸入漢字,和特殊的邊角字元。靠,活還可以這樣幹,試用了一下,效果極好,不用wps了,不用wordstar了,就算出問題(bug還是有的),大不了重新啟動程式。不完美,但工作效率提高將近十倍。關鍵是不累,加班也變成了陪他們除錯,看書了。程式是為人服務的,如果能省力就編碼吧,這是第一次體會程式碼的力量,但當時沒有意識到。

好了,大招來了,我們預計12月3日去新疆,現在還有1周多一點的時間,需要開始聯調了,結果出問題了,輸入介面根本無法使用,無法使用,無法使用。編譯連結的時候,輸入介面一堆問題和警告,怎麼回事,不是說那個程式碼已經完事了嗎?當時哥幾個都傻了,一問那個負責介面輸入的哥們,哥們說,寫完了,沒有編譯,但寫完了,我勒個去,編碼不編譯,不除錯。我們所有人都醉了。

沒有輸入的系統還是系統嗎?少幾個報表不怕,還有時間修改,輸入沒有,這個系統根本無法運轉起來,我是來打醬油的,我沒有辦法。大家沒有辦法,找室老大吧。老大一聽,大怒,但沒有發火,找蘇sir商量,蘇是牛人,但因為是本科,不好管研究生,(這個你懂的),這個時候也顧不上了其他的了,要來程式碼先讀,一個晚上,第二天上班一看他先來了,這不是他的風格呀,一問,原來一晚上沒有回家,趕緊上煙,倒茶,再問情況,回答是,原來程式碼亂了,不能用,要重新編碼,第二是中午給你個程式,幫我做輸入介面(輸入引數,但看不到效果)。ok,沒問題。蘇sir的話就是命令,我一個打醬油的一定負責好拿瓶子,買醬油的事情還是交給大拿吧。

中午,給我了程式,開始盲輸,但還是盡心了,最起碼行列座標什麼的都不能錯,二天以後第一個介面出來,我的奶奶呀,總算有盼頭了。

又加了幾天班,老大決定我和二明白先過去,蘇Sir和我師哥再做幾個介面,然後過去。於是我開始第一次出差準備工作。

(以下是休息時間,段子開始)
在準備去新疆的時候,我在硬碟上裝了一套系統,晚上要走的時候,鬧病毒了,系統無法啟動,當時如果用軟盤防毒,一旦出問題,估計到新疆就可以休息了,沒有辦法,找蘇sir,dubug防毒,逐個扇區修復,你現在該知道這幫牛人的能力了吧,2個小時搞定。對技術細節的掌握,以及對原理的掌握是創造奇蹟的基礎呀。

去新疆是坐飛機去,當時坐飛機是要單位開證明的,高工待遇呀,當時做火車到新疆要72小時,我們週六走的,結果一去機場,飛機誤點,沒有辦法只能等,後來被拉到一個賓館,繼續等,最後等了三天,開始吃自助餐感覺不錯,後來實在吃不下去了,問了一下,要晚上走,於是在週一的時候,哥倆殺回單位,吃了一頓食堂,遇到所有人第一句話都是,你們不是去新疆了嗎怎麼在這裡?,哈哈,吃完立刻回去,晚上12點飛機,3點到,大巴車拉到火車站,想住賓館,貴,不敢住,無法報銷,(當時工資很低,負擔不起),於是到火車站的錄影廳看了一晚上的錄影,第二天,買車票去奎屯。二明白人不錯,寫程式碼是渣,但其他方面還是很好的,我第一次出差,什麼都不懂,基本上就是看包,他承包了所有的事情,在這裡要感謝他,後來,我們基本上不讓他做程式碼和開發,其他事情他基本全包,讓我們過得很舒服。人呀,只要放對了地方,都是不錯滴。。。。

到了奎屯換車去獨山子,住招待所,我們待的地方不是獨山子城裡,是一個新建區的招待所,晚上除了我們兩個和服務人員(大約10來個)方圓10公里內幾乎沒有人,那叫一個安靜,第一次去的時候,因為頭天沒有怎麼睡覺,連晚飯都沒有吃,倒頭就睡,第二天,六點起床已經睡了13個小時,起來找吃的,沒有一個人,人家都在睡覺呢,三個小時時差,當地時間相當於晚上三點,上哪找吃的去,真餓呀。工作之前很少出去,第一次體會了時差的威力,你不要怪我見識少。

第一次做飛機感受很深,哈哈,去新疆一共2次,三趟飛機,一趟軟臥,這都是高工的待遇,第一次坐飛機感受最神的是飛機上可以抽菸,整個旅程煙霧繚繞,而且座位旁每個人有個菸灰缸,估計又有人要質疑了,哈哈,當時的確可以的,當時安檢很簡單,回程的時候我們帶了20把英吉沙小刀,過安檢也沒有問題。現在如果再這麼幹,估計直接進局子了。

新疆的雪是不化的,我在北京,如果下雪,一般在3天內化乾淨了,但新疆的雪一直不化,我們住的地方人少,從招待所出去,往外走幾百米,基本就看不到人的腳印了,但雪地上留著很多動物跑過的痕跡,很多,不知道是什麼動物,四周無聲,有點瘮人。

新疆本地的羊肉串很好吃,當地人將兩個大桌子並排放在一起,然後在上邊堆滿切好的羊肉,旁邊的人一邊串肉,一邊烤肉,一邊賣,這回真是見識到了什麼叫肉山。當時比較傻,以為新疆的羊肉串和北京的一樣,怕拉肚子,一直不敢吃,最後一天,別人請客吃了一次,太好吃了,但已經沒有機會了,雖說吃了一個肚圓,但總覺得很遺憾。

新疆人喝酒很厲害,簡直是要命,一次當地一個小夥子陪我們(18歲,剛上大學),將我們四個全部撂倒,人家沒有事情,後來和他哥聊起這個事情,他哥鄙夷地看了我們一眼說,我弟能喝?別開玩笑了,我們喝酒是不讓他上桌的。還有一次,五個人一起喝酒,下酒菜就是水果糖,瓜子,全桌只有一個酒杯,一個喝完了,下一個喝,你不喝可以,但後邊的人都等著你,也不勸,全都眼巴巴地看著你。

新疆生活很滋潤,哈哈,說幾個事情,當時給他們做了一個工資系統,他們的工資項極多,基本工資+各種補貼要40多項,北京,我父母中科院的單位,基本20多項就搞定了,但新疆不是,各種補貼,基本上工資都是400往上,這個在全國來說絕對是高水平的。而且當時新疆土特產品運不出來,都要當地消化,記得剛去的時候,他們一個人員請我們吃西瓜,12月吃西瓜,在92年,這簡直讓我感覺見了鬼了(你別拿現在的物流做對比,當時北京到南京市24小時,現在是4小時),元旦的時候,對方單位發愛國羊,說我們賣給老毛子的羊,老毛子檢疫不合格,被退貨,只能自己消化,要求全體員工買愛國羊,去頭尾、內臟、皮的整羊,一隻9元錢。

說一個知識分子被踩的事情吧,這是一個很牛逼的事情。在距離我住的地方2公里的地方有6個大型煤氣儲氣罐,每個300噸吧,一天,一個本科剛工作的哥們去測量罐內溫度,本科在當時的新疆是個稀罕學歷。可是,你老人家倒是按照規章流程去操作呀,不知道這哥們腦袋進什麼水了,直接弄漏了,液化天然氣直接洩露,是液體呀。這哥們一看情況不妙,撒腿就跑,你跑個屁呀,這東西要炸了,估計整個獨山子就平了。危機關頭,方顯英雄本色,還是帶班班長和副班長(兩個男的)帶領當班的8名女員工帶著純銅扳手直接衝了上去,先灌水(水的比重大,這樣就不漏氣,改漏水了),然後直接堵漏,大冬天的。我不在現場,也不懂化工,方正人家堵好了,據說當時沒有一個哆嗦不上的,也沒有什麼豪言壯語,就那麼直接衝上去了,讓人敬佩,真英雄呀。結果,本科直接辭退,誰說情都沒有用,其他人表彰加提工資,這個事情,想想真讓人後怕的。這個事情可以總結幾條經驗吧。

A學歷不代表能力,後來我的工作歷程遇到過很多牛掰的本科,SB的博士。(另外要注意,從群體能力來說,博士》研究生》本科》專科),但我們工作接觸的都是個體,所以在你招聘的時候不要僅看學歷。

B做事情要有危機意識,這個是研發人員比較薄弱的,確切的說,因為軟體搞死人的事情我們遇見的比較少(有,但你不是做特殊行業軟體,基本上不會有機會搞死人),但不是說可以沒有風險意識,想想有多少次你的程式碼被誤覆蓋了,有多少次你的資料被誤刪除,有多少次使用者來參觀,你的系統宕機了。

C不要看不起那些級別比你低的人,很多時候這些人往往決定你的系統的成敗(這裡有一個坑,在做公交的時候,司機和排程決定你的系統的成敗,後邊填)

最後說兩個二明白的事情,二明白編碼是個渣,但做其他事情很牛,我們去新疆的時候,客戶提出要我們做五筆字型培訓,道理很簡單,你們是做計算機的,五筆字型是計算機用的,所以你們一定會,讓你們培訓一下很正常,不培訓就是看不起我們,巴拉巴拉,,,,,哥幾個開發沒有問題,五筆可就麻煩了,不是不能學,關鍵是不願意學,二明白這個時候挺身而出,這哥們也牛,買了幾本書,直接就開始拆字了,天天拆,到處拆。上飛機的時候還在拆,其執著讓人佩服。培訓的時候,二明白拆得那個爽呀,結果客戶哪裡,那個科室都有他的學生。辦事方便之極(不過二明白五筆輸入速度極慢,哈哈)。二明白的家學是很牛的,他老爹是楊振寧的同學,楊在文章是這樣寫的,當時有8名童鞋,其中六人都記得姓名,還有一個實在記不起來,那個想不起來名字的人就是二明白的爸爸,哈哈。這是當時他給我們講的笑話。

好了逗逼結束,說點正經的事情吧。
這個專案是一個失敗的專案,說它失敗是因為專案最後沒有真正使用,也沒有掙到錢,管理有問題,調研有問題,人員使用都問題多多,但這個專案對於我來說是極為重要的專案。還是按照標號總結吧。

A:這個專案,對我做的工作做一個總結,開始,我做表頭,後來做漢字顯示,一共寫了187行程式碼,當時蘇sir沒有使用我的程式碼,後來他告訴我,通過看我的程式碼,感覺我的邏輯還可以,不像二明白那樣,(取得核心技術人員認可,是你在一個新單位立足的基礎),後來讓我在新疆做工資系統,就是這187行程式碼的功勞。等我搞定了工資系統,他最後將整個系統都交給我了,(蘇sir,師哥,小馬後來都出國了,那時出國是個捷徑,特別是軟體人員)。所以,告訴剛參加工作哥們一個經驗,踏實、肯幹是基礎,技術是階梯,要一層一層爬,有時候即使在做一些無聊的工作,也要盡心,其實別人都在旁邊看著呢,有時候關鍵時刻隨便一句話,真就決定你的未來。

B:相對編碼來說,架構更重要,當時不是講架構,沒有這麼高大上,我後來接手的時候,發現程式碼是動態程式設計,而不是靜態程式設計,什麼叫靜態程式設計,舉一個例子,讓編寫1+1等於幾的程式,最簡單的方法就是,寫一個列印語句將結果打印出來,OK。你的確完成任務了,可是你要換一個數怎麼辦,再改數、重新編譯,執行。麻煩否?這就是一個靜態的例子,動態是用兩個變數,弄兩個輸入框,做合法性檢驗,然後計算出結果,打印出來,這樣整個程式就靈活多了。當時選單是可以配置的,輸入介面是可以配置的,輸出是可以配置的,統計功能的表頭是可以配置的,修改這些東西的時候,實際是修改引數而不是編碼,這極大簡化了我的工作,接手工作主要是讀程式碼,明白後,基本就是體力活,所以接手還是比較順利的,不要小看一個動態編碼的概念,1999年的時候我們做廣電的專案,用這個概念在web實現概念,簡化了很多工作量,後來做公交系統的時候,拿這個概念做報表統計,效果也不錯,現在的BI其實質也是這個東西,當然,有了很多的擴充套件。

C:關於基礎結構的用途,再舉個例子吧,我們本科做過一個課設,軟體工程這門課的課設,做一個圖文混編編輯器,當時有兩個做法,第一個招數是抄,另外一個是自己編,我們哥三個是自己編寫的,功能很簡單,圖形可以畫點,線,圓,矩形等基本功能,文字能在隨意位置輸入文字。這個東西我們做了半年,真的半年,介面劇難看,但功能都實現了,開發工具用的是turbo C 2.0。具體的開發歷程不說了,當時設計這個程式的資料結構的時候很用了一番心思,也有了圖層的概念雛形,哈哈,有點自得,關鍵是所有的設計和編碼都是在無外力幫助的情況下完成的,所以對很多東西的理解還是比較深刻的,後來工作的時候有機會接觸CAD(我們單位開發了國內第一個CAD系統叫PICAD)和地理資訊系統的時候,對很多概念和實現的原理以及系統的限制就很快就能明白了。

D:我們當時沒有網際網路,甚至沒有資料,很多時候需要自己琢磨,不象現在內問度娘,外找google,但這樣的環境其實有一個最大的好處就是逼迫你思考,也就是對你的思維方法的訓練極有好處,現在資料多,查詢方便了,但總覺得現在的開發人員重視的是對知識點的訓練,而對思維的訓練相對弱。通過自己的努力,在絕境中求生,這種成就感似乎越來越難獲得了。

E:說第一個失敗的原因吧,沒有調研使用環境,我們是在dos上實現的系統,而使用者使用的XENIX系統,這個是unix在微機上的一個變種,當時客戶用計算機最主要的功能是打字,而一個主機可以配10個以上的終端,也就是一臺機器可以當十個機器使用,可我們的開發的是dos上根本無法使用。這個問題一直沒有解決,後來是借了幾個機器安裝我們的系統,能跑的起來,但使用者直接問我們其他的終端怎麼辦,我們只能大眼瞪小眼了。

F:第二個就是開發環境選型失敗,當時最合適的開發環境應該是foxbase,一是當時這個系統可以在使用者的xenix下使用,而且開發簡單,其實找一個老鳥帶三個剛畢業的本科,足可以保證技術,而且當時的資訊系統都是比較簡單的,FOXBASE足可以滿足使用者開發的需求,而我們 竟然用c和Oracle,有點用大炮打蚊子的感覺。

D:缺乏管理,不要怪我們,當時管理,特別是軟體工程和軟體工程管理在中國基本是一片空白,市面上基本沒有軟體管理方面的書,我本科讀軟體工程這門專業課是沒有課本的,你相信嗎?前一段時間收拾屋子,發現我當時看的一本書是軟體工程-開發法者的實踐指南,竟然是第一個版本,沒有正規圖書的出版號,是一本油印資料。所以整個專案的管理是盲人騎瞎馬。

E:客戶教育,哈哈,這個事情實際在每個專案都要做的,記得當時客戶問我一個問題:我買了十幾臺機器,要我30多萬,你們幾個軟盤就要幾十萬,怎麼這麼貴,哈哈,就是這個環境,在機場遇到一個姐們,是民航做系統的,要給其他機場安裝軟體,她遇到的奇葩的事就更好玩了,他們頭規定感冒的人不讓進機房,為什麼,怕你把病毒傳染給機器,哈哈,別笑,這是真事。這還是在北京,民航系統內的技術人員的樂事。不要埋怨客戶,畢竟聞道有先後,術業有專攻。但如何做好客戶引導是一個很重要的事情。(又是一個坑)。

F:印象深的一個事情,就是如何對待客戶,當時客戶不是很配合,所以我們經常沒有事情幹,當時晚上加班,所以我經常在早晨補覺,一天睡得正香,一個客戶的老總來了,問為什麼專案沒有推進,當時被叫醒後也有起床氣,就沖人家發火,你們的機器都沒有準備好,讓我怎麼裝,當時覺得自己很委屈,也很牛逼,老總走了,下午準備好了機器又來找我。這個事情後來被室老大知道了,痛罵了我一頓,記憶深刻,任何時候到不要向客戶發火,任何時候到不要向客戶發火,任何時候到不要向客戶發火,後來再也沒有發生過這類事情,想想那個老總,心裡其實挺佩服他的,他是乙烯工程的技術主管,而我只是一個小蘿蔔頭,為了工作,竟然忍受我的脾氣。現在想起來還想抽自己嘴巴。

G:第一次出差回來後,我開始接手全部工作,之所以這樣,一個方面是因為自己的表現,更主要的是因為那哥三個想出國,哈哈,不是我牛,是被逼到這個份上的。於是開始加班,在國營單位,一般元旦到春節期間是沒有什麼活的,而我們第二次出差是安排在3月3日,也就是春節之後,於是其他人都走了,我在加班,那個時候苦呀,部門換了一個大房間,相當於兩個教室大,可是有一個玻璃碎了,數九寒冬,暖氣不足,穿著大衣,屋子裡一點熱氣都沒有,買了一個大果珍杯子,放熱水,暖和一下手,接著敲程式碼,(當時用PC開發,不進機房了),唯一的好處是工作效率高,肯定無法睡覺,唯二的好處,CPU散熱一定沒有問題。

送一個段子吧,12月28日回北京,機票當時已經託烏魯木齊的人訂好,我們27日從獨山子出發,但沒有車,早晨6點出發,要在9點趕到奎屯火車站,當時客戶想送,我們裝逼,以為有計程車,結果計程車去烏魯木齊了,(全市只有一輛),於是我們只能11路了,當地晚上三點,兩個壯漢,身背2個大包,在漆黑的夜裡順著公路飛奔。路上很靜,只有遠方傳來的狗叫聲。二明白對我說,看前邊的燈火就是火車站,不遠,走。目標越來越近了,到了,二明白告訴我,不是這個燈光,是再前邊,再走,到了,還不是。考,到底在哪裡,二明白告訴我就是前邊,冒熱氣的地方,這個時候已經將近8點,進城了,人也多,冒熱氣的地方到了,這是車站,的確是,我幾乎要累癱了,二明白是個很聰明的人,我們當時走了14km,二明白怕我走不了,於是給我先設立了一個小目標,不是一個億,不是2個億,是5公里。雪地、深夜、無人的野外、一條大路還有前邊的那個小目標。。。。

H:第二次去新疆,我已經是骨幹了,活全部是我在做,當時去了四個人,我,我的師哥、我的一個師弟(新參加工作的)、博士,那個博士終於出場了。當時我每天的時間安排是中午12點起床,吃飯,下午去調研,晚上飯後和博士幾個人商量工作,然後就是自己加班,什麼時候幹完了什麼時候算。無條理地說幾條感受吧。

1前期的問題,不要拖延,否則就是做完了也是死,當時沒有專案經理,沒有人拿主意,前期實際問題已經暴露,如果後邊換成FOXBASE開發,其實這個專案還有救,但壯士斷臂這個決心是很難下的,所以客戶關心的核心問題一直沒有解決,直接導致這個專案的失敗。

2專案的成敗和開發人員的成敗是兩個概念,有時候專案失敗,但對開發人員可以說是成功的,拿這個專案來說,我完成了開發工作,而且工作態度和能力都獲得了認可,這對我在單位立足是很重要的一個事情,這對我後來在短時間內(一年內)成為一個及格的研發組長是很重要的一個事情,還有一點,就是當時雖然出了很多糗事,犯了很多錯誤,但比同時期的人員要早走了一步(直接面對客戶),很多事情從不知道,進步到不明白(發現問題,有時候比解決問題更重要)。雖然還是還是很二,但有一點開竅了。敢幹,敢嘗試新東西,比懂得某型技術要重要。

3身份、背景在專案開始介入的時候是很重要,但最主要還是要給客戶解決問題,帶來效益,否則你身上的光環會一層一層被剝去。(下一個專案由於乾的好,被光環加持了,挖坑先)。博士因為這個專案問題,最終沒有搞到他的自動化專案,

4做軟體專案和做軟體開發是兩個事情,簡單說做軟體專案的範圍要遠遠大於軟體開發,比如我們做這個專案,資料輸入就是一個大問題,客戶不想輸入基礎資料,我們也沒有能力收集和輸入資料,這也導致了這個系統最後無法使用。多說一句,專案管理比研發要麻煩很多,有時候開發人員往往抱怨專案經理和市場人員,其實他們也是沒有辦法,畢竟是他們從別人兜裡掏錢,多理解他們吧。

5做開發人員不要太隨性,哈哈,說一個我逗逼的事情,晚上加班,有時候完成的早,但很難睡覺,太興奮了,哥三個都在睡覺,外邊也沒有人,就想玩會遊戲,那個遊戲叫臺海大戰,戰棋類遊戲,當時以為他們都睡著了,沒有人知道,後來我師弟告訴,醒了,看見我臉上花花綠綠的,就知道我在happy,也知道我辛苦,就沒有說什麼。因為玩遊戲的事情,在後一個專案還和領導鬧過誤會,當時因為我們是嫡系部隊,所以老大還和我們說,我也有機會解釋,而很多時候是沒有機會解釋的。你的辛苦往往被一次隨性給毀掉,可惜之極。

最後送一個趣事吧,大家對二明白比較感興趣,再說一個二明白的糗事吧,因為二明白編碼的事情,大家對他都一些情緒,二明白心裡也知道,壓力比較大,所以主動承擔了所有外聯和非程式碼所有工作,成天跑上跑下的,我們系統做的不好,客戶不滿意,二明白壓力比較大,一天深夜,我在編寫我的工資程式,二明白在睡覺,2點左右,他突然坐了起來,高唱:社會主義好,社會主義好,社會主義就是好,然後直挺挺地倒下睡去。嚇死我了,趕緊去找蘇sir(還在加班),蘇Sir過來一看,說沒事,估計壓力大,明天下棋的時候別贏他了。我知道你是黨員,我知道你壓力大,但沒有這麼嚇人的好不。

難道我要做一個知乎最長的問題回答嗎?
好吧,大家願意看,我就寫吧。爭取進吉尼斯大全。
還有一個事情,後邊的專案,涉及很多人,單位、地點、人名都會做修改。不要去猜是哪個事情。省的是非多。
這個回答算是段子、小說、回憶都可以,只要你高興就好。(給小學生改錯字也不錯)

第二個專案

第二個專案是軍方專案,所以只能講段子了。希望大家理解
還是列表說感受吧,寫文件寫慣了。
A:軍方的確有人才,不過都不會浮出水面,反正和我們合作的人經常碾壓我。但因