软件工程师主要学什么?
1.网络设备技术,这主要涉及网络的硬件建设,包括路由器、交换机、组局网、广网,这方面有代表性的是CISCO、NORTEL; 2.网络操作系统,这主要涉及操作系统的系统管理与网络管理,这方向有代表性的是WINDOWS 2000、UNIX、LINUX等; 3.网络数据库,这主要涉及应用于网络的数据库,这方面有代表性的是SQL和ORACLE等; 4.网络安全,大家不应把网络安全片面的想成对操作系统、应用系统的安全,其实安全问题在网络的各方面都存在,在这方面国内还没有出现比较好、比较全面的认证; 5.网络管理,这涉及一个局网、广网的综合管理、优化、计费等等,也没有一个综合性的认证; 6.网络应用开发,企业的网站的基本开发、互动性开发,技术有HTML、ASP、JSP、JAVA等等。
这六个方面都是企业信息化必备的因素,所以大家如果要补充自己的知识,可以从这六个方面去补充,自己还要作一个定位,是成为一个全面性的人员,还是专业性的人员。
不过如果能在这个方面打下扎实的基本功,那么再在工作中选择一个方向,会更加厉害。
总之,大家应分步确定自己的方向,然后努力在多方向充实自己 .
软件工程师学习课程
那要看你对计算机基础知识的了解有多少,你可以看一看关于,进制换算以及流程图这些非常基础的书籍,这些都是对软件开发人员来说必须了解必须会的,然后可以自己试着学习C语言基础~!这是关键的关键,它可以培养你的逻辑思维和编程能力~!然后你对编程就会有很大的了解了~!现在比较主流的是JAVA语言,C#,.NET,想学好这些一定要有坚实的基础~!
软件工程师需要掌握的基本技能有那些?
软件工程师职位描述:职位概要:设计、开发、维护、管理符合功能、性能要求的软件产品。
工作内容:参与项目需求分析,进行系统框架和核心模块的详细设计;根据新产品开发进度和任务分配,开发相应的软件模块;根据公司技术文档规范编写相应的技术文档;根据需要不断修改完善软件;编制项目文档、记录质量测试结果;完成程序测试;研究项目技术细节,编写相应的说明书。
任职资格:教育背景:◆通信、电子工程、自动化、计算机及其相关专业,本科以上学历。
经验:◆3年以上软件开发工作经验。
技能技巧:◆精通编程工具;◆具备编码和撰写文档的能力;◆熟悉软件开发流程、设计模式、体系结构;◆独立解决技术问题,有较强的创新意识;◆有良好的英语读写水平。
态度:◆好学上进,耐心细致,有责任心;◆工作勤奋,善于思考问题;◆有时间观念,独立性强,具有团队合作精神。
怎么做才能成为一名合格的软件工程师
一,良好的编程能力。
编程能力直接决定了项目开发的效率。
这要求软件工程师至少精通一门编程语言,熟悉它的基本语法、技术特点和 API( 应用程序接口 ) 。
二,自觉的规范意识和团队精神。
随着软件项目规模越来越大,仅仅依靠个人力量已经无法完成工作,因此,现代软件企业越来越重视团队精神。
一般来讲,软件 企业中的程序员可以分为两种,一种是 " 游击队员 " ,他们可能对编程工具很熟,能力很强,编写的程序简洁高效,却缺乏规范和合作的观念;另一种程序员个人能 力不一定很强,但程序较为规范,合作意识良好。
第二种人更适合现代软件企业发展的潮流。
对于基础软件工程师来说,他们在企业中的角色决定了他们必须具有良 好的规范意识和团队精神。
三,认识和运用数据库的能力。
信息以数据为中心,因此与数据库的交互是必不可少的,了解数据库的操作和编程是软件工程师需要具备的基本素质之一。
四,较强的英语阅读和写作能力。
程序世界的主导语言是英文,编写程序开发文档和开发工具帮助文件离不开英文,了解业界的最新动向、阅读技术文章离不开英 文,与编程高手交流、发布帮助请求同样也离不开英文。
作为基础软件工程师,具有一定的英语基础对于提升自身的学习和工作能力极有帮助。
五,具有软件工程的概念。
基础软件工程师从事的工作相对于系统分析师和高级程序员要单纯一些,但是 他们仍然是整个软件工程中重要的一环,他们同样需要具有软件工程的概念:从项目需求分析开始到安装调试完毕,基础软件工程师都必须能清楚地理解和把握这些 过程,并能胜任各种环节的具体工作。
六,求知欲和进取心。
软件业是一个不断变化和不断创新的行业,面对层出不穷的新技术,软件人才的求知欲和进取心就显得尤为重要,它是在这个激烈竞争的行业中立足的基本条件。
软件工程师应具有较强的学习总结能力、需求理解能力以及对新技术的敏感性。
上述这些能力不可能凭空产生,而是通过培训和教育的过程逐步获得的。
目前,社会上的软件工程师培训很多,但良莠不齐。
有些好的培训,能够从知识到技能、 从技能到应用、从应用到项目,多层次多角度地对学员进行培训,不仅关注技术层面,同时关注项目规划的实施、团队合作、技术文档的编写等在认证培训过程中无 法顾及、但在实际工作中又不可或缺的能力的培养,可以使学员在理论上掌握和理解面向对象的软件工程方法和组件化的软件设计思想。
还有一些培训中心,针对软 件设计人员,通过对经典设计模式的理论实践,使学员掌握、运用其思考和解决问题的方法,总结技术经验,构造自己的设计模式库,使软件设计人员能系统地掌握 面向对象的方法。
与信息技术领域先进的基础理论教育相比,我国高校软件人才培养模式在实践技能的培养、 IT 前沿技术 的获取与沟通、具有国际水平和标准的软件项目开发等方面的培养存在极大不足。
为解决这一问题,有必要在高校推出 " 软件教育产品 " 的人才培养模式。
" 软件教 育产品 " 是一种培养中、高级软件人才的教育产品化解决方案,其根本目的可以归结为 -- 培养掌握 IT 技术发展方向、熟悉国际开发准则和标准,并且具有丰富项 目管理经验的高级软件项目管理人员。
" 软件教育产品 " 包含了教学方案的设计、课程选取与设置、教材的引进与二次开发、教学管理流程的监控、教学实践环节的 落实等等。
仅有技术是远远不够的 产业变动快速,复合型的概念也适用于信息技术相关科系,软件工程师若能软 / 硬件兼修或略通电信,再通晓某一行业的相关知识,在职场上就会比单纯写程序的工程师吃香,工作选择机会也比较多。
而要想成为复合型的软件工程师,至少要做到以下几点: 第一,培养自己的市场意识。
市场需求决定着软件产业的发展方向,软件工程师要就市场论技术,即便是 " 天衣无缝 " 的技术,如果没有市场需求也只能 " 孤芳自 赏 " 。
绝大多数软件都是商品,任何商品的成就大小首先都取决于应用需求规模。
比尔 o 盖茨能够成为软件业第一人物的基本前提,乃是他抓住了 PC 时代软件业最 大的应用需求。
第二,培养全局角度的应变能力。
用友靠财务软件起家,但王文京最近却表示,两年之后不会再有专门的 财务软件公司存在: " 财务是企业管理的核心,但企业的供销存、客户关系管理的需求必然会越来越大,所以,最好忘掉我们是一个财务软件公司,我们要的是企业 管理软件市场。
" 同样,对软件工程师个人来说,自身的定位也不可能一劳永逸。
善于审时度势、合纵连横,有良好应变能力是软件工程师必不可少的基本素质。
在 风声鹤唳之时,善于辨别哪里是最不可替代的用户需求关口,然后再结合自身技术特点进行转型,才能在软件行业有所成就。
第三,培养某一行业的专业知识。
IBM 有一份《中国银行业加入 WTO 的新纪元》白皮书, IBM 做银 行业咨询顾问的最终目的还是推销自己的整体解决方案,占领中国金融业软 / 硬件服务市场。
但 IBM 的行动告诉我们,要想让技术和产品介入某一行业,仅有大批 专业技术人员还不够,还需要一种对行业的认知和把握能力。
软件教育要摒弃培养单纯的...
作为软件工程师应该具备哪些基本素质?
1:团队精神和协作能力把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。
把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有限的,即便如linus这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的。
独行侠可以作一些赚钱的小软件发点小财,但是一旦进入一些大系统的研发团队,进入商业化和产品化的开发任务,缺乏这种素质的人就完全不合格了。
2:文档习惯说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。
缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。
3:规范化,标准化的代码编写习惯作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。
fans叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自己压根不配自称程序员。
代码具有良好的可读性,是程序员基本的素质需求。
再看看整个linux的搭建,没有规范化和标准化的代码习惯,全球的研发协作是绝对不可想象的。
4:需求理解能力 程序员需要理解一个模块的需求,很多小朋友写程序往往只关注一个功能需求,他们把性能指标全部归结到硬件,操作系统和开发环境上,而忽视了本身代码的性能考虑,有人曾经放言说写一个广 告交换程序很简单,这种人从来不知道在百万甚至千万数量级的访问情况下的性能指标是如何实现的,对于这样的程 序员,你给他深蓝那套系统,他也做不出太极链的并访能力。
性能需求指标中,稳定性,并访支撑能力以及安全性都很重要,作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。
就这一点,一个成熟的程序员至少需要2到3年的项目研发和跟踪经验才有可能有心得。
5:复用性,模块化思维能力经常可以听到一些程序员有这样的抱怨,写了几年程序,变成了熟练工,每天都是重复写一些没有任何新意的代码,这其实是中国软件人才最大浪费的地方,一些重复性工作变成了熟练程序员的主要工作,而这些,其实是完全可以避免的。
复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作,如果一个软件研发单位和工作组能够在每一次研发过程中都考虑到这些问题,那么程序员就不会在重复性的工作中耽误太多时间,就会有更多时间和精力投入到创新的代码工作中去。
一些好的程序模块代码,即便是70年代写成的,拿到现在放到一些系统里面作为功能模块都能适合的很好,而现在我看到的是,很多小公司软件一升级或改进就动辄全部代码重写,大部分重复性工作无谓的浪费了时间和精力。
6:测试习惯作为一些商业化正规化的开发而言,专职的测试工程师是不可少的,但是并不是说有了专职的测试工程师程序员就可以不进行自测;软件研发作为一项工程而言,一个很重要的特点就是问题发现的越早,解决的代价就越低,程序员在每段代码,每个子模块完成后进行认真的测试,就可以尽量将一些潜在的问题最早的发现和解决,这样对整体系统建设的效率和可靠性就有了最大的保证。
测试工作实际上需要考虑两方面,一方面是正常调用的测试,也就是看程序是否能在正常调用下完成基本功能,这是最基本的测试职责,可惜在很多公司这成了唯一的测试任务,实际上还差的远那;第二方面就是异常调用的测试,比如高压力负荷下的稳定性测试,用户潜在的异常输入情况下的测试,整体系统局部故障情况下该模块受影响状况的测试,频发的异常请求阻塞资源时的模块稳定测试等等。
当然并不是程序员要对自己的每段代码都需要进行这种完整测试,但是程序员必须清醒认识自己的代码任务在整体项目中的地位和各种性能需求,有针对性的进行相关测试并尽早发现和解决问题,当然这需要上面提到需求理解能力。
7:学习和总结的能力程序员是人才很容易被淘汰,很容易落伍的职业,因为一种技术可能仅仅在三两年内具有领先性,程序员如果想安身立命,就必须不断跟进新的技术,学习新的技能。
善于学习,对于任何职业而言,都是前进所必需的动力,对于程序员,这种要求就更加高了。
但是学习也要找对目标,一些小coding有些codingTO就是这样的coding上只是一些Cfans们,他们也津津乐道于他们的学习能力,一会学会了asp,一会儿学会了php,一会儿学会了jsp,他们把这个作为炫耀的资本,盲目的追逐一些肤浅的,表面的东西和名词,做网络...
软件工程师的基础知识有哪些
软件工程师需要学习以下知识:(1) 熟悉计算机系统的基础知识;(2) 熟悉网络操作系统的基础知识;(3) 理解计算机应用系统的设计和开发方法;(4) 熟悉数据通信的基础知识;(5) 熟悉系统安全和数据安全的基础知识; (6) 掌握网络安全的基本技术和主要的安全协议与安全系统;(7) 掌握计算机网络体系结构和网络协议的基本原理;(8) 掌握计算机网络有关的标准化知识;(9) 掌握局域网组网技术,理解城域网和广域网基本技术; (10) 掌握计算机网络互联技术;(11) 掌握TCP/IP协议网络的联网方法和网络应用服务技术;(12) 理解接入网与接入技术;(13) 掌握网络管理的基本原理和操作方法;(14) 熟悉网络系统的基本性能测试和优化技术,以及可靠性设计技术;(15) 理解网络应用的基本原理和技术;(16) 理解网络新技术及其发展趋势;(17) 了解有关知识产权和互联网的法律、法规;(18) 正确阅读和理解本领域的英文资料。
什么叫软件开发助理工程师
工程师指具有从事工程系统操作、设计、管理、评估能力的人员。
工程师的称谓,通常只用于在工程学其中一个范畴持有专业性学位或相等工作经验的人士。
软件开发助理工程师,具体是指刚入门的软件工程师,帮助软件开发人员处理一些简单的日常工作。
属于基本上算是开发人员的助手,或者下手。
具体的工作:1、安排写小程序,2、安排写过程文档,3、直接参与项目
软件工程师需要学习哪些课程?
计算机导论 内容提要:为新学生提供一个关于计算机科学与技术学科的入门介绍,使他们对该学科有一个整体的认识,并了解该专业的学生应具有的基本知识和技能以及在该领域工作应有的职业道德与应遵守的法律准则。
数字电路与数字逻辑 内容提要:介绍数字逻辑与数字系统的基本概念、分析方法和设计原理,包括开关理论基础、组合逻辑、时序逻辑、可编程逻辑器件、数字系统等。
计算机组成原理与汇编语言 内容提要:以冯诺依曼计算机模型为出发点,介绍计算机的组织结构和工作原理,剖析计算机的运算器、存储器、控制器和输入输出设备的结构、工作原理和相互关系;介绍 80X86指令系统、汇编语言与汇编指令、汇编程序与汇编过程、简单汇编程序设计、汇编语言与高级语言的接口、宏汇编等。
计算机网络 内容提要:介绍数据通信的基本概念和计算机网络的基本原理,包括计算机网络的体系结构、数据通信的基本方法和协议、计算机网络的主要应用协议;同时介绍计算机网络系统的安全和管理知识,使学生对数据通信和计算机网络有一个全面理解。
计算机体系结构 内容提要:研究计算机系统结构的基本概念、基本原理、基本结构和基本分析方法,使同学在具有一定的软硬件知识基础上能综合认识计算机系统的软硬件功能分配与各种不同结构类型机器的特性和性能评价方法。
为研究、开发、应用高级计算机系统打下基础。
确立全面、系统的观点和学会定量分析问题的方法。
离散数学 内容提要:包括集合论、数理逻辑、图论、组合数学等内容,形式化的数学证明贯穿此课程。
高级程序设计语言 内容提要:分别以 C、C#或JAVA为例,介绍程序设计和语言,程序的基本数据结构、类型定义、简单类型和结构化类型、程序的基本控制结构、结构化程序设计、面向对象的程序设计等。
算法分析与设计 内容提要: 本课程延续数据结构课程的学习,从算法分析和设计的角度出发,除去传统的分类查找算法和一般的设计方法外,主要内容包括如下几个部分:算法研究的理论基础,递归分析技术,基本算法设计策略(几类经典算法学习), 多项式运算与 FFT ,串匹配,概率分析算法。
希望通过这一课程的学习,使学生能对现代的算法设计及分析的基本工具能有较全面的掌握。
数据结构 内容提要:介绍线性表及其链接存储结构与算法、数组与矩阵、堆栈与队列、广义表的存储结构与多元多项式表示、串与文本编辑、排序、树、图、文件结构。
数据库系统原理 内容提要:介绍数据库系统的基本概念、原理、方法及应用,主要包括数据库系统概论、数据库管理系统实现技术、数据库存储结构及其他类型的数据库系统。
编译技术 内容提要:介绍编译原理的理论和实践,包括编译程序设计、词法分析、语法分析、符号表、声明和存储管理、代码生成以及优化技术。
操作系统 内容提要:介绍操作系统的设计与实现,包括操作系统各组成部分的概述、互斥性和同步性、处理器实现、调度算法、存储算法、设备管理和文件系统。
初级软件工程师5年内的职业规划
刚毕业的大学生一般担任初级软件工程师,经过3~5年的学习和积累,能够独立完成产品的设计、复杂程序的编写及相关工作的管理之后,就有机会晋升为高级软件工程师、软件小组长或者经理。
软件工程师的职责:1. 指导程序员的工作;2. 参与软件工程系统的设计、开发、测试等过程;3. 协助工程管理人保证项目的质量;4. 负责工程中主要功能的代码实现;5. 解决工程中的关键问题和技术难题;6. 协调各个程序员的工作,并能与其它软件工程师协作工作。
个丶人爱好