2016年行业薪资排行榜,IT技术研发名列前茅吸引众多从业人员。那么如何成功进入这个行业呢?
进入这个技术行业最重要的还是技术过关。很多人对这个技术过关的概念是非常模糊的。说不出来一个明显的界限。因为不同的企业对新人有不同的要求。其实这个界限并不模糊,IT研发企业更加注重实战,一般公司对初级工程师的入门要求用代码量来表示:能够独立编写逻辑复杂度中等的单个项目代码量在2000-3000行。只要能达到这个代码量,虽然不能保证所有公司都能技术过关,但大部分的公司的技术这关是可以通过的。
到这里顺便给入行人纠正一件事,很多人在学习开的时候,只对着书本学习,不去实战。这样的学院派的学习方式,很难通过面试。例如技术面试官常问的一个问题“你在开发中遇到的印象最深刻的问题是什么?如何解决的?”没有实战是没办法回答的。开发工程师本身的工作就是实战编程,所以实战是重点。也是面试官最关心的,你来我们公司能不能完成实际开发任务,能不能给公司创造价值,就看这个了。现在很多应届大学生都希望能找一家公司,边做边学。对于好学生而言是最好不过的。不过对于技术没有过关的同学而言,更多的是到处碰壁,被面试官打击,直到丧失了做研发的念头。所以如果你大学玩的比较多,或者没有太多实战经验。最好是能够系统的学习一下。
接下来就介绍一下系统学习内容(此内容是参考上海怡胜实训中心的实训课程):
系统学习的最重要的一件事情是有信心。很多人看到上面我提到的完成2000-3000行的代码就已经开始退缩的。技术不想搞艺术,需要灵感没灵感一辈子都没办法创造出好的作品。技术只需要你慢慢的学习积累,内容是有限的。只要慢慢努力肯定是可以实现的。
如何一步步去学习:
第一步:搭建环境,工欲善其事必先利其器。没有一个开发环境谈不上学习开发。对于想学习智能嵌入式给大家推荐一个主流的开发平台Linux。Linux是设备开发里面使用的最多的平台,是目前主流的嵌入式开发平台。安装Linux系统(可以使用Vm等虚拟机软件来辅助)。
学习最终要求:能够熟练使用开发平台,完成基本操作,为学习开发做准备。
第二步:加强开发语言,首先从C语言开始。C语言从诞到现在大半个世纪,一直是全球使用最多的语言之一。其实很多开发语言都有C语言的身影,都是从C语言演化出来的。C语言的学习也可以让你更加了解程序运行的最本质原理。学习的时候必须理论和编程相结合。千万不要只看书(或者视频)不去动手。看的再好,眼高手低等于零。要做到C语言中的每个知识点都能够在程序中体现来,都能够在程序中得到印证。通过理论写出程序,通过程序印证加强理论。在实战中训练自己的编程思维(逻辑思维),逻辑思维能力是没办法通过书本学习的,也没办法传授的,只能通过训练来加强;也要完成对程序BUG调试能力的提升。第二阶段是最整个学习阶段最痛苦的。万事开头能,这个阶段能够坚持下来的人,就可以恭喜你,你已经完成迈入研发领域的第一步。
课程最终要求:学习完成后,编写一个小的管理系统(学生管理、图书管理、公司员工管理等)。不要觉得这个小系统无聊简单。管理系统可以把我们学习到理论全面的整合到一起,应用到程序中。这个小项目是你综合能力提升的一个标志。怡胜实训项目中有5个,都可以作为参考项目)
第三步:算法。这里所指的算法,主要是存储相关的,更确切的说应该是数据结构。作为计算机程序,其实主要是完成数据处理。要想完成对数据的处理,第一步就是如何把数据存入到计算机中。我们这里需要研究的算法包括:链表、树、hash等。算法研究的时候也要注意不要看理论。没个算法都要能够通过程序实际完成。否则但不上你掌握算法。除了存储之外,还可以掌握一些,加解密、压缩、二维码等常用的算法,这些算法一半不需要知道如何实现,只要能够知道怎么找打这些算法库,如何调用就可以了。
学习最终要求:能够用程序实现存储算法。
第四部:C++。C和C++在智能开发领域使用的都非常多。C++的学习语法并不难,更重要的是理解面向对象的理念,并在设计中体现出来。面向对象的三大思想:封装、继承、多态。前期可以重点理解封装、继承。多态思想在项目中的使用可以先放放。
学习最终要求:能够完成使用面向对象的思想完成一个小项目。(可以翻写一下C项目,重要的是引入面向对象的思想)
第五部分:Linux应用编程,主要掌握操作系统的基本原理及相关编程接口。内容:I/O操作、并发处理(进程、线程)、进程间数据交互、网络协议栈的基本概念、网络编程模型。学习这个部分一定要把理论先弄明白,然后结合程序了解。编程接口要能够掌握基本的调用。具体细节内容可以参考怡胜的系统编程课程大纲(可以到他们官方网站留言获取)。
学习最终要求:完成一个基于网络通讯方面的项目。使用一种并发机制。
第六部分:Linux底层开发。底层开发三个部分:ARM原理、Linux移植(分应用移植、系统移植)、驱动。主要掌握驱动部分,企业需求主要是驱动工程师的需求。驱动要能够完成基本硬件驱动程序编写。按键驱动、蜂鸣器、字符设备等。这部分课程需要了解LInux内核模块的原理机制。这部分课程如果没有硬件功底的化,可以以后加强,先从应用入手进入研发行业。
学习最终要求:完成一个简单的字符设备驱动。独立完成。