一個(gè)上位機(jī)項(xiàng)目做了兩年多,甲方是真能忍!那么,是這個(gè)上位機(jī)項(xiàng)目比較難做嗎?其實(shí)不是的,而是做這個(gè)上位機(jī)項(xiàng)目的人沒(méi)有編程功底,之所以做兩年多,只能慢慢磨,一邊學(xué)習(xí)編程知識(shí)一邊做這個(gè)項(xiàng)目,得知這個(gè)事情后,我直豎大拇指:“甲方是真能忍!”
朋友公司的一個(gè)員工最近離職了,留下來(lái)一個(gè)爛攤子,據(jù)說(shuō)這個(gè)員工本來(lái)是做PLC的,公司主要從事設(shè)備開(kāi)發(fā)業(yè)務(wù),一般軟件項(xiàng)目都是外包出去的??墒牵趦赡昵?,公司的甲方突然要求公司幫他們?cè)谠鹊纳衔粰C(jī)系統(tǒng)上再開(kāi)發(fā)一套中間件上位機(jī)系統(tǒng)。
朋友本來(lái)準(zhǔn)備拒絕,但是甲方說(shuō)之所以讓他們開(kāi)發(fā),是因?yàn)檫@套系統(tǒng)牽扯的東西很多,走外包,甲方不放心,并且,因?yàn)檫@套系統(tǒng)只有朋友公司熟,所以也只能朋友公司能做。
甲方既然那么信任朋友,朋友只能答應(yīng)下來(lái),但是,朋友又不想多招個(gè)人導(dǎo)致有額外的開(kāi)支,所以,就問(wèn)公司里面幾個(gè)PLC程序員,問(wèn)他們能不能學(xué)學(xué)上位機(jī)開(kāi)發(fā)。
此時(shí),朋友公司的員工老A站出來(lái),說(shuō)他正想學(xué)上位機(jī)開(kāi)發(fā),可以把這件事情交給他來(lái)做。
朋友看老A能夠站出來(lái)攬下這份責(zé)任,當(dāng)然很開(kāi)心,然后就問(wèn)老A大搞需要多久能搞定,老A因?yàn)闆](méi)有上位機(jī)開(kāi)發(fā)基礎(chǔ),也拿不定時(shí)間,但是復(fù)盤(pán)了下開(kāi)發(fā)需求,覺(jué)得自己差不多兩個(gè)月能搞定。
朋友特地去問(wèn)了一些專(zhuān)業(yè)從事上位機(jī)開(kāi)發(fā)的人,覺(jué)得這個(gè)需求最多一個(gè)月就可以搞定,老A說(shuō)自己要兩個(gè)月,也是比較合理的,所以就拍了板,把這個(gè)開(kāi)發(fā)需求交給了老A。
但是,誰(shuí)知道,原本老A承諾的兩個(gè)月,最后搞了兩年多,最近才上線!老A也被這個(gè)項(xiàng)目搞得心力交瘁,提了離職,到底怎么搞得呢?
原來(lái),這個(gè)上位機(jī)程序看起來(lái)簡(jiǎn)單,但是實(shí)際上涉及到很多圖形界面、圖形繪制、還有各種復(fù)雜的算法。
本身這個(gè)上位機(jī)軟件即使是專(zhuān)業(yè)從事上位機(jī)開(kāi)發(fā)的程序員,開(kāi)發(fā)起來(lái)都比較吃力,更何況是像老A這樣沒(méi)有一點(diǎn)上位機(jī)編程基礎(chǔ)的PLC程序員了!
就這樣,一個(gè)圖形界面搞一個(gè)月,另外一個(gè)圖形繪制搞兩個(gè)月,研究A算法又搞一個(gè)月,研究B算法又搞一個(gè)月,就這樣,時(shí)間慢慢就堆到了兩年多!
最近,老A總算實(shí)現(xiàn)了甲方要求的所有功能,但是此時(shí)的老A已經(jīng)不像當(dāng)初剛剛接觸這個(gè)項(xiàng)目那樣對(duì)這個(gè)項(xiàng)目抱有一邊學(xué)習(xí)一邊開(kāi)發(fā)的態(tài)度了。
兩年時(shí)間,一個(gè)事情做不成,足夠把一個(gè)人的耐心給磨沒(méi)了,所以,即使老A完成了這個(gè)項(xiàng)目,但是他干得他是心力交瘁,實(shí)在不想再面對(duì)這個(gè)項(xiàng)目了,所以就干脆辭職了!
老A辭職以后,換朋友著急了,因?yàn)槔螦花兩年做完了這個(gè)項(xiàng)目,一旦他走了,這個(gè)項(xiàng)目就又沒(méi)有人維護(hù)了,于是,朋友想把這個(gè)項(xiàng)目交給我,讓我好好把老A的代碼捋捋,因?yàn)樗?,老A的編程水平不咋樣,相信寫(xiě)出來(lái)的代碼肯定不好維護(hù)。
我拿到老A寫(xiě)的代碼,果然和朋友想的那樣,老A的代碼寫(xiě)得非常凌亂,大量代碼都是互相套著寫(xiě)出來(lái)的,重復(fù)性的代碼寫(xiě)了很多。
但是,這也不奇怪,老A畢竟不是專(zhuān)業(yè)的上位機(jī)程序員,而且是PLC開(kāi)發(fā)出身,寫(xiě)的代碼有點(diǎn)逐過(guò)程的意思,因此也不知道把一些重復(fù)性的工作進(jìn)行封裝。
但是,老A其實(shí)已經(jīng)很厲害了,因?yàn)榇a里面涉及到很多復(fù)雜的圖形處理和一些數(shù)據(jù)處理的算法,對(duì)于一個(gè)非專(zhuān)業(yè)程序員,能寫(xiě)出來(lái)已經(jīng)很厲害了!
夸完老A,我好奇地問(wèn)了下朋友,他是怎么讓他的甲方能忍住兩年去讓他們開(kāi)發(fā)這個(gè)項(xiàng)目而不發(fā)火的。
朋友無(wú)奈得跟我解釋?zhuān)麄儯追剑┮彩菦](méi)有辦法,因?yàn)榧追接玫脑O(shè)備,除了設(shè)備開(kāi)發(fā)商,只有我朋友是知根知底的,里面牽扯到上千個(gè)零部件,一般公司根本接不了這個(gè)項(xiàng)目。
再者,如果讓設(shè)備開(kāi)發(fā)商去開(kāi)發(fā)這個(gè)項(xiàng)目,那么開(kāi)發(fā)費(fèi)用也不低,如果去找其他第三方的外包公司,一來(lái)外包公司熟悉這套設(shè)備需要時(shí)間,二來(lái),如果外包公司如果因?yàn)椴皇煜ぴO(shè)備,會(huì)有生產(chǎn)風(fēng)險(xiǎn)。即使是有外包公司能夠避免這種風(fēng)險(xiǎn),那么熟悉這套設(shè)備的底層運(yùn)行邏輯,沒(méi)有三五個(gè)月也是不行的。
所以,綜合考慮,雖然朋友的公司不具備開(kāi)發(fā)這個(gè)項(xiàng)目的能力,但是,甲方只能選擇朋友的公司。
但是,老A開(kāi)發(fā)這個(gè)項(xiàng)目的時(shí)間畢竟也太長(zhǎng)了,我大概看了下老A寫(xiě)的整套代碼,其實(shí)如果寫(xiě)這套軟件的人足夠?qū)I(yè),其實(shí)真的只要一個(gè)月就可以了,比如我?。ㄓ悬c(diǎn)自夸,但的確是這樣)
結(jié)語(yǔ)
我覺(jué)得,朋友公司的甲方之所以能夠容忍一個(gè)上位機(jī)項(xiàng)目做兩年才交付,其實(shí)道理很簡(jiǎn)單,因?yàn)檫@邊上位機(jī)程序本來(lái)就是一個(gè)中間程序,即使有,也只是錦上添花,沒(méi)有,也不會(huì)影響他們?cè)O(shè)備的正常生產(chǎn)。
另外,從各項(xiàng)成本上去考慮,反正老A已經(jīng)做了那么久了,中間如果換別人開(kāi)發(fā),一樣是要耗時(shí)間,所以,只能指望老A了。
但這里面最慘的還是老A,一個(gè)項(xiàng)目把自己的自信心和耐心給干沒(méi)了!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶(hù)上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(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.