驱动还是应用? 这是一个多人提起的问题 韦东山
2015-11-13 12:50
232 查看
转载: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开发,毕竟它很热,并且并不需要花大多时间就能初步掌握
现在很热门的智能硬件、物联网,如果能爆发,它将需要大量的底层开发人员、上下兼通的开发人员,这也许是一个机会。
重要的事说三遍:系统!整个系统!!上下兼通整个系统!!!
无论是在公司里升职,还是以后出来创业,作为工程师来说,掌握整个系统才有前途。// 注意:行业专家除外,你的某个算法都天下第一了,别人都会来配合你,你当专家就行了。
我们先说现实:
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开发,毕竟它很热,并且并不需要花大多时间就能初步掌握
现在很热门的智能硬件、物联网,如果能爆发,它将需要大量的底层开发人员、上下兼通的开发人员,这也许是一个机会。
重要的事说三遍:系统!整个系统!!上下兼通整个系统!!!
无论是在公司里升职,还是以后出来创业,作为工程师来说,掌握整个系统才有前途。// 注意:行业专家除外,你的某个算法都天下第一了,别人都会来配合你,你当专家就行了。
相关文章推荐
- Linux socket 初步
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝
- vivi下重新调整分区