一位项目经理带着一名硬件工程师和一名软件工程师一同坐车去参加研讨会,结果汽车在半路抛锚,于是三人就“如何修理汽车”展开了激烈的讨论。
硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”
项目经理托着腮帮子邪魅一笑:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”
这时,软件工程师不慌不忙地说出了一句让硬件工程师和项目经理都喷饭的话:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生...”
en...段子归段子,但基于不同的职业习惯,我们大概可以从中看出硬件工程师、项目经理以及软件工程师这三者在工作上分别扮演着什么样的角色,也就是所谓的职能分工。
不过扎心的是,跟软件工程师比起来,硬件工程师的前景似乎不怎么被人看好。
网上总是不乏“硬件不如软件吃香”、“硬件干活多、待遇低、门槛高”、“十年硬件转IT,真香!”...等诸如此类的言论。由于硬件工程师做的事情多且杂,更是惨被戏称为“高级杂工”。
事实真是如此?搞硬件就真的这么苦逼?没有什么发展前景?看看资深硬件工程师怎么说!
先来了解一下:什么是硬件?
百度百科上是这么介绍硬件的:"硬件(英文名Hardware),是计算机硬件的简称(中国大陆及香港用语,台湾作硬体),是指计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称。这些物理装置按系统结构的要求构成一个有机整体为计算机软件运行提供物质基础。"
也就是说硬件是物理层面的,至少是你能看得到摸得着的东西,它是一种物质载体,物质基础。广义来说人类都是生活在物质基础之上,你可以把所有你能看到的东西都统称为硬件。当然狭义来说,一般我们所说的软件和硬件指的是电子领域的。
软件代码也是人编写的,我们所熟知的语言比如C、C++等都是通过编译器翻译成汇编语言,然后汇编语言通过汇编器翻译成二进制机器语言,机器语言操控门电路完成相应的动作。个人觉得,没有硬件,软件就没有存在的意义,硬件是一切的基础,这里可以看出硬件设计是多重要。
但软件和硬件又有明显的区分,至少工作内容区别很大。按照行业内描述硬件属于底层(一般称为底层硬件),软件称为上层(软件又分为:底层驱动、上层业务以及应用层等)。如果非要举个例子来说明软件和硬件,那最好的例子就是人,硬件指人的躯体,而软件指人的思维。
当然,对于非电子领域的人来说,很难想明白计算机是怎么工作的,硬件是怎样工作的,软件是怎样工作的,即使你知道都是0和1,但你没做过相关工作,你发现不了其中的神奇之处。
其实你只要知道,软件驱动硬件工作,驱动的激励是什么?是电讯号!硬件接收到的这个电讯号分为0和1,硬件的响应速度非常快,多快呢?举个例子,硬件中常用的串口波特率115200bit per second,一秒钟115200个0或者1,英语字母是8个bit(可在ASCII表看到,这在大学都学过),那就是一秒钟可打印14400个字母。你眨下眼睛一万多个字母就出来了。当然实际上并没有这么多,这只是个形象的例子。
但在电路设计上100kHz属于比较慢的速率了。再比如显示器一幅图的刷新频率在一秒钟24个以上,我们人眼就看不出来。24帧的数据是非常大的,比如1080p30格式输出,总的数据量是一秒钟1920*1080*12*30= 746496000个0或者1,也就是7亿个0或者1。
一般来说硬件设计指的是电路设计,这样说是没问题的,因为你所有的工作都是围绕电路设计,最终的目标也是产出一个优秀的电路,能够满足各种要求,经历各种考验。但实际上我们要求的是产品,而不是单板。 |