一個好的程序員具備什麼品質?

Cherishmily


雖然我也不敢說自己是一個好的程序員,但勉強也可以算箇中等吧,至少超過 35 歲的年齡還沒有失業;在我眼裡,優秀的程序員需要具有這些品質:


對技術保持直接或間接的熱情

好的程序員,一定會對技術報有熱情;對技術的學習,一定不侷限於“使用”這個層面,而是要了解原理,優缺點,適用場景,甚至要了解其中的源碼,每學會一項新技術、瞭解一個知識點、或利用所學解決了一個問題,甚至是調通一段代碼,都會發自內心的開心。

為什麼要還加了一個詞,“間接”的熱情呢?

其實現實中不是每個程序員對技術學習有著“發自內心”的熱情(這種熱情需要長期保持,五年、十年、二十年...),所以要找到“間接”的熱情。比如你喜歡做技術輸出,喜歡享受自己被叫做“大神”的感覺,或者你追求高收入,希望拿到年薪100萬+的總包...

總之,不管你是何種方式,總是要保持不斷學習的動力。

良好的設計/架構能力

接到一個需求,你應該在很短的時間內有一個大概的判斷:這個需求對於系統的改動量大還是小?有幾種實現方案?是否需要其他系統配合?有些程序員甚至在心裡已經要把代碼修改點,一條一條地羅列出來了。

要達到這種程度,不僅要對項目非常數據,更重要的是要有設計和架構的能力,或者說是邏輯思維能力、抽象思維能力;如果一個程序員只能按照需求文檔來開發,那麼真的就變成了一個 Coder 了。

良好的溝通能力

現在很少有項目只需要一個程序員就可以實現,大部分情況都是一個團隊、幾個團隊、甚至跨部門、跨公司的協作,所以對於程序員來說,溝通能力非常重要!

我曾經就是一個“脾氣很大”的程序員,因為總覺得身邊的同事能力怎麼這麼差,這麼簡單的東西怎麼會不明白呢?那個階段我很不樂於溝通,或者溝通的過程中態度很不好,直到我跳槽到了另外的公司,才發現不管到了什麼地方,這種人都佔了大多數,我始終保持這種態度,又能怎麼樣呢?

於是現在的我,樂於和他人溝通,雖然大多數時候依然心存鄙視,但是趕緊把工作幹完才是我想要的結果。

優秀的程序員還應該具備良好的英文文檔閱讀能力、健康的體魄和濃密的髮質,你覺得自己和優秀的程序員還差多少呢?

我將持續分享Java開發、架構設計、程序員職業發展等方面的見解,希望能得到你的關注。


會點代碼的大叔


作為一名從業多年的IT人,同時也是一名計算機專業的教育工作者,所以我來回答一下這個問題。

近些年來隨著互聯網的快速發展,程序員群體日漸龐大,程序員的崗位劃分也越來越細,比如Web程序員、移動端程序員、大數據程序員等等,不同的程序員崗位有不同的任務要求,當然也需要程序員有不同的知識結構。從當前產業互聯網發展的大背景來看,未來從事程序員崗位依然是不錯的選擇,發展前景也比較廣闊。

對於一名優秀的程序員來說,除了要具有較強的開發能力之外,通常還具有以下幾個特點:

第一:較強的溝通能力。按照歷史經驗來看,程序員的工作效率與其溝通交流能力有比較直接的關係,溝通能力強的程序員往往能夠在較短的時間內完成開發任務,同時能夠促進整個開發團隊的開發進度。通常,溝通交流能力強的程序員往往也更容易實現崗位升級,以便於在一定程度上延長自身的職業生命週期。

第二:較強的資源整合能力。程序員的資源整合能力能夠在很大程度上決定程序員的工作邊界,資源整合能力越強的程序員往往能夠承擔更多的工作任務。程序員的資源整合能力主要體現在三個方面,其一是技術資源整合能力;其二是行業資源整合能力;其三是平臺資源整合能力。

第三:較強的學習能力。IT行業的技術迭代速度是比較快的,對於程序員來說,只有具有較強的學習能力才能夠不斷獲得技術進步,從而推動自己不斷完成崗位升級。產業互聯網時代是平臺化時代,當前隨著雲計算、大數據、物聯網、人工智能等平臺的陸續推出,程序員自身的技術體系也需要技術更新,這就要求程序員具有較強的學習能力。

我從事互聯網行業多年,目前也在帶計算機專業的研究生,主要的研究方向集中在大數據和人工智能領域,我會陸續寫一些關於互聯網技術方面的文章,感興趣的朋友可以關注我,相信一定會有所收穫。

如果有互聯網、大數據、人工智能等方面的問題,或者是考研方面的問題,都可以在評論區留言,或者私信我!


IT人劉俊明


工作創業10多年的互聯網IT老人,分享3點想法:

首先,要熱愛編程

1、程序員是一個整體和機器打交道的工作,枯燥乏味,只有真正熱愛編程的人,才能在這個行業如魚得水。

2、熱愛編程可以體現在,在代碼質量上精益求精,在代碼標準上書寫規範,樂於解決各種疑難雜症,幹過編程的都知道,程序問題各種各樣,千奇百怪,沒點經歷過千錘百煉,真心搞不定。

3、把經驗和遇到的問題總結備忘,好多程序的問題今天遇到了,可能明天還會遇到,所以要重視經驗的積累,把問題總結好,下次遇到相同的問題可以快速找到解決方案,提高效率。這就是為啥程序員都愛到論壇裡發帖,一是可以總結經驗教訓,二是下次遇到相同的問題,可以快速解決,提高效率。畢竟程序員做的工作都是要有時間節點的,做的越快績效就會越好。

其次,尊重用戶

1、好的程序員都會理解用戶,更懂得理解需求。這點很難,也是很多程序員突破不了自己的關鍵,就是缺乏用戶思維,單純的從技術實現的角度考慮問題,沒有考慮的用戶的體驗和便捷性。

2、好的程序員要尊重用戶感受,寫代碼的時候也會深入思考用戶體驗,提出優化建議,只有懂得用戶,才能給用戶帶來便捷,讓用戶更喜歡自己的產品。

最後,懂得協同

1、好的程序員知道如何融入團隊,把團隊的標準認真執行,無論從代碼的可讀性,還是註釋的標準化等。

2、好的程序員知道如何理解需求,站到用戶的角度思考問題,知道解決了這些需求,給用戶帶了什麼價值,也是自己實現產品功能的最終價值。

關注@鬼谷子職場,以古鑑今,降低職場焦慮,提升職場核心競爭力!


鬼谷子職場


我在一家國企從事甲方IT工作,也接觸過很多甲方和乙方的IT人員。很多人把程序員定義為coder,我覺得是不對的,其實程序員範圍非常廣,架構設計、項目管理、開發人員都可以廣義定義為程序員。我姑且認為題目想問的是一個開發者要具備的品質。

專業性。我是一個java開發者,之前看過很多問題問java學多久可以從事企業級開發,我覺得,光懂一門語言僅僅是開發者的入門。一個好的開發者,需要很長時間的工作積累,對於java後端開發來說,會java夠了嗎?一個好的java開發,目前一些主流的MVC框架比如Spring家族需要熟悉,一些持久化框架比如Hibernate/Mybatis/Ibatis需要熟悉,對於一些面相互聯網的開發,一些常用註冊中心比如Kafka/Zookeeper需要熟悉,一些分佈式框架比如dubbo要熟悉,一些常用的緩存技術Redis/Memcache需要熟悉…但是這麼多技術,怎麼可能全部熟悉呢?這就牽扯到第二個品質。

紮實的基礎與快速學習能力。不是所有的時候,項目中使用的技術都是我們紮實掌握的技術,但是很多技術都是觸類旁通的,很多技術實現當時不熟悉,但是如果相關的技術有過實踐經歷,其實上手起來也很快。

持續集成的意識。代碼是開發者最基本的交付物,但是很多時候由於種種原因,導致開發者沒有對自己的代碼進行持續集成。我見過企業級的應用,一個class類寫了幾千行,所有的業務除了原子的增刪改查服務全寫在controller裡面。我一直對這種寫法嗤之以鼻,可擴展性呢?可複用性呢?我覺得一個好的開發者是要有持續集成的意識的,逐步優化自己的代碼,就像一遍一遍的審核自己的文章一樣去推敲。好的代碼是藝術品。

編碼規範性。上面幾千行的類就是編碼規範性的反面教材。還有個例子,曾經一個朋友跟我吐槽,他接到一個項目,所有對象命名全是拼音首字母縮寫,為了便於管理,項目組還給了他一沓對象命名的表,沒這張表誰也不知道某個對象是什麼意思。規範對象命名只是編碼規範的其中一個要求,阿里曾出過一本阿里編程規範,雖然不必要遵守裡面的每一條要求,但是還是有很多值得去參考的。

邏輯思維能力。一位架構師曾經和我說過,這世上沒有一個項目是真的是由於技術能力不夠最後垮掉的,技術問題都可以補,但是邏輯能力不夠,對項目的傷害是沒辦法彌補的。所有的選型、集成、調優都對開發者的邏輯能力有極大的要求,我們常常開玩笑某某的方案是曲線救國,就是說這個人繞不過某個彎導致採用了個更復雜的方案。

暫時想到的就這些…


SuperVer


您好,很高興回答您的問題

1.儘量不要寫重複的代碼,否則別人改的時候會非常痛苦。

2.不要大量嵌套,4、5層的if、else誰看誰頭大。

3.持續學習,否則工作5年後和2年工作經驗的年輕人沒啥區別,不要成為35歲後被大家拋棄的程序員。

4.多運動、多喝水、多睡眠,可以有效緩解猝死、禿頂、肥胖。


竟誠4314


首先感嘆一下大數據果然強大,居然能發現我是程序員。然後我對這個問題的看法如下:

一,思維嚴謹。

二,不浮躁。

三,熱愛計算機或者重視計算機,當作主要事業

計算機知識很枯燥,沒有二三這兩條很難精深。有了精深的知識加上嚴謹的態度,就在程序大道鋪足了道路


是賢哥


程序員是個充滿樂趣的職業,但同時也是一個辛苦的職業,加班加點是日常工作,當然也要看項目需求。程序員要具備非常強的學習能力,因為隨著科技的發展,技術的更新換代是非常快速的,需要具備專業的技術功底和較強的責任心,這是非常重要的一點,因為一行代碼可能造成非常大的損失。同時程序員也是非常可愛和可敬的,互聯網時代他們功不可沒,致敬!


笑納江湖


我懷疑頭條給我一個單片機硬件的人推薦這樣的問題,雖然我們也有C語言代碼,但是和你們完全不一樣啊


分享到:


相關文章: