做上位机开发,需要懂电气和硬件相关知识吗?上位机其实就是软件,从职责上来说,只需要懂软件开发相关知识就可以了。但是,在现实工作当中,如果一个上位机软件工程师对电气和硬件一窍不通,有很大概率会被同事瞧不起,遇到脾气不好的,很有可能还会挨骂!



我其实最开始也不是做上位机软件开发的,最开始我做的是游戏开发和企业软件开发,后来转上位机开发之后,就遇到了问题,那就是对电气和硬件一窍不通。可是,那时的我认为,软件开发就是软件开发,根本不需要懂电气和硬件相关知识,只要给我一个SDK和API文档,不管是任何硬件我都是能对接的。

我这么想其实本身没有毛病,但是,实际工作中,如果作为一名上位机开发工程师,不懂电气和硬件知识,那么跟同事之间产生矛盾,那是肯定的!

举两个比较经典的例子吧,那是我刚刚开始做上位机开发工程师的时候遇到的事情,以及我另外一个同事遇到的事情。

有一次,我们公司一个项目需要用到扫码枪,同事就问我选择什么样子的扫码枪,于是我跟同事说:“串口的就行!”。

我的这位同事是搞PLC的,也负责公司设备的一些电气设计和硬件选型,从电气角度,他问了我一个问题:“那是选RS485的还是RS232的?”

此时,我对于RS485和RS232的概念还比较模糊,但是,从编程的角度来说,我觉得不管是RS485还是RS232对于一个程序员来说,并没有什么太大的区别。

于是,我跟同事说:“这个你决定!”

结果,同事不高兴了,然后回我说:“什么叫我决定,这个不应该是你来决定的吗?”

这句话属实把我搞懵了,我跟同事解释半天,想要给他灌输一个概念,那就是从软件角度这个扫码枪我只管接收扫码枪传过来的信号,而且,在代码里面串口通讯接口都是通用的,并不区分RS485还是RS232。

当然了,我这么说难免会给他带来一种“甩锅”的想法,最后,我查了相关资料以后还是跟他说:“RS485和RS232只是电气协议,我不太懂,跟我软件关系不大!具体选型你自己选,我根据文档对接就行!”

同事听我这么说,然后就说:“RS485和RS232这么基础的协议你都不懂?你搞什么哦!”

被他这么一问,我当时就有点心虚了,但是又觉得真跟我没关系,所以只能强硬得回了一句:“我做软件开发的,需要知道吗?”

同事为了不跟我浪费口舌,只能悻悻走开,但是他显然觉得我不应该把这个事情交给他去决定!

这只是电气协议和软件协议之间的碰撞,软件和硬件之间的碰撞,更多的还是配合问题。

有一次,我们公司某个设备需要用到一个电子秤,这时候硬件部门的同事就找到了我们公司负责开发上位机软件的同事小高,让他去根据要求选择合适的电子秤。

小高接到了这个任务后立马拒绝,理由也很简单,那就是他作为软件工程师,主要负责的是写软件,硬件选型这个事情不应该由他负责,而且,他对于电子秤的一些比较专业的参数也不懂,怕出错!

后来,硬件部门的同事就和软件部门的小高吵了起来,两个人争执到了面红耳赤,最后,还是硬件部门的同事妥协。

但是,硬件部门的同事虽然妥协了,可还是撂下一句话:“我选好电子秤,你敢保证你就一定能对接?”

小高此时那股劲上来了,斩钉截铁地说:“只要你给我通讯文档,我就一定能接!”,后来,两个人因此就杠上了。

后来,小高在这个事情上吃了很大的亏,虽然硬件部门的同事选的电子秤有完整的SDK和API文档,但是,硬件部门选的这个电子秤的SDK和API封装得其实并不好,想要实现公司的需求,还得知道电子秤的底层是怎么运行的,所以,小高在这个电子秤上浪费了很多时间。

总结

通过这两件事情,我想说的是,虽然作为一名程序员,我们接触最多的虽然是代码,但是,代码其实也是为业务提供服务的,原则上说,不会电气和硬件相关知识,并不会影响敲代码,但是,会影响沟通。

就像我跟同事讨论串口相关的问题,同事不懂代码,我不懂电气,致使我们俩之间谁都没有说服对方,这种事情一旦发生的多了,最终会影响同事之间的关系,久而久之,会互相排斥对方,导致不喜欢沟通或者拒绝沟通。

我觉得,最和谐的方式,就是双方都懂一些对方的相关知识,并不需要专业,只需要知道就行的那种。

比如我的同事小高和硬件部门的同事,其实,最佳的配合方法是硬件部门的同事对电子秤进行选型以后,先将API文档给小高看一下,看看对接难度,如果对接难度较大的话,有其他可选替代产品,则换一下就可以了!

说白了,作为上位机开发工程师,懂一些电气和硬件相关知识,能够避免沟通产生障碍,也能尽量避免和其他同事产生代沟。

ad1 webp
ad2 webp
ad1 webp
ad2 webp