提问回顾
原博客链接
回答原问题
第13.2.5节提到“探索式测试是团队管理不佳的一个标志”,我的疑惑是,会存在Bug Bash(经老师提醒已更新)的效果总是优于单元测试/集成测试的情况吗?以及进行能否通过程序来模拟这种探索性测试?
会存在。团队一起找bug提issue。
可以,有自动测试的软件,例如jmeter和badboy等框架。
在第16章里提到了IT行业的创新,提到了要成为领域的专家,才能创新。那作为一名还在还在学校上学、接触项目经历还很少的学生,该怎么进行培养创新意识?我们怎么才能认为一个创新是可实现的创新,因为我有时想出我觉得不错的点子,但总是觉得技术要求太高而觉得遥不可及,因此改怎么去发掘其可能的价值?
多参与,多见识,可以参加一个开源库的开发、实习、参加科研项目等等。
有想法就去行动。行胜于言。如果技术能力还不够就先记录下来,并逐步去学习相关的技术。
关于第8章的需求分析,我觉得需求分析的设计/制定不能太满,即得留出空间给后期开发的时候补充,这样也算给用户一个选择的空间。就像草坪留出道路给人踩出路径再铺石头一样,可能会起到更好的效果,不知道这样的想法正确吗?
我觉得是正确的。留白是一种艺术。
比如说我们的iCourse,在开发之间我们发现了移动端的需求,因此我们开发出了安卓版,并获得了不少下载(目前已有600余人)
在第三章讲到的关于软件工程师的成长,作为大三学生,如果想未来从事一名软件工程师,目前应当注意培养哪些技能?
多写代码少空想。
眼光放长远,不要拘泥于课本或者学校,多思考。
做好职业规划。
两人合作应不应该确定一名leader? 应当是风格相近的还是比较互补的作为两人合作比较合适?
应该。这样整个开发的进度处于一个可控范围内。并且有一名leader会更好地做出决策。
互相配合的都合适。结对编程本身就是互相了解、互相学习并互相进步的过程。
随着时代的发展,现在出现了很多独立开发者。这些开发者往往由一个人独立完成一个比较大的项目,从开发到测试到维护。比如我用过几个不错的软件/app/网站主题,几乎都是由个人独立开发者搞出来的。因此想请教一下对于独立开发者,他们一般会采用一些比较固定的模式吗?因为在第五章里看到了很多团队模式,因此提出这样的困惑。
仍然不清楚。感觉应该会遵循某种规范,但感觉又可能不同的开发者都有自己独特的风格。
新提出的问题
- 如何规范开发者对公共资源的使用规范,例如对数据库的修改,是否应该合理分配每个开发者的权限,还是每个人都拥有同样的权限,但是需要遵守原则(开发者A改了数据库,但其它开发者不知情的情况下,总是会遇到很多麻烦)
- 不同部门是否可以修改其它部门的代码?
- 如果一个产品由于时间的仓促而功能开发不全,但是迫于时间等各种因素已经上架了,如何保留住已经下载的用户?
每个阶段学习到的知识点
- 需求: NABCD方法分析。要关注用户的需求,不能盲目开发。
- 设计阶段:选择合适的框架,并早做决断,这样可以留出足够的时间来学习新技术。
- 实现阶段:MVP开发原则。以及开发者之间要多沟通多交流。必要的会议、记录是必须的。Scrum会议是非常好的选择。
- 测试:除了测试人员,每个开发者遇到问题都应该发issue,整个团队一起解决。
- 发布:合适的推广手段很有必要。例如我们就在多个平台进行了宣传,并收到了一定效果。
- 维护:可以采用群的方式让用户来反馈。团队内部测试修复bug+用户反馈两种方式结合起来维护。比如我刚刚上线iCourse App时,就遇到了部分院系注册失败的原因,在查到log信息发现是执行书院的学生后,发现我漏了考虑17级存在的一些新的院系例如73系、79系等等,导致map索引学院id进行数据库存取时遇到了null pointer的问题而注册失败,我于是进行了修复。这便是用户反馈的方式。同时,我们团队也会有专门的测试人员在上线前进行测试。两种方式结合起来,效率会很高。