本博客与本人在csdn上的博客同步:https://blog.csdn.net/qiuzhizhecsd/article/details/78993953 转载请注明出处程序员
在这里makekam对底层软件的理解就是指驱动开发,代码移植等工做。其中也包括底层的算法。在小公司作软件不要作底层软件开发,犹如在公司作硬件开发不要只是焊接电路板。
小公司处于产业链的最末端,没有本身的核心技术,只是针对用户需求完成一些系统集成和定制。而核心技术具备广泛适用性如“组合导航技术”、“操做系统移植与软件框架”等技术并不局限于某个领域,这些技术大公司能够集中力量突破,而后将技术卖给各个小公司。因此广泛适用性的技术每每来自大公司。所以,小公司的底层软件要么是测试供应商的软硬件产品,而后与供应商沟通测出的问题,要么是让本身公司的代码匹配供应商的产品,好比驱动开发、代码移植等。这些工做每每代码量奇少无比,体现不出高级程序员和低级程序员的区别,由于作这些事主要是看外设文档,与供应商沟通。只要花费人和时间,这些事情都能完成。算法
除此以外,作底层开发还要替硬件填坑背锅。小公司缺乏硬件测试流程,问题每每在产品运行时才能发现。假设makekam是作底层软件开发的,当作硬件的人焊接的板子有问题时,这些问题每每没法完全排除是软件致使的,因此作底层软件的makekam就要花几天时间把底层代码查个遍来分析问题,最后才能让硬件的人用十五分钟解决问题。框架
也许你会说,作底层软件作的多了不就积累了不少经验吗?其实否则,只要公司决定出钱购买另外一款外围设备,那么以前的经验就很难用得上了。并且底层开发代码量很小,只是匹配主控芯片和外设,哪里有什么创新,哪里有什么复杂度?并且更重要的是,公司的领导内心永远不惦记你,这是由于,公司领导想的都是公司的项目,而这些项目的主要困难是什么?毫不是底层软件开发!底层软件开发只须要人和时间就必定能够完成,这是一个必然事件。而充满不肯定性的应用层开发和项目成本估算还有项目需求分析才是这个项目成败的关键。所以,对于领导来讲,在项目肯定以前须要和三我的沟通,第一是和客户沟通,由于客户决定产品研发方向,第二是和外设供应商沟通,由于只有外设供应商才知道项目的开发平台的属性与成本。第三是和作应用开发的人沟通,由于项目的主要工做量是在应用层。领导不会和作底层软件的人沟通,由于底层软件只是一个桥梁,一个台阶,一个垫脚石。底层软件作的再好,也只不过是把系统作稳定,项目的价值的提高取决于业务目标和应用开发。测试
总之,在小公司,面向客户,面向应用才有前途。由于小公司存在的意义就是面向客户整合产业链上游资源。spa