故事之源

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的反思的更多相关文章

  1. 团队项目M1阶段个人反思

    郑培蕾: 作为项目的PM,我前期的工作还是有很大的缺陷的,因为没有在开发之前对项目进行一个合理的评估,所以后来分配任务的时候就很不科学, 而且任务分配的比较粗糙,没有细化到每个人每天应该做什么,这就导 ...

  2. PM九步法

    本文转载自网络. 多年以后,当我面对那些年青的产品经理,我会想起自己当年从事的是一份高薪的工作.那是2000年,我大学毕业后在北京一家IT网站做搜索引擎PM,当时我一个月的薪水能在亚运村买一平方米房子 ...

  3. 少走弯路,一个老程序猿谈PHP职业发展规划

    PHP是一个使用者非常多的开发语言,但在每个领域里的开发侧重点有所不同互联网方面,在稳定的基础上,更注重性能.高并发,高负载的处理. PHP职业发展规划一般有三条路线,一条技能专精发展路线.另两条,是 ...

  4. 推荐一个IT老鸟肝了2月有余的免费开源WPF企业级开发框架

    一个新学WPF的IT老鸟,肝了2个月做了这么一个WPF企业级开发框架,站长clone学习,觉得甚是不错.这是一个使用了Prism搭建的插件式框架,封装了DataGrid的使用,使整个框架子模块简单易学 ...

  5. 半吊子菜鸟学Web开发1 --配置开发环境

    先说说我自己的情况,我算是一个半吊子菜鸟,对web开发熟练度为0,但是对熟悉C++和Python 所以这里开始记录我学习Web开发的历程,看看我这里学习的程序,能够学到什么地方. 首先是配置环境,我的 ...

  6. Node.js躬行记(18)——半吊子的可视化搭建系统

    我们组维护的管理后台会接到很多开发需求,每次新开页面,就会到处复制黏贴相关代码. 并且还会经常性的翻阅文档,先在书签或地址栏输入WIKI地址,然后找到那一份说明文档,再定位到要看的组件位置. 虽然单人 ...

  7. 《我是一只IT小小鸟》 读后感

    <我是一只IT小小鸟>一只是我想读list中一个本,但是上次去当当买的时候,竟然缺货了...昨天监考,实在无聊,就上网看电子书了,一天就看完了,看得有点仓促,所以理解估计不深. 1.刘帅: ...

  8. 我是IT小小鸟读后感

    <我是一只IT小小鸟>一只是我想读list中一个本,但是上次去当当买的时候,竟然缺货了...昨天监考,实在无聊,就上网看电子书了,一天就看完了,看得有点仓促,所以理解估计不深. 1.刘帅: ...

  9. 阅读《构建之法》之FAQ

    注:本文档已提交Github,地址是这个 欢迎大家通过PR的方式或者在本博客下留言的方式随时补充意见和建议,我们会持续更新 书中7.2.4的表7-1 MSF团队模型和关键质量目标里面提到的" ...

随机推荐

  1. 【Java深入研究】11、深入研究hashmap中的hash算法

    一.简介 大家都知道,HashMap中定位到桶的位置 是根据Key的hash值与数组的长度取模来计算的. JDK8中的hash 算法: static final int hash(Object key ...

  2. Beego 学习笔记一:环境的配置

    Beego 环境的配置 1>     下载go,并安装.下载地址是: https://golang.org/dl/.最好选择这部分的最新的下载安装 2>     配置环境变量(若是没有配置 ...

  3. MES被重新定义?做到这几点才算智能制造

    在工业4.0背景下,推动智能制造,构建智能工厂.智能生产.智能物流和智能服务体系,我们需要对MES系统重新进行定义,主要从以下几个方面进行说明: MES深度融入企业运营环节 智能工厂中的机器将全部由软 ...

  4. 配置集成测试环境 phpstudy

    phpStudy是一个PHP调试环境的程序集成包,该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是非常方便.好用的 ...

  5. linq自定义条件Lambda过滤方法

    Public Func<NoramalClass,bool>simpleComare<NormalClass>(string property,object value) { ...

  6. 老大难的GC原理及调优,这下全说清楚了

    概述 本文介绍GC基础原理和理论,GC调优方法思路和方法,基于Hotspot jdk1.8,学习之后将了解如何对生产系统出现的GC问题进行排查解决 阅读时长约30分钟,内容主要如下: GC基础原理,涉 ...

  7. Django简介,请求生命周期,静态文件配置

    Web框架 ​ Web框架(Web framework)是一种开发框架,用来支持动态网站.网络应用和网络服务的开发.这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方 ...

  8. JVM垃圾收集算法之标记算法

    前言 总所周知,jvm的垃圾收集算法一般包括标记.清除.整理三个阶段,最近在看了有关于垃圾收集的标记算法,记录一下自己的理解. 垃圾收集中标记算法有两种:一种是引用计数法,一种是根搜索算法. 引用记数 ...

  9. 【转】大众点评Cat--架构分析

    https://blog.csdn.net/szwandcj/article/details/51025669 Cat功能强大且多,光日志的报表和图表分析就有十几种,但文档却很少,寥寥无几找到一些粒度 ...

  10. Vue.js中使用wangEditor富文本编辑器

    1.前端代码 前端HTML <script src="https://cdn.bootcss.com/wangEditor/10.0.13/wangEditor.js"> ...