是一樣的。軟體開發工程師更書面更正式,程序員更口語化更隨意。一般的招聘信息裡面都是寫需要JAVA軟體開發工程師。但是工作環境通常就直接說給我找個JAVA程序員。
另外,通常程序員都調侃自己是碼農,意思也是一樣的。但是招聘信息裡面絕不會這么寫,工作里也不會說給我找個碼農來。
Ⅱ java工程師和java程序員工作內容有什麼不同
如果真要評論應該是技能層次的不同。程序員相當於工人,可以在詳細設計的基礎上進行開發。工程師則可以在明確需求的基礎上進行設計和開發。
例如要人程序員工作,會告訴他需要什麼校驗,訪問什麼表,記錄什麼日誌。
要工程師,只需要告訴他,統一規范是什麼。 然後要完成什麼事就可以了。
當然以上所說都是理想情況。真實場景中,這兩者幾乎沒有區別。真要說區別是,工程師的說法是對客戶的。程序員的叫法是內部用的。
Ⅲ java軟體工程師和 java程序員有什麼區別嗎
我覺得廣義上應該是一個意思,現在很多公司對於這個沒有區分,工程師與程序員都是寫代碼的,不過對於架構師,要求會更高,寫代碼少,架構的比較多。
Ⅳ JAVA架構師和JAVA工程師的職業區別
朋友,我覺得這兩個好像沒有什麼相似的地方吧,JAVA工程師說白了就是一個程序員,不過就是名稱好聽了一點,而架構師是負責整體布局的,成為架構師!
首先你得明確,工程師就是碼農,專注於學代碼,而架構師主要關注於你的項目布局,他把握的是整體性
其次,碼農無非就是了解會用代碼就行,而架構師主要關注的是原理問題,他是對項目進行各方面的協調與優化,更好的搭配資源
Ⅳ 請問JAVA程序員與JAVA工程師的區別是什麼。 與系統架構師有什麼區別
程序員(Programmer,Computer Programmer或Coder),它可以指在程序設計某個專業領域中的專業人士,或是從事軟體撰寫,程序開發、維護的專業人員。但一般Coder特指進行編寫代碼的編碼員。
隨著時代的發展,對程序員的要求也在變化,需要他們掌握更多的知識與技能如:UML、單元測試、各種方法論等,以更快更好的滿足不斷變化的商業需求。
工作范圍:代碼撰寫, 測試與除錯, 撰寫技術文件
軟體工程師一般指從事軟體開發職業的人。軟體工程師跟一般程序員的分別,在於一個程序員的工作是按照指定的規格進行編碼,而軟體工程師的工作則需要設計和規劃。不過,由於現時社會的分工愈來愈模糊,軟體工程師跟程序員的分工也愈不明顯。但對於嚴格執行CMM的機構來說,各人的工作分也比較清晰,這有助於了解軟體工程師跟一般程序員的分別。
系統架構師是一個最終確認和評估系統需求,給出開發規范,搭建系統實現的核心構架,並澄清技術細節、掃清主要難點的技術人員。主要著眼於系統的「技術實現」。因此他/她應該是特定的開發平台、語言、工具的大師,對常見應用場景能馬上給出最恰當的解決方案,同時要對所屬的開發團隊有足夠的了解,能夠評估自己的團隊實現特定的功能需求需要的代價。 系統架構師負責設計系統整體架構,從需求到設計的每個細節都要考慮到,把握整個項目,使設計的項目盡量效率高,開發容易,維護方便,升級簡單等。
Ⅵ Java程序員跟工程師有什麼區別,應該怎樣進行職業規劃
去瘋狂軟體專業系統學習吧
第一、工程師不寫黑箱程序
「程序=數據結構+演算法」,這個著名的公式大家都知道,不幸的是,它不適合描述工程領域或者現實世界的程序。有很多程序,數據結構和演算法都寫得很棒,功能足夠強大,系統足夠復雜,但是——它很難調試,一跑起來就無法停止,而且誰也不知道程序現在到底在干什麼,裡面發生了什麼。
別覺得好笑,我遇到過很多工作三四年甚至五六年的開發人員,仍然不停地生產黑箱程序:出現問題的第一反應是直接殺掉進程重啟(天哪你們的程序不能安全關閉嗎)。當然還有更生猛的,直接用開發機連上生產資料庫(防火牆上開個洞)去調試。
你說他們技術不好嗎?明明各種技術問題也能搞定。你說他們沒有系統意識?做過的程序也不簡單。但是,他們做的充其量只能叫「程序」,而不是工程上成熟的「系統」。
怎樣的程序不是黑箱?你需要考慮它的層次劃分,你需要考慮哪些(功能之外的)運行信息必須暴露和記錄,以什麼方式暴露記錄,你甚至還需要考慮這些暴露和記錄對性能的影響,以及程序需要對外提供什麼操縱介面……當你把這一切都考慮清楚,寫出能夠讓運行細節「盡在掌握中」的程序的時候,你的一條腿就邁進了「工程」的大門。
這方面,互聯網和軟體開發的大廠會更加關注一些,但也不是說個人就毫無追求的空間了。網路爬蟲大家都會寫,大家也都知道如果要數據抓得准,調試起來很麻煩。我有個朋友在某大廠寫過一套「可視化」的爬蟲,可以用逐步操縱語句的執行,迅速定位問題所在。這種水平的工程師,屬於可遇而不可求的類型,每次說起來大家仍然嘖嘖稱贊。
第二、工程師注意實現和介面分離
Java面試的一道經典問題是:請描述抽象類和介面的區別。通常,大家都會知道「介面」和「實現」要分離。不幸的是,很多人理解的「介面」,只是狹義的特定語言提供的Interface,而沒有考慮「介面」真正的含義。
介面的真正含義是什麼?計算機最擅長處理的是信息,它可以讓信息脫離現實的障礙高速流動起來。如果說「實現」是干臟活累活,「介面」就是發出干臟活累活指令的窗口。臟活累活干一遍就足夠了,但發指令的窗口卻可以有千千萬萬。
更具體一點說,完成功能的是程序員,完成功能並且設想它會在什麼情況下使用,並且讓人方便使用的,是工程師。我見過不少這樣的程序:登錄會話一開始放在本地內存里沒問題,到了要切換到資料庫里方便會話轉移就得大興土木,雖然要做的其實仍然只是存取而已;程序自動載入的數據出了問題,就根本不能手動載入;以前手動載入的數據,改成自動載入就要推倒重來……
有沒有介面意識,能不能真正區分介面和實現,這是區分程序員和工程師的一大標識。
第三、工程師注重功能的邏輯聯系
很多系統都在不斷的變化和改進過程中,程序員看到的是功能點,工程師看到的是功能點之上的邏輯。
任何系統當然都是由若干功能構成的。但在功能點之上,還需要一張有邏輯意義的大網,才能把功能點組合起來,把復雜度降低,成為大家能理解的對象。最簡單的「登錄」,就包含數據輸入、數據驗證、登錄信息記錄等等功能,「登錄」是這些功能的邏輯集合,也是理解這些功能的基礎。
隨著時間的推移,業務的增長,新功能可能越來越多,比如用戶數據的載入,對好友的通知,廣告的推送准備等等。這些功能實現起來當然都容易(因為很具體),但功能堆積的後果是復雜度急劇上升,因為功能之間的邏輯聯系被切斷了。所以,工程師必然需要思考,這些功能應該怎麼組合,放到哪些具有邏輯意義的動作——比如「登錄」里去?正是經過這樣持續不斷的思考,系統的復雜度才能夠被一直維持在較低的水平,容易讓大家理解。
這個例子看起來很簡單,但做起來卻沒那麼容易。我有時看到復雜的系統操作手冊,簡直讓人哭笑不得:1) 點這里;2) 點那裡;3) 輸這個……
這些操作對應的邏輯意義那麼准確,分明就該是一次性自動完成的啊,把它們割裂開來的後果大大提高了系統的復雜度,既不方便維護,也不方便操作。最後來擦屁股的,只能是開發人員自己。
我經常反思自己接受的教育,在學校里寫程序,和工作了寫程序,有那麼一點相同,但又好像完全兩回事,到底有什麼不同,只有親自體會、思考了才能明白,所以我想把自己的所見所感寫出來。悟性好的有機會接受很好訓練的同學,估計不需要了解這些。但對於沒有這樣條件的同學,但願我的這點念叨能給你們一點幫助。
Ⅶ java程序員和java工程師的有什麼不同
程序員(Programmer,Computer Programmer或Coder),它可以指在程序設計某個專業領域中的專業人士,或是從事軟體撰寫,程序開發、維護的專業人員。但一般Coder特指進行編寫代碼的編碼員。
隨著時代的發展,對程序員的要求也在變化,需要他們掌握更多的知識與技能如:UML、單元測試、各種方法論等,以更快更好的滿足不斷變化的商業需求。
工作范圍:代碼撰寫, 測試與除錯, 撰寫技術文件
軟體工程師一般指從事軟體開發職業的人。軟體工程師跟一般程序員的分別,在於一個程序員的工作是按照指定的規格進行編碼,而軟體工程師的工作則需要設計和規劃。不過,由於現時社會的分工愈來愈模糊,軟體工程師跟程序員的分工也愈不明顯。但對於嚴格執行CMM的機構來說,各人的工作分也比較清晰,這有助於了解軟體工程師跟一般程序員的分別。
Ⅷ Java開發工程師與Java軟體工程師有什麼不同
軟體工程師必須知道20個知識點,看看你了解多少?
1,針對面向對象的設計與分析:為了讓軟體有更好的可維護性,重用性以及快速開發, 簡短的OOAD與它的SOLID原則對於每一個軟體工程師來說都是該牢記的。
2,軟體品質因素:軟體工程的好壞與軟體的品質因素是絕對關聯的。請在開發過程中深 刻的理解這一點。
3,數據結構與演算法:深刻理解像數組,列表,棧,樹,圖,集合等這樣的基本數據結構 ,並在軟體開發過程的關鍵部分使用好的演算法。這樣整個軟體邏輯就會很清晰了。
4,Big-O符號來標記演算法復雜度:在開發過程中,請務必使用 Big-O 符號來比較兩個代 碼段或者不同演算法所消耗的時間復雜度,這在開發高性能軟體項目中是非常重要的。
5,UML圖:UML圖已經是一個通用的軟體設計與分析的語言。如果你們在開發軟體的過程 中還沒有做UML圖,那麼給人的感覺就是這壓根就不是軟體工程。
6,正確的衡量軟體開發進度。
7,設計模式:設計模式是前人在解決各種各樣問題的過程中總結出來的一套標准對策, 在絕大部分情況下,使用這些模式肯定是利大於弊的。如果你不想在開發過程中重新造 輪子,那麼就直接使用它吧。
8,理解操作系統的基本原理:因為所有的應用程序都是直接運行在操作系統這個層級的 ,學習操作系統的基本原理能讓我們對應用程序的底層以及性能有更好的把握。
9,學習計算機組成原理:幾乎所有的應用程序甚至是OS都需要與物理硬體打交道的,所 以學習計算機組成原理與理解操作系統原理一樣都可以讓你對於應用程序有更深刻的理 解。
10,網路基礎:網路與計算機組成,操作系統以及傳輸流程都是緊密關聯的,理解網路基礎 能讓你在開發過程中得心應手。
11,需求分析:對於軟體工程來說,需求分析是項目的起點,也是整個項目最最重要的 部分。如果這玩意你搞錯了,整個項目的方向也就錯了。
12,軟體測試:在軟體工程中,測試也是非常重要的。單元測試,黑盒測試,白盒測試,TDD,集成測試等等都是我們必須知道的。
13,獨立管理:主要是說類庫(JAR,DLL等等)的管理,熟悉使用一些類似Maven,Ant,lvy這樣的知名工具對於大型項目的類庫管理是非常有用的。
14,持續化集成:持續化集成能讓測試大型模塊與組件更加簡單與自動化,關於這一點,你可以去了解 Hudson 這個工具。
15,ORM:了解Hibernate這種將對象與資料庫表映射工具是非常有好處的,它可以減少你的代碼量並節省你的代碼維護時間。
16,DI(獨立注入):DI或者IoC(Inversion of Control)的具體實現框架Spring能讓你創建對象時更加輕松,對於大型企業級項目更是如此。
17,版本控制系統:VSC工具(SVN,TFS,CVS等)對於團隊合作開發以及版本控制都是非常重要的。熟練使用這類工具算得上是必備技能。
18,國際化:通過i18n來將不同語種的字元串存儲在其他文件是讓軟體支持多語種的方法。所以i18n在不同的IDE上使用的方法我們應該了解。
19,架構模式:理解類似MVC,MVP,MVVM這樣的架構模式非常關鍵,這能讓你寫出易維護,簡潔以及方便測試的代碼。
20,編寫干凈的代碼:你的代碼僅僅只是能夠正常運行是遠遠不夠的,它必須讓編程人員輕易看懂來方便後續維護,所以,代碼格式以及編寫易讀的代碼技術都是我們需要了解的關鍵點。
Ⅸ Java高級軟體工程師和Java程序員有什麼區別
...哎
現實中的java高級軟體工程師就是在某一個行業有很充足的開發經驗,很了解開發模式就差不多了,一般的公司都會叫你高級工程師
程序員就是只敲敲代碼 ,對啥都不管不問的
一般來說 你兢兢業業的在一個好點的公司干一年 跳個槽 就成高級了