• 對于程序員職業生涯的一些討論

    0
    程序員 HTML 數據庫 C/C++ Go 11406 次瀏覽

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

    talk-about-programmer-career.png

    Jeff Darcy:

    編程不僅僅是寫代碼,更是在解決問題。下面是一個程序員必須完成的基本任務。

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

    2.定義解決方案(算法和數據結構)

    3.用代碼寫出方案

    4.驗證并測試是否正確

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

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

    ……

    Adrian Ho :

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

    不要回避客戶。

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

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

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

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

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

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

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

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

    譯文鏈接:http://原網站已經失效/article/talk-about-programmer-career.html
    英文原文:4 Useful Things To Learn In 10 Minutes To Better Your Programming Career
    翻譯作者:碼農網 – 小峰

    相似問題

    相關經驗

    相關資訊

    相關文檔

  • sesese色