㈠ 作為一名普通的程序員,該如何保持不斷學習的動力
自我驅動是一件很難的事情,但是作為程序員,我個人真心覺得可以化難為易。建立反饋,在工作中總有些事是明明可以用程序來解決但是卻人工來搞,就比如砍樹,你手上有把斧頭,但是明明有個鋸可以用,只不過沒有鋸條,如果只砍一棵樹,那沒問題,但是如果要砍掉一片森林,更聰明的做法是買個鋸條裝上用鋸來伐樹。現實中就是多次人工解決的問題一定要用程序幫你做,解決不同問題的時候你寫的程序自然涉及的不同知識點,從程序到一個系統,說不定還能開源,通過良性反饋持續學習,提升個人能力。不要等需求。
㈡ 程序員要具備什麼技能
一名合格的程序員需要掌握哪些技能呢?
熟練掌握開發工具
做為一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C++和java是重點推薦的開發工具,C/C++以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟體還是用C/C編寫。而JAVA的跨平台和與WEB很好的結合是JAVA的優勢所在,而JAVA即其相關的技術集JAVA One很可能會成為未來的主流開發工具之一。其次,能掌握一種簡便的可視化開發工具,如VB,PowerBuilder,Delphi,C Builder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。
熟知資料庫
為什麼資料庫是如此重要?作為程序員,他們自然有自己的理由:很多應用程序都是以資料庫的數據為中心,而資料庫的產品也有不少,其中關系型資料庫仍是主流形式,所以程序員至少熟練掌握一兩種資料庫,對關系型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。雖然很多資料庫產品提供了可視化的資料庫管理工具,但SQL是基礎,是通用的資料庫操作方法。如果沒有機會接觸商業資料庫系統,可以使用免費的資料庫產品是一個不錯的選擇,如mySQL, Postgres等。
對操作系統有一定的了解
當前主流的操作系統是Windows,linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。要想成為一個真正的編程高手,需要深入了解操作系統,了解它的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。Linux作為開發源碼的操作系統,是一個很好的學習平台,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。只有對操作系統有一定的了解後,你會發現自己上了一個新的台階。
懂得網路協議TCP/IP
在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課,網路技術已改變了軟體運行的模式,從最早的客戶/伺服器結構,到今天的WEB Services,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網路協議支持,所以,深入掌握TCP/IP協議是非常必要的。至少,你需要了解ISO七層協議模型,IP/UDP/TCP/HTTP等常用協議的原理和三次握手機制。
明白DCOM/CORBA/XML/WEB Services存在的意義
隨著技術的發展,軟體與網路的無縫結合是必然趨勢,軟體系統的位置無關性是未來計算模式的重要特徵之一,DCOM/CORBA是當前兩大主流的分布計算的中間平台,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規范。程序員需要做的不僅僅是利用商業的開發平台來開發軟體,而是要理解這些技術的初衷,即為什麼需要這項技術,如果你能理解了這一點,再回頭看這些技術的具體實現,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯網上的「世界語」,是分布計算的基石之一。
不要將軟體工程與CMM分開
現代大型軟體系統的開發中,工程化的開發控製取代個人英雄主義,成為軟體系統成功的保證,一個編程高手並不一定是一個優秀的程序員,一個優秀的程序員是將出色的編程能力和開發技巧同嚴格的軟體工程思想有機結合,編程只是軟體生命周期中的其中一環,優秀的程序員應該掌握軟體開發各個階段的基本技能,如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟體測試等。一句話可以概括我的看法:「創意無限,流程保證」。
擁有強烈的好奇心
什麼才是一個程序員的終極武器呢,那就是強烈的好奇心和學習精神。沒有比強烈的好奇心和學習精神更好的武器了,它是程序員們永攀高峰的源泉和動力所在。
㈢ 程序員怎麼提升自己
第一,技術不能落伍。
技術的更新迭代非常快,所以要學習的東西很多,所以說,做程序員挺不容易的。但作為這個時代的弄潮兒,我們必須提高對自己的要求,否則很容易落伍,被拍死在沙灘上。
一線城市的程序員可能還好,因為公司的產品迭代升級很快,所以技術棧的更新換舊也快。但二三線城市的程序員可能就沒那麼幸運了,往往一個產品都做到沒客戶了,技術還是最初用的那些。
以至於有些程序員回到二三線城市後再去一線會比較難,並不是生活節奏不適應,而是技術跟不上了。
怎麼才能保證技術不落伍呢?並不是說外面流行什麼技術,就一味的跟風,而是有選擇性的,你比如說,Spring Boot 是肯定要跟的,但 Hadoop、Spark 就不一定要跟,要量力而行,看公司的業務規模是否需要。如果不需要,把更多的時間花費到 JDK 源碼、性能優化陵戚上,是更消祥佳的選擇。
第二,熱愛這個行業。
就目前來說,程序員的確是比較高薪的職業,所以很多人都在往這個行業里擠,再加上「狼性文化」、「996」盛行,搞得很內卷。
在這種情況下,在這種壓力下,你有沒有問過自己,內心是否還熱愛著這個行業?
我曾有一個讀者,她問我,「請問你能不能做 C++ 課外輔導啊,孩子上大學,軟體工程專業,之前不懂計算機,現在學習壓力很大,想放棄,認為自己不適合學這個,不開竅,我是看了你的文章開始關注你的,現在因為孩子的事沒辦法了,就想問問,能給付費輔導嗎?」
從這位母親的話中,我感受到了她對孩子滿滿的愛,也感受了學弟學妹們身上背負的壓力。程序員的確要學習很多很多知識,除了編程語言,計算機基礎知識,還尺橋陵有各種框架和工具,時間根本就不夠用。
但有一句俗話叫做「干一行愛一行」,既然入了行,就只有風雨兼程。否則,心裡不愛了,學習的熱忱和動力又從哪裡來?
當你累了的時候,適當地給自己放個假,打一場籃球、打一個小時游戲、唱一首歌,甚至談個戀愛,讓緊綳的神經放鬆下來,心裡的那股熱愛也許就悄無聲息地回來了。
第三,樂於分享自己。
分享的方式多種多樣,並不局限於寫博客,你可以在公司的團隊內部做一次培訓,甚至小到站立會的時候發表一些對技術的想法,或者大到在技術大會上做一次演講。
分享會收獲別人的認可、稱贊,崇拜的小眼神,這些點點滴滴的榮譽感會讓你鼓足勇氣,在前行的道路上充滿干勁,進而精益求精,要求自己做得更好。
㈣ 程序員有發展嗎,java程序員的最終歸宿是什麼
中學政治學科的課堂上,辯證唯物主義告訴我們,任何事物都包含著既對立又統一的兩個方面。要如實的反映事物的本來面目,就必須堅持一分為二的矛盾分析法,對矛盾作全面的分析要運用兩分法、兩點論去認識事務的本質。簡單的意思就是,萬事萬物都要看到它好的一面和不好的一面。
IT也是如此,程序員的職業也是如此。「程序員的最後歸宿是什麼!」、「程序員為什麼到了30或35就會想要轉行」、「邊緣化的IT人」等等諸如此類的話題漫天遍野,「程序員吃的就是口青春飯」如一根刺隱隱的扎在了程序員心頭肉上。這已成為程序員們深思的職業規劃問題。
搜了搜論壇里相關的帖子,仔細看看熱心的網友們的討論,不難發現大家各自的論證都集中「轉行」與「不轉行」這兩個對立的觀點上,大家談到了很多,有關於軟體行業這個大背景的討論,也有關於職業規劃與個人現實狀況相結合的討論、更有轉了行的程序員道出了轉行後的心境,等等。
一定堅持奮斗在這一行的IT人說,他們認為問題的根本還是在個人的心態上。他們表示,實際上程序員是完全可以干一輩子的。國外鬍子一大把還干著開發的老外多了去,他們的思維同樣活躍,精力充沛,並且還有大量的經驗和積累。一行行看似簡單的代碼之中卻蘊含了無數思想,足以體現出其功力,而這也並非一日之力所能。有位網友說,他所在單位隔壁研究所的一位年紀60的工作人員,他的程序思維還是很不錯。
IT人確實很累又辛苦,但是真正熬過幾年coding日子的程序員,到哪裡又不受歡迎呢?可以選擇去外資、大型企業作高級工程師,待遇又好,工作也不會像最初做底層開發時那麼得忙。也可以選擇取中小型企業,做技術經理、研發主管。敢闖一點的,在技術、管理、人脈積累到一定的程度的時候,更可以出來創業。又或者在家作soho一族,承接外包項目也未嘗不可。實際上這個行業正在不斷地創新中,因此機會也還是很多。
有網友毫不客氣的指出,矛盾在轉與不轉行中的人,其實就是個人能力的心虛。
城外的人想進城,城內的人想出城,很多其他行業的人還很羨慕IT這個行業,IT之外其他行業的苦楚也並非我們能夠想像。
生活中的壓力,買房子買車,償還貸款,贍養老人,結婚生子等等,這對任何一個行業的現代人來說都是一個要處理的問題。並非只存在於IT這個行業的從業人員中。計算機行業並非那麼的苦不堪言,IT一族雖然掙錢不會太多,相對來說算是比較穩定的,不會太窮。
任何一個行業,想要有更長遠的發展,前進的動力就在於由被動到主動,主動去工作,主動去學習,主動去尋找這個行業中的其他道路,認認真真將這個行業捉摸透,只要做到積極與主動,推動職業發展的強而又力的動力就有了,那麼職業生涯的道路必然就掌握在自己的手中。
少一些浮躁,沉下心來體會技術的真正精髓,踏踏實實的做,最終會有一個好的歸宿。
要在程序中用代碼作詩,要做個IT李白。一部分IT人表示一定要做個純粹的IT人。始終堅持自己的興趣和理想。繼續向軟體狂人、頂尖科學家進軍!。
另一部分IT人,他們毫無遮掩的指出了一個同樣令人發省的問題:現實呢,這個行業確實發展太快,技術的不斷更新,隨著年齡的上升,體力腦力精力不可能隨之快速的適應,不能適應,也就意味著被淘汰,那麼那時該怎麼辦呢?與其這樣,不如提早為自己找尋另外一條路,提早認識這一點,算是對自己的負責。
關於轉行的觀點中也有兩個集中點:行業自身與年齡問題。
30或者35歲的IT人為什麼要轉行,因為生活的關注不同了,有了家庭,不再是單打獨斗,有的是更多一份責任的承擔。年齡的增長帶來了生理上的改變。這是討論的主要觀點之一。
技術的日新月異,各個公司的血液不斷換新,企業想要發展依賴於產品,而產品的開發歸於技術的支持。新老開發人員的不同在於,老一輩的開發人員在年輕時學的技術在現在應用的很少了,生活上上有老下有小,體力和精力投入的要少,學習新技術的能力比不上年輕人,思路也不靈敏了,邏輯分析能力,理解能力逐步減退,唯剩經驗,但是IT屆的經驗不如創新值錢。
相比較,新一代開發人員對新技術的學習及應用所花的時間要多一些,他們的生理機能也正在上風,他們更多的技術起點也是基於此,他們有的是時間和精力投入其中。大部分企業也認為,招聘年輕的開發人員,他們沒有太多生活負擔,他們能將更多的時間投入工作中。公司總是希望自己的員工將精力投入到公司的工作中越多越好,至於員工的其他生活呢,公司又會管你多少?
還有IT人表示現在做開發遠沒有之前那麼熱情了,隨著工作時間的變長,發現當初懷著對技術的崇敬,加入其中,原本以為這是個崇尚技術本身的隊伍,但慢慢發現很多技術管理,技術經理他們的技術並非想像中的那麼好,依靠著資歷換得職位,技術為上的夢想也逐步幻滅。Coding如同打字,代碼貼過來,轉過去,全成了一種體力上的勞動。積極與熱情大大打消了。這也是主動性減少的原因之一。
另外一點就是,國內的軟體業形勢不好,需求乏力,盜版猖獗,成本提高,規模小,導致了軟體業的不景氣。在這樣的大環境下,前景並非樂觀,因此程序員的職業發展也受到了相當大的阻礙。
㈤ 請問,如何才能做一個優秀的程序員
1、養成良好的書寫代碼的習慣,該加註釋的時候一定要加註釋,該大寫的地方一定要大寫,變數命名不能模糊不清。這是基礎,是為了讓別人能看明白你所寫的代碼,不能你寫的代碼只有你自己才看的明白。
2、注意所寫軟體的版本控制。
3、勤奮學習最新的技術,計算機技術日新月異,這點我不說相信你也知道。
4、養成寫開發文檔的好習慣,再接到一個項目時,第一件事情是進行需求分析,然後寫開發文檔,把你每一步要做什麼都先寫清楚,再動手做。
5、不要怕技術難題,在計算機領域,只有不能解決難題的人,沒有人解決不了的難題。
6、虛心象他人學習,即使技術實力比你差很多的人,也肯定會知道一些你所不知道的技術點。
第一種武器:開發工具
至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C和JAVA是我重點推薦的開發工具,C/C以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟體還是用C/C編寫。而JAVA的跨平台和與WEB很好的結合是JAVA的優勢所在,而本人對SUN公司的「網路即計算機」的概念相當欣賞,並相信JAVA即其相關的技術集JAVAOne會成為未來的主流開發工具之一。其次,如果能掌握一種簡便的可視化開發工具,如VB,Delphi,CBuilder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。
第二種武器:資料庫
為什麼資料庫是如此重要?很多應用程序都是以資料庫的數據為中心,而資料庫的產品也有不少,其中關系型資料庫仍是主流形式,所以程序員至少熟練掌握一兩種資料庫,對關系型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。雖然很多資料庫產品提供了可視化的資料庫管理工具,但SQL是基礎,是通用的資料庫操作方法。如果沒有機會中慶塌接觸商業資料庫系統,可以使用免費的資料庫產品是一個不錯的選擇,如mySQL,Postgres等。
第三種武器:操作系統
當前主流的操作系統是Windows,Linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。要想成為一個真正的編程高手,需要深入了解操作系統,了解它的內存管理機差慧制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。Linux作為開發源碼的操作系統,是一個很好的學習平台,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。只有對操作系統有一定的了解後,你會發現自己上了一個新的台階。
第四種武器:網路協議TCP/IP
在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課,網路技術已改變了軟體運行的模式,從最早的客戶/伺服器結構,到今天的WEBServices,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網路協議支持,所以,深入掌握TCP/IP協議是非常必要的。至少,你需要了解ISO七層協議模型,IP/UDP/TCP/HTTP等常用協議的原理和三次握手機制。
第五種武器:DCOM/CORBA/XML/WEBServices
隨著技術的發展,軟體與網路的無縫結合是必然趨勢,軟體系統的位置無關性是未來計算模式的重要特徵之一,DCOM/CORBA是當前兩大主流的分布計算的中間件平台,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規范。程序員需要做的不僅僅是利用商業的開發平台來開發軟體,而是要理解這些技術的初衷,即為什麼需要這項技術,如果你能理解了這一點,再回頭看這些技術的具體實現,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯網上的「世界語」,是分布計算的基石之一。
第六種武器:軟體工程與CMM
現代大型軟體系統的開發中,工程化的開發控製取代個人英雄主義,成為軟體系統成功的保證,一個編程高手並不一定是一個優秀的程序員,一個優秀的程序員是將出色賣圓的編程能力和開發技巧同嚴格的軟體工程思想有機結合,編程只是軟體生命周期中的其中一環,優秀的程序員應該掌握軟體開發各個階段的基本技能,如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟體測試等。一句話可以概括我的看法:「創意無限,流程保證」。
第七種武器:強烈的好奇心
什麼才是一個程序員的終極武器呢,那就是強烈的好奇心和學習精神。沒有比強烈的好奇心和學習精神更好的武器了,它是程序員們永攀高峰的源泉和動力所在。
㈥ 為什麼越來越多的年輕人選擇去當碼農
㈦ 作為一個電腦程序員所要具備那些技能
作一個真正合格的程序員,或者說就是可以真正合格完成一些代碼工作的程序員,應該具有的素質。
1:團隊精神和協作能力
把它作為基本素質,並不是不重要,恰恰相反,這是程序員應該具備的最基本的,也是最重要的安身立命之本。把高水平程序員說成獨行俠的都是在囈語,任何個人的力量都是有限的,即便如linus這樣的天才,也需要通過組成強大的團隊來創造奇跡,那些遍布全球的為linux寫核心的高手們,沒有協作精神是不可想像的。獨行俠可以作一些賺錢的小軟體發點小財,但是一旦進入一些大系統的研發團隊,進入商業化和產品化的開發任務,缺乏這種素質的人就完全不合格了。
2:文檔習慣
說高水平程序員從來不寫文檔的肯定是乳臭未乾的毛孩子,良好的文檔是正規研發流程中非常重要的環節,作為代碼程序員,30%的工作時間寫技術文檔是很正常的,而作為高級程序員和系統分析員,這個比例還要高很多。缺乏文檔,一個軟體系統就缺乏生命力,在未來的查錯,升級以及模塊的復用時就都會遇到極大的麻煩。
3:規范化,標准化的代碼編寫習慣
作為一些外國知名軟體公司的規矩,代碼的變數命名,代碼內注釋格式,甚至嵌套中行縮進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和糾錯,也有助於不同技術人員之間的協作。
有些codingfans叫囂高水平程序員寫的代碼旁人從來看不懂,這種叫囂只能證明他們自己壓根不配自稱程序員。代碼具有良好的可讀性,是程序員基本的素質需求。
再看看整個linux的搭建,沒有規范化和標准化的代碼習慣,全球的研發協作是絕對不可想像的。
4:需求理解能力
程序員需要理解一個模塊的需求,很多小朋友寫程序往往只關注一個功能需求,他們把性能指標全部歸結到硬體,操作系統和開發環境上,而忽視了本身代碼的性能考慮,有人曾經放言說寫一個廣告交換程序很簡單,這種人從來不知道在百萬甚至千萬數量級的訪問情況下的性能指標是如何實現的,對於這樣的程序員,你給他深藍那套系統,他也做不出太極鏈的並訪能力。性能需求指標中,穩定性,並訪支撐能力以及安全性都很重要,作為程序員需要評估該模塊在系統運營中所處的環境,將要受到的負荷壓力以及各種潛在的危險和惡意攻擊的可能性。就這一點,一個成熟的程序員至少需要2到3年的項目研發和跟蹤經驗才有可能有心得。
5:復用性,模塊化思維能力
經常可以聽到一些程序員有這樣的抱怨,寫了幾年程序,變成了熟練工,每天都是重復寫一些沒有任何新意的代碼,這其實是中國軟體人才最大浪費的地方,一些重復性工作變成了熟練程序員的主要工作,而這些,其實是完全可以避免的。
復用性設計,模塊化思維就是要程序員在完成任何一個功能模塊或函數的時候,要多想一些,不要局限在完成當前任務的簡單思路上,想想看該模塊是否可以脫離這個系統存在,是否可以通過簡單的修改參數的方式在其他系統和應用環境下直接引用,這樣就能極大避免重復性的開發工作,如果一個軟體研發單位和工作組能夠在每一次研發過程中都考慮到這些問題,那麼程序員就不會在重復性的工作中耽誤太多時間,就會有更多時間和精力投入到創新的代碼工作中去。
6:測試習慣
作為一些商業化正規化的開發而言,專職的測試工程師是不可少的,但是並不是說有了專職的測試工程師程序員就可以不進行自測;軟體研發作為一項工程而言,一個很重要的特點就是問題發現的越早,解決的代價就越低,程序員在每段代碼,每個子模塊完成後進行認真的測試,就可以盡量將一些潛在的問題最早的發現和解決,這樣對整體系統建設的效率和可靠性就有了最大的保證。
7:學習和總結的能力
程序員是人才很容易被淘汰,很容易落伍的職業,因為一種技術可能僅僅在三兩年內具有領先性,程序員如果想安身立命,就必須不斷跟進新的技術,學習新的技能。
善於學習,對於任何職業而言,都是前進所必需的動力,對於程序員,這種要求就更加高了。但是學習也要找對目標,一些小codingfans們,他們也津津樂道於他們的學習能力,一會學會了asp,一會兒學會了php,一會兒學會了jsp,他們把這個作為炫耀的資本,盲目的追逐一些膚淺的,表面的東西和名詞,做網路程序不懂通訊傳輸協議,做應用程序不懂中斷向量處理,這樣的技術人員,不管掌握了多少所謂的新語言,永遠不會有質的提高。
善於總結,也是學習能力的一種體現,每次完成一個研發任務,完成一段代碼,都應當有目的的跟蹤該程序的應用狀況和用戶反饋,隨時總結,找到自己的不足,這樣逐步提高,一個程序員才可能成長起來。
一個不具備成長性的程序員,即便眼前看是個高手,建議也不要選用,因為他落伍的時候馬上就到了。
㈧ 我的夢想是成為一名出色的程序設計人員,想問問那些成功的朋友們,我要怎樣努力,謝謝大家!
這是一條漫長而艱辛的路