驱动还是应用? 这是一个多人提起的问题 韦东山

来源:互联网 发布:用php九九乘法表 编辑:程序博客网 时间:2024/05/29 06:53

转载:http://card.weibo.com/article/h5/s#cid=1001603908674333578687&from=1055093010&wm=3333_2001&ip=180.99.71.192

我们先说现实:

1. 底层驱动开发的职位永远少于应用开发的职位
2. 做底层系统一般都要求有经验
再看看技术职位的发展:
1. 单做底层系统而不涉及应用开发、业务开发的话,永远无法成为行业专家、系统专家
2. 只做应用开发的话,在嵌入式行业里同样无法负责整个系统,无法成为系统专家

我的众多朋友,他们现在在公司里都是技术头头,都是有股份的。
无一例外:他们既懂底层系统,也懂APP业务开发。

所以,我一直建议:系统。我们要着眼于整个系统,你不仅要学习底层开发,也要掌握一些应用技能。

假设公司里有人负责底层驱动,有人负责上层APP了,那么谁来把这两部分人的代码整合在一个产品上呢?
负责人一定要上下兼通,他知道怎么去规划分区大小、知道怎么去实现系统在线升级、知道怎么避免升级时断电导致崩溃?
知道怎么把系统划分为只读部分、可读写部分;知道怎么去规划电源管理等等;系统出问题时,他能准确判断是哪一块出问题。
再比如你们公司要更换设计方案,那么CPU的性能是否足够、内存/FLASH选择什么类型的;单板上的软件与服务器软件如何配合,
等等这些都需要有一个“系统设计师”,他必须上下兼通。

所以,你不要灰心,已经学习的底层知识将成为你工作中的助力。
应用程序的开发实际上入门门槛挺低,只要你的C语言基础扎实,这就足够了:
任何一个项目都会把功能拆成很多小块,你只需要负责一小块,它们都是一些逻辑处理而已。

应用开发技能可以认为分3部分:
1. 公司的业务逻辑:应用开发的入门其实很简单,你只要会写程序,到一个公司后基本上都是花一、二个月来熟悉他们的业
务,就可以写代码了。
2. 良好的编程思想与习惯:比如面向对象的思想、代码的复用
3. 专业知识,也许你是图象处理专家、音视频专家、网络专家,这部分不在此文介绍之列。
第1部分你现在没办法去学习;第2部分是可以练习的,比如可以尝试去写写一个完整的项目、分析一下某些开源项目,
我们第3期视频的第1个项目就是一个好例子。


最后,我们再看看怎么学习APP开发。
举一个例子:开发安卓游戏愤怒的小鸟
1.游戏有界面,这由美工或画图标;由前端工程师把这些图标用起来,这个前端工程师一般就是做android app的
2. 游戏有内部逻辑,怎么实现皮筋的伸缩?小鸟的运行轨迹怎么算出来,这需要懂一些物理知识、图形算法
3. 如果能联网进行多人游戏的话,服务器程序怎么写,怎么协调众多的用户?这些应该用纯C来实现了
你现在来看看,这1、2、3里,是负责图形显示的工程师值钱,还是负责2、3的工程师值钱?

所以,学习APP要回到基础上面来:算法、数据结构、网络编程、图象处理、声音处理等等,你无法掌握所有知识,所以看兴趣来学习吧。
现在android app开发很热,是因为会的人还不多,但是android app的入门简单,如果只是单纯会操作那些图标、按钮、菜单,我认为没什么发展前途。

抛去图象处理、音视频处理等等专业技术行业,我来说说在校生怎么为嵌入式行业的工作而学习:
1. 掌握嵌入式开发套路:搭环境、在板上搭建系统、交叉编译、调试
2. 如果对底层感兴趣,那么学一下驱动开发
3. 多写一些算法题,工作中大部分代码都是用来处理业务逻辑的,但是练习算法题可以提高你的编程能力
4. 了解一些编程思想,尝试自己去写一个稍大一点的程序,把它的框架设计得容易扩展、容易维护
5. 了解一下android app开发,毕竟它很热,并且并不需要花大多时间就能初步掌握

现在很热门的智能硬件、物联网,如果能爆发,它将需要大量的底层开发人员、上下兼通的开发人员,这也许是一个机会。

重要的事说三遍:系统!整个系统!!上下兼通整个系统!!!
无论是在公司里升职,还是以后出来创业,作为工程师来说,掌握整个系统才有前途。// 注意:行业专家除外,你的某个算法都天下第一了,别人都会来配合你,你当专家就行了。
0 0
原创粉丝点击