在软件开发这个行业里,人才是其中的关键,没有了相关人力资源的投入,软件的进度和质量都没法得到相关的确保,如何对人力做好良好的规划,小弟不才,下面是我在从业期间对软件产品的团队建设规划心得,欢迎大家讨论:
拿一个移动互联网产品来说,其发布的终端包括app,因此其相应的终端就需要囊括pc、手机,手机又包括android终端,ios终端,windows终端。所以对终端需要评估你的用户覆盖群,后端需要评估你初期的活跃用户数(最大并发数)。
评估终端的覆盖群,决定你需要招相关的技术人才,抛开用户数承载的需求,从产品需求考虑,这样一个团队的架构有如下:
1、android开发工程师
2、ios开发工程师
3、后台开发工程师(java、.net、php根据后端的架构采用相应的选择)
4、UI设计
5、web前端开发工程师
6、产品经理(需求分析)
7、项目经理
8、测试工程师
9、架构师
上面是根据整个产品的需求来说相关职能的划分,每一个职能并不代表就一定需要一个人,当然如果项目大了,各个职能本身承担的事足够多,每个职能都由一人承担,从该人的技术层面出发有利于技能的专一和深入。但往往很多时候,很多公司初期建立初期事情资金没有那么充裕,加上软件开发的相关从业人员工资不低,因此上述很多职能是由一人兼任来推进这个产品的开发。拿公司团队申请下来给了6个人的编制,我是如何合理安排这6个人的相关工作:
1、项目经理,架构师,总负责人
1.1、知道整个项目需要完成什么,能够协调整个团队的各个成员
1.2、对项目提出的需求评估可行性,如果可行提出实现方案,能够与团队成员一起解决相关的技术难题
1.3、合理做项目进度计划安排
1.4、对后台有整体架构经验
2、产品经理,项目经理
产品经理需要具备的技能:
第一、有良好的沟通
第二、有互联网产品意识,能够比较好的把握产品的需求
第三、熟悉人机交互,对移动互联网产品比较熟悉
第四、如果懂开发的产品经理可以再跟踪产品的进度
3、UI设计,web前端开发工程师(偏UI)
3.1、能够根据产品经理的产品原型出具相关的效果图
3.2、能根据相关效果图编写相应的html及css代码
备注:这里web前端开发工程师的js功底不需要太强,他主要负责UI的设计及相关页面转化成html页面
4、后台开发工程师
1、实现后台功能接口的开发
2、对于pc端的系统,在web前端工程师的配合下完成pc端程序代码和页面粘合
5、android开发工程师
1、实现android程序开发
6、ios开发工程师
实现ios程序的开发
7、测试工程师由于没有人员编制预算,由本身开发的人,项目经理,产品经理做基本的功能性测试,如果需要保证相关产品质量及腾出相关人手时间,需要补增一名人员编制。
项目整体开展过程如下:
整体系统开发过程首先分析出相关产品需求,由产品经理出具原型图,合理规划出需求点,采取敏捷开发,项目经理安排出2周需要实现的开发任务,由各个开发人员自己认领开发项目及安排进度,每天记录日志,开发人员的绩效考核根据分配出来的开发任务的实现情况及实现质量来决定,原则上要求开发人员要求写日志,如果对不能按时完成的开发任务且又不进行相关日志的记录则会影响到本月的绩效。
上面是从产品功能性需求开发需要相关的人员组织架构,对于互联网产品来说需要满足多用户并发,则对后台系统规划需要增加相关的技术人员,下面拿一个前期需要覆盖百万级用户的移动app,日活跃用户在20w左右的架构举例来说,用户注册数对于整体系统的负载没有直接的考量,因此从后端的承载情况来说,日活跃用户才是决定后端的能否承载高并发用户的访问,这里20w并发用户的,如果最大并发数在10w左右的话需要如何安排相关人员架构
1、系统架构师
1、此系统架构师与前面的系统是同一人,他可以将产品的需求合理做好的规划,能够对系统做好合理的分层设计,将各个模块合理区分开,以做到当用户并发上来或者功能需求有变化的时候可以合理的通过增加机器扩展以满足系统相应需求。
2、熟悉大规模系统的负载均衡、缓存、网络存储、网络安全、数据库高可用设计及性能评估机制;
2、系统运维
能够辅助架构师对做好网络规划,负载均衡,以及相关中间件的调优及程序代码编写。
3、高级开发工程师
拿java来说,高级开发工程师能够分析出性能的瓶颈,能对jvm做相关合理的优化
4、测试工程师
1、负责相关项目的测试用例设计,
2、负责测试结果分析,及优化建议
5、数据库优化
如果数据库的访问压力大需要做数据库优化的人。
以上纯属本人的个人研发管理中的一些心得和体会。。。