能堅持別人不能堅持的,才能擁有你想擁有的。
關注編程大道
公眾號,讓我們一同堅持心中所想,一起成長!!
哈嘍,大家好,我是walking。今天咱們不聊技術,聊聊作為程序員應該具備的素養。
程序員,一個多么讓人“敬仰”的職業。而程序員作為新一代的回歸自然的“猿人”,也是屬於新一代的第三類人種,程序員這個職業在外界眼中就是“人傻錢多死得早”的代名詞,因為“高薪”的誘惑,不少其他行業的兄弟,轉行做了程序員,而且近幾年各種大大小小的培訓機構如雨后春筍般遍地開花,越來越多的其他行業的從業者都在往程序員這一行業轉,相信作為程序員的你身邊多多少少都會有幾個同事是從其他行業轉行過來的。
而在21世紀這個信息化、網絡化快速發展的今天,獲取信息和知識的途徑越來越廣泛,在這個快速發展、節奏緊張的社會,作為一個程序員應該具有哪些素養才能夠幫助程序員進一步的提升與進步呢?下面walking作為一個程序員在此做一個個人分享。
扎實的專業技能
這是作為程序員最基本的職業素養,如果專業技能掌握的不夠牢固,那就是技術不到家,作為程序員應該感到慚愧。最基本的,比如我們Java開發者吧,最起碼把這個Java的常用的API要熟練吧,這是毋庸置疑的。不然你怎么寫代碼,怎么開發呀。不要覺得我說的在這一點是廢話,這不,walking最近就看到一個同事寫出了這樣的代碼
@GetMapping("/getUserCount") public Map<String,Object> getUserCount(){ Map<String,Object> result = new HashMap<>(); String key = "users_set"; Jedis jedis = jedisPool.getResource(); Set<String> smembers = jedis.smembers(key); Iterator<String> iterator = smembers.iterator(); int count = 0;; while (iterator.hasNext()){ iterator.next(); count++; } result.put("count",count); return result; }
這段代碼僅僅是為了得到使用redis的set結構保存的用戶ID的count數,這位同事怎么寫的呢,從redis里拿到所有用戶ID的set集合,然后用java的方式--迭代器遍歷集合,再count++計算set中元素個數。看到這,你有什么想法呢?明明很簡單的一行代碼,卻搞的這么麻煩,到底是為什么?不還是技術不到家嗎?redis的api不會也就算了,java的set集合的api再不懂就說不過去了吧?所以扎實的專業技能是程序員的基本素養,否則寫出這樣的代碼只會讓人貽笑大方。
保持良好的編碼習慣
不但要專業知識扎實,代碼規范程度也很重要。知名互聯網公司的代碼的變量命名、注釋格式,甚至嵌套中行縮進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和糾錯,也有助於不同技術人員之間的協作。一些所謂的高手甚至叫囂高手寫的代碼一般人看不懂,我只能說他不是一名合格的程序員。正所謂“規范大於約定”,良好的編碼習慣將會讓你受益終身。阿里的一套Java開發手冊讓無數公司追捧,聞名國內外。詳看:下載 | 阿里Java開發手冊嵩山版。
團隊精神和協作能力
團隊精神和協作能力是作為一個程序員應具備的最基本的素質。軟件工程已經提了將近三十年了,當今的軟件開發已經不是編程了,而是工程。獨行俠可以寫一些程序也能賺錢發財,但是進入研發團隊,從事商業化和產品化的開發任務,就必須具備這種素質。可以毫不誇張的說這種素質是一個程序員乃至一個團隊的安身立命之本。
文檔習慣
文檔是一個軟件系統的生命力。一個公司的產品再好、技術含量再高,如果缺乏文檔,知識就沒有繼承,公司還是一個來料加工的軟件作坊。作為代碼程序員,必須將30%的工作時間寫用於技術文檔。沒有文檔的程序員勢必會被淘汰。
需求理解能力
程序員要能正確理解任務單中描述的需求。在這里要明確一點,程序員不僅僅要注意到軟件的功能需求,還應注意軟件的性能需求,要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有着兩到三年項目經驗的熟練程序員對這一點沒有體會的話,只能說明他或許是認真工作過,但是沒有用心工作。
模塊化思維能力
作為一個優秀的程序員,他的思想不能在局限當前的工作任務里面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。這樣做可以使代碼能重復利用,減少重復的勞動,也能使系統結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。
測試習慣
測試是軟件工程質量保證的重要環節,但是測試不僅僅是測試工程師的工作,而是每個程序員的一種基本職責。程序員要認識測試不僅是正常的程序調試,而要是要進行有目的有針對性的異常調用測試,這一點要結合需求理解能力。
學習和總結的能力
程序員是很容易被淘汰的職業,所以要善於學習總結。許多程序員喜歡盲目追求一些編碼的小技巧,這樣的技術人員無論學了多少語言,代碼寫起來多熟練,我們只能說他是一名熟練的代碼民工,他永遠都不會有質的提高。一個善於學習的程序員會經常總結自己的技術水平,對自己的技術層面要有良好的定位,這樣才能有目的地提高自己。這樣才能逐步提高,從程序員升級為軟件設計師、系統分析員、項目經理。
作為高級程序員,乃至於設計師而言,除了應該具備上述全部素質之外,還需要具備以下素質:
1、 需求分析能力
2、 整體框架能力
3、 流程處理能力
4、 模塊分解能力
5、 整體項目評估能力
6、 團隊組織管理能力
保持程序思維
作為一個程序員而言,程序員的思維可謂是超人類的思維,因為我們面對產品提出的需求時要用一個程序的大腦去思考,去想如何控制電腦做出我們想要完成的事情,如何用最簡單、最優的方式去實現這個功能。那何為程序思維呢?那就是“源於程序,終於程序”,但是不脫離程序,要做程序中的散文詩人。程序員的思維只有從不斷的練習中去感悟,去思考,去總結,去完成。比如產品經理突然有一個想法想做一個論壇,問你們誰能做,你怎么應對?下面的視頻帶有一定的娛樂性質,但是希望大家能夠多聯系,多總結,去挖掘自己程序的潛力,有一天可以做到:根據problem反射出answer或者根據answer反射出problem的時候就是程序員思維出來的時候。【視頻在公眾號】
不斷的學習的精神
程序員要保持不斷的學習與進步,因為程序員界的新的技術層出不窮,在新的技術中去注意自己應該掌握的知識點,學習並且利用就是最好的競爭力,如果作為程序員知識儲備不深,或者固步自封永遠停留在自己的世界里而沾沾自喜,不去主動接觸、學習並掌握新知識,那么你遲早會被淘汰。可以從哪里得到更多的新的技術呢:1)github 2)各大論壇 3)博客網站 4)培訓機構 5)程序員你懂的牆外的東西
有人會說:平時上班那么忙,哪有時間學習啊?偉大的文學家魯迅曾經說過:時間就像海綿里的水,擠擠總是有的。你把刷視頻、玩游戲、發呆的時間拿來學習不香嗎?沒時間是你懶惰的借口!
保持頭腦靈活
作為程序員要不斷去參加一些益智類的項目,來保持自己的大腦的活性。久坐和長時間面對電腦給自己的精神壓力和身體壓力是非常大的,保持一個大腦的活性有助於我們的學習,研究,更有利於我們心腦血管的健康,這樣對我們的生活會有更進一步的提升空間。比如,玩一玩益智類的小游戲,適當的玩一玩開拓自己的大腦;再比如去找找算法題做做都是可以的。walking身邊就有一些大齡程序員,在與其對接的過程中,發現一個小問題他就要想半天,甚至是告訴他之后還不是很明白,很明顯腦子反應慢了,不靈活了。老話說的好,腦子越用越靈,不用就生銹了。
充足的睡眠和持之以恆的鍛煉
對於程序員來說,加班是常事,但是良好的生活作息可以讓我們得到更好的工作效率,充足的睡眠是保證我們工作效率的第一開端。哪怕我們工作再忙,切記一定要保證充足的睡眠。持之以恆的鍛煉源於運動,運動是生命之本。有很多人工作后,1-2年內就發胖,大肚子渾身贅肉,作為程序員更容易這樣,長期的伏案工作,吃完就坐在電腦前,缺乏運動,加上不注意飲食,暴飲暴食,長此以往身體就會越來越差,糖尿病,高血壓,脂肪肝…這樣的疾病就會找上門。我們要每天給自己一定的時間去鍛煉,去流汗,去釋放,這樣我們才可以在家庭生活中成為一個強者。美國程序員是世界的領先水平,凡是在美國的白領,仔細看看都是身體健康,體能充分的人。
保持良好的心態
程序員更要保持良好的心態,不然你寫代碼寫文檔就和容易出錯,不要帶情緒上班,保持一個平和的心態,佛系應對工作。如果有一個良好的心態,可以更加好的去解決bug,bug對於程序員來說是最耽誤時間,最影響心情的一件事情,即使是有了bug也不要太着急,告訴自己急也沒有用,當下之際是找出bug快速解決它。。walking身邊的同事就發生過這樣一件事,兩個前后端的同事合作做一個功能的開發,測試階段bug不斷,到上線前還在解決,結果兩個人就互相埋怨,起初還是隨口說說,最后甚至大大出手互相辱罵,傷了和氣,后來均被勸退。所以無論我們面對工作,還是生活都要有一個良好的心態,只有良好的心態我們才可以走的更遠。
時常規划自己的人生
程序員的職業生涯比起其他的職業是要更加的短暫的,新生的程序員是層出不窮的,他們思維活躍精力充沛,能吃苦能加班,相對於30多歲以后的你如果還不考慮轉型的話,是和他們拼不過的,所以我們要時常有一種危機意識,做好自己的職業規划。
作為程序員的我們,可以強化自己的專業技能做技術經理,技術專家,技術顧問,架構師等,也可以轉型去做管理,或者也可以創業等等,腦袋里面一定要時常規划自己的人生路線,否則很難走到最后。
一定明白自己想要什么,是一輩子做底層的程序員敲代碼嗎?那不會被淘汰嗎?如果想升職做技術大牛,那就應該把自己的技術功底打扎實,從剛工作甚至是大學時代就規划好自己將來要做到什么樣的技術程度,不斷的積累經驗掌握技術原理,解決問題,而不是等到30歲以后工作有可能有危機的時候才去着急,為時已晚。規划越早越好,並不斷的去實踐達到一個個目標。
好了,今天就分享到這。如果感覺本文對您有幫助,有勞點贊,分享給更多的人。歡迎關注本公眾號,謝謝您的支持!
本文僅做個人分享,如有疑問或不妥之處,請歡迎指正、交流。
你可能感興趣的文章:
《【面試突擊】— Redis篇》--Redis數據類型?適用於哪些場景?
《【面試突擊】— Redis篇》--Redis的線程模型了解嗎?為啥單線程效率還這么高?
《【面試突擊】— Redis篇》-- Redis的主從復制?哨兵機制?
《【面試突擊】— Redis篇》-- Redis哨兵原理及持久化機制
《【面試突擊】— Redis篇》--Redis Cluster及緩存使用和架構設計的常見問題
《高並發場景下緩存+數據庫雙寫不一致問題分析與解決方案設計》
覺得好看,請點贊哦~
關注公眾號 編程大道 ,第一時間獲文章推送。
覺得好看,請 點贊、關注、轉發 哦~
參考:
https://jingyan.baidu.com/article/6181c3e0f0c589152ef153bb.html
https://zhidao.baidu.com/question/565951751422039924.html