『壹』 程序員應該知道的事
『貳』 作為一名程序員,讓你最困惑的事情是什麼
作為一名程序員,讓我最困擾的就是程序員里邊兒的女性特別少,大多都是男性,這讓我們這些程序員脫單成為了遙不可及的夢想。所以對於這種事情令我很困擾。
『叄』 java程序員需要掌握什麼知識
給你個參考吧。
作為一個合格的Java軟體工程師必須具備的條件?
這個問題是我一直想知道的。但是它又分為很多個方面...
比如,是掌握具體的技術,
還是,擁有很強的自學能力?
現在的軟體方面跟新和升級特別快,
無論是什麼知識,當你真正掌握它的時候,也許就已經被淘汰了。
所以這就要求我們不停的去學習...
所以自學能力很重要.
但是我覺得自控能力更重要...(悲哀...今天看了一天動畫...)
我自認為是沒有什麼自控能力的人...
好了,再來說說技術方面。
到底現在該掌握些什麼具體的知識呢?
這里,我真羨慕.net程序員...
從頭到尾就一個.net framework(.net框架),
這樣就可以很集中精力去深入學習它,而且不用擔心會被淘汰...
而Java這邊,洽洽相反框架滿天飛,而且各有所長...
這就難免讓人需要經歷選擇性的痛苦...(雖然原理都差不多)
而且還要根據公司的不同而使用不同的組合...
這就產生了n種集成方案...(崩潰啊...)
所以要全部學會幾乎不可能啊...
雖然是這樣,但是有點挑戰性才有意思嘛...呵呵...
那麼一個合格的java軟體工程師究竟需要掌握哪些具體的知識呢?
下面就我個人的角度來總結一下,如有不足,也請高手指出。
(ps:本人只列出普遍常用的知識)
首先當然是Java語言本身了。Java語言的創始人曾說過"Java=C++--"。
什麼意思?就是Java語言是在C++的基礎上減去一些不必要的東西,使其更為實用,更具有生產力。
Java語言的語法很簡單並不像C++那樣復雜.(本人曾經接觸過C++...傷心的經歷...)
很多較為復雜的數據結構Java都能簡單實現,而C++較為麻煩。
其中很大的原因是因為Java是單根結構.
而且Java的垃圾回收機制也有很大的功勞.(.net的垃圾回收機制也是Java的靈感)
但是如果想深入底層了解Java還是需要費很大的功夫的...
比如,你要學會javap命令去反編譯java文件然後再去看懂那些反編譯後的結果...
這樣你才能了解Java語言的原理。
很多情況下不同的代碼,但是最後產生的位元組碼是相同的。
也有些情況,雖然代碼只相差一點但是效率是天壤之別。
(例如JDK5新添加的StringBuilder和StringBuffer的區別)
這些在都可以反映在位元組碼里。
關於Java語言的問題不是本文的重點,我就不多說了。
總之學好Java這門語言是基礎中的基礎。
其次,說到Java語言就不能不說面向對象(OO)。
Java語言的產生也有很大的一部分是為了生成一個具有生產力的OO語言。
為什麼這樣說?
在早些年代OO的思想雖然被提出,但是那些純粹的OO語言卻沒有絲毫的生產力。
(如出名的:smalltalk它是100%的OO)
而Java在保持高度的OO的前提下更注重生產力。
(ps:Java是98%的OO,其中8種基本數據類型,static關鍵字,運算符等,這些都不OO)
所以隨著軟體工程的龐大OO的思想很重要。
好了,到這里如果以上你有所了解,並掌握的一般。那麼就可以繼續往下學習:
如果你想掌握Java語言中更精髓的東西,那麼我建議你可以做一些小的桌面應用程序。
其中,你會學習到另一些知識:
並發,IO,GUI,AWT,Event,Listener,Socket,Reflect等java更深層的東西。
(當然,有些只需了解,因為有些東西將來在做B/S結構的系統上是用不到的...
如果將來你想從事嵌入式開發,這些你就要多一點了解了。
很可惜,我還沒有想過去做那個...
還記得當我第一次了解AWT里的Event和Listener的實現方式後,
我覺得JDK的設計人員真是厲害,設計的是那麼的巧妙,第一次感覺代碼是那麼優美,
裡面用到了各種設計模式,真是讓人驚訝。
遭了,又在自我陶醉了...)
回到正題,關於Java語言的基礎,我就先講到這。
當我們掌握了Java之後呢?
真正的Java開發現在才是開始:
這時我們必須要接觸另外一樣東西,
沒錯,那就是資料庫!
資料庫的重要性就不用我在這里強調了吧?
無論你學習什麼技術,資料庫都是必備品。
作為Java程序員,我們不是DBA,我們沒有必要掌握太多的資料庫的管理知識。
我們只要知道如何連接資料庫進行訪問和CRUD操作,並對一些地方提高效率就可以了。
如創建索引和適當的使用存儲過程即可。
首先,學習什麼樣的資料庫呢?
沒辦法,多了解一點吧...畢竟每個公司用的都不一樣...
目前的4大主流資料庫是必須要學習的:
DB2(IBM號稱世界上用的最廣泛的資料庫,不過近些年已被MySQL慢慢侵蝕掉了.但是很多的大公司在用,畢竟是IBM啊。)
SQLServer(當年憑借SQLServer2000獲得很大成功,由於和Microsoft的產品兼容很好,所以很受歡迎。)
MySQL(真正的輕量級啊...而且是低端的主流開源資料庫,使用量已經超越DB2。)
Oracle("甲骨文","神諭","聖賢","哲人"...光是對Oracle這個單詞的翻譯就可以看出它多麼擁有實力。不過大的有點誇張...)
好了,如果你已經會簡單的使用上面的資料庫了,那麼就繼續往下吧:
既然要訪問資料庫,那就離不開JDBC!
JDBC相信大家都知道,它只是一組介面,然後由不同的資料庫廠家去實現,
這樣用JDBC訪問資料庫的時候方法其實都是一樣的,這里我就不多說了。
另外JDBC是將來ORM的底層實現,學習好了它,對ORM框架的實現就更為清楚原理。
下面重點要說說SQL語句。
SQL有2套標准(82和99),我不太確定...記得不太清楚了...
現在的資料庫基本這2種都支持。
但是問題來了,不同的資料庫,又對其改變了一點...
這是最令人頭痛的...
也就是說,4種資料庫,你就要記住4種SQL的區別是什麼,雖然大體差不多,但是還是要區分開來的。
而且不同的資料庫,對SQL語句又有不同的優化。
也就是同樣的SQL語句在不同的資料庫上執行的效率不同。
所以SQL語句也是一門必修之路啊...
而且不要看似簡單,其實要想寫出一條高效率的SQL語句很難啊...
尤其是在復雜的多表聯合查詢中,這種效率問題一定要考慮。
另外,最煩人的莫過於資料庫程序設計。
每種資料庫有自己的語法。如SQLServer里的T-SQL,Oracle里的PLSQL等...
使用這些語言編寫觸發器,存儲過程等...自我感覺是最頭疼的...而且用的不多...
了解一下就好...
好了,當學習完資料庫.我們就可學習web開發了.
所謂的web開發,就是基於瀏覽器/伺服器(B/S)的開發。
那麼既然是在瀏覽器上跑的程序那麼就離不開HTML、CSS、JavaScript、DOM等網頁技術。
所以下一步就是學習HTML,HTML應該是最簡單的標記語言.很容易就能學會。
根據web2.0的標准,XHTML將是規范。
所謂的XHTML其實和HTML4.0的規范差不多,就是標簽的要求更加嚴厲了。
學習HTML的同時還要一起學習CSS,這個東西說簡單,也簡單,說難也難。就看你個人了。
但是畢竟我們不是美工,只要了解就好了。(有時我就在界面上消耗了很多時間...郁悶...)
JavaScript我個人建議還是要稍微花點功夫研究一下的...
畢竟後面涉及到Ajax和用戶體驗等方面需要用到它...
它是一門客戶端腳本語言,即:瀏覽器解釋執行。
是一種弱類型語言,但是研究起來還是很深奧的...
至於DOM本人還沒有花時間研究過,不敢輕易下結論.
當完基本的網頁技術後,就可以進入正題,Java在internet上的應用就從這里開始:
前面學習了網頁技術後,我們就可以做出簡單的靜態網站。(即:沒有與資料庫交互.)
靜態網站由後綴名為.html或.htm結尾。
但是靜態網站是毫無用處的,所以我們要開發動態網站。
最古老的技術就是CGI(通用網關介面).
它根據瀏覽器端的http請求激活響應進程,每一個請求對應一個進程。(注意不是線程,是進程!)
當同時有很多請求時,程序擠占系統資源,造成效率低下。
目前流行的動態網頁技術有:ASP、JSP、PHP、ASP.NET等...
這里我就不一一介紹他們了。關於他們的對比,網上比比皆是.
而今天的主角就是JSP!
JSP是什麼?說白了就是在HTML里嵌入伺服器端可執行的Java代碼。
這里的Java代碼和前面所說的Java代碼是一樣的。
這里要注意的是jsp最終會轉換成servlet。
所以學好Jsp就要先學習servlet。
與applet對應,servlet顧名思義就是伺服器端腳本。
這里是學習的重點。
其他的也沒什麼好講的。
這里要掌握幾個概念:servlet容器,IDE,taglib,DAO,MVC等...
servlet容器,就是解釋執行servlet代碼的地方。
IDE,前面我都沒有提過,也就是因為前面的學習都很簡單,並不需要IDE的支持。
而接下來的開發會比較復雜,文件數量的增多和管理會很麻煩,而且很多的API不可能都背下來。
所以這里就是使用IDE的時候了...至於用什麼IDE本人覺得無所謂...
(我用的是最普遍的Eclipse,當然你也可以用NetBeans6.0以上版本.我覺得也很不錯。)
taglib,這里用的比較少,以後學習框架用的比較多.
DAO,很重要。它的實現方式多種多樣,值得研究。
MVC,很重要。但是重在理解,理解為什麼要用MVC。
最後關於Http協議,Servlet容器里的線程池的實現等...
這些如果你有能力和時間就去看看...沒有什麼壞處...
學到這里,可能中間你會用到另一門技術XML!
作為java程序員來說,我覺的只要了解XML原理就可以了。
不可能還讓你去寫scherma或DTD的...
所以我們只要學習讀寫XML就可以了...(JDOM或DOM4J)
下面在來簡單的說說ajax...
當你程序要求你在不刷新頁面的情況下讀取數據並顯示,這是就是ajax的勇武之地.
如果你之前的javascript沒有學的特別的牢固,也沒什麼關系,用框架吧。
所謂的ajax框架就是一個javascript的庫。它簡化並對javascript封裝。
常見的ajax庫有很多,這可以根據情況自己選擇學習。
(dojo、prototype、jquery、dwr、ext等...)
等學習到了這里,你已經可以獨立的開發一個簡單的網站了。
但是,這里有很多的問題:
1.代碼量大
2.開發時間長
3.系統擴展性差
4.雖然用MVC分層,但是JSP+Servlet+JDBC這種開發方式難以維護。(尤其是JSP里有大量代碼,像ASP那樣)
5.理論上不OO
6.效率低
7.安全性低
等等...
短短一時間我就能想到這么多的不足,證明這離企業級開發還有很大的差距.
那麼正真的企業級應用是什麼呢?
JavaEE的本質就是為了企業級開發...
可惜,至今還未能領悟JavaEE的核心思想...
但從技術角度,JavaEE擁有哪些技術呢?
貌似太多太多...EJB是JavaEE的核心思想...感覺有點類似.Net框架...即:一個框架包含所有功能.
可惜一直沒時間學習過EJB...
所以我下面要講的是如何針對上面的不足加以改進?
1.代碼量大就造成"開發周期的延長"。而且自己寫的代碼有時會有漏洞,或效率上的問題。(如果你不是專家的話)
所以要解決這個問題就要引入"框架".
如果引入了框架,那麼有些問題就可以迎刃而解。
1.代碼量的減少。
2.開發周期的縮短。
3.效率提高一點。
4.安全性提搞了一點。
畢竟人家是頂尖的專業人士,寫出來的代碼肯定比自己寫的健壯又高效。對嗎?而且又可以減少代碼量。
框架分很多種,就像上面的ajax框架一樣,它也是一種框架。
下面就列出一些流行的框架:
MVC框架:Struts1.x,Struts2.x,JSF,webwork等...其中最令我期待的是struts2.
ORM框架:Hibernate3,Ibatis,jpa等...其中最令我期待的是JPA.
AOP框架:Spring2.5 貌似現在只流行這個...AspectJ都沒人提...
至於EJB里的,我不太了解...
但是至少上面的是主流.如果遇到非主流...也就算我倒霉...再學唄...
至於系統擴展性和維護性差是系統架構的設計問題.
這個問題不是我在這里一句兩句就能表達清楚的。
(前些日子搞了個泛型DAO模式,都研究了很久)
UML和design pattern是需要經驗的...
在學習這些框架的過程中會有很多意想不到的事情發生...
再深入學習就是webservice和分布式了...
感覺我還沒有觸及到那個層次...
還差的遠呢...不過慢慢來吧...
今天說了那麼多就是想知道做為一個java軟體工程師.到底需要哪些技術?
我很需要自我反思...
可能我今天說的都只是皮毛,也有很多欠考慮的地方...希望朋友指出...
也可以給我意見...
也許我看問題不全面,或是有偏見,也歡迎指出。
『肆』 程序員小白都應該知道的30件事
作者 | 宋蘭欣 廖馨婷
來源 | 讀芯術
從事編程並不容易。每年有許多人從各國的頂級計算機科學專業畢業,這是所有人都嚮往的最具競爭力的職業之一。與此同時,編程也振奮人心。隨著技術的進步,每天都有新的創新。對於喜歡編程,並立志從事編程的人而言,編程是其熱愛且為之奮斗的事業。
本文的這個列表可以幫助新手答疑解惑,節省精力。即使目前某些內容可能暫時不需要,但是總有一天它會派上用場。
1. 從事編程無需學位,但需要有所了解。
編程是少數幾個不取決於學位的職業之一。但是編程是一項知識密集型職業。如果你要從事編程行業,閱讀一些基本的涵蓋計算機科學的基本概念等書籍是必要的。除了編寫功能代碼之外,為你的技術打下堅實基礎,對基本概念有一個深刻理解,這使得你能夠贏得技術面試有助於與同事交流。
2. 在問題解決技能上,編程十分具有創造力。
大多數人都有這樣一種先入為主的觀念,即編程就是分析和解決問題的能力。這只說對了一部分。編程還涉及許多創造性。通常,可以使用多種方式編寫給定的代碼。當你設計出最簡單有效的編碼方式時,創造性就產生了。
3. 掌握所有編程語言是不可能的,訣竅是將一門語言學到極致。
世界上有數百種編程語言。有一些編程領域為特定的職業道路鋪平了道路:Web開發人員,前端開發人員,後端開發人員,軟體工程師,資料庫開發人員等。明確希望成為哪種開發人員,然後學習該職位所需的技術技能。
4. 你不需要成為一個機器,保持作為人的狀態就更好了。
請記住,你首先是人,其次才是一名程序員。初次編程時,很容易迷失在代碼中。你是一個人,你需要笑,需要哭哭,需要減壓,需要與人交談。作為一名程序員,平衡生活,盡可能的發現工作之外的樂趣與激情將為工作帶來更多創造性。
5. 編程是應用知識而不是死記硬背。
與發明和創造新知識領域的研究不同,編程就是應用現有知識。書籍,研究論文,在線文章和學習視頻將成為經常使用的資源。沒有必要記住所有知識。可以通過搜索資源找到答案。隨著處理的項目增加,知識也會自然而然銘記於心。
6. 你每天都會與冒名頂替綜合症對抗。
編程是所有「聰明」人都超同一個目標前進的行業。除非你是天才,否則你會每天都覺得自己不配取得成功。當你每天都為這種感受所困時,會試著想辦法解決這一問題。你可以一直將其作為學習新事物的動力,正確看待問題。
7. 作為一名程序員,你還需要有工作之外的生活,否則,你只會沉迷於編程。
有段時間你可能會宅在家裡不出門。但是,要成為一名快樂的程序員,必須主動尋求計算機屏幕之外的生活。職業生涯的成功往往取決於你遇到的人。人際關系對程序員而言必不可少。保持程序員之外的個性特徵對於防止沉迷於編程至關重要。當你樂在其中而非強迫自己時,工作才會更加出色。
8. 與他人合作會學得更快。
在職業生涯初期,你會想要斷開與外部世界的聯系,沉溺於閱讀這十本有關編程的書籍,以建立計算機科學基礎。你猜怎麼著?如果你找到一個學習夥伴,會學得更快。當你與他人合作,所有的編程「缺點」都會暴露出來。編寫的代碼會得到審閱。由於有第三方的存在,你將會學著編寫高效的代碼。由於夥伴也在學習,所以你會想找到最好的辦法。當你從事程序員這一工作時,總會有人審查代碼。你永遠不是獨自一人這是你需要習慣的。
9. 不需擅長數學和科學。
在技術行業會遇到各種超級明星程序員,他們在接受了長期的文科教育之後,發現了編程在邏輯思維方面的吸引力。有很多畫家和作家在追求藝術的同時以編程謀生。成為一名優秀的程序員,你需要的是堅持不懈。編程很辛苦。但是,一旦有了恆心,任何人都可以通過閱讀編程書籍掌握基礎知識。在這個行業工作一段時間後有很多人重拾數學。最後他們甚至可以在沒有接受正式數學教育的前提下理解實施復雜的演算法。
10. 成為全明星「學習者」。
程序員的學習能力都很強。剛開始也許你的學習能力並不出色,但最終將會得到提升。有時,工作會要求你在六個月內學習三種編程語言。這就是技術創新的狀態。作為程序員,每天都在學習。學習就像呼吸一樣。即使你對每天都需要學習的狀態不太舒服,你也會被迫習慣。
11. 你將對完成項目上癮。
編碼成癮是真實存在的。在編程生涯中的某一階段,你將經歷通宵編程的馬拉松。在完成項目之前,你都不會想要睡覺。由於大腦正在處理大量的信息,你會忘記吃飯,喝酒,甚至不會離開辦工作。不要緊,工作做完後,就到外面散散步或者度度假吧。
12. 耗費一整天只為找一個小漏洞。
多數時候,在編程項目中許多部分彼此相互關聯。通常,你會發現除非修復了系統中潛藏的一個小漏洞,否則無法繼續進行下一步操作。作為程序員,除非找到這處漏洞,否則你會對整個項目倍感壓力。你會整天坐在電腦夙夜難寐,只為找到這一漏洞。這種現象只有找到它後才會消失。
13. 你將花費大部分時間在谷歌搜索無人能為你解答的答案。
如果使用流行的語言編程,那麼大部分的問題都能得到解答。但是,也有例外。有時,你也會出現別人碰不到的問題。在這種情況下,參考編程書籍並詢問編程委員會通常會幫助你答疑解惑。
14. 閱讀設計模式的書
是否畢業於國內外最好的計算機科學專業並不重要。在每個程序員的職業生涯中,都會坐下來仔細閱讀Head First Design Patterns。它可能是新程序員最常閱讀的書籍之一。還在等什麼?趕緊拿起它並從頭到尾閱讀。
15. 學會專注於確切的拼寫
在每個程序員的職業生涯中,都會用自己喜歡的語言編寫足夠的代碼,以便按照自己的方式做事。這包括為變數,類,甚至資料庫中的表提供的命名約定的准確拼寫。仔細審查這一點。你最不想發生的就是因為拼寫錯誤而產生的系統漏洞。記住,當理由充分時沉浸與值得關注事情是情有可原的。但是如果無據可依,那不過只是無意義的重復。
16. 你可能會放棄
有時你會遇到無法解決的問題。有時問題難到讓你懷疑人生,只想要辭職。有時工作環境會讓你想要放棄。激情取決於堅持。這時候質問自己,是要堅持還是放棄?當遇到挫折和困難時,你就把它當做港灣和下一次騰飛的跳板。
17. 重頭再來
當你看到那些和從前的一樣熱愛編程的人,你會很羨慕接著發現自己無法放手。你不能放手。然後又會回到編程項目上來。你意識到在內心深處,和編程同呼吸共命運,這是你才成為一名真正的程序員。
18. 回到某種形式的學校教育,去學習系統的知識。
即使是從精英計算機科學碩士課程畢業的最優秀的程序員也將在工作中學習。事實上,在職培訓是大型科技公司工作的最佳福利之一。公司將送你去學習「高昂」的課程和研討會,以培訓你使用他們希望使用的最新技術。如果碰巧在工作中沒有學到足夠的知識,你將接觸到許多在線編碼學院和youtube視頻,以提高你的技能。
19. 被不喜愛的公司聘用
即使你是一個平庸的程序員,某些公司也會需要你的技能。當他們面試你的時候,試著記住你也在面試他們。根據公司的文化,你可能會發現自己想對這份看似輕松地工作說不。作為程序員,工作時間很長。找到適合自己的公司文化幾乎至關重要。幸福度會帶來好的工作表現。如果你的技能無可替代,總會有其他公司排隊挖你。非必要情況,不要輕易妥協。
20. 技術面試不合格
技術面試不是開玩笑。高級程序員經常以編寫技術面試問題為樂。通常,出於某些原因,這些問題總是格外難。如果技術面試不合格,這也不是世界末日。這當然不能證明你的編程能力。它只測試你的知識庫。試著想想積極的一面。如果個人技能出色,經理們會記住你。如果他們看好你的能力,然而你並不適合擔任這個角色,他們仍可能會聯系你,為你提供另一個職位。
21. 被告知你很出色
在職業生涯中,有時候你會覺得自己像個明星。經理需要依靠你完成項目,他們誇贊你很棒,以激起你的干勁。你會覺得自己處於世界之巔。注意了,這是在誘導你變得自負。請保持謙虛,畢竟學無止境,人外有人山外有山。
22. 被貶得一無是處
在職業生涯中,有時你會覺得自己一無所知。對項目沒信心人會告訴你,你什麼都不知道。也許他們這樣做是為了讓你了解自己身處的位置。但是,既然你正在閱讀這篇文章,你就會大踏步前進。因為你知道的可能比你想的還要多。你所掌握的知識也會隨著時間增多。一年後,人們會尊重你,所以請堅持下去。假以時日,甚至可能贏得那位曾經將你貶得一無是處的人的尊重。
23. 與你所欣賞的其他程序員競爭
編程最絕妙的方面之一就是競爭。當你編寫一個你欽佩的程序員認為值得的代碼時,會開心地像贏了彩票。編程競爭總是很有趣。精妙之處不在於誰是最好的而是互相學習。
24. 可能理解不了同事的話
一開始,這種情況可能是每周或每月一次。在新編程工作中,你可能理解不了同事剛剛說的話。可能以下兩個原因。鑒於生活環境的不同,你可能聽不懂他們的口音。在這種情況下,請另一位同事翻譯。不能理解某人的言論並不可恥。很可能,其他同事也花了多年時間才得以習慣這種口音。另一個原因是同事剛才所說的完全超出了你的知識范圍。那也沒關系。畢竟,同事是專家。讓同事以圖片形式解釋一下。你會想要拉把椅子坐下詳聽,因為這可能需要一段時間。
25. 看到去年寫的面條式代碼,你會感到羞恥
這事兒常常發生。開始時因為Perl代碼,我被批評了。這是一個記錄良好的代碼,設計也很好。但我卻用一種難以閱讀的語言寫出來。所以,我寫了面條式代碼。但是,每年,無論我怎麼努力,我仍然會找到一些我清除由於快速完成工作而編寫的面條式代碼。這就是程序員的日常。我們解決問題並修補問題。不必覺得羞愧。當你意識到這是你寫的,返回修正即可。
26. 當你厭倦了看另一行代碼時,你將在資料庫項目中躲避
當你進行一次精彩的編程攻關時會發生這種情況。已經兩個月了。你需要休息一下。但是你喜歡這種勢頭,所以繼續前進。然後你意識到SQL很有趣。無法弄清楚為什麼你不能看另一行代碼。但不知何故,將數據放入資料庫並再其取出使你感到愉悅。你陶醉於完全邏輯語言的簡單性。
27. 對編程馬拉松又愛又恨
編程馬拉松現在很常見。程序員加入團隊並相互競爭。在這個過程中,他們會在幾個小時內進行高密度學習。你會因為團隊精神愛上編程馬拉松,也會因為快速碼字造成的腕關節綜合症而討厭它。你也會討厭工作擁擠的房間以及在編程時感官的過度刺激。
28. 閱讀研究論文時,會覺得一個字看不懂
你會說英語嗎?好大多數人會說是的。但是,你可能會一遍又一遍地閱讀一些研究論文,並發現自己一頭霧水。對我來說,在學習基礎數學之前,大多數關於演算法的研究論文看起來都像是一片巨大的霧林。然後,突然間,一切似乎又都撥開迷霧了。
29. 購買耳機
在職業生涯的某個階段,當你專注於代碼時,會發現任何類型的噪音都會阻礙你的感官。買一個能夠隔絕外部噪音的好耳機,可以讓你在嘈雜房間內專心工作。在某些時候,還會發現音樂有助於編碼。編碼生涯的早期我就發現,音樂節奏有助於流暢地編碼。即使是現在,需要提高工作效率時,我還會找些音樂來聽。
30. 抓住與同伴交流的大好時機。
在職業生涯的某個階段,你會成為公司非常重要的開發人員群體。這時你將被邀請到異地技術專業人員將在這里進行社交活動。高層管理人員會藉此機會了解你。這並非是無憂無慮、享受的時候。相反是與同伴交往和交流的大好時機。有時,外出活動還包括與其他公司的技術專家的會議。
『伍』 程序員有哪些事是必須要做的
想要成為一名偉大的程序員並不是那麼容易的一件事,事實上——沒有經歷過漫長考驗的話,這根本就是妄想。想要成為一名堪稱優秀的程序員就已經很需要花時間了,而且過程不可謂不艱難——你會不止一次地想要放棄。
徹底掌握編程最基本的內容粗粗一算就要一到三年。我開始學的是基本的HTML和CSS,這用了我很長一段時間。後來終於這些概念在我腦子里變得清晰起來,而且理解起來也慢慢變得毫無障礙,接著寫一些小程序也難不倒我了。總而言之,光靠看書或者看教程視頻是成不了程序員的。實踐與練習,才是王道。
1. 個人學習體會
我們需要知道的第一個經驗教訓是,別人的經驗永遠不會與你的一樣,不僅是因為你們碰到的資源不同,還包括每個人的想法以及思考的方式也是不一樣的。學習新語言最好的方式是找到關於該編程語言「常見問題解答」的書。
這本書你在看的時候從始至終都不要去碰電腦。首先你要做的是掌握概念理解該編程語言(即使你看完之後忘了大半也沒關系,總之繼續),所以我們選擇的書籍應該是基礎性的,入門級的。
2. 目的是搞項目
你知道項目嗎,如果你想要學習編程——那麼你需要創建的一些東西。為什麼我們需要項目呢?因為如果沒有的話,我們就沒有目標——渾渾噩噩,不知所以。可以先拿小型的應用程序和網頁練練手,想搞軟體開發的還可以建立自己的網路瀏覽器或者其他酷炫的玩意兒。
3. 知道自己想要什麼
確定一個項目有助於制定目標,但是如果你能知道自己真正想要的是什麼會更好。假設你想用Python語言建立一個刪除程序用以刪掉Spotify中的最新歌曲,這個就是項目。而項目的關鍵是你得找到Python刪除程序,而不是學習整個的Python資源包,因為入門教程中可沒有關於這方面的知識,教的主要是理論和基礎知識。我們應該對照自己的目的學會有的放矢。
4. 腳踏實地
編程和插秧、開車,甚至是系鞋帶沒什麼不同。不同的是,我們get新技能所需要花費的時間和精力不一樣。所以我們應該設置切合實際的期望,不要想著一蹴而就。不要妄想你剛開始學代碼就能寫下一段段漂亮的程序,腳踏實地很重要。
5. 語法不過如此!
沒錯,語法就只是語法而已。我們學編程不是為了語法,而是為了理解給定的編程語言。
6. 為什麼要有文檔?
讓我告訴你原因。因為我們需要閱讀它們,從上面提取信息。每種編程語言都有其正式的文檔用以表述它的功能和命令。不止如此,很多程序員(工程師和開發人員)都會選擇建立自己的編程文檔,以便更好的收集可用的學習資源。
閱讀文檔和看小說還不一樣,你得學會一邊閱讀一邊思考,甚至是來一場頭腦風暴。
7. 了解所有的工具!
在閱讀了數以百計討論各種工具、應用程序和其他開發資源的文章和博客之後,我對這些工具總算有了一個大致的了解,而這讓我受益匪淺。
掌握一門編程語言不僅僅指的是語法、符號、元素和語義。還應該了解其外部的設計環境。我們的學習任務也應該包括如何構建這樣的條件來開發自己的產品。這個過程需要我們不斷地花時間去探索學習工具、文檔和功能。即使你只是因為好玩才學習的編程語言——例如腳本語言——我們還是得在一個更大的外部環境中才能掌握和使用它們。
8. 不做閉門造車的傻瓜
Koding、GitHub、StackOverflow等等都是不錯的社會學習網站。這些網站不但能讓我們學習到一些頂尖的技術,還允許我們自由地交流溝通——自由地問問題、自由地回答問題。
9. 用編程賺錢
雖然很多人不屑於這么做,但是我還是建議那些技藝日漸嫻熟的程序員找點兼職工作。這能讓你學到更多。Elance、Freelancer等等網站都是找開發工作的好去處。
10. 教學相長
這是我們學習編程的最後一步。在我們學習的後期階段就應該開始試著教別人如何編程。教學相長是學習的最好方式。教什麼人呢?可以試試社交網站。據我所知,Quora就是一個很不錯的地方,裡面有很多沒有解答出來的問題,而這些問題就是我們學習新知識鞏固舊技能的好機會。
『陸』 程序員需要具備哪些東西
程序員工作三連
『柒』 程序員最害怕的5件事,你中招了嗎
5. 不合適的管理和豬一樣的同事
沒人喜歡和工作能力差的人一起工作,也不願意在這種人手下做事。但是這種不合適的人會給開發人員的生活帶來很大的痛苦,不論在什麼方面。
當聽到營銷人員趾高氣揚的腳步聲,然後說著一些不著邊際的話,對著開發人員說「這個很著急的,要盡快完成。」總是讓人覺得很窩火。——Bruno Skvorc
必須得重寫整個系統...一遍又一遍...用另一種編程語言和不同的工具箱/框架...立即完成而不是分階段完成(先替換一個模塊,再替換另一個)...因為某些上層領導認為他們的方案是最好的,所以其他的方法都得改,徹底的改。——RHSeeger
我終結了和另一個開發人員的合作,因為他根本不知道自己到底在做什麼,而且還堅信自己的方式是最好的。更關鍵的是,那個開發人還有權利命令你,指手畫腳的,所以必須結束這種「打下手」的合作。——Jaymz
4. 逼不得已學習/使用一個特殊的技術
任何一個開發人員都有他偏愛的編程語言、工具和技術,同樣,他們也有不願意去觸碰的東西。
也許總有一天我不得不去學習Java。——Gehsekky
可能我遲早得用COBOL來編寫程序了。——Taylor Leese
在下一個項目里,我不得不放棄C#而改用VB.NET了...發抖——Dal
3. 對工作沒什麼激情
任何一個人在工作當中都希望能獲得享受的感覺,開發人員亦然,甚至有的時候著裝要求也是相當重要的。
真的感覺到枯燥乏味。——Cory Thomas
突然有一天,我得出一個結論——編程工作不適合我。蒼天啊,那才是真正讓我恐懼的事。——Dan
我可能會結束這種需要打領帶的工作。——Jerry Coffin
2. 失業
不必驚訝,雖然市場對於開發人員的需求量很大,但仍有很多人擔心丟掉飯碗,根本原因可以說是多種多樣的。
怕被外包...——Jack
擔心封閉的開發環境會變得更加普遍——特別是蘋果公司的iOS系統——以及它倡導的反自由商業模式。在遭受微軟不公平的捆綁銷售打擊下,做一名程序員要多慘就有多慘。但蘋果公司對處於完全控制的技術產品朝令夕改,反而讓微軟看起來像是一個相當仁慈的大叔了。——Bobince
特殊的意外,比如:斷指,眼疾...再也不能寫代碼了。——Aitjcize
EMP—電磁脈沖 高科技技術可能會取代人工編程。——Kevin Ernest Long
1. 把事情搞砸
作為程序員,最大的擔心就是遇到bug,沒人想在工作中出問題,但程序員運用的系統和應用程序種類繁多,遇到的各種bug有可能令人討厭但並無大礙,沒什麼潛在的威脅。
說不定在你周五晚上打算喝酒放鬆之際,架構崩潰了。——Anonymous
我是真心的害怕因為我代碼里的bug而給公司帶來經濟損失。——Joshtronic
擔心代碼里的bug可能會給某人/某事造成傷害。——Jeremy
每次提交我創建的架構或由我負責的東西時,我內心深處都是極度的恐慌——盡管已經做了徹底的檢測。——Evernoob
記住這些,下次你再看都程序員驚慌失措的眼神的時候,你就不會感到驚訝。他/她可能正在為了一個bug而汗流浹背,或者是公司對著裝要求的改變。
希望可以幫到你,謝謝!
『捌』 作為一個程序員,應該有哪些必須知道的事
1. 懂得分享。盡可能使用開源,並且當你有能力的時候,要對其有所貢獻。聚全社會之智慧,勝過某些「大」公司之短視。
2. 公平競爭。嘗試其他技術、框架、方法和觀點。不要總以為只有你的選擇才是可行的。別的選擇也有可能比你的要強得多。要以開放的心態,來檢驗其他人的選擇。
3. 不要攻擊他人。像第2條所說的,不要僅僅因為別人恰巧使用.Net、Java或PHP就去攻擊他們(我在這方面有一次教訓)。有時,它們或許要比你所認為的更有效。只要別人不是一無是處,你就可以從他們那裡學到很多東西。
4. 自我完善。盡量發布可以運行的代碼。不要指望QA能給你找出所有的程序錯誤。要經常並且全面深入地測試你的代碼。
5. 傷害他人要道歉。代碼審查是一個不錯但很少用的想法。指導經驗比你少的程序員,有助於整個團隊。不要公開批評他人。指導並不是貶低別人。別人有時候會接受,有時候不接受。其實,有時候你可能會從自認為水平不如你的人身上學到很多東西。
6. 未雨綢繆。動手寫代碼之前要盡量理解要解決的問題。要做原型、從網上查找實例、跟其他也做這個的人討論或者只是練練手而已。構建你從未做過或用過的東西是個壞習慣。如果開始就有思路,結果可能會更好。
7. 拿得起放得下。不要害怕替換、重寫、重構或者放棄垃圾代碼。有時候,如果碰到可留可不留的代碼,直接扔掉才是上策。永遠不要愛上你的代碼。
8. 平衡生活——學習、思考、繪畫、唱歌、跳舞、工作、玩耍,每樣都會一點。我喜歡Google的方式,在那裡,你有20%的時間用來思考任何你認為值得做的事情。老闆應該提供休息室、娛樂室或者一些能讓人放鬆清醒的環境。
9.編程是一項艱苦的腦力勞動活;有時你的大腦確實需要休息一下。拒絕例行公事地每周工作80小時,否則你的工作質量將大打折扣,花費大量時間取得的成果將前功盡棄。另外,如何釋放工作生活壓力,可以參考伯樂在線的這篇文章:《3步釋放工作和生活壓力》。
10. 每天下午小憩一會。每天工作24小時不會讓你更有效率。休息、回家,然後打個盹。通常,很多難題是在我回家的時候解決掉的,解決方法通常在我開車時或第二天早上突然想到。
11. 不要閉門造車。讀讀博客、學習新語言和框架、參與討論以及看看同行在干什麼。兩耳不聞業界事,你就無法成為一名更優秀的程序員。
12. 保持好奇心。想想塑料杯中的種子:根向下長,枝葉向上長,沒有人知道這是為什麼,但是我們都是這樣的。一般來說,在編程和技術世界,每天都有新奇東西出現。看!很神奇吧!每天學習,讓你思維更廣,技能更新,選擇也就更廣。如果你認為編程枯燥乏味,那麼你要該換行了。