TOC
前言
在這些年裡,從幾位朋友那邊聽到,加上自己的觀察,發現目前市場上不是這麼容易找到這方面的人才,因此大家都非常困擾。
於是這裡精簡統整以下三點,總結小弟過去曾7年在這方面的開發經驗,來個小小的分享,或許能幫上一點小忙。
開發技巧分享
1、熟悉程式結構
注意!!這裡說的不是ERP模組間的『系統架構』(例:AIM/AXM/APM),因為畢竟是不同面向的職能發展。對於剛接觸的新朋友務必請先了解單一『程式作業』(例:aimi100.4gl)的程式碼結構,如果懂ERP相關知識更為加分。
以最基礎的單檔作業為例(上圖),要能熟悉並熟練且倒背如流!因為這就是這套ERP的Coding Style及開發規範!!
倘若這裡如果你想要將『刪除』改成 FUNCTION i100_delete()的話,是也不會影響程式運作,但後續在團隊維護上,會讓整體的開發(溝通)效率沒這麼好,因為大家都已經習慣將刪除放在 FUNCTION i100_r()進行執行!
建議:可以報名大班課,是個不錯讓新人入門的課程!(重點是Free <特殊條件觸發>)
2、程式內容一致
首先,直接來看一段整理過的程式碼。
FUNCTION i130_cs()
(略...)
CONSTRUCT BY NAME g_wc ON
tc_ime01,tc_ime02,tc_ime03,
tc_ime04,tc_ime05,tc_imeconf,
tc_imeuser,tc_imegrup,
tc_imemodu,tc_imedate,tc_imeacti
(略...)
END FUNCTION
FUNCTION i130_i(p_cmd)
(略...)
INPUT BY NAME
g_tc_ima.tc_ime01,g_tc_ima.tc_ime02,g_tc_ima.tc_ime03,
g_tc_ima.tc_ime04,g_tc_ima.tc_ime05,g_tc_ima.tc_imeconf,
g_tc_ima.tc_imeuser,g_tc_ima.tc_imegrup,
g_tc_ima.tc_imemodu,g_tc_ima.tc_imedate,g_tc_ima.tc_imeacti
WITHOUT DEFAULTS
(略...)
END FUNCTION
FUNCTION i130_show()
(略...)
DISPLAY BY NAME
g_tc_ima.tc_ime01,g_tc_ima.tc_ime02,g_tc_ima.tc_ime03,
g_tc_ima.tc_ime04,g_tc_ima.tc_ime05,g_tc_ima.tc_imeconf,
g_tc_ima.tc_imeuser,g_tc_ima.tc_imegrup,
g_tc_ima.tc_imemodu,g_tc_ima.tc_imedate,g_tc_ima.tc_imeacti
(略...)
END FUNCTION
看完以上三段FUNCTION有什麼感覺嗎?
沒錯!這裡我喜歡讓這三段的FUNCTION程式結構都一樣!欄位變數一樣、每一行code的內容及位置都一樣,這樣可以大幅加快下一次(位)開發時,新增欄位時的便利性,也更容易閱讀code!
3、歸納相似欄位
接續上一段程式碼,我們這裡描述一下這幾個欄位的用途:
- tc_ime01:單號
- tc_ime02:日期
- tc_ime03:客戶
- tc_ime04:業務
- tc_ime05:部門
進行第二點
規則時,會同時搭配第三點
的小技巧『將功能相似的欄位放在一起』,其主要原因是如果未來有要新增欄位時,就不必重新調整程式,可以直接插入,整理後如下:
FUNCTION i130_show()
(略...)
DISPLAY BY NAME
g_tc_ima.tc_ime01,g_tc_ima.tc_ime02,
g_tc_ima.tc_ime03,
g_tc_ima.tc_ime04,g_tc_ima.tc_ime05,
g_tc_ima.tc_imeconf,
g_tc_ima.tc_imeuser,g_tc_ima.tc_imegrup,
g_tc_ima.tc_imemodu,g_tc_ima.tc_imedate,
g_tc_ima.tc_imeacti
(略...)
END FUNCTION
假設未來要在畫面上的[tc_ime02日期]、[tc_ime03客戶]中間增加『tc_ime06』,這樣就可以直接在該行增加,調整後如下:
FUNCTION i130_show()
(略...)
DISPLAY BY NAME
g_tc_ima.tc_ime01,g_tc_ima.tc_ime02,
g_tc_ima.tc_ime06, # 210623 JIE add
g_tc_ima.tc_ime03,g_tc_ima.tc_ime04,
g_tc_ima.tc_ime05,
g_tc_ima.tc_imeconf,
g_tc_ima.tc_imeuser,g_tc_ima.tc_imegrup,
g_tc_ima.tc_imemodu,g_tc_ima.tc_imedate,
g_tc_ima.tc_imeacti
(略...)
END FUNCTION
這樣就可以讓整個程式,註解時變得簡潔、開發上容易維護!
後記
市場分析
最後,統整自己的心得,現在為什麼會在這方面人才會這麼稀缺、甚至出現年齡斷層,分析原因如下:
- 程式語言冷門:BDL(4GL)現階段在台灣應該只有該產品在使用,因此多數新人應該會覺得未來的發展有限,因此建議可以安排培養其他多元技能。
- 人才訓練不易:ERP架構錯綜複雜,並不是上幾天課程,就像吃了大補帖馬上功力倍增100倍,這是需要花時間投入學習的!另外要同時兼顧程式開發與系統規劃(企業流程),這兩邊的思維是不一樣,也是需要投入時間養成。
- 市場人才稀缺:企業可選擇自行培養人才,或者直接聘有相關經驗人才;前者耗時費工、後者省時耗預算。
產品/4GL優點
但這裡也要幫這套產品平反,它還是有不少的優點:
- 減少溝通成本:因為有Genero Studio工具加快畫面開發,可讓單人獨立完成作業開發(前端畫面&後端邏輯)。
- 專注商業邏輯:程式處理均以商業邏輯為重,可使個人的程式邏輯、SQL語言能力有一定的成長。
- 提供原始碼(source code):擁有龐大基礎架構可參考,並可依照產業特性進行客製調整。
培訓建議
最後,依之前幫朋友1v1教學,以及過去訓練PR/RD的經驗,提供給予大家培訓開發人員的方式。
- 透過學長/學姊的指導、帶領,有效且快速入門。
- 建立起討論、分享的制度。(無論是成功案例、BUG分享)。
- 模仿標準程式並大量開發,且善用內建debug工具(r.d2+)進行學習。