從我開始工作算起,已經(jīng)有20多年了。即便如此,我依然記得當時對從大學(xué)畢業(yè)并開始工作的憧憬。在那之前,除了少數(shù)幾份和編程無關(guān)的暑期工,我的人生基本都是在學(xué)校度過的。雖然我對工作的大多數(shù)期望都實現(xiàn)了,不過在步入職場頭幾年中也發(fā)現(xiàn)這一行許多令人驚奇的事,下面是頭五件:
5. 人際交往
編程看起來是一份相當孤獨的工作——你需要完成一個功能,所以你坐下來并用代碼將其實現(xiàn)。不過事實上,你和其他的同事會有相當多的交流。你會和同事討論設(shè)計,你會在開會時審查新功能,你會和測試人員討論你的代碼。
學(xué)會委婉和圓通,在交流中非常有幫助。如果還不會,那你得去學(xué)一下。關(guān)于這方面,有一本暢銷書——卡耐基的《人性的弱點》。如果還沒有讀過此書,我強烈建議你讀一讀。
4.寫作很重要
通過寫作清晰地表達觀點,這很有幫助。從某種程度上來說,寫代碼和寫作非常相似,兩種都需要你把你的想法,通過某個結(jié)構(gòu)化的方式清晰并且無歧義的表達出來。Email當然是寫不完的了,不過還有你所開發(fā)的產(chǎn)品特性所配套的文檔、需要清晰描述Bug的漏洞報告、還有對你修復(fù)的Bug做出的解釋。在大學(xué)里寫作并不是重點,但是如果你寫作好的話,這絕對是工作中的一個籌碼。
3.從來沒有已做完的軟件
在我開始工作以前,我覺得當我開發(fā)出一個特性之后,這個特性就算開發(fā)完成了。不過在現(xiàn)實中,你會很經(jīng)常的要回到這個特性上來。有時候是因為這并不完全是客戶所要求的,也可能是因為你需要為它添加更多功能,又或者是你想要把有些相似的功能合并起來,或者修復(fù)一個Bug。不管怎么樣,對你的代碼繼續(xù)進行編程是很正常的事。
在大學(xué)里,我們經(jīng)常會把一個程序從頭做起,但這在現(xiàn)實世界中幾乎是沒有出現(xiàn)過的。當然,除了你做新功能的時候,但這些代碼總要融入舊代碼。正因為如此,做新功能時的很大一部分工作都是在閱讀并理解舊代碼。這是一項我們在學(xué)校里沒有練習(xí)過的技能。
2.很少有巧妙的算法
在大學(xué)里我得到了一個計算機科學(xué)與工程的碩士,我學(xué)習(xí)了通信系統(tǒng),里面包括信號處理、錯誤糾正碼、排隊論等等的課程。我們也有像算法和數(shù)據(jù)結(jié)構(gòu)這樣的計算機科學(xué)核心課程,我很喜歡這些課,我覺得學(xué)會這些聰明的算法和數(shù)據(jù)結(jié)構(gòu)是一件很酷的事,所以我非常期待在工作中見到它們。
我的第一份工作是在蒙特利爾的愛立信公司,在一個蜂窩網(wǎng)絡(luò)的移動電話交換中心擔(dān)任軟件工程師。那里有大量的代碼來控制通話的建立、掛機、漫游等等,但當我看到這些功能都是用最基本的數(shù)據(jù)結(jié)構(gòu)和算法完成時,我覺得有點失望。最有趣的是,我發(fā)現(xiàn)用來跟蹤用戶漫游狀態(tài)的代碼居然是由一千多個二叉樹構(gòu)成的,用戶手機號的末三位數(shù)決定了用戶處于哪顆樹上。當需要找到這個用戶時,根據(jù)用戶的手機尾號找到用戶所在的樹,然后遍歷該樹以找到該用戶。除了這個,其他的都是鏈表甚至是更簡單的數(shù)據(jù)結(jié)構(gòu)。
1.系統(tǒng)集成后的復(fù)雜性
說起來既然沒有什么精巧的算法,而且整個應(yīng)用程序都在使用基本的數(shù)據(jù)結(jié)構(gòu),那看來在這里工作應(yīng)該沒有什么挑戰(zhàn)吧?錯!我很快就意識到這套系統(tǒng)高度復(fù)雜,倒并不是因為那些復(fù)雜的功能,而是因為太多太多簡單的功能集成合到了一起。
在我工作過的那么多套系統(tǒng)中,我看到了一些共同點:大多數(shù)特性都非常簡單,但正因為就是有很多簡單的特性,在集成這些特性之時所遇到的微妙(或不那么微妙)交互,就引發(fā)了Bug。
-
程序員
+關(guān)注
關(guān)注
4文章
953瀏覽量
29900
發(fā)布評論請先 登錄
相關(guān)推薦
阿里云升級通義靈碼AI程序員,全面上線
TMS320C55x DSP CPU程序員參考補充

UCD3138A64/UCD3138128程序員手冊

機械革命發(fā)布CODE AI程序員本
AI編程工具會不會搶程序員飯碗
第五屆長沙·中國1024程序員節(jié)開幕
京東上萬程序員都AI用它!

程序員節(jié)視頻創(chuàng)意大賽,用串口屏贏取千元大獎

程序員節(jié)視頻創(chuàng)意盛宴,邀您共襄盛舉!

助力程序員告別困擾已久的夢魘-Bug

大模型時代,程序員當下如何應(yīng)對 AI 的挑戰(zhàn)

評論