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

原创
移动开发
每个人都在工作中成长,你的产品也是。任何一个问题的产生都是提升产品的一次机会。技术人员帮助实现软件产品,软件产品也帮助技术人员提升技能。一个好产品的产生,需要经过无数次的迭代。我们在整个产品设计和开发过程中都应该认识到这一点。

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

[[184479]]

Leon·.NET开发

坚持.NET开发,逐步晋升

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

1、技术学习,打下编程基础

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

2、软件工程师,技术细节的深入

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

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

3、技术经理,技术团队的全方面打造

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1、功能情况和项目进度情况放心中

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

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

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

b)从现在开始,就应该建立需求列表文档和功能列表文档,记录软件产品的变更。

c)如果时间允许,应该重新整理相应的功能逻辑关系以及ER图等。

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

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

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

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

51CTO开发者QQ交流群 370892523

【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】

【编辑推荐】

责任编辑:何星 来源: 51CTO
相关推荐

2017-01-16 17:24:08

开发者故事

2017-03-21 11:19:57

开发者故事

2016-12-30 16:43:53

开发者故事

2017-11-28 14:15:38

开发者故事

2017-04-25 15:39:30

开发者故事

2017-01-11 17:25:23

开发者故事

2017-01-18 16:37:43

开发者故事

2017-01-19 13:40:56

开发者故事

2017-01-10 14:59:03

开发者故事

2017-09-15 11:39:47

2017-01-18 11:07:20

开发者故事

2017-03-10 11:32:49

开发者故事

2017-06-09 16:27:40

开发者故事

2017-07-26 15:11:01

开发者故事IT技能职场经验

2017-07-06 14:59:27

2017-10-23 13:15:51

2017-04-21 15:50:52

开发者故事

2017-03-24 16:43:09

开发者故事

2018-07-04 17:42:58

开发者故事

2017-01-13 16:36:29

开发者故事
点赞
收藏

51CTO技术栈公众号