對於程式設計師職業生涯的一些討論

2014-11-01    分類:程式設計師人生、首頁精華1人評論發表於2014-11-01

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

Jeff Darcy 和 Adrian Ho是某IT公司的首席技術顧問,下面是他們對程式設計師職業生涯的一些討論。

Jeff Darcy:

程式設計不僅僅是寫程式碼,更是在解決問題。下面是一個程式設計師必須完成的基本任務。

1.定義問題(需求和限制)

2.定義解決方案(演算法和資料結構)

3.用程式碼寫出方案

4.驗證並測試是否正確

很多人往往第3點做的很好,但忽略了其他,因為到目前為止第3點是最簡單的。當然,一個優秀的程式設計師可能只要憑藉他們的知識和經驗,甚至都不需要寫新的程式碼就能解決問題。所以在一個團隊中,一個經驗豐富的程式設計師貢獻是很大的,因為他們能幫助其他人解決非編碼任務,哪怕任務再繁重、技巧再繁多,也不在話下。

一旦我們熟練掌握了我們的謀生工具,就能更深層次地理解一些程式設計領域的專業問題。程式設計師要想冠以“偉大”這個形容詞,就得做到在任何情況下都能運用手頭的技術和方法達到目標,而不僅僅是會程式設計就可以的。

……

Adrian Ho :

Jeff Darcy已經涵蓋了差不多2/3的內容,下面我從他沒有涉及到的方面再詳細地講講這些技巧。

不要回避客戶。

我見過很多程式設計師很害怕與那些極品客戶交流,有的甚至到了近乎病態的程度。作為個人,我非常同情他們……但是,我也會提醒他們:“客戶也是人,也有他們的擔心、弱點和希望。他們也是唯一能告訴你程式設計終極問題的人:我究竟要解決什麼問題?”這些都是資料。上面Jeff已經談到過了,但是我覺得它值得我們的重視。因為我們在處理使用者資料時要用到的幾乎所有演算法,以及選擇的資料結構反過來則會成為實現演算法的最大約束。

這也是我想說的第一點,問題的詳細資訊要能縮小資料結構的篩選範圍,這樣就不必老是因為無法明確地思考問題而導致在資料結構選擇上浪費時間,甚至是專案延時和超出預算。

付你工資是為了能有產出,而不是讓你玩的。

世界上有兩種型別的程式設計師:一種是能在合理的時間內(包括執行和交付時間),能寫出可解決現實問題的程式碼的程式設計師,還有一種程式設計師則相反!在這裡,我將前者稱之為“腳踏實地的程式設計師”,後者是“幸運的寄生蟲”。我想大多數人都不願意自己是一隻“幸運的寄生蟲”吧。

現在,我們差不多每週都會涉及到新的程式語言、並行程式設計庫、NoSQL資料庫等。如果是“腳踏實地的程式設計師”,毫無疑問實用第一。即便是發現最新出來的點子非常適合專案的某個部分,也會先預估好時間,不然會導致加班加點趕進度……再則捕獲並修復裡面的bug也需要時間,這些不可避免地都會影響程式的完成進度。(可能會是原先估計時間的雙倍,搞不好甚至雙倍還遠遠不夠。)

我就是這麼做的,我相信很多人也會。什麼,你已經寫好了客戶端 – 伺服器的程式碼?那還不夠!你還得繼續反覆檢查,看看會發生什麼?會不會崩潰?“腳踏實地的程式設計師”會讓這一切都不會發生。

現在網際網路的影響已經滲透到我們的方方面面。我記得有一篇文章中談到這麼一個觀點“頻寬是無限制的”,我非常贊同。但是很多人卻並沒有認識到這一點,然後我率先衝鋒陷陣,運用一些簡單的演算法卻得出了一個令人尷尬的結論,那就是我們的預期使用量會超出網路的最大理論容量。沒人願意把這些告訴給管理層,因為從數學上和物理上來講這意味著他們都不可能完成自己的承諾。這個時候,我在心裡會默默地口出髒言“你妹的,說話跟放屁一樣。”

但是我唯一能說的卻是……“shit!”

譯文連結:http://www.codeceo.com/article/talk-about-programmer-career.html
英文原文:4 Useful Things To Learn In 10 Minutes To Better Your Programming Career
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章