知乎上看到这么一个问题:走嵌入式方向,一定要软硬件都懂吗?
一 信息时代知识爆炸
为了解决这个问题,必然需要进行社会分工,由此产生了不同的分工角色,特别是对于技术类的工作,其分工类别随着系统的复杂度上升,分工会越加明显。大家在各种不同的领域中,干着自己高度专业化的事情,通过合理的分工边界、合作,达成系统的最高效益。当这套体系运作成熟了之后,或者说大家各自的角色做久了之后,角色定义上你自己在这个系统中只是一个很小的占比,但你看到的大家要做的事情却又是一个庞大的系统,对于这个系统更多的认知,你知道有利于你更多地了解事情,但是人家给到你的角色定义上,又好像没有这个硬性要求。
二 解决问题与角色定义无关
一个技术人在面对一个技术问题时,问题通常不会简单地区分这是一个硬件问题还是软件问题,所谓“一定要软硬件都懂吗”的疑问并不存在,因为在日后面对需要解决的bug中,对于问题的执行处理会有软硬件的人员分工,但是对于解决问题,没有所谓的边界。本质上,你就是要解决问题。
三 嵌入式知识领域广
而对于嵌入式工程师,
硬件方向需要面对的物料选型设计除了电源芯片、阻容感、二三极管、接口端子外,还涉及主控芯片选型、专用SOC芯片选型(如DSP等)、各类传感器(红外、温湿度、距离等)、各类模拟电路设计、芯片应用等;
软件方向需要面对底层驱动、应用层业务逻辑、无线协议(WiFi、ZigBee、BLE等)、通讯接口协议(UART、SPI、I2C等)......这里面所涉及到的内容比天线或电源工程师所需要涉猎的内容要多的多,并且关于软硬件的内容,通常还是交织在一起的。
举个例子,有一款板子喇叭播不出声音,那么这里面原因可能是硬件增益电阻没配置好,也有可能是软件增益值没配好,甚至是否软件声学左右通道没配置好,到底是没有声音,还是声音小到你听不到。涉及这部分功能的软硬件,其中就包括功放电路的设计、I2S通讯、喇叭设计选型等。
四 细分岗位的意义
因此我在工作中也挺害怕碰到这么一类人,他们软硬件都有过涉猎,但都是基于表层的认知,所谓表层的认知,打个比方就是知道使用330uf/6.3V的电容,但是并不知道到底是用铝电解电容好还是用固态电容好,再比如,能够写出一个按键开关的程序,但是完全没有“高内聚低耦合”的理念。
对于大部分的人来讲,假定一个人每天工作8h,那么你软硬件的开发工作都去承担的时候,在庞大的知识领域中,你在细分领域的积累怎么和一个每天8h都干软件或者硬件的工程师相比?且不论硬件岗位还可以细分电源、基带、天线、射频等,软件岗位还可以细分驱动、应用、网关等。
而前文提到的,“硬件理论很扎实的软件高手”、“软件认知很宽泛的硬件高手”,这些人会有一个共同的特征,那就是他们首先要有一个细分领域之长,在这个细分领域做到精湛,具备纵向的深度之后,其他领域知识的认知就决定着他的知识广度。伴随着项目实战的增加,纵向的技能让他的解决问题的认知更加扎实,而横向的技能让其解决问题有着更多的思维。
五 软硬件不矛盾
综上所述,软硬件的知识对于解决问题来说都是必备的技能,而且这两种技能你掌握越多,对于解决问题越有帮助。当然,你至少要有一项在细分领域中能称得上精湛的技能,而不是泛泛而谈。从两个维度上讲:对于职业岗位谋生,一技之长让你能够在众多的竞争者中脱颖而出;对于实际工作面对问题的时候,软硬件知识的全面性让你能更加系统地看待问题、解决问题。
原创不易,若有转载需求,务必告知!
如果我的文字对你有所启发或帮助,
“点赞\转发”是对我最大的支持
推荐阅读: