一个半吊子PM的反思
故事之源
2019年3月,也就是2016级计算机学院的大三时,软件工程这门课程由选修转为专业必修课,而七个葫芦娃共聚罗杰老师的课堂,组成葫芦娃不想写代码小分队。面临着继承往届项目、完成指定项目和自选项目的抉择,葫芦娃们凭着自己在黄金点游戏中的欧气,和“想着写出点自己喜欢的且未来能够写在简历中的东西”这样一个单纯的想法,毅然决然地选择了VisualPytorch这样一个蛇精大BOSS。至此,这场漫漫打怪升级之路,变拉开了序幕……
所得之幸
我在葫芦娃中扮演着主PM的角色,说是PM,其实最开始完全不知道到底该做些什么。在Alpha阶段,我们在开会商讨的时候,有如下对话:
我:我们来做一个那种可以拖组件,然后搭建模型的网站吧...
大家:好呀好呀~
我:我们主要就是要让他可以拖组件到画布里,然后连线搭建模型,然后就可以生成代码了。
开发组:呃……具体是什么样的功能呢?
我:就是左边有一堆组件,从左边拖进来,然后连线,这不就搭出来一个模型了么?然后点一下生成代码,就能生成代码了啊…
开发组:……
我:我们还应该实现登录和注册的功能,这样用户可以把模型保存在他们的账号里。
开发组:……
我:然后我们最好也实现论坛的功能,这样用户可以在我们的网站上进行讨论交流,有人如果有疑问的话也可以求助别人啦!
开发组:……
我:行那要不就先这样?大家分一分活然后抓紧开始学习、开发叭。
开发组:?????功能是啥?原型图是啥?我要干啥?
我:……
这种模棱两可的对话就是我们Alpha阶段初期的状态,我不知道什么是原型图、如何明确地把预期功能交付给开发组同学们,也不知道该如何控制项目的进度,只能每天问问“今天做了多少呀?能完成嘛?要抓紧做哈”。而很快,我可以给开发组同学提供每个网页的原型图,方便他们进行开发;我也习惯了每天召开scrum meeting,来了解组员们的情况,并用Github的issue来把控项目进度,也学会了疯狂push大家。
此外,正如那句话所说“PM负责除了开发和测试以外的所有事情”,我学会了在前端与后端之间、开发与测试之间扮演着信使的角色。当我和另外一位PM对网站有了新的想法,我会及时与开发组的同学商量,研究新的功能的必要性以及实现的可行性;当后端完成了某个接口时,我也会及时交付给测试同学进行单元测试。如果经历了一学期的历练,我有一点点的提升的话,全都归功于软件工程给我们的实践的机会…在项目迭代的过程中,我一点点认识到,PM不是团队里的混子,某些时候PM是领航人,带领着团队前进,有些时候PM更像一个打杂的,要给团队提供最好的条件前进,就好像润滑油,PM来保障团队能够顺利地全速推进。
数遇困境
虽说学期结束后来看,我们组顺利完成了VisualPytorch项目,然而实际上,在项目推进的过程中,我们还是遇到了一些困境的,甚至是毁灭性的打击。
在Alpha阶段的中后期,也是我的失职,没有一天都没有询问开发组进度,结果第二天才发现群里超级安静,我就问了下后端大佬进度如何,才发现前端和后端同时停滞了。前端说后端接口没设计好,后端说功能还没和前端敲定,于是陷入了死锁。当天,我紧急召开了会议,大家一起商议,确定好了下一步的工作,使得项目得以继续推进,Alpha阶段顺利完成。这次小风波也让我明白,在团队冲刺的时候一定要跟进各个部门,确保顺利对接配合,如果遇到问题一定要及时解决。
在5月22日,我们的数据库遭到攻击,数据库内所有信息均被删除,并被勒索0.1比特币来恢复数据库(我们像是有比特币的人么)。幸好,我们的数据库并不是那么复杂,且我们也不是一个商业公司,数据并没有那么重要,我们开发组的大佬只能加班把数据库重新搭建一遍,并关闭了所有的远程连接。大佬说,幸好我们的数据库不复杂,并且不涉及到隐私数据,否则我们只能花钱消灾了。虽说这次危机事件,我们用最笨的方法解决了,其实也不能够算解决,只是让网站能够继续提供服务。但经历了这次事件,我们也都有了经验,警醒要在安全问题上下功夫,如果没了安全产品就像海上飘着的树叶,毁灭只是时间问题。
在最终最终的展示上,我个人由于身体原因,嗓子过敏说不出话,无法完成最终的展示。我们组的ywt同学挺身而出,代替我完成了最终项目的展示。
我们葫芦娃团队虽说是一群毫无经验的学生,我们没有所谓的项目经验,但我们有进去的心和相互帮助、相互搀扶的精神,也正是这样,我们才能一点点进步,完成这个项目。
引以为憾
虽说结果是好的,但其实还是有一些遗憾,有些问题没能够解决,这些遗憾也是我本学期课程所收获的。
在Gamma阶段伊始,我们开会决定第三阶段要进行哪些功能开发时,我提出了几个方案,但开发组的同学似乎并没有什么动力,并想选择一些工程量较小的功能来实现。我理解到了Gamma阶段,大家都比较疲惫,并且各种考试、大作业也都接踵而来,大家没有太多的精力分配到软件工程上。虽说理解,但工作量还是不能过分减少,因此我还是按照原定计划督促大家完成,但很遗憾的是,我试图找到一种让大家都能够愉悦、轻松地完成开发任务的方法,我想要去营造一个较为舒适的团队氛围,但我没有想出一种有效的方式,感觉大家都是在负重前行、疲惫不堪,对此我真的很内疚。我认为一个愉悦的开发环境,无论是对组员的工作效率,还是对组员之间的关系,都是一种保证。我真的不希望大家因为工作上的事情,彼此闹得不愉快、很疲惫厌倦,因此,没能够想出一种调节团队氛围的方法我感到非常的内疚。
另一个遗憾,则是在整个过程中,我有两个问题并没有想清楚,我也和学长进行了交流,感觉也并没有得到足以令我信服的答案,为了解决自己的疑惑,我联系了一位在微软工作了一段时间的前辈,想了解一下真正的公司中是怎么样的,问题如下:
问题一:
在Gamma阶段伊始,正如上文所说,开发组组员有些疲惫,对有些功能并不太想实现,并说是因为整体架构的扩展性没那么好,无法进行扩展,如果真的要实现只能进行重构。开发人员认为这些功能都应该是在最开始就设计好的,在最开始就应该考虑到这些功能的添加。而我个人觉得,一个产品会根据用户反馈不断提出新的需求,这些往往是无法在最初就想好、设计好的,那这种情况在公司中出现,应当如何应对呢?如何在最开始就保证项目良好的扩展性呢?
问题二:
由于我们开发成员大多数对Django、数据库一类的不太了解,而在Alpha阶段的学习也不太扎实,导致在Beta和Gamma阶段能做的事情就很少,几乎是靠大佬一人撑下来……我个人觉得这种情况如果出现在公司,可能会导致项目进度大大延缓,这种情况在公司中遇到了会怎么办呢?
回首观之
可能因为大家在团队中担任的角色不同,一学期的学习下来大家收获的方面各不相同,但所幸我们都有各自的收获。
于我个人而言,因为我以后也希望能够从事产品方向的工作,所以这段经历算不上经验,但也让我初步尝试了一下作为PM是一种什么样的感觉,也在摸索当中学会了一些东西,认识到作为PM远远不是想想的那么简单,简单的push、简单的功能设计,真正好的PM是能够带动团队、协调团队、发掘出团队的全部能量的,而我也希望自己今后,能在这方面不断积累经验、越走越远。
一个半吊子PM的反思的更多相关文章
- 团队项目M1阶段个人反思
郑培蕾: 作为项目的PM,我前期的工作还是有很大的缺陷的,因为没有在开发之前对项目进行一个合理的评估,所以后来分配任务的时候就很不科学, 而且任务分配的比较粗糙,没有细化到每个人每天应该做什么,这就导 ...
- PM九步法
本文转载自网络. 多年以后,当我面对那些年青的产品经理,我会想起自己当年从事的是一份高薪的工作.那是2000年,我大学毕业后在北京一家IT网站做搜索引擎PM,当时我一个月的薪水能在亚运村买一平方米房子 ...
- 少走弯路,一个老程序猿谈PHP职业发展规划
PHP是一个使用者非常多的开发语言,但在每个领域里的开发侧重点有所不同互联网方面,在稳定的基础上,更注重性能.高并发,高负载的处理. PHP职业发展规划一般有三条路线,一条技能专精发展路线.另两条,是 ...
- 推荐一个IT老鸟肝了2月有余的免费开源WPF企业级开发框架
一个新学WPF的IT老鸟,肝了2个月做了这么一个WPF企业级开发框架,站长clone学习,觉得甚是不错.这是一个使用了Prism搭建的插件式框架,封装了DataGrid的使用,使整个框架子模块简单易学 ...
- 半吊子菜鸟学Web开发1 --配置开发环境
先说说我自己的情况,我算是一个半吊子菜鸟,对web开发熟练度为0,但是对熟悉C++和Python 所以这里开始记录我学习Web开发的历程,看看我这里学习的程序,能够学到什么地方. 首先是配置环境,我的 ...
- Node.js躬行记(18)——半吊子的可视化搭建系统
我们组维护的管理后台会接到很多开发需求,每次新开页面,就会到处复制黏贴相关代码. 并且还会经常性的翻阅文档,先在书签或地址栏输入WIKI地址,然后找到那一份说明文档,再定位到要看的组件位置. 虽然单人 ...
- 《我是一只IT小小鸟》 读后感
<我是一只IT小小鸟>一只是我想读list中一个本,但是上次去当当买的时候,竟然缺货了...昨天监考,实在无聊,就上网看电子书了,一天就看完了,看得有点仓促,所以理解估计不深. 1.刘帅: ...
- 我是IT小小鸟读后感
<我是一只IT小小鸟>一只是我想读list中一个本,但是上次去当当买的时候,竟然缺货了...昨天监考,实在无聊,就上网看电子书了,一天就看完了,看得有点仓促,所以理解估计不深. 1.刘帅: ...
- 阅读《构建之法》之FAQ
注:本文档已提交Github,地址是这个 欢迎大家通过PR的方式或者在本博客下留言的方式随时补充意见和建议,我们会持续更新 书中7.2.4的表7-1 MSF团队模型和关键质量目标里面提到的" ...
随机推荐
- 16. Promise对象
目录 Promise对象 一.含义 1. Promise是什么 2. 实例讨论 二.Promise特性案例解析 1. Promise的立即执行性 2. promise的三种状态 3. Promise的 ...
- HTML 结构标签(div+span)
一.div 标签 div 就是 division 的缩写 分割, 分区的意思 常见的用途是文档布局. 二.span 标签 span, 跨度,跨距:范围 <span> 元素可用于为部分文本设 ...
- Linux系统密码复杂度安全配置
密码有效期控制 在文件/etc/login.defs中进行设置,如下参数 PASS_MAX_DAYS 180 #密码最长过期天数 PASS_MIN_DAYS 30 #密码最小过期天数 PASS_MIN ...
- 【异常】Zipkin server启动 Caused by: java.lang.ClassNotFoundException: com.linecorp.armeria.server.cors.CorsServiceBuilder
一.异常信息 ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to t ...
- Centos7下的日志切割--转发
logrotate /etc/logrotate.conf 是 Logrotate 工具的一个配置文件,这个工具用来自动切割系统日志,Logrotate 是基于 cron 来运行的,如下: [root ...
- HAProxy的基础配置详解
HAProxy是高性能的企业级负载均衡调度器,同时支持四层TCP和七层HTTP协议的负载均衡调度,以及支持基于cookie的持久性,支持正则表达式及web状态统计.自动故障切换等优点,因此广泛被应 ...
- Httpd服务进阶知识-基于Apache Modele的LAMP架构之WordPress案例
Httpd服务进阶知识-基于Apache Modele的LAMP架构之WordPress案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装依赖包及数据库授权 博主推荐阅读 ...
- Java自动化环境搭建笔记(3)
Java自动化环境搭建笔记(3) 自动化测试 自动化的环境已经基本搭建完成,后续可对BaseTester基类以及工具类进行扩展.下面便是持续集成的环境的搭建: Jenkins安装 git安装 源码上传 ...
- jenkins忘记admin密码的处理方法
如果忘记admin的登录密码,可按如下方法处理 # 编辑config.xml文件,替换passwordHash行的内容# vim /var/lib/jenkins/users/admin_167938 ...
- ShareSDK For Unity集成
Mob ShareSDK Android - V2.7.10 iOS - V3.5.0 Mob下载:https://github.com/MobClub/New-Unity-For-ShareSDK ...