導航:首頁 > 程序命令 > 程序員領悟

程序員領悟

發布時間:2022-07-02 14:07:00

程序員怎麼去提升自己能力

二:信息採集器和筆記本

首先你要給自己設定一個目標,就如同一個公司會設定它的Vision。

目標要夠大,這樣你才能看到更多的風景。

目標應該設定在解決哪一類問題,而不是精通哪一類技術。技術只是手段,不是目的。

例如,「我要成為iOS developer中的達人」這個目標,就遠不如「我要成為前端應用開發的專家」來得有意義。前者學到深處你可能會去鑽研iOS framework里各種奇技淫巧,而後者你會開始關注視覺與交互設計,研究各平台間的差異與共同趨勢。顯然,後者更有助於你的個人發展。

不過即便有了明確的目標,選擇哪一類技術學習,如何學習,在信息過載的今天依然是一個難題。常有的觀點是應該學習最新的技術,因為老的已經過時,而反對的觀點則是新技術還不成熟。我個人的觀點是,當初入一個領域時,選擇主流技術框架;當你有一定經驗後,選擇技術時更應該關注背後的推動者,我相信優秀的人和團隊總能打造優秀的產品,無論是商業公司還是開源社區。不必太在意技術的新舊,因為可能很快都會成為過去時。你真正要學習的是技術背後的思想。有不少語言與開源項目會寫它的Coding philosophy,這是很有意思的,你可以從它們的源代碼中去驗證這些編程理念。以Python為例,如果你執行import this就會看到它的理念,再如Python中一個著名的開源庫Celery,在它的文檔有專門一節講述它的編程理念。它們對你的影響會比這些技術本身來得更深遠,這是我給初學者們的一個忠告。

同理,我非常推薦讀一些優秀開源庫或是語言的源代碼,例如Python的標准庫絕大部分都是用Python實現的,而且可讀性非常好。如果學習一門技術僅僅停留在用的層面上,你就還沒有完全吸取其中的精華,而且學習的收益會隨著技術的過時而消失。

我的另一個學習原則是,在選擇學習一門新技術時,最大化它與你現有知識庫的差異性。讀起來可能有拗口,例如你會Django,接下去你應該去學習Ruby on Rails還是NodeJS?依據這個原則,你應該學NodeJS,因為它的非同步IO模型在理念上與Django的同步模型差異很大,而RoR則與Django更多相似之處。但更好的選擇是不要去學另一個Web framework,去學習ZeroMQ或是Redis,這兩者對於Web development也非常有幫助,這樣就做到了最大化差異。從構建一個程序員的技術理念角度,我會推薦每一個程序至少去了解Lisp或是一門Functional programming language,不管你是否會在可見的未來用到,它們能讓你從一個不同的角度看待編程。

最後我建議每個程序員都應該經營一款自己的產品,它可以是一款app,一個網站或是一個開源軟體。除非你是一個創業公司的早期員工,不然你可能沒有機會將所有學到的技術或是理念都付之實踐,有很多人想成為全棧工程師,最快的捷徑就是打造一款自己的產品。任何一個設計師都會精心打造自己的Portfolio,但大部分程序員卻不會。當評估一個程序員的Coding能力時,我會去看他的Github上是否有出彩的項目,可惜國內絕大部分程序員的Github空空如也,或者只有一些非常簡單的程序。我建議大家好好經營自己Github上項目,這不但可以提高你的聲譽,對你將來的求職也非常有幫助。當你報怨求職面試時又被問到各種無厘頭的程序題時,有沒有想過面試官也很無奈,因為他沒有任何其他方法得知你的Coding能力究竟如何。如果每一個程序員都有自己的作品,我想程序員的面試會簡單許多。

重視溝通能力的培養

當被問到「你覺得Junior Developer和Senior Developer最大的差別是什麼」時,我最自然的反應是溝通與文檔。溝通包括程序員團隊內部的溝通,與其他團隊的溝通,與Manager的溝通等等。我不認為自己有能力把這些問題非常概括地說清楚,不過我可以給一條建議,那就是先學會和你的Manager溝通,讓他來教你其餘的部分。許多公司都會設置Manager與組員的1:1,一個有效率的1:1應該大部分時間有組員來主導。這需要你在1:1之前花足夠多的時間來考慮要問的問題,並且最好提前1天發給Manager,讓他有機會思考答案。許多人對此不太重視,或者只問非常具體的問題而不是一些開放性問題,這樣你很難在你的Manager身上學到東西。如果你漸漸懂得如何利用1:1的時間,它很會成為你在工作中單位時間投資回報率最高的活動。

累積你的人脈

每個人都明白人脈的重要性,但實際做起來卻不容易。參加一些線下的會議或是活動,可能是最直接的擴展人脈的方式之一。可惜大部分人似乎只是去聽了一場技術講座就回家了。當然,這和不少活動的時間安排也有關系,講座時間排得太滿,茶歇時間短,加上有時嘉賓遲到或是沒控制好時間,乾脆就把茶歇取消了。而實際上,結識一兩個同道中人遠比聽技術講座有價值。下次去參加這類會議,不妨給你自己設個目標,比如至少加兩個同行的微信。之後維系你的人脈可能需要花更多的時間,下了班或是周末找你的朋友們喝個咖啡吧?

另外我覺得每個人都需要一個職場導師,他可以是你第一份工作的導師或是Manager,也可以是你認識的其他前輩。你們需要維系一個非常長期的關系,不止於一家公司,最好貫穿你的整個職業生涯。每當你遇到疑惑時,都可以詢求他的建議,我覺得這將是你最寶貴的一筆人脈財富。

尋找發揮你才華的平台

最後也是最重要的一步,找到適合你的公司。做為求職者評估一家公司可以看三個方面:

公司的發展前景(大公司的話,看所在部門的發展前景)

你將要加入的團隊

薪資福利

所以在面試一家公司的時候,你要意識到面試是雙向的,公司在面試你的同時,你也在面試這家公司。面試前你應該對這家公司做足功課,准備好一些有質量的問題,比如指出產品中的問題,詢問開發流程或是如何做績效評估。到時你也可以檢驗一下你的面試官是否合格。

每次選擇公司對以上三個方面都應兼顧,但在職業生涯的不同階段,側重點不同。比如,在剛剛工作時,加入一個優秀的團隊最為重要,他們可以教會你很多東西,提升你的能力。工作5年之後,你需要一個平台施展你的才華,體現個人價值,公司發展前景的重要性迅速提升。當你做出一番成績,證明了自己的價值之後,逐漸進入收獲期,就有了與公司要價的資格。另一方面,團隊實力對公司的前景也有很大的影響。

對一個剛畢業,初入職場的同學,一個近幾年被問了無數次的問題「我的第一份工作是去創業公司還是大公司?」我的回答仍舊是「加入一個優秀的團隊最為重要」。一些知名的大公司,團隊的素質是有一定保證,但創業公司則不然,團隊素質參差不齊,所以如我前面所說你需要面試這個團隊,做出自己的判斷。不過除了團隊因素之外,我想提一下畢業生去創業公司的幾個好處。

首先,在剛畢業的一段時間內,經濟壓力小,是最自由最能承受風險的時期,而這段時間往往不長,所以應把握好這個去創業公司的黃金時段。其次,所有的學生進入大公司後,都會擔任初級職位,某種程度上來講是學校學習的延續,規范有條理,但缺乏獨立性和創新性,而這正是中國大部分學生所欠缺的。這方面的能力在一家創業公司可以得到快速鍛煉,而在大公司可能要等升到中級職位後才有這方面的機會。個人觀點,僅供參考。

小結

我覺得步入職場的前3年對今後的發展尤其重要,希望此文能對年輕的程序員們有所幫助。歡迎評論?

如果想私信我的朋友可以加群,大家一起學習,一起學術分享,資料共享

❷ 普通的程序員和大神級的程序員有什麼區別

你好,普通程序員只能做一些重復簡單的事情,大神級程序員可以解決普通程序員解決不了的難題,還可以給普通程序員建框架。

❸ 程序員應該怎麼學習

1、選定方向
編程的世界是多元紛繁的,大的方向就分前端開發、後端開發、移動開發、雲計算、數據處理、智能硬體、物聯網、虛擬現實等等,光編程語言都幾十種。如果沒有做過功課,貿然進入只會分分鍾懵逼。所以最好是根據自己的興趣愛好再結合市場前景,先選定一個方向,再選擇一門語言,然後頭也不回的深深扎進去。
2、優化學習方式
做好筆記,記錄經驗,我們大多數人並沒有過目不忘的神技,很多時候我們學了也不一定馬上掌握,需要過後花時間慢慢領悟,而且還有忘掉的風險,所以對於重要的知識點都要做好筆記。
3、多看官方文檔,外文資料
互聯網是一個更新迭代很快的行業,所有編程語言都會不斷的更新新功能和修復舊Bug,網上查的資料很有可能是舊的解決方案,現在已經不適用了。所以最好最快的方法就是查看官方文檔。
4、動手做項目
我們學習編程的最終目的就是用所學的做出具有一定功能的項目,而做項目又是最好的學習和鞏固知識的方式。如果前期能力不足就先做一些簡單的功能模塊,一步一步慢慢來,不要一開始就要實現各種酷炫炸天功能,遇到不會的就在網上查, 現在互聯網這么發達,獲取資源也及其方便。
自學過程中的一些注意事項
1、要善於構建大的知識框架體系,不要執著於細枝末節的知識點。中國的應試教育培養出來的人都喜歡啃細節,對於自學來講這是大忌,比如在遇到一個函數的時候,非要把這個函數的參數,返回值都弄得清清楚楚才肯罷休。
2、先學重要的知識點,用不到的可以暫時放一放,因為你時間有限,遇到比較難的知識點,如果不是特別重要的,就跳過去,當你哪天用到的時候再來好好的研究,帶著問題去學習,你會發現學習難的知識點也沒有那麼痛苦。
3、要善於查資料,互聯網就是最好的老師,遇到問題先網上查,至少能夠解決你98%的問題,因為你遇到的問題別人肯定也會遇到,除非你已經到了高處不勝寒的境界。

❹ 程序員的出路在哪裡

【原創】下面四千字的東西,打了三個小時,又花了兩小時修改,體會來自於自己的經歷。既為樓主也為自己,也希望能給他人帶來一點幫助,因為自己也曾苦於出路這個問題許久,徘徊於技術與銷售之間。其實,最重要的是,想清楚自己要的到底是什麼,而實現的方法有很多,選擇其中的一個,然後耐心去做,注意做的過程中,要多方面發展。不斷提高自己的綜合能力才是硬道理——這才是出路之所在!!!。

【出路】

在職業選擇上,很多人都會問一個問題,這個職業有什麼出路?想得到正確的回答,必須先搞清楚,自己究竟想得到什麼東西。對於程序員這個職業,如果你要的是錢,很多的錢,程序員沒有出路;程序員工作繁忙,有時不規律,連續著加班很有可能,如果你要的是休閑的生活,程序員沒有出路;程序員都是與電腦打交道,工作就是坐著,如果你要的是跟人廣泛的交流,而且坐不住,程序員沒有出路;寫程序都是很邏輯的東西,如果你不喜歡這種解題式的思考方式,頂不住整天思考所帶來的疲憊,程序員沒有出路。

程序員跟民工的區別就是,高強度的腦力勞動者和體力勞動者。雖然程序員的待遇看起來還不錯,想想其實不是,假如八點半上班,加班到十點,沒加班費,平均下來,一個人相當於幹了將近一份半的工作,除下來收入付出比就少了半截,收入多是因為付出的勞動多。這是開始做程序員時常有的事。

假如純往技術上走,干幾年熟手了,情況會好,但是,當你對比起幹了幾年銷售的朋友時,你會發現,你的勞動力太廉價了。一個小公司的銷售,普普通通干三年後,一年拿十萬塊的提成是很有可能的,而一個程序員,普普通通干三年,能拿月薪一萬的不多。還有人家銷售有許多的報銷,你有么?如果有天賦而且努力地干,銷售,大學畢業三年買車買房的多的是,當然不是說噬老族那些;程序員呢?有多少能!也許研究生,而且讀的好的那款還比較可能,但此時那些本科或者大專,甚至中專就出來跑銷售的,已經工作好幾年了,說不定此時正在三亞曬太陽呢!

你說銷售的應酬多,呵呵,喝酒;要去拍人馬屁,去求人什麼的!ok,這就是銷售,你敢保證當你看到他們的收入時,還有看到他們拿著公司的錢,請客戶去各種高檔的地方消費時,甚至說句不好聽的,花公司的錢請客戶到處吃喝嫖賭時——客戶也是人,許多客戶就這些個的愛好,所以要滿足他,他才買你的帳,很正常——嚴格意義上講,這樣的工作比坐在電腦前埋頭苦幹來的輕松多了,其實是一種享受,看到這些,你敢保證你一點都不眼紅?呵呵,如果不眼紅,那就專心干程序員吧!

或者說,你對這種「一點科技含量都沒有的工作」——在你眼中,高iq的人才是牛b的人,那就安下心來干程序員吧。但我想說,在這個社會上,賺錢最多最快的,最舒服的,永遠是銷售。當然,干技術乾的好的,最終都是比較受人尊重的——專家,當然是五十年如一日投身於技術那種人才能成為專家。如果你能刻苦地干程序員,想成為架構師、系統分析員,成為軟體專家,那就專心干程序員吧!

或者說,你實在干不來與人交際,還要挖空心思去維護各種人際關系的工作是,那就安心下來干你的程序員工作吧,就像民工一樣,有誰樂意去干民工,但是沒辦法,能力所限,只能幹民工了。但我想說,能力都是學來的,給民工們上大學,他們畢業後一樣會有很多牛人。有人說:「哪有那麼好的條件給他們上大學啊!」。條件很多時候要自己去創造啊!難道每個成功的人都有一個高人,手把手地拉扯著他,給他良好的成長環境和資源嗎?沒有什麼東西學不來,只是學得快和慢的問題,要真正去學學看才知道,而不是停留在大腦中。如果你學編程學得很快,而且學得很開心,即使學的過程很累,那就專心干程序員吧!

接下來,告訴你一個好消息,史玉柱出身技術、馬化騰出身技術、唐駿出身技術、比爾蓋茨出身技術、傑克•韋爾奇出身技術,等等,他們都成功了!假如這是你想像中的出路的話。我不是說要達到他們那種水平,而是走技術路線,來獲得事業有成,獲得成功。寫過程序的人都知道,想實現某個功能,有很多種實現方法。獲得成功也是一樣,有很多的路可走。這就是我為什麼拿銷售來做比較,每種職業都能到達成功的彼岸,不管是做技術、行政、財務、銷售,等等。

出路是什麼?不就是人生價值的實現,有的人要的是成就感,有的人要的是幸福,有的人要的是健康,有的人要的是金錢,有的人要的是地位名氣,有的人要的是貢獻全人類,有的人要的是玩樂、享受,其實這些都是不同人的人生價值。而實現自己人生價值的方法實在太多了,不管從事什麼職業,不管是java程序員,c++、c#,都能成功的,最最重要的是想清楚你想得到什麼,接下來就是做具體的計劃,然後實現計劃。實現的過程不能拘泥於技術,應該多方面發展,不斷提高自己的綜合能力!想做項目經理、做cto,或者用自己的技術去創業,都必須發展自己的綜合能力。

回到剛才,馬化騰、比爾蓋茨、唐駿等等這些技術員為什麼能成功?技術過關是基礎,甚至技術過硬,唐駿日本、美國留學,比爾蓋茨哈佛。接著,最重要的是:超前的眼光。qq其實不是什麼很難的技術,比什麼量子物理簡單多了,而且icq還是以色列人開發的,馬化騰就照著開發了qq,當時在中國就是超前的東西;比爾蓋茨的windows,讓三歲小孩也能使用電腦,而不用記一大堆的dos命令,這就是超前;唐駿發明了卡拉OK評分器、大頭貼,你自己可以想像一下大頭貼有多少的技術含量,然而它帶來的經濟效益是多少!所以說,想法太重要了,好的技術不是它有多高深,而是它能給人的生活帶來多少的便利,而往往第一個想到的人能獲得巨大的回報。第三,人際關系,別老以為做了技術就能以高姿態出現,有人很鄙視銷售,認為沒技術含量、俗;銷售還很鄙視技術呢,窮、死板。其實,沒人能靠自己一個人贏得一切,技術要靠銷售來賣自己的產品,銷售要靠技術生產產品,誰都離不開誰,這其中還有一連串的其他人呢,財務、行政、前台mm、老闆等等。現在越來越提倡團隊合作,跟隊友、跟上級、跟客戶之間的溝通是必修課,溝通不好必然配合不好,你的才能永遠無法施展,何來的出路。

第四,求人,其實求人是人際關系中的一個,為什麼單獨在這里講,因為他太重要了。機會很多時候是靠求人得來的,例如唐駿,他去日本留學的機會就是求了一大堆人得來的,他當時考研究生,在北京郵電分數最高,但因為大學沒得過一次「三好生」,北郵沒給他出國名額。他給各個大學的研究生處打了三天電話,問還有沒有留學名額,得到的大多都是這樣的回答:「我們自己的學生都不夠呢,哪裡輪得到你?」,如果臉皮薄,沒耐心,早就放棄了,後來他找到了北京廣播學院(現在的中國傳媒大學,就是陳魯豫讀的那個學校,據說當時很水。。。),吳懷仙老師,當時他們的對話是這樣的:

「看你的成績很好,你們北郵應該取你呀!」
「北郵當然取我。但是,我從小愛看電視愛聽廣播,未來中國的廣播電視事業一定會有很大的發展,為了這項事業,我願意放棄北郵,來到北廣。」
「照你現在的說法,你不是為廣播事業而來嗎?怎麼又跟出國有關?」
「中國的廣播事業很落後,需要去國外學習一些先進的理念、先進的技術回來呀!」
「老實說你來有風險,如果教育部不批的話,你不能出國,就必須留在廣播學院讀書。可是北廣沒有碩士學位的授予權,你只能取得研究生學歷,得不到學位。」
「我來的目的很明確!為了中國的廣播事業,有沒有學位沒那麼重要。」

你知道當時的實際情況是怎樣的嗎,北郵根本就沒有給唐駿名額,唐駿根本就是說了一個無傷大雅的謊言,所以,你看看、你看看,善於變通對於一個人的成功是多麼的重要,唐駿他們都不是一味地干技術就能成功的,很多時候必須好好包裝自己、銷售自己的。在這里我不是在說要去騙取利益,而是說,在遇到困難的時候能改變思路,轉個彎繞過路障!!求人很重要,有個強硬的後台幫忙,少奮斗十年!後來唐駿又去教育部門口站了幾天崗,等人、求人,呵呵,其實只是問了幾聲好,這是後話。

第五,超越物理層。凡是要獲得大的成功,賺大錢,或者說更容易地賺錢的,都不能拘泥於物理層。只有大老闆能給你建個實驗室,讓你搞深層次的技術;而只有你的實驗室能不斷做出可以賣錢的產品時,你的實驗室才不至於被關閉。走入公司的決策層,你才能決定該往那走,什麼技術該大力發展、什麼技術該好好改造、什麼技術該放棄。這個道理相信不用講你也明白,那麼,如何進入決策層,靠高素質、靠綜合能力。學習能力、溝通能力、領導能力、管理能力、玩的能力(品酒、打扮、奢侈品、打高爾夫等等),一大堆的能力呢!沒有一所學校、一個組織能教授全部,這些都要靠自己去學、去領悟,前提是,你要有去學、去領悟的想法。

說實在的,世界是很復雜的東西,要的是你去適應它,它不會來適應你。唐駿說:「性格能改變嗎?很多人說不能。可是我認為,本性是不能改變的,但性格是一定能改變的」。傑克•韋爾奇,通用電氣前ceo,打小有自卑心理,到了成年還略帶口吃。他母親激勵他,這算不了什麼缺陷,只有面對現實,堅持與別人溝通,讓別人了解你,才能主宰自己的命運,別人才會跟你做朋友,這是這個偉大而平凡的母親給予傑克的最大財富。事實上,如果你自己不在意,那麼那個缺陷也就不太重要了。略帶口吃的毛病並沒有阻礙傑克的發展,實際上在後來,注意到這個弱點的人大都對傑克很敬佩,因為他竟能克服這個障礙,在商界出類拔萃。趕緊改變,讓自己更好地適應這個復雜多變的世界。

想清楚自己要的是什麼,做一個兩年計劃,因為超過兩年變數就太大了,然後制定實現的步驟,也就是一個個短期計劃,從第一步開始實現。這些計劃應該是具體、可行而且能在預定時間內完成的,最後靜下心來,耐心實現自己的每個計劃!!不要老是問人,我這樣做對嗎,我該怎麼做。哈佛退學就一定是錯的?北大賣豬肉就一定不好?外企就一定是好歸宿?你該做的就是,想清楚自己想要什麼,金錢、美女、名利、地位、權勢,還是過平凡的日子,做善事做好人,都沒問題,只要真的是你想要的就好,然後考慮怎麼去實現它。其實實現的方法有很多,選擇其中的一個,然後耐心去做,注意做的過程中,要多方面發展。不斷提高自己的綜合能力才是硬道理——這才是出路之所在!!!

❺ 程序員職業分析小結

根據個人的理想來安排自己的生活,絕大部分人並不指望成為什麼院士或教授,而是希望活得滋潤一些,痛快一些,那麼就需要慎重安排自己的的軌跡,從一個行業入手逐漸對該行業深入了解,不要頻繁跳槽,特別是不要為了一點工資而轉移陣地,從長遠看,這點錢根本不算什麼,當你對一個行業有那麼幾年的體會以後,錢根本不是問題,頻繁地動盪不是上策,最後你對哪個行業都沒有摸透,永遠是新手。

❻ 程序員的作用

作為一個程序員,我對程序員這個職業的領悟就是:

程序員就是為了滿足人類無止境的惰性而存在的。
如果人類失去了惰性,那麼這個世界上也就不再需要程序員。

❼ 如何成為一名程序員

成為程序員的具體步驟:
第一步:
掌握一種編程語言。學習任意一種主流的編程語言,例如C++語言。熟練掌握一種語言的語法和基本的編程技巧。
學習時間:
3個月左右
注意事項:
編程語言和編程工具是兩回事情,編程語言是指C++、Basic、Object Pascal等。程序設計語言,它們是像漢語、英語一樣的抽象的語法規則,編程工具是指Visual C++ 6.0、Visual Basic 6.0、Delphi 7.0等包括了源代碼編輯器、程序編譯器 在內的集成化、可視化的軟體開發工具。C++源程序可以在Visual C++ 6.0里編寫,也可以在記事本里編寫,而同一個C++源程序可以用Visual C++ 6.0編譯、執行,也可以用C++ Builder 5.0
編譯、執行,所以: C++ 不等於 Visual C++ 6.0。

第二步:
掌握一種編程工具,學習任意一種主流的編程工具。注意編程工具要和第一階段學習的編程語言一致,例如你學習的編程語言是C++,那麼編程工具要選Visual C++ 6.0或者C++ Builder 5.0。熟練掌握這種編程工具基本用法,例如:菜單、組件、程序跟蹤調試、編寫Windows程序等。
學習時間:
3個月左右
注意事項:
這個階段側重編程工具的使用,同時進一步熟習編程語言,最後達到能熟練編寫各種基本的Windows程序。

第三步:
掌握「演算法與數據結構」這門課程,推薦許卓群的《數據結構》,熟練掌握各種常用的演算法與數據結構。
學習時間:
4個月左右
注意事項:
這是一門不可或缺的軟體開發課程,曾經有一本經典計算機專業書籍叫做《數據結構+演算法=程序》,這說明了數據結構和演算法的重要性。它能幫我們建立良好的程序分析與設計能力。

第四步:
實現一個模擬的小型軟體項目,掌握軟體項目的基本開發過程和方法。
學習時間:
4個月左右
注意事項:
自己完成一個模擬的小型軟體項目,強烈推薦做一個MIS(管理信息系統)軟體,參考用書推「中小型信息管理系統開發實例系列叢書」,人民郵電出版社,它的例子詳實有效, 以它為基礎再加以擴展,就可以做出實用的MIS軟體來。

❽ 程序員,如何讓你的知識內化

一、前言

是否,你瀏覽過無數文章,但是轉眼就忘?
是否,你收藏過無數文章,但是很少再看?
是否,你感覺自己很努力學習了,但還是收獲甚微?

其實,這幾個問題也一直深深地困擾著我,一直渴望著提升,卻又摸不到方向,感覺一直在努力,然而貌似並沒什麼卵用。

直到,接觸到知識管理這個概念,才領悟到:學習是一個系統工程,每一次的閱讀、收藏、實踐,其實都是這個系統的自我更新。唯有運用工程思維,才能更好的解決這幾個問題!

關於知識管理,我視之為我人生中最重要的技能,我將不斷探索、不斷優化,以成就一個更完善的自己。

下面,將從一個程序員的視角來討論知識管理,主要包括以下幾個方面:

❾ 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軟體工程師.到底需要哪些技術?
我很需要自我反思...
可能我今天說的都只是皮毛,也有很多欠考慮的地方...希望朋友指出...
也可以給我意見...
也許我看問題不全面,或是有偏見,也歡迎指出。

閱讀全文

與程序員領悟相關的資料

熱點內容
pdf文件轉換word 瀏覽:121
電腦QQ里下載的文件怎麼解壓 瀏覽:352
廣州日報pdf下載 瀏覽:149
華為手機上華為運動app在哪裡 瀏覽:723
解壓舒緩文案 瀏覽:662
洞見者app去哪裡下載 瀏覽:510
上海交警app在哪裡 瀏覽:872
招收零基礎程序員是真的嗎 瀏覽:261
船用壓縮機ccs認證 瀏覽:877
雅思詞彙亂序pdf 瀏覽:829
編譯的代碼一般保存在哪裡 瀏覽:715
githubcopilot讓程序員失業 瀏覽:216
程序員學美術視頻 瀏覽:130
linux查詢外網ip 瀏覽:767
沒有編譯器怎樣寫代碼 瀏覽:713
現代編譯系統 瀏覽:407
python中列表是否為空 瀏覽:276
android編譯release版本 瀏覽:751
如何讓pdf不能列印 瀏覽:554
單片機和溫度感測器 瀏覽:484