自己負(fù)責(zé)的系統(tǒng)在新年凌晨上線了一個(gè)新功能咕村,但是就目前的反饋來(lái)看场钉,業(yè)務(wù)方不適應(yīng),屢次咨詢懈涛,產(chǎn)品都忙得焦頭爛額逛万,我們更是各種修復(fù)bug和維護(hù)數(shù)據(jù)。任務(wù)多時(shí)間緊不能算是借口批钠,這次開(kāi)發(fā)暴露出系統(tǒng)的諸多問(wèn)題宇植,還需要好好反思。
反思一:事務(wù)執(zhí)行過(guò)長(zhǎng)或流程分段執(zhí)行埋心,缺少校驗(yàn)機(jī)制
表現(xiàn)出來(lái)就是(可能測(cè)試環(huán)境多一些)指郁,制單很長(zhǎng)時(shí)間,提示制單失敗拷呆,看后臺(tái)日志發(fā)現(xiàn)闲坎,是事務(wù)超時(shí)了;
還有一個(gè)表現(xiàn)就是茬斧,前不久給外部提供的幾個(gè)接口腰懂,可能存在不一致性的問(wèn)題。
從開(kāi)發(fā)的角度來(lái)說(shuō)项秉,則是制單流程绣溜,從流程引擎啟動(dòng)到業(yè)務(wù)數(shù)據(jù)變更,中間執(zhí)行過(guò)長(zhǎng)過(guò)長(zhǎng)娄蔼,而且還有跨庫(kù)操作(流程引擎在另外一個(gè)數(shù)據(jù)庫(kù))怖喻,當(dāng)數(shù)據(jù)庫(kù)訪問(wèn)慢的時(shí)候這種方式的弊端就出現(xiàn)了底哗;另一種則是設(shè)計(jì)上的缺陷,沒(méi)有考慮到流程的一致性锚沸,或者說(shuō)是缺少校驗(yàn)機(jī)制跋选,目前只是加上了關(guān)鍵信息,后期必須完善咒吐。
反思二:數(shù)據(jù)查詢效率低野建,耗時(shí)長(zhǎng),導(dǎo)致事務(wù)超時(shí)
表現(xiàn)出來(lái)就是恬叹,系統(tǒng)首頁(yè)訪問(wèn)的時(shí)候候生,都特別慢,甚至有些詳情頁(yè)面都需要很久才可以正常顯示绽昼,太影響用戶體驗(yàn)唯鸭。
從開(kāi)發(fā)的角度來(lái)說(shuō),則是在數(shù)據(jù)查詢方面硅确,有了太多的動(dòng)態(tài)SQL目溉,把排列組合都可以數(shù)的過(guò)來(lái)的情況全部拼在了SQL里面,導(dǎo)致每次查詢都去判斷各種條件菱农,不僅參數(shù)繁多缭付,而且很容易錯(cuò);而且查詢語(yǔ)句中有一些為 select * 或者查詢條件中有了類型轉(zhuǎn)換或者出現(xiàn)了函數(shù)循未,導(dǎo)致索引失效陷猫,查詢效率變低;還有一些關(guān)鍵字查詢?yōu)?OR LIKE '%...%'的妖,而且并沒(méi)有合理使用參數(shù)化绣檬,比如像 deleteFlag 刪除標(biāo)志完全沒(méi)有必要預(yù)編譯,直接寫(xiě)到參數(shù)里即可嫂粟〗课矗總之,這些因素導(dǎo)致了整個(gè)系統(tǒng)看起來(lái)慢的不行星虹,可優(yōu)化之處還有很多零抬,不能只是為了達(dá)到目的而犧牲性能。
反思三:代碼不嚴(yán)謹(jǐn)搁凸,缺乏完整性考慮
表現(xiàn)出來(lái)就是媚值,系統(tǒng)的周一上線,基本上每次都是因?yàn)橹暗哪硞€(gè)地方考慮不周全導(dǎo)致的护糖,緊急而不嚴(yán)重的bug。
從開(kāi)發(fā)的角度來(lái)說(shuō)嚼松,則是在判斷某些特殊情況的時(shí)候嫡良,沒(méi)有考慮到全部的情況锰扶,自我測(cè)試的覆蓋面不夠,埋下了一些測(cè)試都很難發(fā)現(xiàn)的隱藏bug寝受,這只說(shuō)明開(kāi)發(fā)并沒(méi)有真正站在用戶的角度去思考流程坷牛,設(shè)計(jì)邏輯,編寫(xiě)代碼很澄,可能是先按照理想情況走通邏輯京闰,然后再加上各種情況判斷或者權(quán)限校驗(yàn),這種情況下甩苛,如果沒(méi)有很全面完整的考慮蹂楣,很容易遺漏一些點(diǎn),僅憑測(cè)試或者產(chǎn)品很難一應(yīng)俱全讯蒲,畢竟時(shí)間和精力有限痊土。
所以,作為開(kāi)發(fā)墨林,必須先保證流程貫通赁酝,異常情況考慮周全,基本測(cè)試通過(guò)旭等,再交付測(cè)試酌呆,來(lái)回返工的話,浪費(fèi)的可不只是時(shí)間搔耕。
反思四:流程設(shè)計(jì)繁雜隙袁,該提醒的地方?jīng)]有提醒,用戶反饋多
表現(xiàn)出來(lái)就是度迂,這一級(jí)流程結(jié)束了藤乙,不知道下一級(jí)誰(shuí)來(lái)操作;任務(wù)數(shù)混亂惭墓,本來(lái)有提醒坛梁,點(diǎn)擊進(jìn)去什么有沒(méi)有。
從開(kāi)發(fā)的角度就是腊凶,確實(shí)流程化的顯示指引划咐,不是單單存到數(shù)據(jù)庫(kù)里就可以了,如果頁(yè)面沒(méi)有任何提醒,或者不知道流程到底有多長(zhǎng)磨澡,很多時(shí)候用戶都是摸著石頭過(guò)河城须,以為流程結(jié)束了,然后去做了操作队魏,也許這里正好有個(gè)隱藏bug,這時(shí)候點(diǎn)擊恰巧觸發(fā)了,用戶碰到了這種莫名的問(wèn)題胡桨,自然就去提反饋了官帘,每天處理反饋,修復(fù)bug昧谊,沒(méi)有從源頭解決刽虹,用戶反饋數(shù)永遠(yuǎn)降不下來(lái)。
反思五:界面引導(dǎo)性差呢诬,缺少關(guān)鍵提醒涌哲,誤操作頻率高
表現(xiàn)出來(lái)就是,該單選的地方允許多選尚镰,其實(shí)用戶根本不需要多選阀圾,設(shè)計(jì)多余,還有一些關(guān)鍵操作钓猬,沒(méi)有任何提示稍刀,很容易點(diǎn)錯(cuò)其他報(bào)銷單,這時(shí)候就只能修復(fù)數(shù)據(jù)了敞曹。
從開(kāi)發(fā)的角度來(lái)說(shuō)账月,則是開(kāi)發(fā)很多時(shí)候并沒(méi)有g(shù)et到產(chǎn)品的點(diǎn),只是按照自己的思維去開(kāi)發(fā)設(shè)計(jì)澳迫,以為用戶都是產(chǎn)品經(jīng)理級(jí)別的水平局齿,不會(huì)有任何誤操作,就想當(dāng)然地省去了很多校驗(yàn)或者提醒橄登,加之需求急著上線抓歼,抱著先把流程跑通,以后再優(yōu)化的思維拢锹,就上線了谣妻。然后用戶就各種莫名地點(diǎn)錯(cuò),然后就開(kāi)始了修復(fù)各種邊邊角角的bug卒稳,甚至有時(shí)候一個(gè)迭代下來(lái)蹋半,發(fā)現(xiàn)什么也沒(méi)做,凈是改bug和修復(fù)數(shù)據(jù)了充坑。
這一點(diǎn)其實(shí)也是看了微信最近的界面體驗(yàn)設(shè)計(jì)以及最近剛剛發(fā)布的小程序功能减江,很多啟發(fā),產(chǎn)品設(shè)計(jì)好捻爷,有很多因素辈灼,但是開(kāi)發(fā)要進(jìn)階,還是要有產(chǎn)品的思維也榄。