導航:首頁 > 程序命令 > 程序員積累什麼最好

程序員積累什麼最好

發布時間:2022-07-18 00:26:28

『壹』 作為一名優秀的程序員,要具備哪些基本功

程序員(英文Programmer)是從事程序開發、維護的專業人員。
作一個真正合格的程序員,需要具備:
1:團隊精神和協作能力
團隊精神和協作能力是作為一個程序員應具備的最基本的素質。
2:文檔習慣
文檔是一個軟體系統的生命力。作為代碼程序員,必須將30%的工作時間寫用於技術文檔。沒有文檔的程序員勢必會被淘汰。
3:規范化的代碼編寫習慣
知名軟體公司的代碼的變數命名、注釋格式,甚至嵌套中行縮進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和糾錯,也有助於不同技術人員之間的協作。
4:需求理解能力
程序員要能正確理解任務單中描述的需求。
5:模塊化思維能力
作為一個優秀的程序員,其思想不能在局限當前的工作任務裡面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。
6:測試習慣
測試是軟體工程質量保證的重要環節,但是測試不僅僅是測試工程師的工作,而是每個程序員的一種基本職責。程序員要認識測試不僅是正常的程序調試,而要是要進行有目的有針對性的異常調用測試,這一點要結合需求理解能力。
7:學習和總結的能力
程序員是很容易被淘汰的職業,所以要善於學習總結。

『貳』 程序員需要具備哪些東西

程序員工作三連

以上是程序員的工作三連。

『叄』 程序員如何通過個人積累打破職業瓶頸

方法一:跳槽。對於不少程序員來說,跳槽不但是一個能夠漲工資的爐子,還是能夠打破自己瓶頸的方法,在一家公司待久之後,從事的工作內容很多是重復的,積累的經驗和知識其實非常少。所以選擇跳槽是一條可以嘗試的路,能夠擴寬你的眼界,增加你新的知識點,同時在挑戰更高難度的項目的時候,往往能夠幫助你發現全新的方向。

方法二:向高手學習。有些時候單純依靠自己來突破瓶頸是很難的一件事情,找一個高手來帶,向他學習,往往能夠起到醍醐灌頂的作用,讓你的思維出現全新的擴散,不管是演算法還是編程開發,都能夠幫助你有一個突破。

方法三:轉型。如果你想突破自己,認為自己在程序員的工作過的沒什麼意思,那麼尋求轉型,找到一個全新的方向去突破往往也是可行的,比如做其他感興趣的工作,帶領團隊轉管理崗位,這些都是新的思路。

『肆』 電腦程序員要學什麼知識

程序員的崗位需求很多,例如大型網路公司、軟體開發公司等等都需要程序員。
程序員需要學習:

1、掌握數據及其轉換、數據的機內表示、算術和邏輯運算,以及相關的應用數學基礎知識;
2、理解計算機的組成以及各主要部件的性能指標;
3、掌握操作系統、程序設計語言的基礎知識;
4、熟練掌握計算機常用辦公軟體的基本操作方法;
5、熟練掌握基本數據結構和常用演算法;
6、熟練掌握C程序設計語言,以及C++、java、Visual Basic中的一種程序設計語言;
7、熟悉資料庫、網路和多媒體的基礎知識;
8、掌握軟體工程的基礎知識,了解軟體過程基本知識、軟體開發項目管理的常識;
9、了解常用信息技術標准、安全性,以及有關法律、法規的基本知識;
10、了解信息化、計算機應用的基礎知識;
11、正確閱讀和理解計算機領域的簡單英文資料。
程序員必備技能:
1、熟練開發工具
做為一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點推薦的開發工具,C/C++以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟體還是用C/C++編寫。
而JAVA的跨平台和與WEB很好的結合是JAVA的優勢所在,而JAVA即其相關的技術集JAVAOne很可能會成為未來的主流開發工具之一。
其次,能掌握一種簡便的可視化開發工具,如VB,PowerBuilder,Delphi,CBuilder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。
另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。
2、熟知資料庫
作為程序員,他們自然有自己的理由:很多應用程序都是以資料庫的數據為中心,而資料庫的產品也有不少,其中關系型資料庫仍是主流形式,所以程序員至少熟練掌握一兩種資料庫,對關系型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。
雖然很多資料庫產品提供了可視化的資料庫管理工具,但SQL是基礎,是通用的資料庫操作方法。如果沒有機會接觸商業資料庫系統,可以使用免費的資料庫產品是一個不錯的選擇,如mySQL,Postgres等。
3、了解操作系統
當前主流的操作系統是Windows,Linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。
要想成為一個真正的編程高手,需要深入了解操作系統,了解它的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。
Linux作為開發源碼的操作系統,是一個很好的學習平台,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。懂得網路協議TCP/IP。
在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課,網路技術已改變了軟體運行的模式。
從最早的客戶/伺服器結構,到今天的WEBServices,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網路協議支持,深入掌握TCP/IP協議是非常必要的。
至少,需要了解ISO七層協議模型,IP/UDP/TCP/HTTP等常用協議的原理和三次握手機制。
4、明白DCOM/CORBA/XML/WEBServices存在的意義
隨著技術的發展,軟體與網路的無縫結合是必然趨勢,軟體系統的位置無關性是未來計算模式的重要特徵之一,DCOM/CORBA是當前兩大主流的分布計算的中間平台,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規范。
XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯網上的「世界語」,是分布式計算的基石之一。
5、不要將軟體工程與CMM分開
大型軟體系統的開發中,工程化的開發控製取代個人英雄主義,成為軟體系統成功的保證,一個編程高手並不一定是一個優秀的程序員。
一個優秀的程序員是將出色的編程能力和開發技巧同嚴格的軟體工程思想有機結合,編程只是軟體生命周期中的其中一環,優秀的程序員應該掌握軟體開發各個階段的基本技能。
如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟體測試等。
6、需求理解能力
程序員要能正確理解任務單中描述的需求。在這里要明確一點,程序員不僅僅要注意到軟體的功能需求,還應注意軟體的性能需求。
要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有著兩到三年項目經驗的熟練程序員對這一點沒有體會的話,只能說明他或許是認真工作過,但是沒有用心工作。
7、模塊化思維能力
作為一個優秀的程序員,他的思想不能局限在當前的工作任務裡面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。
這樣做可以使代碼能重復利用,減少重復的勞動,也能使系統結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。
就業方向:
1、網路開發

現在網路已經成為世界通訊的一座橋梁,好像Javascript、php、Ruby這幾類開發語言大部分是用作網路開發方面。

2、企業軟體開發

JAVA、C#、VB這幾類開發語言都實現了面向對象開發的目標,更多時候用於企業系統的開發。

3、系統軟體
C語言、C++、Object-C這些軟體更多是用在系統軟體開發,嵌入式開發的方面。

當然,這分類不是絕對,像JAVA、C#、VB很多時候也用於動態網站的開發。在很開發項目都會使用集成開發的方式,同一個項目裡面使用多種開發語言,各展所長,同步開發。
但所以在剛入門的時候,建議先為自己選擇一種合適的開發工具,「專注地投入學習,全力一擊」。

『伍』 要做程序員需要學會什麼

其實簡單來說,程序員的工作就是使用編程語言,根據需求寫出一個程序。
但是,在這個過程中,涉及如下幾個方面:

使用的編程語言 程序員需要選擇一門或者多門語言來編程,不同的語言適合編寫不同的程序,目前主流編程語言包括,Java、JavaScript、Python、C++、php以及其他小語種等等,每種編程語言適合開發的程序有所不同。目前從程序應用分來,主要可以分為三類a 企業應用,主要用於解決企業業務。各種企業管理後台系統,銀行系統,公安系統,圖書管理系統等等。
b 互聯網應用,面向互聯網用戶,為互聯網用戶提供各類服務。比如現在的京東淘寶各類電商系統等。
c 移動應用,各類在移動端使用的APP,有面向互聯網用戶的APP,也有面向企業內部的APP。
目前相對而言,在移動應用和互聯網應用方面,資本投入比較熱的風口,程序員的薪資較高。企業應用,發展了很多年,相對平穩。

2. 明白需求,實現需求
需求就是編寫程序的要求。一個程序要編寫成什麼樣子,具備哪些功能,都是由需求來具體說明。程序員要需要能看懂需求文檔,並且能准確地使用編程語言,根據需求中的要求來編寫成程序。企業開發的項目,往往會由該程序的架構師提供一個程序框架,程序員在該框架的規范下進行編程,實現需求的功能,以確保程序的規范、可讀,以及可維護性。

3. 日常工作寫程序
一個軟體開發一般流程是產品經理根據用戶需求做一個項目出來,然後UI設計師做一些圖片設計,前端開發編寫頁面,後台開發編寫核心編程,然後介入一些大數據和人工智慧,通過測試之類上線實施,後期還有運維進行相關維護。
程序員一般大多指的是前端和後台寫代碼程序的開發人員,除了編寫代碼,可能還需要通過介面和其它系統對接,實現系統間的數據交換。像單體測試,是程序員對自己寫好的程序單元進行測試,檢測這個程序單元數據輸入和數據輸出是否符合預期等等。測試出來的問題,需要修改正確,然後再測試,直至沒有問題。和同事共同開發的時候也需要聯合測試,以及用戶測試過後如果存在BUG繼續進行修改。

『陸』 做一個程序員應該要學會些什麼

最大限度的相信產品經理的方案,尤其是團隊的產品經理擁有很好的技術背景、以及行業經驗,畢竟在團隊裡面產品經理是離用戶最近的人。最大程度的滿足用戶需求,用戶是上帝,哪怕他什麼都不懂。

『柒』 想成為一名出色的程序員,需要掌握哪些知識

首先要熟練一種編程語言,編程是一通百通的,以後學別的語言就可以基於這種語言的理解,學起來會快好多;
其次,演算法與數據結構是很重要的,不但以後找工作會考到,在實際的運用中也會起到潛移默化的作用;
第三,好的程序員是要靠代碼的積累的,程序員光看書不實際是不會深刻理解語言的;
第四,好的程序員要多看代碼,尤其大師寫的代碼,現在網上開源的代碼不在少數,一搜一大把,要比較研究,才會有所收獲;
第五,優秀的程序員不僅要擅長一門語言,還要熟悉多門語言,不同語言的思想方法是不同了,接觸了別的語言,會對自己使用的語言有更好的理解和運用;
第六,程序員還要熟練語言的用法,還要了解語言的原理,比如怎麼樣讓寫代碼可以讓程序崩潰等等。
第七,程序員不僅要會寫代碼,還要寫好看的代碼,格式規范必須嚴格要求,這樣不僅自己看的輕松,也是對別的程序員的負責;
第八,還要了解數據的保存和讀取等等。
這些是我所有能想到的了。。。

『捌』 初學程序員要掌握些什麼,要怎麼學習

零基礎的我該如何學習?
如果想做一個程序員,在沒有基礎的情況下,買書自學是一個辦法,但是大多數人會因為沒有相關的基礎知識,導致看書看得一知半解,因為有不同的語言,不同的開發環境,在你不了解的時候,買的書不一定合適。
比較速成的辦法還是去報名一個培訓班,系統的學習一下基礎知識,然後選擇一個發展方向,再具體的針對性的買點書籍來學習。
遇到不懂的問題的時候,盡量少的去網上上直接找答案,而是去各種論壇或官方網站了解比較底層的原理,然後思考解決方案,這樣才能知其然知其所以然。
程序員是一個不停學習的崗位,你需要每天除了工作以外,花一定的時間了解新的技術或正在使用的技術的原理,這樣才能一直提高,不然,可能會被淘汰。
在你了解代碼以後,你還需要了解邏輯,就等於你要熟悉你所從事的這個領域及行業,比如你做教育,那就要熟悉教育行業的業務,做財務,就要熟悉財務的邏輯,這樣才能寫出好的代碼。
首先要學習什麼?
我覺得可以先選一門簡單的語言進行學習,這樣可以先對編程有一個初步的認識,我學習的第一門語言是c,學得不精,簡直就是入門中的入門。我覺得c、java、Python都是不錯的入門語言。
然後這樣一邊認識編程,一邊去了解自己想開發的東西需要什麼技術,比如開發安卓要用java。
詳細的了解之後需要的就是不斷地去補充這些自己不懂的東西。我覺得沒有必要在第一門語言選什麼上糾結太久,就我個人而言,才學編程對時候連什麼是面向對象編程都不知道,根本無法知道自己真正需要的技術是什麼,又怎麼選呢?
我認為最重要的就是盡快選一個語言開始學習吧!
給自學成材的新手程序員的六個建議
1、讓編程成為一個習慣
想要培養一項技能的最好的辦法,就是將他融入到我們的生活並成為我們的愛好。其實說白了,就是讓這個愛好成為一個習慣,一天不去做這件事情,都會覺得少了什麼。在不知不覺中,這個習慣會像滾雪球一樣積累起來。
對我來說,養成這種習慣首先就是要對「拖延症」說不。
比如,你想鍛煉下自己的寫作能力時,但是沒有好看的本子,沒有好的靈感,沒有安靜的環境....總之就是找各種理由一拖再拖,最後就不了了之了。但仔細想想等你有了好看的本子,舒適的環境....就能寫出好的文章嗎?不!我很明確的告訴各位,文章的功底是隨著你不斷的積累而成的。
所以,當我們決定去做某件事情,請立刻!馬上!現在就要開始行動!
接著從小事入手,如果我決定開始跑步,那麼最初只會要求自己每周跑兩、三天。雖然看起來要求低,但這樣的做法更容易長期堅持,且不會被其它因素所輕易干擾。
同樣的思路也適用於學習編程。每周拿出幾天,每天拿出幾個小時,編程學習就這樣慢慢步入正軌。如果大家覺得沒心情閱讀編程教材,沒關系,視頻網站上的技術講座能夠起到同樣的作用。
2、把工作拆分成小塊
對待編程工作,我們沒必要像健身狂人那樣一口氣做到筋疲力盡。與其直接編程2小時,我們完全可以先做25分鍾、而後休息5分鍾,整個過程重復4次。很明顯,25分鍾這樣的短周期更容易堅持也不會帶來多少壓力。
不過這樣的方式應該配合更為靈活的執行思路。如果您感覺狀態很好,而25分鍾才剛剛完成熱身,那就繼續做下去並努力讓自己抓住這種狀態。
另外要向大家推薦番茄工作法,這是種學習新型技能的良好機制,因此推薦各位認真了解。
3、閱讀別人的代碼
經過這幾年的編程學習,我認為想要提升編碼水平的最佳途徑就是多看、多寫,然而閱讀別人的代碼也確實是快速提升代碼水平的一個技巧。
4、尋找良師益友
5、寫技術文章
如果大家學習了一種新的編程概念,但不能確定自己是否已經真正掌握,可以寫技術博文加以檢驗。一來可以提高自己的編程水平,二來也能提高自己的知名度,將來找工作也會比別人多一個機會。
6、保持耐心
對於人生來說,其中任何目標的實現都離不開耐心。編程學習就如其它任何學習任務一樣,都需要反復努力並投入大量時間。
在這個過程中,您一定會經歷高潮與低谷——別被這些曲線影響了心情。接受已經發生的一切,並盡可能避免其中不好的部分。
就像打高爾夫球一樣,我們的手感總在不斷浮動,但只要堅持到底,您最終總能成為一個大神呢?
總結
啰啰唆嗦的說了這么多,也算是自己當初自學找工作的一個縮影,希望給那些還掙扎在自學之路上的小夥伴帶來些許的信心。

『玖』 程序員積累什麼東西才是真正的實力

姚冬回答的非常好,我狗尾續貂的說幾句。

我們都知道學習能力很重要,那麼學習能力從何而來,除了去看書上課這種,如何在實踐工作中學習成長?
我之前微博說了一個籠統的概念,什麼是能力? 對待問題的態度,以及處理問題的思路和方法。

先說態度

你伺服器偶爾出501錯誤,也許比例不高(知乎也出現過很多次),很多程序員,沒錯,是很多,假裝看不見,不在乎,或者歸咎於人品問題。 這就是態度問題。
再往後,負載高了或者其他什麼原因,突然頻繁出現501錯誤,不去追尋深入的原因,而是找各種借口, 什麼IDC服務商不好,伺服器品牌不好,操作系統不好,資料庫不好,CDN不好,網路狀況不好,web server不好,甚至,直接對Boss說我們被DDOS啦!(遇到過,幫他Boss找過多個安全專家會診,最後發現根本不是DDOS,是程序員太爛。)

這就是態度,觸目驚心,如果能對問題有敏感性,能知道對任何小的,輕微的問題有足夠的敏銳度,你就有了一個快速成長的基礎。對問題的敏銳度是非常重要的。很多性能或程序邏輯上非致命的bug,在不夠敏銳的時候是發現不了的,但是一旦進入特殊場景就會驟然爆發,你多一點敏銳度,就會減少這種危機的風險。

第二個態度是解決問題的態度,有人對自己的解決方案信心滿滿,認為萬無一失,但有的人就會多留一條後路;就好比你說我伺服器要不要做安全加固,肯定要做對不對,要做到盡可能嚴謹和周全,但是你資料庫保存密碼的時候是不是還要加密?而且要隨機salt,不就是防止萬一依然有漏洞被人拿庫怎麼辦么。程序也一樣,以前寫的一些服務端守護進程,有bug,會莫名其妙的終止,這個bug當然要定位,要修復,但是同時,寫一個cron檢查這個守護進程狀態,一旦遇到終止給予自動恢復,這就是第二手准備,即便你多麼不希望他執行,這個准備還是要做的。對問題 做兩手甚至三手准備,也是優秀程序員,架構師的關鍵素質。

第三個態度是基於溝通與理解的態度,產品或運營提了一個不靠譜需求,一句話打回去當然很爽很威風,但是有沒有仔細溝通分析過,這個需求基於怎樣的實際訴求,這個實際訴求有沒有更合理的實現途徑,一句話「這個沒法做,這個實現成本太高」,不是正確的溝通態度,而且,最優秀的產品,往往是實現了那些原本人們認為無法實現的訴求。

這樣的態度,才有了一個持續進步的基礎,下面說思路和方法。

優秀 的程序員和平庸的程序員,如果只看敲打代碼的速度,我覺得是分不出來的,也許每人都可以一天寫很多行代碼,但是遇到問題後,平庸的程序員的解決效率,和優秀程序員相比就會有天壤之別。 所謂解決效率,不外乎對bug的分析、定位,以及 思考。

最基本的一條,看執行日誌,看各種日誌,web server的日誌,資料庫 的日誌,慢查詢日誌,binlog日誌,php的錯誤日誌,等等等等,線上出問題瞎猜連日誌都不看的大有人在。看日誌不仔細不完整的也大有人在,你能去認真研究日誌已經超越很多人了。

第二條,模塊測試和斷點分析,程序員一個壞習慣就是上來就寫很大一坨代碼然後再執行,不知道一個模塊一個模塊來寫來測試,執行出了問題不知道設置斷點,縮小范圍逐步分析。斷點分析非常簡單,將整個代碼中插幾個中間輸出,觀察哪個環節出了問題,或者觀察每個環節的系統開銷,對調錯和性能優化都非常重要,高手們大概認為這是ABC的東西,但是就這玩意我看到的大部分程序員都沒有這個習慣。

第三條,錯誤信息 的理解和搜索,搜索引擎上有各種豐富的技術資料和技術問答,你所遇到的錯誤信息和錯誤提示,通常都能在網上搜索到,當然,搜索到後要結合你的場景認真思考,並理解透徹,而不是照貓畫虎的去處理,否則可能這次運氣好就蒙對了,下次運氣不好又不知道怎麼回事了。

第四條,不斷總結歸納,對一個問題,一類問題,以及不同類型的問題,善於歸納整理,不斷反思自己的問題,即便是不出bug的代碼,你經過一段時間去回頭看,也有很多思考不正確不合理的地方,有很多優化點,如果你覺得自己的代碼一向牛逼,毫無破綻,那你一定是原地踏步,毫無進展。

關於 歸納總結,我說個案例
以前我們有個系統,請求量非常大,負載非常高,有個不錯的技術經理來處理,他列了幾個升級計劃,都很靠譜,去執行了,效果非常好,然後我們跟進匯報的時候他來講,做了幾項升級,整體效果如何,然後我就批評了他。
我批評了什麼呢?他是一起做的升級,然後一起觀測的效果,那麼這幾個方案里,具體每個方案的實際效果怎樣,對提升的幫助多大,他沒有任何數據。所以對具體每個升級方案的價值和重要性,他沒有任何概念。你正確的解決了問題,卻沒有認真的去歸納整理,你的收獲是有限的。一起做升級不能說是錯的,但是效果評估需要單獨去做,而這個數據是非常有價值的,知識積累,不是你處理過的就一定有積累,而是整理過的。

大概就這些

最後重述一遍
什麼是能力?

遇到問題的態度
處理問題的思路和方法

這就是能力

點贊的那麼多,答謝各位,補充幾條思路吧,是上面幾個方法的具體擴充

補充1:善於提問,你能得到怎樣的答案,取決於你提出怎樣的問題。
你遇到問題,你應該知道,從哪裡去問,去問什麼。
我常見的一個測試題是這樣的。
資料庫目前掛了,我就是伺服器,我不知道為什麼掛了,你是一個優秀的分析師,現在我來做響應,你問我問題,你問一個問題,我回答一個指標,然後看你能不能定位問題。(當然,我會根據所假設的問題回答所有數據指標),比如你問我資料庫連接數多少,問我系統i/o壓力多少,或者問我慢查詢日誌里有什麼,等等,善於提問的人就可以快速得到答案,而不善於提問的人,就會猜測一堆可能,最終卻一無所獲。
有個真實好玩的案例,有個兄弟公司(前段時間新聞出來,賣了好像十個億的樣子),開始的時候服務端資料庫不夠強壯,負載起來的時候會出現一些問題,就請我去把脈,我一看windows伺服器,SQLserver (不要猜了,那是幾年前,現在應該改了),我說這個我不會啊,然後人家那麼熱忱當我是專家,只好硬著頭皮上,我連基本操作都不會怎麼辦,我就坐在那裡問問題,開始他們說是不是這樣,是不是那樣,我說你們不要盲目下結論,你們要是知道結論就別來問我了,我問什麼指標,什麼日誌你們就給我查什麼,我就一樣樣的問,他們現場操作去查數據,我問一個他們查一個給我看,查著查著,他們的工程師說,知道原因了!果然和他們開始的假設完全不同。其實關鍵就是問問題的思路,他們一開始沒有提出正確的問題。提出了正確的問題,他們很快自己就找到了原因。

補充2:善於劃定范圍,縮小問題區間。
前面提到的斷點分析是一個非常常見的分析方法,但是很多場景,你甚至不知道是哪個程序出的問題,善於將問題范圍化,也是一種歸納和分類的能力。

我曾在某個技術群出過一個經典測試,還記得以前微博上提到的一個經典面試題么。「從瀏覽器輸入url到打開網頁,中間經歷了什麼」,這是一個經典的綜合認知的題目,基於這個題目,出一個更實戰的場景測試是(這個場景其實90%的網站站長和游戲運營商都遇到過),」目前有用戶反映網站或游戲卡,請問如何分析原因,以及當前優先順序步驟。「。結果在這個群里,只有我徒弟說出了完全正確的答案(09年帶過的)。優先順序第一步是看在線用戶數和當前訪問數,對比歷史,得到該問題目前的影響程度,來決定後續的優先順序,以及減少分析范圍。(這是意識問題)分析思路,分成三大塊,前端,網路層,服務端。當然這三塊可以繼續延伸下去非常多細節,但是至少,能先把問題分成三大塊,然後基於一些顯見的分析方式快速排除其中幾個部分,再逐步細化問題,而大部分人只是從一個局部去思考,講了很多局部細節卻沒有完整的綱領,所以這就是差距。

先想到這些,咳咳。

轉自知乎 曹政

『拾』 程序員需要學些什麼

程序員的崗位需求很多,例如大型網路公司、軟體開發公司等等都需要程序員。

程序員需要學習:

1、掌握數據及其轉換、數據的機內表示、算術和邏輯運算,以及相關的應用數學基礎知識;

2、理解計算機的組成以及各主要部件的性能指標;

3、掌握操作系統、程序設計語言的基礎知識;

4、熟練掌握計算機常用辦公軟體的基本操作方法;

5、熟練掌握基本數據結構和常用演算法;

6、熟練掌握C程序設計語言,以及C++、Java、Visual Basic中的一種程序設計語言;

7、熟悉資料庫、網路和多媒體的基礎知識;

8、掌握軟體工程的基礎知識,了解軟體過程基本知識、軟體開發項目管理的常識;

9、了解常用信息技術標准、安全性,以及有關法律、法規的基本知識;

10、了解信息化、計算機應用的基礎知識;

11、正確閱讀和理解計算機領域的簡單英文資料。

程序員必備技能:

1、熟練開發工具

做為一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點推薦的開發工具,C/C++以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟體還是用C/C++編寫。

而JAVA的跨平台和與WEB很好的結合是JAVA的優勢所在,而JAVA即其相關的技術集JAVAOne很可能會成為未來的主流開發工具之一。

其次,能掌握一種簡便的可視化開發工具,如VB,PowerBuilder,Delphi,CBuilder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。

另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。

2、熟知資料庫

作為程序員,他們自然有自己的理由:很多應用程序都是以資料庫的數據為中心,而資料庫的產品也有不少,其中關系型資料庫仍是主流形式,所以程序員至少熟練掌握一兩種資料庫,對關系型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。

雖然很多資料庫產品提供了可視化的資料庫管理工具,但SQL是基礎,是通用的資料庫操作方法。如果沒有機會接觸商業資料庫系統,可以使用免費的資料庫產品是一個不錯的選擇,如mySQL,Postgres等。

3、了解操作系統

當前主流的操作系統是Windows,Linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。

要想成為一個真正的編程高手,需要深入了解操作系統,了解它的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。

Linux作為開發源碼的操作系統,是一個很好的學習平台,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。懂得網路協議TCP/IP。

在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課,網路技術已改變了軟體運行的模式。

從最早的客戶/伺服器結構,到今天的WEBServices,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網路協議支持,深入掌握TCP/IP協議是非常必要的。

至少,需要了解ISO七層協議模型,IP/UDP/TCP/HTTP等常用協議的原理和三次握手機制。

4、明白DCOM/CORBA/XML/WEBServices存在的意義

隨著技術的發展,軟體與網路的無縫結合是必然趨勢,軟體系統的位置無關性是未來計算模式的重要特徵之一,DCOM/CORBA是當前兩大主流的分布計算的中間平台,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規范。

XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯網上的「世界語」,是分布式計算的基石之一。

5、不要將軟體工程與CMM分開

大型軟體系統的開發中,工程化的開發控製取代個人英雄主義,成為軟體系統成功的保證,一個編程高手並不一定是一個優秀的程序員。

一個優秀的程序員是將出色的編程能力和開發技巧同嚴格的軟體工程思想有機結合,編程只是軟體生命周期中的其中一環,優秀的程序員應該掌握軟體開發各個階段的基本技能。

如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟體測試等。

6、需求理解能力

程序員要能正確理解任務單中描述的需求。在這里要明確一點,程序員不僅僅要注意到軟體的功能需求,還應注意軟體的性能需求。

要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有著兩到三年項目經驗的熟練程序員對這一點沒有體會的話,只能說明他或許是認真工作過,但是沒有用心工作。

7、模塊化思維能力

作為一個優秀的程序員,他的思想不能局限在當前的工作任務裡面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。

這樣做可以使代碼能重復利用,減少重復的勞動,也能使系統結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。

就業方向:

1、網路開發

現在網路已經成為世界通訊的一座橋梁,好像Javascript、PHP、Ruby這幾類開發語言大部分是用作網路開發方面。

2、企業軟體開發

JAVA、C#、VB這幾類開發語言都實現了面向對象開發的目標,更多時候用於企業系統的開發。

3、系統軟體

C語言、C++、Object-C這些軟體更多是用在系統軟體開發,嵌入式開發的方面。

當然,這分類不是絕對,像JAVA、C#、VB很多時候也用於動態網站的開發。在很開發項目都會使用集成開發的方式,同一個項目裡面使用多種開發語言,各展所長,同步開發。

但所以在剛入門的時候,建議先為自己選擇一種合適的開發工具,「專注地投入學習,全力一擊」。


(10)程序員積累什麼最好擴展閱讀:

會編程、會計算機語言就能加入互聯網發展大潮中,享受數字經濟發展的紅利,一時間社會上的程序員培訓機構都變得格外火爆。

但是現在,專家的數據分析結果告訴你:若想跟上數字經濟發展的步伐,光會編程可不行,這個行業現在緊缺高端的、綜合型人才。

11月22日下午,清華大學經管學院互聯網發展與治理研究中心與領英聯合發布《中國經濟的數字化轉型:人才與就業》,揭示我國數字人才現狀與趨勢。

報告顯示我國數字經濟發展面臨人才短缺的挑戰,但這種短缺主要體現在擁有中高級專業技能數字人才的比例不高,擁有人工智慧、智能製造等前沿技術的人才更是少之又少。

與美國、英國、加拿大等國家相比,中國的數字人才儲備尚有很大差距。

此外,報告根據對人才需求的數據分析,結果顯示我國數字人才的技能需求不再強調單一編程技能,更加看重技術、管理和領導力等綜合技能。

2015年,我國從事信息傳輸、軟體和信息技術服務相關工作的人數約350萬,但其中中高端人才,特別是前沿技術的數字人才並不多。根據領英中國智庫的研究,在人工智慧領域,美國的從業者數量在85萬人以上,印度15萬,英國14萬,中國只有5萬多人。

報告負責人、清華大學經濟管理學院副院長陳煜波教授表示,我國目前在大數據與人工智慧領域人才缺口明顯。

他解釋說,目前中國85%以上的數字人才分布在產品研發類,而深度分析、先進製造、數字營銷等職能的人才加起來只有不到5%,存在較大缺口,新興技術人才和創新型人才培養方面存在滯後和不足。

這份研究報告的基礎數據來自領英在中國的3600萬個人用戶,這些用戶畢業於1.5萬多所國內外院校,分布在36.4萬家企業,擁有超過2.3萬項技能。

陳煜波研究團隊從中篩選了72萬數字人才,多維度提取用戶畫像並跟蹤其職業軌跡,以此預測不同地區的人才流向、僱傭率、受僱主歡迎的技能等人才趨勢層面的信息。

陳煜波說,根據數據分析結果,整體來看,雖然編程技能和數據分析技能需求占據主導,然而隨著數字產業走向成熟,企業除了強調編程技能,也逐步更加看重人才的技術、管理和領導力等綜合技能。

近年間,項目管理、產品運營等「技術+管理」類技能的需求呈現出明顯的上升趨勢,懂技術、懂管理的人才被認為是「一將難求」。

領英中國代理總裁曾志恆也提醒,如果你有興趣向數字職能轉型,不能僅僅專注於自己的技術能力,溝通和領導力等軟性技能將成為你脫穎而出的關鍵。

陳煜波希望這些研究結果能為教育行業和政府部門提供借鑒。他說,教育行業可根據職位的供需趨勢更好地規劃人才培養的方向,政府也可更好地了解人才流動方向、技術缺口等,以此制定有針對性的引才策略。

程序員崗位職責:

1、對項目經理負責,負責軟體項目的詳細設計、編碼和內部測試的組織實施,對小型軟體項目兼任系統分析工作,完成分配項目的實施和技術支持工作。

2、協助項目經理和相關人員同客戶進行溝通,保持良好的客戶關系。

3、參與需求調研、項目可行性分析、技術可行性分析和需求分析。

4、熟悉並熟練掌握交付軟體部開發的軟體項目的相關軟體技術。

5、負責向項目經理及時反饋軟體開發中的情況,並根據實際情況提出改進建議。

6、參與軟體開發和維護過程中重大技術問題的解決,參與軟體首次安裝調試、數據割接、用戶培訓和項目推廣。

7、負責相關技術文檔的擬訂。

8、負責對業務領域內的技術發展動態進行分析研究。

相關書籍:

很多程序員響應,他們在推薦時也寫下自己的評語。 以前就有國內網友介紹這個程序員書單,不過都是推薦數 Top 9的書。

其實除了前9本之外,推薦數前30左右的書籍都算經典,筆者整理編譯這個問答貼,同時摘譯部分推薦人的評語。

下面就按照各本書的推薦數排列。

1、《代碼大全》 史蒂夫·邁克康奈爾

2、《程序員修煉之道》

3、《計算機程序的構造和解釋》

4、《演算法導論》

5、《重構:改善既有代碼的設計》

6、《設計模式》

7、《人月神話》

8、《計算機程序設計藝術》

9、《編譯原理》(龍書)

10、《活著》

閱讀全文

與程序員積累什麼最好相關的資料

熱點內容
單片機串列通信有什麼好處 瀏覽:319
游戲開發程序員書籍 瀏覽:841
pdf中圖片修改 瀏覽:268
匯編編譯後 瀏覽:473
php和java整合 瀏覽:829
js中執行php代碼 瀏覽:440
國產單片機廠商 瀏覽:57
蘋果手機怎麼設置不更新app軟體 瀏覽:284
轉行當程序員如何 瀏覽:492
蘋果id怎麼驗證app 瀏覽:864
查看手機命令 瀏覽:953
抖音反編譯地址 瀏覽:225
如何加密軟體oppoa5 瀏覽:233
java從入門到精通明日科技 瀏覽:94
拆解汽車解壓視頻 瀏覽:597
新版百度雲解壓縮 瀏覽:592
android上下拉刷新 瀏覽:880
centos可執行文件反編譯 瀏覽:839
林清玄pdf 瀏覽:271
黑馬程序員java基礎 瀏覽:284