挨踢部落故事汇(10):技术晋升管理的心声

Leon毕业于医学院医学信息学专业,自进入这个专业起,他就基本明确从此要从事医疗信息化行业相关的工做。毕业后他边工做边参加培训班学习.NET编程,并顺利进入医疗软件公司。从普通程序猿慢慢作到技术经理,后又作产品经理,工做无不围绕医疗信息化相关。参与开发和设计过EMR、HIS、RIS等医院内相关业务系统,经过PMP和信息系统项目管理师的考试,对项目管理的知识体系有一些认识。目前研究某市的我的健康档案数据以及慢病数据,励志服务于市民,以及卫计委相关职能部门。编程

Leon.NET开发

Leon·.NET开发架构

坚持.NET开发,逐步晋升框架

Leon的职业生涯大体分为四个阶段,技术学习阶段、软件工程师、技术经理、产品经理。ide

一、技术学习,打下编程基础布局

大学期间Leon基本没有不少的技术积累,只是阅读了《C#入门经典》这本书,仅仅是阅读,没有跟随书写相应的代码,因此基本收获不多。.NET的正式入门主要是靠将近200个夜晚的培训班学习积累的。培训班的学习使他对.NET有了一个初步的认识。该学习过程主要是帮Leon打下了基础,对于WinForm的各种控件、HTML各种标签、SQL语句的各种写法有了了解。但如今回过头来想一想,当时的学习彻底没法达到企业级开发的要求。学习

二、软件工程师,技术细节的深刻测试

基于大学对医学知识的积累和.NET培训这2块敲门砖,Leon顺利进入了医疗软件行业。进入项目组后,组长告诉他产品的开发使用的是WPF,而他却从没有接触过WPF。因而买了一门《WPF编程宝典》,他Coding了里面全部的代码,对WPF的体系结构有了基本认识。再结合项目上的代码,他的WPF技术有了很大的提升。闲暇时Leon会逛逛技术论坛,学习别人的实现方式。做为软件工程师,他认为经常会copy别人的代码,但copy只是第一步,要想提升,须要进一步去理解别人代码背后的意义,并作一些扩展。idea

影响Leon比较深入的是当时对护理体温单绘制的实现,一个比较复杂的绘制操做,原先有个简单的版本,用C#写的,但领导要他根据新需求从新编写一套,主要是业务的升级,以及设计思路的变化。项目框架是传统的三层架构,业务系统没有太多的技术架构。核心技术点是对XmlDocument类和Graphics类的应用,原有版本中有一些相关代码,再加上他查找了这两个类的大部分方法和属性知识,以致于他在着手开发相应功能时,内心的底气就足了不少。后来又学习了《C#高级编程》这本书籍,对面向对象的思想有了更深的认识。spa

三、技术经理,技术团队的全方面打造设计

技术经理职位不是一蹴而就的,随着工做年限和技术能力的提升,Leon开始带新人。他老是很耐心的指导新人,由于他知道本身毕业的时候还不如他们。好比代码规范,这个是技术新人基本都须要遵循的,Leon他们有个内部的代码规范。对于应届生新人,Leon会根据项目所须要的技术定一个学习计划,时间大约在1-2个月,内容精确到周,帮助他们提升自身能力。技术经理身份的他不能着眼于眼前,一个功能他实现也许只须要1周,让新人实现也许须要2周甚至更久,同时还须要Leon不按期指导。但这些投入都是值得的,由于当新人独挡一面的时候,Leon就会腾出手来作技术架构、功能设计方面的使用,Leon会根据项目长期发展的规划,让他们在完成相应功能的同时,去作一些技术预研,这些技术预研不少是Leon本身也不了解的。此时技术经理岗位的他更多的是考虑怎样让项目不失控,团队人员的可更换。

做为技术经理的时候Leon是在一家不算太大的公司,各种软件研发和管理均不是太正规,内心常常对项目把控、团队管理有不少疑问。因为心理的这些问题,他自学了CMMI认证体系内容,第一次阅读时,他感受收获颇丰,从中挑选了一些合适的模板运用到团队中来,如需求说明书、功能设计书等,初见成效。Leon一直对本身要求很高,工做的同时也不断增长自身阅历,他前后经过了PMP和信息系统项目管理师的考试,再结合本身遇到的问题,对项目管理有了比较深刻的理解。

四、产品经理,立足产品设计和进度把控

16年跳槽,Leon正式作产品经理的工做,主要涉及医疗软件的功能设计。他所在部门的产品经理和互联网产品经理有些差异,Leon更多的是关心需求、产品设计以及进度把控。他须要作各类文档,需求列表、功能列表、原型图、ER图、业务流程图、详细设计、软件使用手册、进度列表等。这些文档能够帮助项目组人员更好的理解项目、同时保证项目不失控。需求是产品的基础,需求调研须要全面细致,除了对客户的调研,也须要调研竞争对手产品,最终生成需求列表。功能设计应由抽象到具体,由简单到丰富。功能设计的核心目的是让开发和测试能理解功能,同时留有存证,方便新入项目的同事能快速进入项目。

职位能够多变,但方向只有一个:深耕医疗信息化。

对于产品经理的工做,Leon总结了几点经验:

A、idea的产生和初步的需求调研

这个idea每每是领导的,也许是通过深思熟虑亦或未通过深思熟虑。但销售每每能拿下相应的市场。领导任命你做为项目经理兼产品经理推进该产品的研发,并最终上线。此时须要作初步的需求调研,核心目的是弄清楚该idea目前在市场上的实现状况和实现难度,肯定本身以及公司是否有能力完成该项目。

B、详细的需求调研和分析

需求调研要尽可能全面,包括软件可能的使用者、目前业务流程状况、市场上存在竞品的实现状况等。列出全部的需求点,进一步分析软件须要完成哪些需求点。此时能够将需求点分红基本需求点(软件中必须实现的)、闪光需求点(完成能够提升软件竞争力)、个性需求点(个别客户要求非共性的)。此时须要输出需求说明书文档,记录全部需求,并分类,建议用Excel来实现。需求文档要作到条目清晰,只要调研到的或者本身思考到的均应列进去,便于后期功能出来后作一一匹配。

C、功能设计,功能架构要清晰,模块耦合度要低

功能设计主要包括概要设计和详细设计。概要设计主要产出功能列表、原型图以及ER图。此时的大功能点应该都出来了,页面的基本布局也能够肯定了。原型图上的各个功能须要和需求列表对应一下,用来判断哪些需求是包含在功能中的。此时的功能设计须要考虑低耦合,以知足后期的迭代改变。ER图设计时要将面向对象的思想放在心中,肯定是各个实体的实际意义和实体关系的正确关联。详细设计阶段主要是产生详细设计文档,文档格式多种多样,主要是让开发人员明白他开发功能的各个细节。通常包括以下几个方面:画面字段、录入校验状况、画面的处理流程、画面列表和字段查询的表结构关联等等。详细设计可繁可简,以开发人员和测试人员能理解为原则。在整个功能设计中会产生进一步的需求,须要记录到需求列表中。功能设计完成后须要和相关干系人肯定,主要包括开发、测试以及客户表明,以发现问题肯定版本。

D、软件开发、测试、上线

此时产品经理须要跟踪相应进度、及时发现开发内容和设计内容的误差予以纠正。这期间可能会产生较多的需求变动,须要将其记录下来进行分析,从而判断是否在开发途中进行功能的修改迭代。开发框架的搭建、代码的管理、代码质量的把控、测试等此处不作过多讨论。

如上看上去是一个比较典型的瀑布模型,但一套软件的开发,能够分红N个迭代,一个小迭代也遵循如上的原则,软件上线前也能够经过N个迭代来一步一步完善软件。

在整个软件开发过程当中的注意事项

一、功能状况和项目进度状况放心中

软件从需求阶段到最终上线阶段都应该有详尽的进度计划,比较近的时间节点进度计划须要详细和准确点,比较远一点的时间点能够粗略点,记录计划开始结束时间和实际开始结束时间。进度计划的罗列是项目管理中的一个重要部分,理论上要越详尽越好。将工做任务进行分解,对各个任务肯定相应的时间节点,如发生变动须要及时记录。项目进度文档不是一成不变的文档,须要在项目推动的过程当中及时修改,删除不合理的地方,添加未想到或者未细化的地方。

二、对于原先没有相关需求文档和相关设计文档软件的一些建议。

a)以项目管理的思想作指导,创建改进计划,让软件产品逐步走向正轨。

b)从如今开始,就应该创建需求列表文档和功能列表文档,记录软件产品的变动。

c)若是时间容许,应该从新整理相应的功能逻辑关系以及ER图等。

三、拥抱变化,重构重构再重构

静止是相对的,变化是绝对的。每一个人都在工做中成长,你的产品也是。使用的人愈来愈多,才会发现之前没有发现的问题。任何一个问题的产生都是提高产品的一次机会。人非完人,产品经理也好,技术开发也好,所作出来的东西并非一蹴而就的。技术人员帮助实现软件产品,软件产品也帮助技术人员提高技能。一个好产品的产生,须要通过无数次的迭代。咱们在整个产品设计和开发过程当中都应该认识到这一点。

最后,用Leon的座右铭送给全部的开发者:在人生的道路上砥砺前行,无惧风雨。但愿与每一位IT人共勉。

若是你也愿意分享你的故事,请加51CTO开发者QQ交流群 370892523联系群主小官,期待你的精彩故事!

相关文章
相关标签/搜索