软件工程师和程序员到底有多大的区别?
程序员主要是指写代码的人。
工程师着重在于设计。
程序员和软件工程师的区别是:软件工程师不但要有编写程序代码的能力而且更重要的是要懂得如何去开发一个软件,怎样去学习实际的UI的观念。
就是工厂里面技术员和工程师的区别。
技术员是熟练工人,工程师是设计者。
程序员(英文Programmer)是从事程序开发、维护的专业人员。
一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。
软件从业人员分为初级程序员、高级程序员、系统分析员,系统架构师,测试工程师五大类。
软件工程师英文是Software Engineer,是从事软件职业的人员的一种职业能力的认证,通过它说明具备了工程师的资格。
软件工程师是从事软件开发相关工作的人员的统称。
它是一个广义的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位,工作内容都与软件开发生产相关。
软件工程师的技术要求是比较全面的,除了最基础的编程语言(C语言/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)等,还有诸多如JAVASCRIPT、AJAX、HIBERNATE、SPRING等前沿技术。
此外,关于网络工程和软件测试的其他技术也要有所涉猎。
软件工程师与程序员的区别?
软件工程师它是一个广义的概念,它包括程序员这个岗位。
再说明白一点就是程序员也可以叫做软件工程师,但是软件工程师不只有程序员一个岗位。
软件工程师是从事软件开发相关工作的人员的统称。
它除了程序员还包括软件设计人员、软件架构人员、软件工程管理人员等一系列岗位。
软件工程师可谓是软件项目开发的掌舵者。
虽然要求技术全面,但无须偏执于门门技术都精通,任何软件工程师都有自己的技术特长和偏向,对于自己手中的技术,可有精通-掌握-熟悉-了解之分,根据工作需要和职业发展的具体情况来划分。
程序员是从事程序开发、维护的专业人员。
一般我们将程序员分为程序设计人员和程序编码员。
程序员和软件工程师的区别
软件工程师比程序员好听,其实做的工作是一样的。
但在国外是有本质不同的。
至于课程,我想你可能是想参加诸如IT培训之类的吧,这个主要看个人是否真的喜欢这一行,如果不感兴趣硬学的话,只会越来越痛苦。
课程应该和大学课程没有什么差别,都是些编程语言(C,C++,Java,C#等),数据结构,算法,数据库(SQL Server,MySQL,Postgre等)应用之类的。
但这些只是理论课程而已,在实际工作(开发项目)中,大多是围绕需求而作,不仅仅停留在做个for循环计算而已。
另外,外包项目(对日对韩,欧美项目除外)更恶心,只能根据外方要求做,连注释格式,标点符号都不许自行更改,加班加点是家常便饭,大公司还好些,小公司尤其这样。
软件工程师和程序员的区别?
软件工程师比程序员好听,其实做的工作是一样的。
但在国外是有本质不同的。
至于课程,我想你可能是想参加诸如IT培训之类的吧,这个主要看个人是否真的喜欢这一行,如果不感兴趣硬学的话,只会越来越痛苦。
课程应该和大学课程没有什么差别,都是些编程语言(C,C++,Java,C#等),数据结构,算法,数据库(SQL Server,MySQL,Postgre等)应用之类的。
但这些只是理论课程而已,在实际工作(开发项目)中,大多是围绕需求而作,不仅仅停留在做个for循环计算而已。
另外,外包项目(对日对韩,欧美项目除外)更恶心,只能根据外方要求做,连注释格式,标点符号都不许自行更改,加班加点是家常便饭,大公司还好些,小公司尤其这样。
fantasystream 展开全部...
请问如何成自学为一名软件工程师和程序员?
大学英语-不要觉得好笑。
我极力推荐这门课程是因为没有专业文档的阅读能力是不可想象的。
中文的翻译往往在猴年马月才会出来,而现在的许多出版社干脆就直接把E文印刷上去。
学习的方法是强迫自己看原版的教材,开始会看不懂,用多了自然熟练。
吃得苦下得狠心绝对是任何行业都需要的品质。
计算机体系结构和汇编语言-关于体系结构的书遍地都是,而且也大同小异,倒是汇编有一本非常好的书《80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著)。
你需要着重学习386后保护模式的程序设计。
否则你在学习现代操作系统底层的一些东西的时候会觉得是在看天书。
计算机操作系统原理-我们的开发总是在特定的操作系统上进行,如果不是,只有一种可能:你在自己实现一个操作系统。
无论如何,操作系统原理是必读的。
这就象我们为一个芯片制作外围设备时,芯片基本的工作时序是必需了解的。
这一类书也很多,我没有发现哪一本书非常出众。
只是觉得在看完了这些书后如果有空就应该看看《Inside Windows 2000》(微软出版社,我看的是E文版的,中文的书名想必是Windows 2000 技术内幕之类吧)。
关于学习它的必要性,ZDNET上的另一篇文章已经有过论述。
数据结构和算法-这门课程能够决定一个人程序设计水平的高低,是一门核心课程。
我首选的是清华版的(朱战立,刘天时)。
很多人喜欢买C++版的,但我觉得没有必要。
C++的语法让算法实现过程变得复杂多了,而且许多老师喜欢用模块这一东西让算法变得更复杂。
倒是在学完了C版的书以后再来浏览一下C++的版的书是最好的。
软件工程-这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。
我的建议是看《实用软件工程》(黄色,清华)。
不要花太多的时间去记条条框框,看不懂就跳过去。
在每次自己完成了一个软件设计任务(不管是练习还是工作)以后再来回顾回顾,每次都会有收获。
Windows 程序设计-《北京大学出版社,Petzold著》我建议任何企图设计Windows 程序的人在学习VC以前仔细的学完它。
而且前面的那本《Inside Windows 2000》也最好放到这本书的后面读。
在这本书中,没有C++,没有GUI,没有控件。
有的就是如何用原始的C语言来完成Windows 程序设计。
在学完了它以后,你才会发现VC其实是很容易学的。
千万不要在没有看完这本书以前提前学习VC,你最好碰都不要碰。
我知道的许多名校甚至都已经用它作为教材进行授课。
可见其重要。
上面的几门课程我认为是必学的重要课程(如果你想做Windows 程序员)。
对于其它的课程有这样简单的选择方法:如果你是计算机系的,请学好你所有的专业基础课。
如果不是,请参照计算机系的课程表。
如果你发现自己看一本书时无法看下去了,请翻到书的最后,看看它的参考文献,找到它们并学习它们,再回头看这本书。
如果一本书的书名中带有“原理”两个字,你一定不要去记忆它其中的细节,你应该以一天至少50页的速度掌握其要领。
尽可能多的在计算机上实践一种理论或者算法。
程序员资格和软件工程师资格有什么区别?
软件工程师是一个认证考试,具体地说是从事软件职业的人员的一种职业能力的认证,通过它说明具备了工程师的资格。
软件工程师是从事软件开发相关工作的人员的统称。
它是一个广义的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位,工作内容都与软件开发生产相关。
软件工程师的技术要求是比较全面的,除了最基础的编程语言(C语言/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)等,还有诸多如JAVA SCRIPT、AJAX、HIBERNATE、SPRING等前沿技术。
此外,关于网络工程和软件测试的其他技术也要有所涉猎。
如何成为一个杰出的程序员或软件工程师
程序员的七种武器 信息技术的发展时间虽然不长,但其爆炸式的发展速度使信息技术迅速覆盖社会和人类生活的各个角落。
程序员们是这场信息化浪潮的见证者之一,更是其中的主要参与者,这是时代赋予每个程序员的机会和责任。
信息技术的更新速度是惊人的,程序员的职业生涯则是一个要求不断学习的过程,永远不能固步自封。
本人在工作期间曾看见过很多程序员只要有闲暇时间就浏览一些没有太大作用的网页,在网上聊天,打游戏,浪费了大量的时间,十分不可取。
而另外一种情况是,IT技术的日新月异使很多程序员眼花缭乱,什么都想学,却又不知从何学起,今天看看这个,明天学学那个,贪多不熟。
虽然IT技术发展迅速,但很多技术都是有规律可循,一些基本的概念、原理和方法还很通用,可以举一反三。
本人根据自己的体会和经验,向那些刚刚踏入IT行业的新程序员们或正在迷茫的程序员们推荐程序员必须掌握的七种武器,有了这七种武器,虽不敢说笑傲江湖,但将自己立于不败之地还是可以的。
第一种武器:开发工具 至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是我重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写。
而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而本人对SUN公司的“网络即计算机”的概念相当欣赏,并相信JAVA即其相关的技术集JAVA One会成为未来的主流开发工具之一。
其次,如果能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,C++ Builder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。
另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
第二种武器:数据库 为什么数据库是如此重要?很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。
虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。
如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL, Postgres等。
第三种武器:操作系统 当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。
要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。
Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。
虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。
只有对操作系统有一定的了解后,你会发现自己上了一个新的台阶。
第四种武器:网络协议TCP/IP 在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEB Services,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。
至少,你需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
第五种武器:DCOM/CORBA/XML/WEB Services 随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间件平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。
程序员需要做的不仅仅是利用商业的开发平台来开发软件,而是要理解这些技术的初衷,即为什么需要这项技术,如果你能理解了这一点,再回头看这些技术的具体实现,就如庖丁解牛,迎刃而解。
XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布计算的基石之一。
第六种武器:软件工程与CMM 现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。
一句话可以概括我的看法:“创意无限,流程保证”。
第七种武器:强烈的好奇心 什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。
没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。
程序员就是软件工程师么
应该说软件工程师首先应该是一个合格的程序员,但程序员只是成为软件工程师的第一步。
对于一个软件工程师来说,在掌握了基本的编程技能后,开发软件所需要的各种除了编码以外的其它知识会更为重要,比如:如何从组织工程与项目的角度来看待软件开发,如何与更多的人一起合力开发发软件,如何对软件展开测试,软件与各种外部环境的关系 ,如何为软件搭建合理的架构,什么样的软件更易于维护与更新。
至于说认证一类的东西,形式而已,没有也不一定就不行,考到了也不一定就代表你的真实能力
名字起的太长不太好吧