上位機(jī)軟件工程師和普通軟件工程師有什么區(qū)別?這是我跟其他程序員小伙伴一起聊天時(shí)他們問我最多的問題,很多想要從事上位機(jī)軟件開發(fā)這個(gè)職業(yè)的其他程序員對于上位機(jī)軟件工程師日常的工作內(nèi)容還是比較模糊的,簡單來說,上位機(jī)軟件工程師和普通軟件工程師比較大的區(qū)別就是,上位機(jī)軟件工程師需要經(jīng)常和硬件和人打交道,而一個(gè)普通的軟件工程師,可能平時(shí)除了寫代碼,就是和部門同事打交道了,這就是它倆的區(qū)別。但在此基礎(chǔ)上,我們還需要延伸一下,細(xì)化一下!

和硬件打交道

既然有上位機(jī),那么就會(huì)有下位機(jī),下位機(jī)通常指得是能夠直接使用電信號(hào)或者其他比較直接的方式向設(shè)備發(fā)送指令的,比如PLC、繼電器、IO信號(hào)卡等等,總之,下位機(jī)五花八門,不是只有PLC才叫下位機(jī),只不過通常做下位機(jī),PLC做得多一些而已。
在我們這種經(jīng)常寫上位機(jī)軟件的程序員眼里,只要非軟件的,我們統(tǒng)稱叫硬件,很少再去談什么下位機(jī)。
要聊硬件,很多剛接觸上位機(jī)開發(fā)的小伙伴都有一個(gè)顧慮,那就是自己沒有對接過硬件,甚至有很多公司在招聘上位機(jī)軟件工程師的時(shí)候,都會(huì)問上位機(jī)軟件工程師對接過哪些硬件。
可以這么說,我做了那么多年上位機(jī),我對接過各種硬件,想要完全熟悉,只能說學(xué)不完,根本學(xué)不完!
工業(yè)用的硬件如果擺出來,最起碼都有上千種,哪怕是最資深的上位機(jī)軟件工程師,可能一輩子能夠接觸的也就上百種,想要完全熟悉根本就不可能。
但是,這些硬件雖然五花八門,但是通訊邏輯無非就那么兩種,不是串口就是網(wǎng)口、通訊協(xié)議搞清楚了,剩下的就是怎么發(fā)送和接收數(shù)據(jù)的問題了。
發(fā)送和接收數(shù)據(jù)的方式也就那么幾種,比如說Socket、Modbus、MQTT,別聽那些硬件工程師說什么485、232還是什么其他復(fù)雜的通訊邏輯,基本上在軟件工程師這邊,沒什么區(qū)別!
上位機(jī)軟件工程師入門硬件知識(shí)只需要會(huì)這些就行了!多了你也不會(huì)!高級(jí)一些的,比如說一些運(yùn)動(dòng)控制卡的使用、機(jī)器視覺,那個(gè)的確是需要個(gè)人經(jīng)驗(yàn)的,但是學(xué)起來也不難!
所以,各位如果想轉(zhuǎn)上位機(jī)開發(fā)的同學(xué),不要焦慮,上位機(jī)的硬件開發(fā)比傳統(tǒng)軟件開發(fā)的邏輯簡單多了!
和人打交道

這是上位機(jī)軟件工程師和普通軟件工程師最大的不同,上位機(jī)軟件工程師和人打交道的頻率要高于傳統(tǒng)軟件工程師,這里的人可能是公司同事、甲方項(xiàng)目經(jīng)理甚至是甲方的底層操作人員。
而且,除非貴公司做的是整機(jī)開發(fā),即那種設(shè)備和軟件一體機(jī),否則,可能連項(xiàng)目需求都是需要上位機(jī)軟件工程師在甲方那邊一點(diǎn)一點(diǎn)磕出來的!
所以,上位機(jī)軟件工程師出差的頻率是比較高的,目前我所接觸到的涉及到上位機(jī)軟件開發(fā)的公司,幾乎沒有不需要出差的!有些公司出差的頻率還特別高!這主要看公司的組織架構(gòu)!
比如說,我曾經(jīng)任職的一家公司組織架構(gòu)就比較完整,有項(xiàng)目經(jīng)理、機(jī)械工程師、電氣工程師、裝配工程師、軟件工程師、系統(tǒng)工程師(實(shí)施工程師)。
其中,項(xiàng)目經(jīng)理和系統(tǒng)工程師就是負(fù)責(zé)跑腿的,裝配工程師只有在設(shè)備安裝時(shí)才需要出差。
項(xiàng)目經(jīng)理的職責(zé)就是了解需求,所以直面客戶的情況比較多,系統(tǒng)工程師則是在裝配工程師安裝設(shè)備時(shí)或者安裝完設(shè)備后做輔助工作的,比如說協(xié)助裝配工程師安裝硬件,協(xié)助軟件工程師安裝軟件和調(diào)試軟件的。
但是,像我現(xiàn)在的公司,組織架構(gòu)就不那么完整,因?yàn)闆]有項(xiàng)目經(jīng)理,也沒有系統(tǒng)工程師,因此,軟件的需求確定和后面的軟件安裝調(diào)試都是要軟件工程師親力親為的,所以出差加班的頻率就有些高了!
基于此,因此,上位機(jī)軟件工程師不光要和客戶確定需求,還要跟公司同事一起研究軟硬件方案,最后部署項(xiàng)目后,還需要組織客戶培訓(xùn),項(xiàng)目出問題的時(shí)候,還需要在一線聆聽客戶的“教誨”!
一些不太好干的項(xiàng)目,被公司催進(jìn)度、被客戶罵那是常有的事情!有時(shí)候項(xiàng)目做得不符合客戶的心意,在酒桌上賠禮道歉也是很正常的事情!
能不干就不干

現(xiàn)在,上位機(jī)軟件工程師在目前國內(nèi)還不算飽和,甚至說缺口很大,原因很簡單,那就是大家都去學(xué)Java了!可上位機(jī)軟件使用的編程語言里,C++和C#占大多數(shù),一小部分使用Python,這里就不說了,很多舊設(shè)備使用VB或者VB.Net的非常多,而像C++、C#和VB程序員本來就少,像C++程序員,做底層的就比較多,因?yàn)楣べY高嘛!還有做游戲開發(fā)的也比較多,C#更別說了,基本上有點(diǎn)追求的,都去做游戲開發(fā)了,因此,C#上位機(jī)軟件工程師更缺!
但是,為什么不建議大家從事上位機(jī)軟件工程師這個(gè)職業(yè)呢?
說簡單點(diǎn),那就是基于上述第二點(diǎn),因?yàn)榻?jīng)常需要出差和加班,甲方需要你在1號(hào)把設(shè)備運(yùn)到他們那邊去,你2號(hào)就不行!而且,一旦出現(xiàn)項(xiàng)目逾期的情況,這種壓力一般人是承受不住的!
總結(jié)
總之,上位機(jī)軟件開發(fā)工程師雖然工作內(nèi)容比較簡單,但是需要面對復(fù)雜的同事和客戶關(guān)系,沒有一定的耐力是干不下去的,
當(dāng)然了,如果您是一個(gè)能吃苦耐勞,想要工作穩(wěn)定,對于薪資要求又不是太高的程序員,那么上位機(jī)軟件工程師將會(huì)是您不二之選!
熱門跟貼