工作以來一直從事.NET技術(shù)方向的開發(fā)工作,工作6年,接觸到三個有影響力的產(chǎn)品
預(yù)約掛號系統(tǒng) 面對醫(yī)院的掛號難,排號難,在2003年就有老板想出做這一塊業(yè)務(wù)內(nèi)容,于是與幾家醫(yī)院合作,開通熱線電話,做醫(yī)院的預(yù)約掛號服務(wù)。在大城市,生病了需要看醫(yī)生,但不知道醫(yī)院是否有醫(yī)生可以看病。生活在深圳,去過北大醫(yī)院的朋友可能有所體會,大清早坐車過去,整個上午,可能就能排個號,到下午才有醫(yī)生給你看病,也有可能會排到第二天。大醫(yī)院的醫(yī)生一上來問問狀態(tài),就讓你去做化驗檢查,1-2天后化驗結(jié)果出來了,再去找醫(yī)生看,又要掛號排隊,整個看病過程可能不到5分鐘,可是在排號排隊,等待醫(yī)生上所花費的時間是看病時間的幾十倍。于是,門戶網(wǎng)站跑起來,掛號業(yè)務(wù)開發(fā)起來,熱線電話一開通,一部分客戶服務(wù)小姐天天打電話,向潛在客戶推銷預(yù)約掛號服務(wù),另一部分客戶服務(wù)小姐接受熱線電話,給客戶找到合適的時間,合適的醫(yī)院,幫忙排上號,到病人要看病的那天,直接去預(yù)約的醫(yī)院找指定的醫(yī)生即可看病。
車間數(shù)據(jù)追蹤 ShopFloor Data Tracking 企業(yè)解決方案的一部分。 在服裝行業(yè),生產(chǎn)款式款號顏色,車間生產(chǎn)任務(wù)的追蹤相對難以控制和管理。從購買布匹,裁減,然后給裁減后的布局,每一捆(bundle)打上一個RFID卡片(RFID卡相當(dāng)于我們?nèi)コ匈徫铮M去之前要把自己的隨身行李物品積存到服務(wù)臺,服務(wù)臺小姐給你一個帶橡皮筋的手扣,扣在自己手上,離開超市前,用這個手扣換取自己當(dāng)時寄存在服務(wù)臺的行李物品),在生產(chǎn)的每個工序過程中(縫袖子,縫衣領(lǐng),燙) 都要求將捆綁在RFID卡上的小卡片在機器上刷一下(好比坐車時刷深圳通一樣),這些放置在車間的每個工序上的機器,會實時的將生產(chǎn)的工序進度傳回到數(shù)據(jù)庫服務(wù)器上,以追蹤當(dāng)前的生產(chǎn)進度,然后配合大量的報表來滿足生產(chǎn)管理的需求。
ERP Enterprise Resource Planning 企業(yè)資源計劃 MIS類型程序的大集合,什么功能都有,生產(chǎn),采購,銷售,庫存,應(yīng)收,應(yīng)付。只要是做與工廠生產(chǎn)管理軟件相關(guān)的程序,就不可避免的要接觸ERP類型的產(chǎn)品。如果你有機會接觸排在金字塔頂端的ERP產(chǎn)品,SAP,Baan,Oracle,還有微軟自己的ERP產(chǎn)品,盡管這些產(chǎn)品的設(shè)計思路先進,但是很少有機會直接參與它的開發(fā)或二次開發(fā)。我們中的大部分要面對的是中小企業(yè)管理軟件,思路理解上要容易一些,然后要用熟悉的語言和編譯工具把它實現(xiàn)出來。比如要做一個生產(chǎn)排班系統(tǒng),要設(shè)計工廠日歷,工序作業(yè)流程,生產(chǎn)的主生產(chǎn)計劃,每天的機器產(chǎn)能和負荷,作出合理的排班建議。我所要表達的主要意思是,我們需要理解這個流程,同時要用熟悉的工具和語言把它實現(xiàn)出來,從設(shè)計數(shù)據(jù)表,到編寫業(yè)務(wù)對象,再到界面設(shè)計,做出功能,這才是我們看得見,摸得著的ERP。別一種情形時,專做二次開發(fā),以插件的形式,對現(xiàn)有的ERP進行定做。我的工作內(nèi)容屬于前者。
ERP程序員的主要工作有以下幾個要點
Bug Fix 修復(fù)現(xiàn)有的系統(tǒng)問題
Enhancement 改善改進系統(tǒng)現(xiàn)有做法
Data Fix 修復(fù)因功能缺陷導(dǎo)致的系統(tǒng)數(shù)據(jù)錯誤
Technical Support 技術(shù)支持 協(xié)助TS(Support Team)追蹤問題,解決客戶遇到的問題
我學(xué)習(xí)ERP經(jīng)歷了以下幾個階段,供參考
第一階段 對業(yè)務(wù)不熟悉
一開始不熟悉ERP業(yè)務(wù)流程,要重復(fù)客戶的錯誤都不容易。ERP類型的程序所設(shè)計的界面,是具備相當(dāng)?shù)拿曰笮缘摹=缑娲蠖汛蠖训目丶瑪?shù)據(jù)值從這個表單帶到另一個表單,對于ERP生手,很難操作。至今我接觸陌生的ERP界面,都有一種恐懼癥,界面隱藏了太多的業(yè)務(wù)邏輯信息。隨著工作時增長,各種問題遇到過,請TS同事多演示幾次,各種操作流程就會了,也就學(xué)會了如何產(chǎn)生數(shù)據(jù),測試問題。
我以生產(chǎn)作業(yè)流程舉例,ERP中可以從銷售單產(chǎn)生工作單。企業(yè)銷售產(chǎn)成品,成品由幾個原材料,經(jīng)過幾道工序完成。由銷售單產(chǎn)生工作單,也就是經(jīng)過生產(chǎn)過程,從下工作單,倉庫發(fā)料,生產(chǎn)完工,產(chǎn)成品入庫。
這里面,需要掌握如何設(shè)計物料清單,組合工序和原材料,倉庫如何出倉到生產(chǎn)車間,最后是生產(chǎn)完工,進倉,完成產(chǎn)品的生產(chǎn)流程。
第二階段 對關(guān)鍵數(shù)據(jù)流的不熟悉
學(xué)會如何產(chǎn)生ERP數(shù)據(jù)之后,接著需要掌握ERP中關(guān)鍵的數(shù)據(jù)和關(guān)鍵流程。舉例說明
庫存的實時信息 生產(chǎn)發(fā)料時,提示沒有庫存出倉。需要查庫存余額帳,增加原材料入庫。
物料需求計劃 企業(yè)實際生產(chǎn)過程中,會做季度計劃,在季度初期制訂生產(chǎn)大綱(主生產(chǎn)計劃),根據(jù)現(xiàn)有的庫存量,做出物料需求的預(yù)測,產(chǎn)生計劃訂單。一手抓需求,一手抓供應(yīng)。生產(chǎn)產(chǎn)品的原材料確少,沒有庫存,需要產(chǎn)生計劃采購單以保證產(chǎn)生繼續(xù)進行。客戶對產(chǎn)品有需求,要在客戶需求日期前(Due Date) 生產(chǎn)出銷售訂單中的產(chǎn)品數(shù)量,銷售給客戶。
生產(chǎn)的任何流程都與經(jīng)濟活動有關(guān),與錢有關(guān),產(chǎn)生貨幣進出記錄。ERP財務(wù)模塊記錄企業(yè)每筆業(yè)務(wù)產(chǎn)生的經(jīng)濟活動,用于管理分析。
這些流程操作相對要復(fù)雜一點。產(chǎn)生的數(shù)據(jù)關(guān)聯(lián)因條件的不同,會有些差異。比如銷售送貨后,要給供應(yīng)商開具發(fā)票,產(chǎn)生應(yīng)收帳,要考慮匯率差異,貨幣可能不是本位幣,客戶有預(yù)先支付定金,客戶多付款或少付款,客戶多次付款的情況。
客戶的多付款,在沖銷掉訂單金額后,可用于下一次客戶訂單的支付。下訂單時的兌換率和客戶付款時的兌換率可能不一樣,因而客戶實際付款和客戶應(yīng)該付款的金額也有差異。用美元下訂單,但是用歐圓付款,要能準(zhǔn)確計算匯率差異,對于有進位誤差的,要撥入進位誤差。
進位誤差舉例, 假設(shè)本位幣是USD
客戶訂單,HKD,兌換率=6.4
物料編號 單價 數(shù)量 金額
RM01 1.223 10 12.23
RM02 1.4567 5 7.2835
客戶應(yīng)付款(本位幣)=12.23+7.2835=19.5135 USD
客戶應(yīng)付款(外幣)=12.23+7.2835=19.5135 * 6.4= 124.8864 HKD
在客戶付款日期時,假設(shè)為2015-5-13日,兌換率=6.2,付款貨幣HKD,則客戶需要付款金額
客戶應(yīng)付款=12.23+7.2835=19.5135 * 6.2 =120.9837 HKD
產(chǎn)生匯率差異=120.9837 - 124.8864 = -3.9027
這一階段會遇到相當(dāng)多的困惑,堅持不泄的努力調(diào)試,努力找到問題,做一名合格的ERP工程師。
第三階段 系統(tǒng)問題階段
客戶的數(shù)據(jù)經(jīng)常會出現(xiàn)不可追蹤的錯誤。最近的一次印象深刻的是.NET的partial commit。 .NET的事務(wù),依照這個模式,是可以在遇到異常時產(chǎn)生回滾
try {
// logic here , throw exception if error occurs
}
catch ()
{ throw }
但是在客戶服務(wù)器上,會產(chǎn)生有些業(yè)務(wù)邏輯在遇到異常時沒有回滾,產(chǎn)生一些錯誤數(shù)據(jù)。比如總帳與明細帳對不 上,物料余額帳與物料每日進出對不上,數(shù)據(jù)有差異。
另一種經(jīng)常遇到的情況是,客戶應(yīng)收帳和供應(yīng)商應(yīng)付帳有數(shù)據(jù)不同。這種情況發(fā)生于手工在SQL Server中執(zhí)行 SQL語句,比如在SQL Server執(zhí)行腳本刪除已經(jīng)過帳的應(yīng)收發(fā)票,SQL只是簡單的執(zhí)行刪除邏輯,沒有執(zhí)行業(yè)務(wù) 邏輯流程,扣除應(yīng)收帳數(shù)量,產(chǎn)生總帳與明細帳不符合。
這個階段遇到的問題不多,但是個個都相當(dāng)麻煩,只有對系統(tǒng)開發(fā)與設(shè)計的每個角落的細節(jié)都非常熟悉,才對這個 錯誤產(chǎn)生的原因,如何修復(fù)有把握能力。因為基于這個理解,所以我覺得,工作幾年后,從.NET轉(zhuǎn)到Java,或是 JAVA轉(zhuǎn).NET開發(fā),都是不明智的選擇。每個平臺上都有大量的細節(jié)內(nèi)容,需要在日常工作中接觸,熟悉和理解。 Web Services跨平臺,但是沒有.NET Remoting用的機會多,Xml跨平臺,但是常常還是用一種API來實現(xiàn)對它 讀寫。大部分的情況下,我們都是在一個平臺下,和許多技術(shù)細節(jié)在搏斗,在較量。
第四個階段 做有意義的事情
當(dāng)熟悉公司的日常工作后,上班下班,朝九晚五的生活,日子一下子就過去了。常常思考,在深圳這樣的大城市, 對于絕大部分人而言,不可能會待的很長久。不斷攀升的房價和物價,生活成本上升,很多人都在思考出路,思考 自己的人生該如何走。能爬到金字塔的頂端是少數(shù)社會精英,但是我們只是個普通和程序員,科班出身,甚至有的 都不是科班出身,也走進了這一行,做一分工作,拿一分薪水,養(yǎng)活一個家庭。***技術(shù)作家候捷曾說,他最佩服 的是那些能突破自身局限的人,突破自己環(huán)境的限制,做一些有意義事情。
有時候公司2個多月都沒有發(fā)現(xiàn)問題,于是安排我們把系統(tǒng)現(xiàn)有的文檔整理一下,用最新的版本,更新下界面截 圖;有時,我們都是在查找SQL語句為什么會產(chǎn)生這樣的數(shù)據(jù),而不是我們預(yù)想的數(shù)據(jù),根本沒有機會敲代碼,寫 C#;有時公司接了個外包項目,要修改ASP.NET的html代碼,大部分時間又在改網(wǎng)頁布局,把控件放到表格中, 和Html共舞,與JavaScript搏斗,.NET代碼反而不重要,簡單的INSERT和UPDATE就可以處理絕大部分情況。
這些日常的工作,看是是技術(shù)活,但又沒有什么難度的活,把我們對技術(shù)的追求,一點點的磨平。做這些事的時 候,很難有時間可以看看代碼,看看技術(shù)文章。似乎從事IT技術(shù)開發(fā),看不到什么出路。
以我的理解和思考,下面三個例子,可以用這種方式來完成:
1 公司安排我們整理系統(tǒng)現(xiàn)有的文檔 這是個絕佳的機會,好好練習(xí)一下文檔處理能力。記得做完大學(xué)畢業(yè)論文, 連自己都被自己感動,能排出這么漂亮格式的文檔,一絲不茍,有模有樣。靈活的應(yīng)用樣式,各章分節(jié)分頁,前后 交叉引用,以表格數(shù)據(jù)輔助說明,做出質(zhì)量高的文檔。我舉例說明,我看到很大一部分產(chǎn)品PDF文檔,沒有書簽, 感覺上不太專業(yè)。
舉例說明,我以.NET中的并行為例
Parallel.For(1, 100, (count) =》 { Operation(); }); void Operation() { Thread.SpinWait(int.MaxValue); }
雖然我知道Word格式可以很方便的生成PDF,但是能把生成的PDF加個書簽,會讓你的文檔看起來更優(yōu)秀。
2 查找SQL 這是個查找系統(tǒng)問題的好時機 SQL語句用的是否洽當(dāng),可以在這個看到很多細節(jié)。比如該SELECT 一個字段的地方,可不能用SELECT * 來代替;能寫一句完成的查詢,不應(yīng)該用二句或是多句來完成,減少往返 服務(wù)器的次數(shù),提高性能;代碼中如果非要用SQL語句,可以考慮把SQL語句提取到指定的地方,所有的SQL語句 都來自于這里,以增加可維護性;業(yè)務(wù)邏輯只考慮用C#代碼完成,而不用存儲過程,增加可維護性,便于跟蹤, 千萬不能出現(xiàn),一部分邏輯在SQL存儲過程里面,一部分邏輯在C#代碼里面,還有一部分邏輯在游標(biāo)里面,這樣 跟蹤問題相當(dāng)麻煩。
3 頁面Html排版 這是個鍛煉接私活能力的舞臺。網(wǎng)頁布局排的漂亮,價格合理,很容易接到網(wǎng)站建設(shè)方面的私 活。
與此情況,最好也研究一下Photoshop,做一些漂亮的圖片,以后可以獨立承擔(dān)網(wǎng)頁開發(fā),網(wǎng)站建設(shè),這樣不用 每次為找美工傷神。從Logo設(shè)計,到網(wǎng)頁布局,再到程序開發(fā)調(diào)試成功,我已經(jīng)獨立完成過多個小網(wǎng)站的建設(shè), 賺一點私活錢,在炎熱的夏天,喝點冰凍啤酒,那真是舒服愜意。
我選擇的路是做MIS框架,靈感來源于博客園里面的很多專家。他們大部分都有自己的產(chǎn)品,把技術(shù)的用途發(fā)揮的 很好。技術(shù)天生是拿來用的,除了為公司所用,還可以拿來做自己感興趣的事情。每次看到有專家發(fā)表技術(shù)文章, 然后再看到有專家把這個技術(shù)運用到自己的產(chǎn)品中,寫出一點心得分享,我更佩服后者。把每一項技術(shù)都努力思考 它的價值所在,運用到自己的產(chǎn)品研究中,學(xué)有所用,終有所成就。
確實,就這簡單的一句Parallel.For可以讓程序的性得得到改善,為此我專門抽一個下午的時間,把可以看到的能 改善的地方,都換成了這種模式來操作,比如刪除系統(tǒng)運行后的臨時文件。
另一個例子的地方是SqlBulkCopy,批量的插入數(shù)據(jù)到SQL中,而不是一筆筆記錄的插入數(shù)據(jù)。
第五階段 做感興趣的事情
對文檔,對頁面設(shè)計,對產(chǎn)品功能感興趣,任何一個方面的深入研究,都可以獲取一技專長。
隨著時間的積累,對產(chǎn)品的改善越來越多,信心越強,學(xué)有所用,是我從事ERP開發(fā)以來,找到的一條程序員的出路,著文章分享,共勉勵。
-
ERP
+關(guān)注
關(guān)注
0文章
505瀏覽量
34388 -
程序員
+關(guān)注
關(guān)注
4文章
951瀏覽量
29799
發(fā)布評論請先 登錄
相關(guān)推薦
評論