自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

幾千行代碼就能搞定,你為什么要寫幾萬行?

新聞
本文是一位從業(yè)多年的軟件工程師分享的經(jīng)驗和看法,他提到的一些現(xiàn)象,槽點頗多,應(yīng)該是從業(yè)人員都會遇到的,不知你是否能有共鳴。

本文是一位從業(yè)多年的軟件工程師分享的經(jīng)驗和看法,他提到的一些現(xiàn)象,槽點頗多,應(yīng)該是從業(yè)人員都會遇到的,不知你是否能有共鳴。

[[246023]]

01

我們公司的 Windows 版軟體已經(jīng)有十多年的歷史,經(jīng)過歷代工程師的整治之后,內(nèi)容已經(jīng)凌亂不堪。

過去三個月,我找時間自己重寫了整個主程序。原本數(shù)萬行的程序,被我重寫的只剩下數(shù)千行,功能不變,效能更好,而且架構(gòu)儼然。

前幾天完成 Alpha 版之后,我不禁開懷大笑,笑聲驚動整個辦公室。

02

在重寫這個程序的這段期間,前兩個月,我每周花在這個程序上的時間應(yīng)該不會超過四個小時。

后來我趁著農(nóng)歷新年沒事干,跑到公司加班數(shù)天,但是一天寫程序的時間也不會超過四個小時。

通常我白天寫兩、三個小時的程序,遇到瓶頸就去忙別的事,或者干脆回家吃晚飯,晚上睡覺前,躺在床上用手機查一下資料,第二天上班走在路上,就會很自然的想到不錯的解法。

寫程序是一種創(chuàng)作,不是做苦工,不能每天在電腦前面枯坐十幾個小時,否則超時工作,只會讓自己的腦筋變得更糊涂。

我所認識的許多寫程序高手,每天寫程序的時間都不會太長。那么,我的職業(yè)經(jīng)歷是怎樣的呢?

03

1995 年的時候,有一天在美國鹽湖城,我陪著趨勢科技的創(chuàng)辦人張明正扶著他爸爸過馬路。

他突然跟我說:“宜敬,我實在搞不懂,在軟體這個行業(yè),一個優(yōu)秀的工程師的產(chǎn)出可以輕易抵得上一、二十個平庸的工程師,但是公司最多只要付他兩、三倍的薪水。那為什么還有公司愿意付錢雇用那些很平庸的工程師呢?”

當時我博士剛畢業(yè),當然不知道要如何回答他的問題;而現(xiàn)在過了這么多年,我還是不知道要如何回答那個問題。

而當時張明正會問我那個問題,應(yīng)該是因為我介紹了幾位同學跟朋友到趨勢科技工作。那幾位都是以一當十、以一當百的高手。

趨勢科技當時沒有給他們十倍、百倍的薪水,但是對他們也不薄,給了他們不少的股票。

后來趨勢在日本上市,我那幾位朋友都成了億萬富翁,財富應(yīng)該超過一般工程師的十倍、百倍吧?

04

寫一個大型程序,并不是「人多好辦事」。

如果是土木工程或是制造業(yè),人越多、產(chǎn)出就越大。如果一個計劃延誤了,就多調(diào)一些人手過來幫忙。

但是在軟體工程里,人越多,就越是難以協(xié)調(diào),寫出來的程序也往往品質(zhì)越差、效能越糟糕。

這就是有名的:"The Mythical Man-Month: Adding manpower to a late software project makes it later"。

IBM 在 1960 年代開發(fā) OS/360 作業(yè)系統(tǒng)軟體時,就發(fā)現(xiàn)了這個奇特的現(xiàn)象。

所以我也搞不懂,大型軟體公司雇用了那么多的軟體工程師干嘛?

05

我在當兵的時候,有一陣子在臺中十軍團的資訊中心擔任資訊官。

那時候我手下有兩名資訊科系畢業(yè)的大專兵,但是我嫌他們兩人寫程序?qū)懙奶?,而解釋給他們聽更是費事,還不如我自己動手寫比較快。

所以我就叫他們到一邊涼快,所有的程序都由我來寫就好。而他們兩人覺得很不好意思,就泡了很好喝的奶茶給我喝。

后來我們成了很好的朋友。

06

寫程序并不是寫的越長越好、越厲害。

我年輕在臺大資訊工程系的時候,會跟朋友炫耀說:「我寫的程序語言編譯程序,總共有一萬多行耶。」

后來我去美國布朗大學讀電腦科學博士,畢業(yè)的時候喜歡跟朋友炫耀:「我的博士論文那個程序,功能那么強大,但是我只用了七、八千行程序就搞定了耶?!?/p>

07

二流的軟體工程師,喜歡把簡單的問題弄的復雜,寫出別人看不懂的程序。

一流的軟體工程師,喜歡把復雜的問題簡單化,寫出架構(gòu)清楚明白的程序,讓人看了之后,覺得問題好像很簡單。

三流的軟體工程師會去崇拜二流的軟體工程師,因為他們會覺得二流工程師寫的程序都看不懂,一定是超級厲害。

三流的軟體工程師不會去崇拜一流的軟體工程師,因為他們會覺得一流工程師所做的事情都很好懂,好像都很簡單。

只有一流的的軟體工程師才會佩服一流的軟體工程師,因為只有他們才能看的出來,其他的一流軟體工程師厲害在哪里?

中國的軟體業(yè)如此,美國的軟體業(yè)也大致如此。

[[246024]]

08

直到 1980 年代末期,IBM 一直是世界上最大的電腦公司。而當時 IBM 找了一些原來是做硬體制造的高階主管來管軟體部門。

那些高階主管依照他們管理制造部門的經(jīng)驗,決定用 KLOC (thousands linesof code),也就是每位軟體工程師每年寫出多少行程序來計算軟體部門的效率。

結(jié)果軟體工程師們都「短話長說」,寫出一堆長又沒有效率的軟體程序。

09

要成為一流的軟體工程師,必須熟悉了解電腦科學的各種基礎(chǔ)理論,也必須累積長時間的實務(wù)經(jīng)驗。

我在布朗大學電腦科學系讀博士修課的時候,程序作業(yè)的份量非常重。上作業(yè)系統(tǒng)(Operating System)課的時候,教授要我們每個人獨立寫一個包含 File System 與 Process System 的迷你 Unix 作業(yè)系統(tǒng)。

上編譯程序(Compiler)課的時候,教授要我們每個人獨立寫一個 Compiler,而且每一個模組還必須用兩個以上的方法寫,然后互相比較。

而上 Andy Van Dam 教授的電腦圖學,那簡直就是人間煉獄。當時助教發(fā)問卷調(diào)查,發(fā)現(xiàn)每位學生每周花在寫那堂課的程序的平均時間超過四十個小時,學生們幾乎要群起造反。

但是修過上述那三門課而沒有被當?shù)?、又拿高分的,就成了懂理論又懂寫程序的高手、高高手?/p>

[[246025]]

10

當年我在布朗大學讀博士的時候,我估計我們系上像我這種等級的寫程序高手,大概有十來個吧?

但是我們系上公認最厲害的寫程序高手,還是我的指導教授 Prof. Steve Reiss。他一個人大概抵得上五到十個我們這種等級的工程師。

關(guān)于他的傳說很多。有一次我去他的辦公室找他,看到他正在玩接龍游戲。

他被我發(fā)現(xiàn)了,有點不好意思,趕緊跟我說,他覺得 Windows 上的接龍游戲很好玩,但是他沒有 Windows 電腦。

所以他就花了四、五天,利用零散的時間在他自己的 Sun Work Station 上面寫了一個類似的接龍游戲,包含彩色的圖像接口等等。

想玩電玩就自己寫一個?我很想笑,但又差點在我?guī)煾该媲肮蛄讼聛怼?/p>

11

我在布朗大學認識的那些軟體高手,后來真正以寫程序為志業(yè),然后寫出偉大又廣泛被使用的程序的,應(yīng)該不多。

因為有些人后來去當大學教授,教授通常是不會自己寫程序的。久了之后,我不知道他們的功力剩下多少?

有些人后來為了拿高薪,去一些大公司寫一些很沒營養(yǎng)又很無趣的程序。久了之后,我不知道他們的功力剩下多少?

有些人后來進入產(chǎn)業(yè)界工作,沒多久就升上了管理職,而管理職人員通常是不會自己寫程序的。久了之后,我不知道他們的功力剩下多少?

所以程序高手原本就不多,而一直繼續(xù)在寫程序的程序高手就更是稀有了。

12

美國的軟體業(yè)有一個老笑話:如果有兩個工程師在同一個團隊,一個很會寫程序,另一個很不會寫程序,那后來升上經(jīng)理的,一定是那個不會寫程序的。

因為團隊需要那個會寫程序的留下來寫程序。

13

我寫程序的功力最高的時候,應(yīng)該是二十多年前我剛拿到博士的時候,那時候我又懂理論、又累積了大量的寫程序經(jīng)驗。我不敢說自己能以一當百,但是以一當十應(yīng)該是綽綽有余的。

只可惜,沒多久之后我就升上了管理職,而當上了經(jīng)理、協(xié)理、總經(jīng)理之后,如果還自己寫程序的話,那是會被別人笑的。

所以我就不再寫程序了,而且我也學會,要在自己的部門多擺一些工程師,否則陣仗不夠大,會被別的部門瞧不起,也會被我的上司瞧不起。

二十年下來,我的功力大概只剩下兩三成。

[[246026]]

14

我現(xiàn)在終于自己當了老板。而當上了老板之后,最大好處之一,就是我高興寫程序就可以寫程序。就算有人要笑我,我也可以不理他們。

15

我趁過年期間重寫了我們公司的 Windows 主程序,完成之后,自覺功力已經(jīng)恢復到當年的三、四成,不禁大樂。

不過我還是覺得,軟體工程還真是一門很難以理解的行業(yè)。雖然我本身就是一個軟體工程師,雖然我的博士論文研究的就是程序開發(fā)環(huán)境(Programming Environment),主題就是我在這邊所說的這些問題。

留 言 有 禮 活 動

作為程序員,你對自己的代碼滿意嗎?掃描下方二維碼,關(guān)注51CTO技術(shù)棧公眾號。歡迎在技術(shù)棧微信公眾號留言探討。小編將精選出最有價值的三條評論,分別獲得 50、30、20 元 的 紅 包 獎 勵,活動截止時間 10 月 19 號 12 時整。

責任編輯:武曉燕 來源: 電子工程師時間
相關(guān)推薦

2018-05-13 15:24:33

工程師程序windows

2021-03-02 13:56:24

Linux 5.12代碼驅(qū)動

2024-07-24 16:25:02

2019-01-03 09:29:15

Linux 系統(tǒng) 數(shù)據(jù)

2009-07-21 08:44:14

微軟Linux內(nèi)核開源操作系統(tǒng)

2020-02-24 16:27:19

開源大數(shù)據(jù)計算引擎

2015-09-01 16:26:18

Linux內(nèi)核

2020-05-27 14:10:50

代碼開發(fā)工具

2023-10-27 12:46:08

數(shù)字化轉(zhuǎn)型

2025-02-24 08:20:00

AI代碼生成

2019-11-26 10:50:47

代碼編程語言重構(gòu)

2014-12-01 11:15:40

2015-08-17 10:42:13

2009-07-21 08:51:33

微軟發(fā)布Linux設(shè)備微軟開源虛擬化

2009-08-20 16:34:50

Linux源代碼紅帽Linux內(nèi)核

2011-05-03 09:10:12

項目管理程序員

2024-03-13 15:48:43

點贊
收藏

51CTO技術(shù)棧公眾號