挨踢部落故事匯(10):技術(shù)晉升管理的心聲
原創(chuàng)【51CTO.com原創(chuàng)稿件】Leon畢業(yè)于醫(yī)學(xué)院醫(yī)學(xué)信息學(xué)專業(yè),自進(jìn)入這個(gè)專業(yè)起,他就基本明確今后要從事醫(yī)療信息化行業(yè)相關(guān)的工作。畢業(yè)后他邊工作邊參加培訓(xùn)班學(xué)習(xí).NET編程,并順利進(jìn)入醫(yī)療軟件公司。從普通程序猿慢慢做到技術(shù)經(jīng)理,后又做產(chǎn)品經(jīng)理,工作無不圍繞醫(yī)療信息化相關(guān)。參與開發(fā)和設(shè)計(jì)過EMR、HIS、RIS等醫(yī)院內(nèi)相關(guān)業(yè)務(wù)系統(tǒng),通過PMP和信息系統(tǒng)項(xiàng)目管理師的考試,對項(xiàng)目管理的知識體系有一些認(rèn)識。目前研究某市的個(gè)人健康檔案數(shù)據(jù)以及慢病數(shù)據(jù),勵志服務(wù)于市民,以及衛(wèi)計(jì)委相關(guān)職能部門。
Leon·.NET開發(fā)
堅(jiān)持.NET開發(fā),逐步晉升
Leon的職業(yè)生涯大致分為四個(gè)階段,技術(shù)學(xué)習(xí)階段、軟件工程師、技術(shù)經(jīng)理、產(chǎn)品經(jīng)理。
1、技術(shù)學(xué)習(xí),打下編程基礎(chǔ)
大學(xué)期間Leon基本沒有很多的技術(shù)積累,只是閱讀了《C#入門經(jīng)典》這本書,僅僅是閱讀,沒有跟隨書寫相應(yīng)的代碼,所以基本收獲很少。.NET的正式入門主要是靠將近200個(gè)夜晚的培訓(xùn)班學(xué)習(xí)積累的。培訓(xùn)班的學(xué)習(xí)使他對.NET有了一個(gè)初步的認(rèn)識。該學(xué)習(xí)過程主要是幫Leon打下了基礎(chǔ),對于WinForm的各類控件、HTML各類標(biāo)簽、SQL語句的各類寫法有了了解。但現(xiàn)在回過頭來想想,當(dāng)時(shí)的學(xué)習(xí)完全無法達(dá)到企業(yè)級開發(fā)的要求。
2、軟件工程師,技術(shù)細(xì)節(jié)的深入
基于大學(xué)對醫(yī)學(xué)知識的積累和.NET培訓(xùn)這2塊敲門磚,Leon順利進(jìn)入了醫(yī)療軟件行業(yè)。進(jìn)入項(xiàng)目組后,組長告訴他產(chǎn)品的開發(fā)使用的是WPF,而他卻從沒有接觸過WPF。于是買了一門《WPF編程寶典》,他Coding了里面所有的代碼,對WPF的體系結(jié)構(gòu)有了基本認(rèn)識。再結(jié)合項(xiàng)目上的代碼,他的WPF技術(shù)有了很大的提高。閑暇時(shí)Leon會逛逛技術(shù)論壇,學(xué)習(xí)別人的實(shí)現(xiàn)方式。作為軟件工程師,他認(rèn)為常常會copy別人的代碼,但copy只是第一步,要想提高,需要進(jìn)一步去理解別人代碼背后的意義,并做一些擴(kuò)展。
影響Leon比較深刻的是當(dāng)時(shí)對護(hù)理體溫單繪制的實(shí)現(xiàn),一個(gè)比較復(fù)雜的繪制操作,原先有個(gè)簡單的版本,用C#寫的,但領(lǐng)導(dǎo)要他根據(jù)新需求重新編寫一套,主要是業(yè)務(wù)的升級,以及設(shè)計(jì)思路的變化。項(xiàng)目框架是傳統(tǒng)的三層架構(gòu),業(yè)務(wù)系統(tǒng)沒有太多的技術(shù)架構(gòu)。核心技術(shù)點(diǎn)是對XmlDocument類和Graphics類的應(yīng)用,原有版本中有一些相關(guān)代碼,再加上他查找了這兩個(gè)類的大部分方法和屬性知識,以至于他在著手開發(fā)相應(yīng)功能時(shí),心里的底氣就足了很多。后來又學(xué)習(xí)了《C#高級編程》這本書籍,對面向?qū)ο蟮乃枷胗辛烁畹恼J(rèn)識。
3、技術(shù)經(jīng)理,技術(shù)團(tuán)隊(duì)的全方面打造
技術(shù)經(jīng)理職位不是一蹴而就的,隨著工作年限和技術(shù)能力的提高,Leon開始帶新人。他總是很耐心的指導(dǎo)新人,因?yàn)樗雷约寒厴I(yè)的時(shí)候還不如他們。比如代碼規(guī)范,這個(gè)是技術(shù)新人基本都需要遵循的,Leon他們有個(gè)內(nèi)部的代碼規(guī)范。對于應(yīng)屆生新人,Leon會根據(jù)項(xiàng)目所需要的技術(shù)定一個(gè)學(xué)習(xí)計(jì)劃,時(shí)間大約在1-2個(gè)月,內(nèi)容精確到周,幫助他們提高自身能力。技術(shù)經(jīng)理身份的他不能著眼于眼前,一個(gè)功能他實(shí)現(xiàn)也許只需要1周,讓新人實(shí)現(xiàn)也許需要2周甚至更久,同時(shí)還需要Leon不定期指導(dǎo)。但這些投入都是值得的,因?yàn)楫?dāng)新人獨(dú)擋一面的時(shí)候,Leon就會騰出手來做技術(shù)架構(gòu)、功能設(shè)計(jì)方面的使用,Leon會根據(jù)項(xiàng)目長期發(fā)展的規(guī)劃,讓他們在完成相應(yīng)功能的同時(shí),去做一些技術(shù)預(yù)研,這些技術(shù)預(yù)研很多是Leon自己也不了解的。此時(shí)技術(shù)經(jīng)理崗位的他更多的是考慮怎樣讓項(xiàng)目不失控,團(tuán)隊(duì)人員的可更換。
作為技術(shù)經(jīng)理的時(shí)候Leon是在一家不算太大的公司,各類軟件研發(fā)和管理均不是太正規(guī),心里經(jīng)常對項(xiàng)目把控、團(tuán)隊(duì)管理有很多疑問。由于心理的這些問題,他自學(xué)了CMMI認(rèn)證體系內(nèi)容,第一次閱讀時(shí),他感覺收獲頗豐,從中挑選了一些合適的模板運(yùn)用到團(tuán)隊(duì)中來,如需求說明書、功能設(shè)計(jì)書等,初見成效。Leon一直對自己要求很高,工作的同時(shí)也不斷增加自身閱歷,他先后通過了PMP和信息系統(tǒng)項(xiàng)目管理師的考試,再結(jié)合自己遇到的問題,對項(xiàng)目管理有了比較深入的理解。
4、產(chǎn)品經(jīng)理,立足產(chǎn)品設(shè)計(jì)和進(jìn)度把控
16年跳槽,Leon正式做產(chǎn)品經(jīng)理的工作,主要涉及醫(yī)療軟件的功能設(shè)計(jì)。他所在部門的產(chǎn)品經(jīng)理和互聯(lián)網(wǎng)產(chǎn)品經(jīng)理有些差別,Leon更多的是關(guān)心需求、產(chǎn)品設(shè)計(jì)以及進(jìn)度把控。他需要做各種文檔,需求列表、功能列表、原型圖、ER圖、業(yè)務(wù)流程圖、詳細(xì)設(shè)計(jì)、軟件使用手冊、進(jìn)度列表等。這些文檔可以幫助項(xiàng)目組人員更好的理解項(xiàng)目、同時(shí)保證項(xiàng)目不失控。需求是產(chǎn)品的基礎(chǔ),需求調(diào)研需要全面細(xì)致,除了對客戶的調(diào)研,也需要調(diào)研競爭對手產(chǎn)品,最終生成需求列表。功能設(shè)計(jì)應(yīng)由抽象到具體,由簡單到豐富。功能設(shè)計(jì)的核心目的是讓開發(fā)和測試能理解功能,同時(shí)留有存證,方便新入項(xiàng)目的同事能快速進(jìn)入項(xiàng)目。
職位可以多變,但方向只有一個(gè):深耕醫(yī)療信息化。
對于產(chǎn)品經(jīng)理的工作,Leon總結(jié)了幾點(diǎn)經(jīng)驗(yàn):
A、idea的產(chǎn)生和初步的需求調(diào)研
這個(gè)idea往往是領(lǐng)導(dǎo)的,也許是經(jīng)過深思熟慮亦或未經(jīng)過深思熟慮。但銷售往往能拿下相應(yīng)的市場。領(lǐng)導(dǎo)任命你作為項(xiàng)目經(jīng)理兼產(chǎn)品經(jīng)理推動該產(chǎn)品的研發(fā),并最終上線。此時(shí)需要做初步的需求調(diào)研,核心目的是弄清楚該idea目前在市場上的實(shí)現(xiàn)情況和實(shí)現(xiàn)難度,確定自己以及公司是否有能力完成該項(xiàng)目。
B、詳細(xì)的需求調(diào)研和分析
需求調(diào)研要盡量全面,包括軟件可能的使用者、目前業(yè)務(wù)流程情況、市場上存在競品的實(shí)現(xiàn)情況等。列出所有的需求點(diǎn),進(jìn)一步分析軟件需要完成哪些需求點(diǎn)。此時(shí)可以將需求點(diǎn)分成基本需求點(diǎn)(軟件中必須實(shí)現(xiàn)的)、閃光需求點(diǎn)(完成可以提高軟件競爭力)、個(gè)性需求點(diǎn)(個(gè)別客戶要求非共性的)。此時(shí)需要輸出需求說明書文檔,記錄所有需求,并分類,建議用Excel來實(shí)現(xiàn)。需求文檔要做到條目清晰,只要調(diào)研到的或者自己思考到的均應(yīng)列進(jìn)去,便于后期功能出來后做一一匹配。
C、功能設(shè)計(jì),功能架構(gòu)要清晰,模塊耦合度要低
功能設(shè)計(jì)主要包括概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)主要產(chǎn)出功能列表、原型圖以及ER圖。此時(shí)的大功能點(diǎn)應(yīng)該都出來了,頁面的基本布局也可以確定了。原型圖上的各個(gè)功能需要和需求列表對應(yīng)一下,用來判斷哪些需求是包含在功能中的。此時(shí)的功能設(shè)計(jì)需要考慮低耦合,以滿足后期的迭代改變。ER圖設(shè)計(jì)時(shí)要將面向?qū)ο蟮乃枷敕旁谛闹?,確定是各個(gè)實(shí)體的實(shí)際意義和實(shí)體關(guān)系的正確關(guān)聯(lián)。詳細(xì)設(shè)計(jì)階段主要是產(chǎn)生詳細(xì)設(shè)計(jì)文檔,文檔格式多種多樣,主要是讓開發(fā)人員明白他開發(fā)功能的各個(gè)細(xì)節(jié)。一般包括如下幾個(gè)方面:畫面字段、錄入校驗(yàn)情況、畫面的處理流程、畫面列表和字段查詢的表結(jié)構(gòu)關(guān)聯(lián)等等。詳細(xì)設(shè)計(jì)可繁可簡,以開發(fā)人員和測試人員能理解為原則。在整個(gè)功能設(shè)計(jì)中會產(chǎn)生進(jìn)一步的需求,需要記錄到需求列表中。功能設(shè)計(jì)完成后需要和相關(guān)干系人確定,主要包括開發(fā)、測試以及客戶代表,以發(fā)現(xiàn)問題確定版本。
D、軟件開發(fā)、測試、上線
此時(shí)產(chǎn)品經(jīng)理需要跟蹤相應(yīng)進(jìn)度、及時(shí)發(fā)現(xiàn)開發(fā)內(nèi)容和設(shè)計(jì)內(nèi)容的偏差予以糾正。這期間可能會產(chǎn)生較多的需求變更,需要將其記錄下來進(jìn)行分析,從而判斷是否在開發(fā)途中進(jìn)行功能的修改迭代。開發(fā)框架的搭建、代碼的管理、代碼質(zhì)量的把控、測試等此處不做過多討論。
如上看上去是一個(gè)比較典型的瀑布模型,但一套軟件的開發(fā),可以分成N個(gè)迭代,一個(gè)小迭代也遵循如上的原則,軟件上線前也可以通過N個(gè)迭代來一步一步完善軟件。
在整個(gè)軟件開發(fā)過程中的注意事項(xiàng)
1、功能情況和項(xiàng)目進(jìn)度情況放心中
軟件從需求階段到最終上線階段都應(yīng)該有詳盡的進(jìn)度計(jì)劃,比較近的時(shí)間節(jié)點(diǎn)進(jìn)度計(jì)劃需要詳細(xì)和準(zhǔn)確點(diǎn),比較遠(yuǎn)一點(diǎn)的時(shí)間點(diǎn)可以粗略點(diǎn),記錄計(jì)劃開始結(jié)束時(shí)間和實(shí)際開始結(jié)束時(shí)間。進(jìn)度計(jì)劃的羅列是項(xiàng)目管理中的一個(gè)重要部分,理論上要越詳盡越好。將工作任務(wù)進(jìn)行分解,對各個(gè)任務(wù)確定相應(yīng)的時(shí)間節(jié)點(diǎn),如發(fā)生變更需要及時(shí)記錄。項(xiàng)目進(jìn)度文檔不是一成不變的文檔,需要在項(xiàng)目推進(jìn)的過程中及時(shí)修改,刪除不合理的地方,添加未想到或者未細(xì)化的地方。
2、對于原先沒有相關(guān)需求文檔和相關(guān)設(shè)計(jì)文檔軟件的一些建議。
a)以項(xiàng)目管理的思想做指導(dǎo),建立改進(jìn)計(jì)劃,讓軟件產(chǎn)品逐步走向正軌。
b)從現(xiàn)在開始,就應(yīng)該建立需求列表文檔和功能列表文檔,記錄軟件產(chǎn)品的變更。
c)如果時(shí)間允許,應(yīng)該重新整理相應(yīng)的功能邏輯關(guān)系以及ER圖等。
3、擁抱變化,重構(gòu)重構(gòu)再重構(gòu)
靜止是相對的,變化是絕對的。每個(gè)人都在工作中成長,你的產(chǎn)品也是。使用的人越來越多,才會發(fā)現(xiàn)以前沒有發(fā)現(xiàn)的問題。任何一個(gè)問題的產(chǎn)生都是提升產(chǎn)品的一次機(jī)會。人非完人,產(chǎn)品經(jīng)理也好,技術(shù)開發(fā)也好,所做出來的東西并不是一蹴而就的。技術(shù)人員幫助實(shí)現(xiàn)軟件產(chǎn)品,軟件產(chǎn)品也幫助技術(shù)人員提升技能。一個(gè)好產(chǎn)品的產(chǎn)生,需要經(jīng)過無數(shù)次的迭代。我們在整個(gè)產(chǎn)品設(shè)計(jì)和開發(fā)過程中都應(yīng)該認(rèn)識到這一點(diǎn)。
最后,用Leon的座右銘送給所有的開發(fā)者:在人生的道路上砥礪前行,無懼風(fēng)雨。希望與每一位IT人共勉。
如果你也愿意分享你的故事,請加51CTO開發(fā)者QQ交流群 370892523聯(lián)系群主小官,期待你的精彩故事!
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請注明原文作者和出處為51CTO.com】
【編輯推薦】