职业决策
你的位置: 首页 >> 求职指导 >> 职业决策↓

软件工程师——计算机、通信工程

发布时间:2014-10-29浏览量:188

 

 

 

软件工程师

——计算机、通信工程

一、   了解这个职业

1. 软件工程师职业现状与发展趋势

作为高科技行业的代表,21世纪最受欢迎职业之一——软件工程师,技术含量较高,同时行业入职门槛也相对较高。特别是随着计算机和互联网技术在各个行业内广泛而深入的运用,无论企业本身从事什么业务,都需要软件工程师的工作支持。虽然这几年高校培养了大量的从事计算机专业的毕业生,但市场上高级软件人才依然短缺,并成为制约我国软件产业快速发展的一个瓶颈。因此,未来几年内,市场对软件工程师的需求依然会呈明显上升趋势。

                 

一般,应届毕业生从事软件工程师职业后的常见工作内容包括:

  参与软件系统的设计和分析;

  根据设计文档,完成系统模块编码的工作;

  编写测试文档,参与系统单元模块的测试工作,完成测试报告;

  编写相关技术文档;

  参与用户手册文档的编写,配合完成后期的技术支持等工作。应届毕业生进入企业后,一般会从企业的某一个小模块开始熟悉公司的代码规范和业务流程。在大企业接触到的项目较多,涉及的专业问题和解决办法较深,对个人专业能力的提升会有更多的帮助;小企业中,软件工程师接触到的范围更广,对个人的实操能力有更多的需求。

           

 

3. 薪酬范围(北京市)与上升速度

软件工程师起薪高低差别很大,与企业性质和行业有关。对大学生来说,多数企业为该职业提供的薪酬范围通常在3000~6000元,少数企业可能高达10000元甚至更多,其中互联网企业较多。

目前,软件工程师的薪酬上升速度属各职业中最快之一,技术水平高低直接和薪酬挂钩。对于技能高、有项目经验的应届生来说,谈薪酬时会有明显优势。

 

4. 常见职业发展路径

    

应届毕业生成为软件工程师之后的职业发展方向一般分为4个方向:项目经理;行业资深专家研发经理或技术总监,管理公司技术团队,负责技术研发;转向管理岗位;或是转向技术类相关岗位,如产品、运营、咨询、SEO营销等。

 

5. 从事该职业对工作转换与创业的帮助

软件工程师是一个专业性很强但行业依赖性相对较低的职业,软件技术的掌握都是一个循序渐进的过程,如果能在某一个技术领域有着比较深厚的积累,将对工作转换有非常大的帮助。现在市场上对熟练掌握框架或者技术底层细节的软件工程师的需求非常旺盛。目前,互联网领域催生了很多的新兴行业和业务,和别的职业相比,软件工程师在这方面有着天然的优势。因此,搞软件出身的创业者层出不穷。当然,如果技术功底不过硬,创业机会虽多,但成功的可能性并不高。

 

一、  你适合这个职业吗?

   

1. 不同背景的大学生从事该职业的竞争力分析

★专业:计算机、软件、通信工程、电子等相关专业。

★学历:大专及以上学历,高学历者成为高端软件人才的机会明显高于低学历者。

★社会实践背景(包括实习等):企业一般会优先考虑有计算机行业相关岗位实习经验的应届毕业生。

★获奖背景(包括奖学金等各种奖励):有奖学金在很多企业的招聘中会成为加分项;如果有ACM程序设计大赛、百度之星、Google程序员大赛等计算机类比赛的获奖证书,很多企业会优先考虑。如果有大学生数学建模大赛(MCM/ICM)的获奖证书,在进入一些大企业时也会

成为很重要的加分项。

★证书背景:SCJP认证、微软专家认证、CCNA3COM资格认证、ADOBE资格认证等,是大学生职业技能的重要证明依据。这些证书有时也是企业招聘的入门条件。

 

2. 性格特质与该职业的关系

       

该职业虽然也有很多与人打交道的工作,但主要还是进行业务分析和计算机逻辑处理。因此,性格过于活跃会给用人单位造成不能沉下心来的误判。

 

二、  从事该职业前的准备

1. 学业准备

软件工程师对从业者的技术知识要求比较全面,主要需要掌握以下技术:

  数据库技术(SQL    Server,   DBMS,  ODBC,  JDBC)

  编程语言(C#,   Java,      HTML,  T-SQL,  JavaScript,    ASP.Net)

  软件开发平台(vs    2005,     MyEclipse,   Dreamweaver)

  规范的编程习惯和技术文档编写习惯;

  系统分析及架构(需求分析、体系结构、系统设计等)。

如果上述内容并没有在学校的课程中涉及,平时的自学就变得非常重要。

 

2. 职业能力与职业素养准备

        规范化、标准化的编码能力

  虽然软件工程师的工作不同于程序员,但是一个软件工程师其前身必定是一个优秀的程序员,软件人员的一个重要职责就是把用户的功能需求用某种语言实现,这就要求软件工程师掌握多种语言,具有良好的编码能力,精通C#Java等语言和PerlPythonPHPShell等脚本语言,熟悉它们的基本语法和技术特点,并学会用软件工程的思想和标准编写代码。

        具有良好的沟通能力

  您必须善于把自己对项目的理解以及在开发过程中的问题告诉大家、告诉用户,这是基本的素质,也是必备的能力。

 

3. 求职攻略

        针对该职业相对有效的求职渠道

一般而言,从事软件工程师职业大多要求具备计算机、软件、通信工程、电子等相关专业背景,这些专业属于工学类学科,工学类专业学生求职成功的渠道如下图所示。此外,毕业生还可关注各类软件行业招聘会、IT类求职网,如数字英才网、软件英才网、中国IT英才网等发布的信息。

                   

 

常见面试问题(与专业相关)

  a)请简单介绍C++Java中的异常处理机制的简单原理和应用。

参考答案:

Java程序违反了Java的语义规则时,Java虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况:一种是Java类库内置的语义检查。例如数组下标越界,会引发indexOutOfBoundsException,访问null的对象时会引发NullPiontException;另一种情况就是Java允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常,所有的异常都是java.lang.Thowable的子类。

  b)多线程有几种实现方法?分别是什么?同步有几种实现方

法?分别是什么?

参考答案:

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口。同步的实现方法有两种,分别是synchronized,waitnotify

 

职场一点通

▲对大学生的特别提示

发现问题的眼睛和主动学习新技术、新知识,并解决问题的能力。

◎ 编写代码只是程序员所做工作的40%

要成为一个优秀的程序员,您必须培养广泛而全面的技巧,对业务逻辑而不仅是技术逻辑有着深入的理解,必须学会有效沟通,理解别人,更让别人能够理解。

◎ 学会站在别人的肩膀上

不要再重新发明轮子,用谷歌找找看,或者更好的方法是请教您的同事。学习别人的经验,也是快速提高的重要方式。

 

▲过来人寄语

◎ 学会看代码

大多数程序员都只愿意用自己写的代码,但高手一般可以轻易调用别人写的代码。表面看上去是工作习惯不同,但实际上是能力上的差别。看代码要比写代码难很多倍。我建议上班时多给队友们作codereview,下班后试着阅读github上的开源代码。

◎ 复习

程序员一般都很忙,手上有永远也做不完的活儿。但在某些公司里,你只是在反复做同样的事。偶尔放下手上的活,留一部分时间分析自己的弱点,更改坏习惯,看新书,学习新语言。

◎ 做个人项目

工作中的编程一般只能让你熟悉一部分技术,导致短板的形成。这就好像你长期一个人在自己的后院练习投篮,但第一次打比赛才发现原来还需要传球、防守、抢篮板这些技术。

◎ 问答网站

问问题和回答问题都是很好的学习方式。有时写出一个好问题,比写出解答此问题所需要的代码还难。写问题可以帮您整理自己的思维逻辑。您可以试着每周在stackoverflow.com上问一个问题或写一个好答案。

◎ 加入一个好团队

最好的进步方式就是跟比自己强的人一起做事。高手都愿意聚在一起,所以很多会选择去优秀的早期创业公司。我在硅谷和创新工场创业时遇到了很多神人,跟他们学了不少东西。

 

 

——李天放 课程格子创始人 前微软高级工程师