上位機(jī)軟件工程師和普通軟件工程師有什么區(qū)別?這是我跟其他程序員小伙伴一起聊天時他們問我最多的問題,很多想要從事上位機(jī)軟件開發(fā)這個職業(yè)的其他程序員對于上位機(jī)軟件工程師日常的工作內(nèi)容還是比較模糊的,簡單來說,上位機(jī)軟件工程師和普通軟件工程師比較大的區(qū)別就是,上位機(jī)軟件工程師需要經(jīng)常和硬件和人打交道,而一個普通的軟件工程師,可能平時除了寫代碼,就是和部門同事打交道了,這就是它倆的區(qū)別。但在此基礎(chǔ)上,我們還需要延伸一下,細(xì)化一下!
和硬件打交道
既然有上位機(jī),那么就會有下位機(jī),下位機(jī)通常指得是能夠直接使用電信號或者其他比較直接的方式向設(shè)備發(fā)送指令的,比如PLC、繼電器、IO信號卡等等,總之,下位機(jī)五花八門,不是只有PLC才叫下位機(jī),只不過通常做下位機(jī),PLC做得多一些而已。
在我們這種經(jīng)常寫上位機(jī)軟件的程序員眼里,只要非軟件的,我們統(tǒng)稱叫硬件,很少再去談什么下位機(jī)。
要聊硬件,很多剛接觸上位機(jī)開發(fā)的小伙伴都有一個顧慮,那就是自己沒有對接過硬件,甚至有很多公司在招聘上位機(jī)軟件工程師的時候,都會問上位機(jī)軟件工程師對接過哪些硬件。
可以這么說,我做了那么多年上位機(jī),我對接過各種硬件,想要完全熟悉,只能說學(xué)不完,根本學(xué)不完!
工業(yè)用的硬件如果擺出來,最起碼都有上千種,哪怕是最資深的上位機(jī)軟件工程師,可能一輩子能夠接觸的也就上百種,想要完全熟悉根本就不可能。
但是,這些硬件雖然五花八門,但是通訊邏輯無非就那么兩種,不是串口就是網(wǎng)口、通訊協(xié)議搞清楚了,剩下的就是怎么發(fā)送和接收數(shù)據(jù)的問題了。
發(fā)送和接收數(shù)據(jù)的方式也就那么幾種,比如說Socket、Modbus、MQTT,別聽那些硬件工程師說什么485、232還是什么其他復(fù)雜的通訊邏輯,基本上在軟件工程師這邊,沒什么區(qū)別!
上位機(jī)軟件工程師入門硬件知識只需要會這些就行了!多了你也不會!高級一些的,比如說一些運(yùn)動控制卡的使用、機(jī)器視覺,那個的確是需要個人經(jīng)驗的,但是學(xué)起來也不難!
所以,各位如果想轉(zhuǎn)上位機(jī)開發(fā)的同學(xué),不要焦慮,上位機(jī)的硬件開發(fā)比傳統(tǒng)軟件開發(fā)的邏輯簡單多了!
和人打交道
這是上位機(jī)軟件工程師和普通軟件工程師最大的不同,上位機(jī)軟件工程師和人打交道的頻率要高于傳統(tǒng)軟件工程師,這里的人可能是公司同事、甲方項目經(jīng)理甚至是甲方的底層操作人員。
而且,除非貴公司做的是整機(jī)開發(fā),即那種設(shè)備和軟件一體機(jī),否則,可能連項目需求都是需要上位機(jī)軟件工程師在甲方那邊一點(diǎn)一點(diǎn)磕出來的!
所以,上位機(jī)軟件工程師出差的頻率是比較高的,目前我所接觸到的涉及到上位機(jī)軟件開發(fā)的公司,幾乎沒有不需要出差的!有些公司出差的頻率還特別高!這主要看公司的組織架構(gòu)!
比如說,我曾經(jīng)任職的一家公司組織架構(gòu)就比較完整,有項目經(jīng)理、機(jī)械工程師、電氣工程師、裝配工程師、軟件工程師、系統(tǒng)工程師(實施工程師)。
其中,項目經(jīng)理和系統(tǒng)工程師就是負(fù)責(zé)跑腿的,裝配工程師只有在設(shè)備安裝時才需要出差。
項目經(jīng)理的職責(zé)就是了解需求,所以直面客戶的情況比較多,系統(tǒng)工程師則是在裝配工程師安裝設(shè)備時或者安裝完設(shè)備后做輔助工作的,比如說協(xié)助裝配工程師安裝硬件,協(xié)助軟件工程師安裝軟件和調(diào)試軟件的。
但是,像我現(xiàn)在的公司,組織架構(gòu)就不那么完整,因為沒有項目經(jīng)理,也沒有系統(tǒng)工程師,因此,軟件的需求確定和后面的軟件安裝調(diào)試都是要軟件工程師親力親為的,所以出差加班的頻率就有些高了!
基于此,因此,上位機(jī)軟件工程師不光要和客戶確定需求,還要跟公司同事一起研究軟硬件方案,最后部署項目后,還需要組織客戶培訓(xùn),項目出問題的時候,還需要在一線聆聽客戶的“教誨”!
一些不太好干的項目,被公司催進(jìn)度、被客戶罵那是常有的事情!有時候項目做得不符合客戶的心意,在酒桌上賠禮道歉也是很正常的事情!
能不干就不干
現(xiàn)在,上位機(jī)軟件工程師在目前國內(nèi)還不算飽和,甚至說缺口很大,原因很簡單,那就是大家都去學(xué)Java了!可上位機(jī)軟件使用的編程語言里,C++和C#占大多數(shù),一小部分使用Python,這里就不說了,很多舊設(shè)備使用VB或者VB.Net的非常多,而像C++、C#和VB程序員本來就少,像C++程序員,做底層的就比較多,因為工資高嘛!還有做游戲開發(fā)的也比較多,C#更別說了,基本上有點(diǎn)追求的,都去做游戲開發(fā)了,因此,C#上位機(jī)軟件工程師更缺!
但是,為什么不建議大家從事上位機(jī)軟件工程師這個職業(yè)呢?
說簡單點(diǎn),那就是基于上述第二點(diǎn),因為經(jīng)常需要出差和加班,甲方需要你在1號把設(shè)備運(yùn)到他們那邊去,你2號就不行!而且,一旦出現(xiàn)項目逾期的情況,這種壓力一般人是承受不住的!
總結(jié)
總之,上位機(jī)軟件開發(fā)工程師雖然工作內(nèi)容比較簡單,但是需要面對復(fù)雜的同事和客戶關(guān)系,沒有一定的耐力是干不下去的,
當(dāng)然了,如果您是一個能吃苦耐勞,想要工作穩(wěn)定,對于薪資要求又不是太高的程序員,那么上位機(jī)軟件工程師將會是您不二之選!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.