編程師通病
『壹』 為什麼很多人都爭著要去當編程老師
編程要把人想做的事變成要計算機做的事你是中間的翻譯你不但要有人的思維還要有計算機思維人要從計算機的角度去考慮問題才能讓計算機幫助你正確地完成你下達的任務
『貳』 成為一個計算機編程師需要些什麼條件
【怎麼樣】隨著計算機對於社會各個領域的不斷滲透,客戶對於一些專門的應用軟體需求量大增,所以對於程序員的需求也在不斷增加,雖然現在中國的程序員數量已經相當可觀,但是還是處於求大於供的狀態,尤其對於一些技術熟練、有很好的編程習慣的優秀程序員,市場需求量還是很大的。而且程序員的發展空間很大,可以經過努力升級為軟體設計師、系統分析員、項目經理等。不過程序員有事工作相對繁瑣,有時需要經常加班,技術更新快,所以壓力也很大。
【誰能做】① 大專以上計算機相關專業學歷,至少熟練掌握兩到三種開發工具的使用,同時對於資料庫和操作系統有很深入的了解,有一定的英語水平,有相關的數據結構等方面的知識; ② 通過初級或者高級程序員考試或者拿到一些國際、國內認證的證書,有一年以上相關經驗; ③ 軟體結構設計/分析能力,出色的編程能力,掌握了幾種軟體的開發技巧,同時需要有嚴格的軟體工程思想; ④ 較強的邏輯思維能力,團隊精神和協作能力,強烈的好奇心和學習精神,具有永攀高峰的精神。
『叄』 在大學遇到一個垃圾編程老師怎麼辦
可以看參考書、和同學展開討論互學,大學生一定要有自學能力,別指望老師手把手的教了。
『肆』 編程怎麼那麼難學啊
難,很難,非常難!
但最難的不是知識,而是自律,而是能不能合理安排時間,而是能不能做到自我激勵。
說句實在的,互聯網發展到現在這個程度,網路上的學習資源完備且高質的情況下,在學習資源的獲取上,自學和非自學早已沒有界限了。
你報個培訓機構,裡面的老師大概率還沒有B站上的免費課程講的好。
自學與非自學唯一的界限就是有沒有人趕著你,逼著你,監督你。
而如果你的編程學習需要人來督促你,那完了,你從培訓機構出來的那一刻,你的整個職業生涯就定型了,而且一定會走下坡路。
所以,做不到自我管理,自學編程一定是很難的,而且是難上加難,編程的難加上自學的難。
我就直說了吧,我勸你放棄。
所以你除了迎難而上,堅持自學之外,沒有第二條路可以走,哪怕報班暫時逃過一劫,之後也還是要面對。
文章圖片1
效率不高怎麼辦?
你可能會說,報班不是因為自己學不了,而是因為報班有老師可以問,不會出現因為一個知識點卡死的問題,能夠提升效率。
我想告訴你的是,不需要而且不可能。
首先說為什麼不需要,你的80%的編程問題可以通過Bai以及Google得到詳細的簡答,絕對比你的老師更詳細。
剩下20%中的10%可以通過加一個技術交流群來解決。而最後的10%,相信我,你的編程老師也解決不了,不然他不會去當編程老師了。
最好的解決辦法是,私聊GitHub或者公眾號的編程大佬,給他們發個紅包,然後詢問你已經整理好的問題。
再給你分享下我的經驗吧。
在我近十年的工作、學習以及與人交流的過程中,我得出一個結論:不管優秀不優秀,一個程序員的成長60% 都是靠自己,而且你越優秀這個比例就越大。
至於為什麼,也很好理解。
你越優秀,比你更厲害的人就更少,無人可問無人可教,你不靠自學靠什麼?
這也是為什麼我說哪怕你暫時逃過一劫,你之後還是要面對。
程序員這個行業,做不到與時俱進就一定會被淘汰,要麼就越工作就越感覺自己從腦力活動變成了體力活動,單純的搬運。要麼就是沒等到35歲就已經因為能力跟不上企業需求的發展而被裁員。
我一直強調,程序員有沒有35歲危機我不知道,但我知道程序員一定是靠技術吃飯的,而想要持續精進自己的技術,只有靠自學。
除此之外,我一直有一個觀點:程序員不是教出來的,而是培養出來的。對程序員來說最重要的,不是會什麼,而是能會什麼。
知識是死的,學習能力卻是活的。
與其想著如何便捷地獲取知識,不如培養自己獲取知識的能力。
所以,給你推薦一篇基礎能力的文章:
『伍』 我想考高級編程師,請問需要做哪些准備啊
首先選擇一門編程語言和操作系統平台。
操作系統平台國內比較流行的基本有Windows、Linux(Unix)、Mac OS。一般來說大家都選擇的是Windows平台,因為此平台是國內處於壟斷地位的操作系統,而且有很多優秀的開發工具可供選擇,缺點就是Windows平台的開放性不高,往底層探究比較困難(但我對於言必稱底層的觀點比較反感,不是所有搞開發的都要對底層非常了解,做出用戶滿意的系統才是我們追求的根本,玩些底層的trick只是一種自我滿足罷了。當然我們需要有一些掌握底層技術的高手,但這個是個人選擇的問題),而且用慣Windows的程序員在配置、腳本等方面比較弱。Linux是開源平台,當然從理論上你可以操縱Linux的一切,但是有幾個人能夠達到這一水平?剛剛開始學習開發的程序員,在Linux上也僅僅能夠開發一些應用軟體罷了。Linux下的開發工具不夠人性化,但這種情況正在逐步得到緩解,Eclipse就是非常出色的開發平台。在Linux下開發,你可以得到大量優秀的源代碼,並且一切都是透明的(只要你想),但你必須學習很多命令行指令,掌握各種系統和參數配置以及腳本方面的知識。
編程語言的選擇更是令人頭痛,我涉獵不多,對於有些語言,我無法給出任何建議,只好等這方面的高手來給大家補充了。我僅僅對C++和java進行一些說明,當然這個也僅僅是基於個人體會,絕對不是權威觀點 :P
C++仍然是目前佔主流的開發語言(詳細的可以閱讀TCPL中的相關論述),而且一種語言的發展或消亡都是一個漸進的過程,在可以預見的將來,C++仍然是一門舉足輕重的開發語言,但其所針對的領域和方向可能會有所調整,我認為最主要的變化是C++會逐步從商業MIS系統市場上退出。選擇C++的理由是關於C++的優秀開發書籍和開發工具最多,相關的資源也異常豐富,待對於一般應用程序的開發掌握之後,無需過渡,就可以深入學習各種技術,因為現階段講述系統底層奧秘和高級技術的書籍,基本都是選用C\C++做為示例語言。加上微軟精心打造的開發平台Visual Studio或Borland的C++ Builder系列,學習起來更是如虎添翼。但C++現在的缺點也是比較明顯的,我最深的感觸就是對於XP和Agile Development的支持不好。
Java簡化了C++的語法,學習起來比較容易(但隨著Java的日益普及和發展,是否能夠繼續保持這一優勢,我不敢斷言),Eclipse是非常優秀的Java開發平台,支持XP的整個過程:設計、測試、編碼、重構……現階段敏捷軟體開發的主要語言就是Java。而且Java的跨平台特性更是非常大的優勢。
實際上,選擇哪門語言都沒有關系,根據你的發展規劃和目前身邊的環境選擇就可以,沒有必要跟風,其後的堅持才是難點。
好,假設你選擇了C++做為開發語言,在Windows平台上開發,那麼我給你如下的學習建議(其他的選擇請各位積極補充……):
C++語言的學習當然是基礎,這個階段由於沒有任何在特定平台上的開發經驗,我們只能按照書中的例子一個一個輸入運行,暫時告別熟悉的圖形界面,回到古老的DOS了。參考書的選擇是這個階段很多朋友關心的,Stan Lippman的《Essential C++》和《C++ Primer》是我優先推薦的,而《Essential C++》因為篇幅較小,講解內容適當,而且對C++ STL的運用有不少描述,顯得相當實用,我認為最適合初學者使用。無論選擇了那本書做為入門教材,都應該逐個例子逐個例子的消化,不要貪快,但同時要對重點內容有所側重。我們學習任何東西都是為了解決實際問題,所以請把重點放在我們實際中最常用的部分,而不要過多的追究一些細節和艱深晦澀的不常用技術。
此刻我們會碰到很多過後看來非常簡單幼稚的問題,比如為什麼編譯出錯,為什麼按照書中的例子輸進去卻無法通過編譯,找不到頭文件等等,大體上這是因為剛剛接觸程序開發,對程序理解還很初級,以及對於所使用的開發環境不夠了解,特定編譯器對標准C++的支持程度不一導致。請多閱讀關於所使用開發環境的各種文檔,以及查閱幫助文檔。以我最經常使用的Visual C++配合MSDN來說,當出現一個我不能理解的編譯錯誤時,按F4鍵編輯器就會自動跳到當前錯誤地點,下面的輸出窗口也會給出錯誤代碼(比如C××××),把錯誤代碼記下,打開MSDN,在索引一欄輸入錯誤代碼,就能夠查到詳細的關於此錯誤的說明,當然,是英文的(不要問你不會英文怎麼辦,這是基本要求)。現在的開發工具查錯排錯非常方便。當然,有時很多錯誤原因並不是編譯器所提示的地方,而是往前或往後一些地方,長期的編程經驗可以提高查錯速度。此時也請多練習練習Debug技術。
此階段只要能夠掌握C++的基本語言要素,對結構化程序設計和基於對象的設計有一定理解,能夠完成一些簡單的小程序就可以結束了,畢竟DOS程序現在很難勾起我們學習的慾望了 :P 在此之後可以視自己的情況決定是否學習數據結構,數據結構是程序員的必修課,不可或缺,地位非常重要,即使你現在希望馬上進入圖形界面程序開發的世界,這一課我也提醒你記著早點補上。
終於可以邁入圖形世界,我們要從SDK編程開始,不要擔心,這不會花費你太長時間,但卻是對Windows程序運行機制進行深入了解的好時機,在此的努力都不會白費(trust me),此時的參考書沒有什麼好考慮的,基礎的有Charles Petzold的《Windows程序設計》,進階的有《Windows核心編程》。請從《Windows程序設計》開始,Charles Petzold的書通俗易懂,學習起來非常輕松,而且對你的語言要求不高,只要懂C就可以了。
此時容易碰到的問題大多與項目設置有關,如果使用Visual C++,請按Alt+F7調出項目設置對話框仔細檢查,並閱讀相關文檔,熟悉各項配置的意義。
此階段請重點掌握Windows SDK程序的編寫方法,Windows程序的運行機制和Windows消息機制,和常用的Windows API。我們還可以更進一步:嘗試用前一階段學到的C++知識對過程化的SDK程序進行初步的改造,將我們敲入計算機的程序變得可重用,按照自己對基於對象思想和面向對象思想的理解來重新編寫例子程序。
OK,現在你已經初步入門了,掌握了C++的基本用法,對面向對象有了一點模糊而自以為是的認識,也能夠寫出Windows程序了,雖然還有點簡單,還有點醜陋,不過,總歸是圖形界面啊。開始有點感覺了,是嗎? :P 別急著往前沖,停一停,將C++和Windows SDK的基礎打牢,貪多嚼不爛嗎。此時有很多經典書籍等待你去掌握,也有幾乎無限的題材供你練習,請盡量多閱讀接觸下面的資源:
• 《C++ Primer》
• 《Windows核心編程》
• 《應用程序調試技術》
• 面向對象開發設計方面的書籍
• MSDN的Platform SDK部分,Periodicals部分(包含了大量有價值C++、SDK方面的技術文章)
• CodeProject里相關的源代碼是很好的補充學習資料
現在繼續往前走吧,利用SDK開發畢竟有時太過於費時費力,還是使用更高級的應用程序開發框架的好,主要的有MFC和VCL,關於這些框架誰好誰壞的爭論我已經聽煩了,一句話,能幫助我們完成任務就行,它們無非都是工具,你自己隨便選擇吧。不過選擇好之後,你應該明白,對於你的工具,了解越深,越能發揮它的威力。如果你選擇了MFC,我建議學習下面的書籍:
• 《深入淺出MFC》:關於此書毋庸多說,盡管有人不停的貶低,但它的地位是無可置疑的,而且也是對我最有幫助的書籍之一。
• 《MFC程序設計》
• 《Visual C++技術內幕》
然後就停止找書吧,網上開發站點的數不勝數的源代碼就是最好的老師了……
返回頁首
學習過程中碰到問題我該怎麼辦?
我始終認為學習軟體開發過程中遇到的問題只有自己盡最大的努力去解決,才能收到最大的成效,對於那些動不動就把問題發到網上指望高手幫你解決的做法我非常不贊同,因為這樣你並不能從中學到多少。我建議的做法是,首先嘗試自己獨力解決問題,花幾個小時解決一個問題,是很正常的,不要幾分鍾解決不了就放棄了;實在無法解決的時候,請嘗試盡量減小涉及范圍,將問題歸結一下,初步形成自己的結論;然後利用搜索引擎或者開發論壇中的搜索功能來搜索是否有對於自己問題的解答;實在沒有的時候,再發帖子求助。請了解一點:你遇到的問題都是別人遇到過的,網上肯定有現成的解決方法(因為你還沒有到開發研究前所未有的問題的水平:P),只看你找不找得到了,請盡力去利用現有的資源而不是麻煩別人。
CSDN的論壇、MSDN在線文檔都是非常好的資源,基本上我們遇到的問題在這里都能找到解答。
『陸』 編程師一個月能賺多少
編程師一年左右的經驗的話薪資應該在10000左右,主要還是看自己的技術方面是否夠扎實,如果技術好的話出來就差不多一萬多了,所以說有的時候工作年限是一方面,但是跟重要的還是你的技術是否扎實符合公司的用人需求。
2017 年AI 編程工程師平均年薪為 34 萬元,接近 IT 工程技術類的兩倍,而有 10 年以上經驗的 AI 工程師,年薪高達 140 萬元,而 IT 工程師還不到 55 萬元。
業內人士表示,由於人才匱乏,人工智慧工程師的年薪水漲船高。博士畢業進入企業,起薪或可高達百萬元,「否則根本留不住人」。而且,即便這樣的人也很難「上手就用」,都要在公司經過數月至一年的專業培訓。
『柒』 自學編程靠譜嗎如何做
編程一說,無非就是讓你學一門新的語言,需要一點英語基礎,不過並非要求那麼高。因為即使是英語不錯的人學編程很多函數、頭文件、關鍵字還都是要從頭學起。所以如果你想自學編程是可以的,不過初級水準自己還是不用太累可以達到的,但是想成為高級程序員是要花費一番功夫的。
首先,萬事開頭難,學任何一種程序語言都是如此,等你慢慢入門了,你就會發現各種不同的程序語言其實都是有共同點,以及所謂的觸類旁通。需要看視頻或是仔細學一下,然後慢慢入門。剛開始學,先選擇一門比較有市場有水平的語言,他然後好好學,務必一定要多練多動手,這是學程序必須的一點。建議先學C++,然後可以考慮java;C語言是基礎,java是一種比較實用也挺有意思的一種語言,你自己也可以上網搜一下,看看大家的推薦。
其次,就是大量的練習,自己編寫一些經典的程序,大量的自己動手,平時感覺有意思的東西要學會用程序去解決,要成為編程師,就要學會有用編程解決一切問題的覺悟。然後去看一些比較難的程序,花功夫去分析,一點一點的把它分解繞後慢慢變成自己的東西。
最後,其實有些東西還是要去找些資料,主要還是在自己。全部手寫,花了20多分鍾,我只能起個引導作用,其他的靠你了。
其實初中生、大學生的差距在哪裡呢?無非就是後者多了一些理論經驗,眼光開闊一點,你要做的就是大量不你缺失的經驗,做好決定就不要聽別人的閑言碎語,一往無前,加油!!!!
PS:編程視頻教程網上多的是,可以去B站看看,很多大佬都在那裡!也可以找一些學習網站,有一些免費的視頻教程可以看看!
『捌』 編程師怎麼編程的
1、一個IT工程師應該具有的技能
我認為實用技能包含3個方面,如圖1所示:
圖1
這些都是很重要的:
●編碼:你必須能夠在限定時間內編寫出高質量的代碼。
●經驗:具有相關經驗表明你對該行業的熱情,並能夠在一開始就進入工作狀態。
●理論:理論知識是IT工程師的基礎,好的理論知識能夠讓你快速解決新出現的問題。
而准備工作面試的過程是一個提升自己各種能力的絕佳機會。
1、提高你的理論知識
(1)學習C語言
C語言是編程的基礎。因此,學習C語言能為我們了解高層概念打下堅實的基礎學習C語言的基礎知識並不會花太長時間,只需要幾個星期的時間一般就能夠掌握。C沒有太多的抽象封裝,這就使得C語言相對簡單,和其他人一樣我學習C語言是看《C Programming Language》這本書(我們可以看譚浩強的書)。
一旦你能夠真正理解C語言中的指針和內存管理,C就會變成一門有趣的語言,因為它將幫助我們從處理器層面(底層硬體)來理解語言,而這正是其他大多數的高級語言所不具備的。同時了解這些概念,也將有助於你了解更高層次的語言工作。
(2)了解數據結構和演算法
雖然在網站/應用程序開發中編寫復雜的演算法和數據結構比較少見,但是數據結構和演算法在我們編寫復雜系統的時候將會影響我們的思維。即使你不需要編寫自己的數據結構,你也可能會在編程中使用到他,因此,了解基本的選擇是至關重要的。
我推薦這本書,《演算法導論》。由於這本書是很長,如果你沒有時間把他讀完,那也要學習其中的排序,哈希表,二叉樹,字元串匹配部分。
一旦你很好的掌握了數據結構和演算法,你會發現這些概念將只是將你做的每件事都總結成問題而已。
2、比較編程語言
一開始,你會經常接觸多中編程語言。你可能還需要快速學習新的語言和概念。
為了加快學習,學習不同語言有助於我們了解他們的概念以及他們的相似及不同之處。
最好的辦法是在下面每種風格的語言中學一門語言:
●底層:C語言。
●面向對象:JAVA,C++等。
●動態語言,高層次的語言:python, ruby 等
●函數式語言: Lisp, Erlang, Haskell等(之前將其翻譯為功能性語言,感謝zzljlu的糾正)
3、至少精通某一種語言和一種框架
這能夠說明:
●你既然能在一個領域成為專家,就表明你同樣能在其他領域做得一樣好。
●你理解這些語言/框架的細節可以讓你根據不同技術的優缺點來做出決定。
●你有激情去深究一個項目並且深入語言的最底層。
想要成為專家需要花一定的時間和經歷。這里有一些建議:
●嘗試做不同的項目,這樣能夠幫助你理解編程語言。
●閱讀其他人的技術博客。 Hacker News是一個很好的技術博客。
●為開源社區做出自己的貢獻,例如在GitHub上能夠查到你的代碼。
4、提高實際編碼能力
在這里我們在面試時主要通過3中方法來測試工程師的編碼能力:
●你貢獻到開源社區的代碼(例如,在GitHub上)
●現場編寫一段代碼
●連續2小時編寫代碼的挑戰
一個工程師的編碼能力的質量和速度是重要的,而這只能來自於實踐經驗。
另外,使用合適的語言和框架對於一個項目也是很有幫助的。例如用Python和Ruby等腳本語言可以比使用像Java、C++這類靜態語言的許多情況下更快。因為我們知道一個求職者可能在動態腳本語言方面沒有太多經驗,所以我們面試的時候並沒有將其作為重點。
做一些有挑戰的編程測試可以磨練你的技能。網上可以找到了大量的資源,這也可以測試你的編程速度,從而讓你可以進一步提升你編寫代碼的速度。Google Code Jam上面有一些不錯的題目。
5、提高您的相關技術經驗
有一些相關工作經驗是很重要的:
●這表明你對編程有一定的激情
●你的開發經驗可以引導公司里的其他人
●你將會在工作中一鳴驚人。
●你有能力可以探究更多的現代技術,並有一個更加全面的視角
你可以從你以前的公司里或者其他項目中學到這些經驗。
6、結論
當然,在技術方面僅僅是一個硬幣的一面。第2部分中,我將探討非技術方面。