雷軍:我的程序人生路

今天有朋友發給我一篇我在20年前在BBS上寫的帖子。那還是1996年,我們通過電話線撥號連接到西點BBS上飆帖子玩的年代。那是一個互聯網混沌初開的年代,那是一個BBS和Email幾乎主宰了全部互聯網的年代,那是一個青春的理想和熱血沸騰的年代。

我是一個程序員,一個軟件工程師。到今天,我也依然是一個程序員,一個軟件工程師。

本文是20年前我對程序人生的一點看法。20年后的今天,重讀之后,這依然是我對程序人生的態度。

程序人生

[題記]如果程序人生的話,這條路太漫長

“程序人生"這個詞是什么意思,剛開始時我并不明白。這個詞源于業余BBS站,站上PROGRAMMER欄目的中文名就是這個詞,英文翻譯過來就是"程序員”,但程序人生又比程序員多了很多含義,似乎多了一種滄桑感。但不管這么多,講講編程感受不算跑題。

首先我先講講自己的路,這樣也許大家才能相信我的坦誠和我的這篇編程感受的真實性。這些感受是我個人感受,不全面的地方,請大家指正。

我的程序人生路

我并非天生喜歡電腦,上高中時也沒有想過程序員的生活。我學電腦非常偶然,小時候的一個好朋友上大學時選擇了電腦專業,為了和這個朋友有更多的共同語言,我也選擇了計算機系,開始步入程序人生的道路。

當我學了一點電腦知識后,就發現電腦將是我人生的最愛。讀書時,我不是特別會搞關系的人,同學關系說不上差,也好不到那里去。我是八七年上的大學,我們大一下學期才有專業課。當我有資格上機的時候,發現電腦世界太美妙,就一頭扎進去。當時用的是Motorola 68000 (相當于Intel 8088), 540K的內存,運行的UNIX操作系統,八個人一起用。

大二學PC,又過了一學期,開始出現在老師的實驗室,幫忙干活,當時寫了現在還有人用的RI(一個清內存的小工具)。又過了一個學期,開始和校外的公司接觸。大二暑假,和一個朋友組建了Yellow Rose組,寫了我第一個商品軟件BITLOK 0.99。后來開過公司也寫過一些軟件。

大學畢業后,分到研究所,不太適應研究所的氣氛。調槽到金山軟件公司,開始了職業程序員的生涯。后來成了北京金山軟件公司的經理,但我還是一名程序員。

編程的感受

—程序員活在自己想象的王國里—

我剛接觸電腦就發現電腦的妙處,電腦遠沒有人那么復雜。如果你的程序寫得好,你就可以和電腦處好關系,就可以指揮電腦干你想干的事。

這個時候你是十足的主宰。每每你坐在電腦面前,你就是在你的王國里巡行。這樣的日子簡直就是天堂般的日子。

電腦里的世界很大,編程人是活在自己想象的王國里。你可以想象到電腦里細微到每一個字節、每一個比特位的東西。

—我愛編程這個工作,可以肯定我會干上一輩子—

不少人認為程序員最多干到三十五歲就可以收山換環境了,腦子也差不多該歇歇了,體力也不支了。并認為寫程序是年輕人的事情,到了一定歲數,估計沒什么人再當程序員了。

當我剛有一點水平的時候,我也認為編程辛苦,也想三十歲后干別的。當我年長一點后就發現了自己的無知。一個人大學畢業就二十一二歲,有點水平的時候可能二十五,接著就是老婆加上孩子和房子等等諸多事情。

一切搞掂的時候,也許就是三十五歲。如果這樣的話,我們就不用選擇程序人生的道路。

電腦進入我國時間不短,但真正大規模開始用,還是八五年PC開始的,因此國內真正寫電腦程序的人最長也就寫了十幾年(不知道是否還有這樣的人)。由于電腦應用在國內時間比較短,國內開發的主力是三十五歲以下的年輕人為主。但這不表示程序員如同紅粉佳人般的容易衰老。美國和臺灣開發以三十四十多歲的人為主。開始的時候,我們覺得我們沒有什么不能做的(現在還能聽到這樣的豪言壯語),而且更要命的是好象我們特別聰明,特別適合開發軟件,比老外強得多。當我們真正接觸那些杰出的開發人員的時候,發現他們太厲害了,都有十多年的開發經驗。雖然也有很多年輕人做了很多好東西,但決大多數的產品出自這些有豐富開發經驗的程序員的手。

剛畢業的時候,編程不僅僅是愛好,而且也成了一輩子的工作。整天不知道寫些什么東西,覺得特別沒勁,找不到感覺,特別灰心。后來,才明白,只有全身心地投入,程序才會有意識。

寫程序簡直是在自殺,巨費精力巨費腦子巨累。但我愛編程這個工作,可以肯定我會干上一輩子,雖然我沒有打算一生只干這一件事。用一生來編程序是一件既容易又困難的事。如果碌碌無為,為交差寫點程序,這樣寫兩輩子的人都有。但如果想全身心地寫程序,寫十年就不是一件容易的事。現在我不少朋友都洗手了,有時我也想"用什么電腦,Windows外的世界不是也很大嗎?"。面對電腦的時候,立刻頓悟:電腦還是自己最擅長干的事,也是最順手的事。

—高級程序員不是追求的目標—

有的人學習編程技術,是把高級程序員做為追求的目標,甚至是終身的奮斗目標。后來參與了真正的商品化軟件開發后,反而困惑了,茫然了。

一個人只要有韌性和靈性,有機會接觸并學習電腦的編程技術,就會成為一個不錯的程序員。剛開始寫程序,這時候學得多的人寫的好,到了后來,大家都上了一個層次,誰寫的好只取決于這個人是否細心、有韌性、有靈性。掌握多一點或少一點,很快就能補上。成為一個高級程序員并不是件困難的事。

當我上學的時候,高級程序員也曾是我的目標,我希望我的技術能得到別人的承認。后來發現無論多么高級的程序員都沒用,關鍵是你是否能夠出想法出產品,你的勞動是否能被社會承認,能為社會創造財富。成為高級程序員絕對不是追求的目標。

—編程不僅僅是技術,還是藝術—

有人認為編程是一種熟練工種,也有人把編程說成是藝術創作。這兩種意見爭論比較激烈。

我們換個工種來看,石匠應該是熟練工種,屬于工人,更藝術似乎沾不上邊。但正是這些石匠,給我們留下多少文物古跡,如樂山大佛、莫高窟等等。應該說這些石匠給我們留下了無窮的文化財產。

現代軟件工業已具相當規模,很多軟件的完成需要的是大兵團作戰。

一名普通程序員接受編寫某一模塊的任務后,往往只是寫代碼,發揮的余地很小。在大項目中,很多程序員只能了解到和自己所編模塊相關的很局部的細節,另外還受到開發環境的限制,真的很難體會到自己在從事"藝術"創造,更多的時候是感到自己在從事重體力勞動。有的時候還擔心自己苦苦參與的這個項目究竟有沒有意義,是不是在同類產品中有競爭力,會不會開發出來以后就因為硬件的發展,操作系統的換代而過時…

我認為編程的工作和石匠比較相似,有很多是技術活甚至是體力活,但編寫優秀軟件是件很難的事。這兩種想法都有片面性,編程應該說兩種屬性都有。編程不僅僅是技術,也還是藝術。

編程是技術活,才有可能大規模進行,才會有軟件工程。也正是編程是藝術,才會有如此多的好產品。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161039.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161039.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161039.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

新能源車將突破2000萬輛,漢威科技為電池安全保駕護航

近年來,我國新能源汽車銷量持續突破新高。據中汽協數據,1~10月,國內新能源汽車銷量達728萬輛,同比增長37.8%,市場占有率達到30.4%。隨著第四季度車市傳統旺季的到來,新能源消費需求將進一步釋放&#xff0c…

Python小灰灰

系列文章 序號文章目錄直達鏈接表白系列1浪漫520表白代碼https://want595.blog.csdn.net/article/details/1306668812滿屏表白代碼https://want595.blog.csdn.net/article/details/1297945183跳動的愛心https://want595.blog.csdn.net/article/details/1295031234漂浮愛心htt…

【軟件工程師從0到1】- 封裝 (知識匯總)

前言 介紹:大家好啊,我是hitzaki辰。 社區:(完全免費、歡迎加入)日常打卡、學習交流、資源共享的知識星球。 自媒體:我會在b站/抖音更新視頻講解 或 一些純技術外的分享,賬號同名:hi…

藍橋等考C++組別八級005

第一部分:選擇題 1、C++ L8 (15分) 以下關于break的說法正確的是( )。 A. 只有循環結構里面才可以使用break語句。 B. 程序運行到break語句的時候會暫停,直到用戶按下任意鍵才會繼續執行。 C. 嵌套循環的內層循環里面遇到break的時候,整個嵌套循環結構會立即停止,…

Jenkins擴展篇-流水線腳本語法

JenkinsFile可以通過兩種語法來聲明流水線結構,一種是聲明式語法,另一種是腳本式語法。 腳本式語法以Groovy語言為基礎,語法結構同Groovy相同。 由于Groovy學習不適合所有初學者,所以Jenkins團隊為編寫Jenkins流水線提供一種更簡…

kubernetes學習-概念5

服務(Service) Kubernetes 中 Service 是 將運行在一個或一組 Pod 上的網絡應用程序公開為網絡服務的方法。 Kubernetes 中 Service 的一個關鍵目標是讓你無需修改現有應用以使用某種不熟悉的服務發現機制。 你可以在 Pod 集合中運行代碼,無…

nginx使用詳解:轉發規則、負載均衡、server_name

文章目錄 一、nginx常用的轉發規則location 指令說明location轉發使用 二、upstream負載均衡使用三、server_name使用四、其他常用配置限制請求類型處理靜態資源目錄遍歷問題限制客戶端使用的ip或者域名 五、需要注意的地方location /api1 探討location ~ /api1 探討&#xff0…

DataFunSummit:2023年OLAP引擎架構峰會-核心PPT資料下載

一、峰會簡介 OLAP技術是當前大數據領域的熱門方向,該領域在各個行業都有廣泛的使用場景,對OLAP引擎的功能有豐富多樣的需求。同時,在性能、穩定性和成本方面,也有諸多挑戰。目前,OLAP技術沒有形成統一的事實標準&…

redis性能管理

redis的數據庫是存放在內存當中,所以對內存的監控至關重要 redis內存監控和解析 1.如何查看redis內存使用情況 [rootlocalhost utils]# redis-cli -h 20.0.0.170 -p 6379 20.0.0.170:6379> info memory used_memory:853336 //redis中數據占用的內存 use…

觸發設備離線

業務場景 業務開發過程中,我們經常會需要判斷遠程終端是否在線,當終端離線的時候我們需要發送消息告知相應的系統, 環形隊列 1.創建一個index從0到30的環形隊列(本質是個數組) 2.環上每一個slot是一個Set&#xf…

python 執行系統命令

subprocess 模塊和 os.system 或 os.popen 等函數相比,功能更為強大和靈活,是 Python 官方推薦的執行系統命令的方法。主要的優勢包括: 更強的錯誤處理:subprocess 模塊可以更精細地控制錯誤輸出和錯誤代碼,而 os.syst…

自定義springboot的生命周期函數在項目啟動完成后去取配置文件中的值

主要是實現smartLifecycle類 package com.ruoyi.workflow.util;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.springfr…

MYSQL索引使用注意事項

索引使用注意事項: 1.索引列運算 不要在索引列上進行運算操作,否則索引將失效; 2.字符串不加引號 字符串類型使用時,不加引號,否則索引將失效; 3.模糊查詢 如果僅僅是尾部模糊匹配,索引將不會失…

防火墻暴露端口

如果你想開通防火墻上的端口,具體的操作方式可能會取決于你所使用的操作系統。以下是一些常見操作系統的步驟: 1. Linux(例如,Ubuntu 或 CentOS): 使用 ufw(適用于 Ubuntu): # 開…

RK平臺查看板子上的dts信息

簡介 dts文件描述了硬件每個模塊的信息,我們嵌入式軟件的調試很多時候都是在改dts文件,有時候我們不確定板子上的固件是否已經更新了我們的修改,這時候我們可以直接讀取板子上的dts信息,下面來演示一下。 進入uboot命令行模式 …

關于軟raid的實現及常見問題

RAID概念 磁盤陣列(Redundant Arrays of Independent Disks,RAID),有“獨立磁盤構成的具有冗余能力的陣列”之意。 磁盤陣列是由很多價格較便宜的磁盤,以硬件(RAID卡)或軟件(MDADM&…

關于用css設置input輸入框hover的時候的樣式以及當input為disabled的時候,不要讓hover樣式生效

效果如果&#xff1a; 編輯狀態下的時候&#xff1a; 只讀狀態下的時候&#xff1a; 代碼如圖&#xff1a; <input type"text" name"dataForm.exportCode" id"exportCodeItem" required :disabled"editDisabled" />input:not(…

【前端學java】語法練習-工具類的封裝(13)

往期回顧&#xff1a; 【前端學java】JAVA開發的依賴安裝與環境配置 &#xff08;0&#xff09;【前端學 java】java的基礎語法&#xff08;1&#xff09;【前端學java】JAVA中的packge與import&#xff08;2&#xff09;【前端學java】面向對象編程基礎-類的使用 &#xff08…

java.net.UnknownHostException: eureka

java.net.UnknownHostException: eureka 哦。HOST漏了 #linux /etc/hosts #windows C:\Windows\System32\drivers\etc\hosts 127.0.0.1 eureka7000 127.0.0.1 eureka7001 127.0.0.1 eureka7002

maven打包可執行jar含依賴lib

修改pom.xml <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!-- jdk8可用&#xff0c;其他jdk版本可能需改插件版本 --><version>2.3.7.RE…