做程式設計師之後才知道的5件驚奇事
從我開始工作算起,已經有20多年了。即便如此,我依然記得當時對從大學畢業並開始工作的憧憬。在那之前,除了少數幾份和程式設計無關的暑期工,我的人生基本都是在學校度過的。雖然我對工作的大多數期望都實現了,不過在步入職場頭幾年中也發現這一行許多令人驚奇的事,下面是頭五件:
5. 人際交往
程式設計看起來是一份相當孤獨的工作——你需要完成一個功能,所以你坐下來並用程式碼將其實現。不過事實上,你和其他的同事會有相當多的交流。你會和同事討論設計,你會在開會時審查新功能,你會和測試人員討論你的程式碼。
學會委婉和圓通,在交流中非常有幫助。如果還不會,那你得去學一下。關於這方面,有一本暢銷書——卡耐基的《人性的弱點》。如果還沒有讀過此書,我強烈建議你讀一讀。
4.寫作很重要
通過寫作清晰地表達觀點,這很有幫助。從某種程度上來說,寫程式碼和寫作非常相似,兩種都需要你把你的想法,通過某個結構化的方式清晰並且無歧義的表達出來。Email當然是寫不完的了,不過還有你所開發的產品特性所配套的文件、需要清晰描述Bug的漏洞報告、還有對你修復的Bug做出的解釋。在大學裡寫作並不是重點,但是如果你寫作好的話,這絕對是工作中的一個籌碼。
3.從來沒有已做完的軟體
在我開始工作以前,我覺得當我開發出一個特性之後,這個特性就算開發完成了。不過在現實中,你會很經常的要回到這個特性上來。有時候是因為這並不完全是客戶所要求的,也可能是因為你需要為它新增更多功能,又或者是你想要把有些相似的功能合併起來,或者修復一個Bug。不管怎麼樣,對你的程式碼繼續進行程式設計是很正常的事。
在大學裡,我們經常會把一個程式從頭做起,但這在現實世界中幾乎是沒有出現過的。當然,除了你做新功能的時候,但這些程式碼總要融入舊程式碼。正因為如此,做新功能時的很大一部分工作都是在閱讀並理解舊程式碼。這是一項我們在學校裡沒有練習過的技能。
2.很少有巧妙的演算法
在大學裡我得到了一個電腦科學與工程的碩士,我學習了通訊系統,裡面包括訊號處理、錯誤糾正碼、排隊論等等的課程。我們也有像演算法和資料結構這樣的電腦科學核心課程,我很喜歡這些課,我覺得學會這些聰明的演算法和資料結構是一件很酷的事,所以我非常期待在工作中見到它們。
我的第一份工作是在蒙特利爾的愛立信公司,在一個蜂窩網路的行動電話交換中心擔任軟體工程師。那裡有大量的程式碼來控制通話的建立、掛機、漫遊等等,但當我看到這些功能都是用最基本的資料結構和演算法完成時,我覺得有點失望。最有趣的是,我發現用來跟蹤使用者漫遊狀態的程式碼居然是由一千多個二叉樹構成的,使用者手機號的末三位數決定了使用者處於哪顆樹上。當需要找到這個使用者時,根據使用者的手機尾號找到使用者所在的樹,然後遍歷該樹以找到該使用者。除了這個,其他的都是連結串列甚至是更簡單的資料結構。
1.系統整合後的複雜性
說起來既然沒有什麼精巧的演算法,而且整個應用程式都在使用基本的資料結構,那看來在這裡工作應該沒有什麼挑戰吧?錯!我很快就意識到這套系統高度複雜,倒並不是因為那些複雜的功能,而是因為太多太多簡單的功能整合合到了一起。
在我工作過的那麼多套系統中,我看到了一些共同點:大多數特性都非常簡單,但正因為就是有很多簡單的特性,在整合這些特性之時所遇到的微妙(或不那麼微妙)互動,就引發了Bug。
原文連結: Henrik Warne 翻譯: 伯樂線上 - 吳鵬煜
相關文章
- 做程式設計師之後才知道的 5 件驚奇事程式設計師
- 老鳥程式設計師才知道的40個小技巧程式設計師
- 非科班程式設計師才不知道的矩陣Matrix程式設計師矩陣
- 程式設計師做產品需要知道程式設計師
- 非科班程式設計師才不知道的線性系統程式設計師
- 有哪些事情是程式設計 20 到 50 多年後才知道的?程式設計
- 做個清醒的程式設計師之要不要做程式設計師程式設計師
- 程式設計師才看得明白的面試聖經程式設計師面試
- 程式設計師OR非程式設計師,有些程式設計的事需要知道程式設計師
- 程式設計師要知道的事情程式設計師
- 做個清醒的程式設計師之擁抱AI程式設計師AI
- 做個清醒的程式設計師之拒絕工作程式設計師
- 30歲後將發生的事情讓程式設計師們驚恐程式設計師
- 當程式設計師有孩子之後!程式設計師
- 怎樣才算得上合格的程式設計師程式設計師
- 別做程式設計師程式設計師
- 做個程式設計師程式設計師
- 結對程式設計後傳之做漢堡程式設計
- 程式設計師應知道的12件事程式設計師
- 好與壞的程式設計師:如何評價程式設計師的水平才算客觀?程式設計師
- 當了程式設計師之後?(真心話)程式設計師
- (新)只有程式設計師才看得懂的段子程式設計師
- 程式設計師必看的書之Java程式設計師程式設計師Java
- 程式設計師在囧途之做私活小記程式設計師
- 做一個努力的程式設計師程式設計師
- 做程式設計師的苦於樂程式設計師
- 做個清醒的程式設計師之成為少數派程式設計師
- 做個清醒的程式設計師之破解內卷漩渦程式設計師
- 做個清醒的程式設計師之打造核心競爭力程式設計師
- 你有哪些寫了Flutter 之後才知道的事兒Flutter
- 有哪些事,是做了專案管理之後才知道的?專案管理
- 程式設計師應該知道的 13 個設計技巧程式設計師
- 程式設計師該知道的那些程式設計比賽網站程式設計師網站
- 程式設計師要知道的英語詞彙程式設計師
- (轉)程式設計師應知道的12件事程式設計師
- 程式設計師都應該知道的福利程式設計師
- 不知道這些網站還做什麼程式設計師呀!網站程式設計師
- 華為為啥拼命做自主處理器?知道真相後震驚