项目开发中的反思

来源:互联网 发布:游戏攻略软件 编辑:程序博客网 时间:2024/05/24 01:49

       接触iOS开发一年多,接触到的项目也接近10个了,虽然对自己的进步不太满意,但是还是有必要整理一下自己的经验,以后可能会用得着。

       我接触的第一个经验是学会从用户的角度去思考问题,开发人员很多时候以工程师的思维去看待项目,认为用户进行某一个操作后自然就会进行设定好的下一个操作。结果在我的第一个项目中我被搞的很惨。事实证明即使界面上并没有多少可操作的元素,测试人员仍然可以整出一大堆组合后的操作bug,进而把你逼疯。所以在开发中就注意到这些问题会为你后期省去很多事。去年因为第一个项目经常骂我的一个测试员,对我上个星期提交的新的app的第一个版本的评价是“做的不错”。对我来说这是很大的提升,新项目中由于客户一点不太合情理的需求(我试图反对但是无效),手机界面上光是按钮就有20个,其他手势,输入框,下拉框加起来30多个,但是没有发生大的冲突或者足以导致崩溃的bug,在项目前期的考虑特别有必要。

      第二个经验是稳定客户的需求,这也是我们整个部门的教训。最近为国内两家很大的公司做项目,简直就是两个极端。第一家公司要求非常严格,需求非常明确,这样虽然我们部门虽然比较被动,但是做什么一直是很清晰的。另外一家公司规模很大,但是总是弄不清楚自己的需求,通常的说法是你们告诉我们要怎么做啊,但是等我们做好需求后,它又改动其中一部分,然后要部门做一个新的版本。这两家让人无比头疼的公司有一个共同点:都非常喜欢后期更改需求,在app上架之后我们经常还要做5,6个修改UI的版本。从部门的成本上说,这是非常不划算的,因为这些后续的版本并不能为部门带来效益并且会占用工程师大量的时间(其实我们小组一直非常繁忙的,少的时候一个人接触两个项目,多的时候4,5个)。后来一些高级工程师和项目经理都坚决提出:项目需求在立项时或者前期一定要明确,必须以文档的形式确定下来;客户后期要修改需求可以,必须另外增加研发经费。这个措施非常有道理的,结果之前做过项目的客户不乐意了,实在让人哭笑不得。

    第三个经验是开发前需要反复揣摩客户的需求定义。我经常打交道的一个国外客户喜欢坚持一些不太合理的做法,有时候我在自己没有仔细阅读需求定义的情况下情不自禁的按照自己的补充去完成项目,结果导致app出现了偏差,平白增加了自己的工作量。这点尤其在觉得客户需求不合理的情况下需要注意,很多时候客户并不会理会工程师的一些改进要求,而工程师也会在工程中加入自己的设想,一个牛头不对马嘴的app显然不会让客户满意的。

   第四个经验是关于开发的,工程师开发项目通常都有自己的做法和理论,即使这些并不是完全正确的,只是因为他们在之前的项目中起到了作用。曾经有一位船长说他之所以能够通过险滩并不是因为他知道所有暗礁的位置,而是因为他知道一条安全的路线罢了。事实上很多工程师也只知道自己开发的那一条安全路线(包括现在的我),而且几乎不会去探索更安全快捷的路线。我刚刚学习iOS开发时使用storyboard,感觉比较方便(事实上那个时候对代码不熟悉),我的师傅很不高兴,他说只有你亲自用代码写的东西你才能了解到其中的细节。之后我就一直在用代码构建UI和完成各种功能,再也没用过storyboard了。最近做一个项目(前面提到过)的界面很复杂,而且界面元素间没有明显的分块,我光是创建UI就用了700多行代码。后来和一个高级工程师聊起这事,他说你可以去尝试一下自动布局,我很惊讶的说你们UI不是都用代码写的吗,他的回答是哪个好用用哪个。我后来想想,这才是一个优秀的工程师应有的素质,我们应该勇敢去探索一些新的特性和可能,积极在项目中运用它们。要知道通常新的特性都是为了方便工程师而出现的,但是在ARC刚出现时,大多数开发人员并不接受。只有不断探索新的可能,你的app才会越来越简洁清晰。当然,我认为iOS新手用代码实现所有功能是很有必要的,可以极大的增加你对代码的熟悉度。

   第五个经验是关于项目中的各个模块。目前我知道几种项目模块的划分方式,它们都具有一定的合理性,都完全可以胜任任何iOS项目的开发。但是在一位高级工程师进入开发小组后,一切都乱套了。他要求我们将整个已有的项目迁移到另外一种方式,工作量比较大不说,有的人有些不适应,建立新的文件都不清楚在哪里去弄,最后搞的一团糟。项目前后保持一致性是完全必要的,即使是认为一些不合理的地方,也要经过整个组的评审后决定,将标准确定下来。朝令夕改的方式是开发的大忌。

  第六个是关于工程的管理。绝不是所有的开发人员都是优秀的,一些糟糕的代码完全可以毁掉一部分功能。最近在看开源中国的一份源代码,感触很深,如何尽量减少糟糕代码以及它们带来的损失,是一个重要课题。等我研究更深刻一些再喝大家分享。

  第七个是项目的反思与总结。华为的一个软件经理曾经跟我们说过,在华为,任何一个工程师离职了,都绝不会影响项目的进度。这种效率是我现在的团队达不到的,我们内部尝试去总结一些代码规范,去整理项目中问题点的文档,去将各个功能模块化。目前这些工作已经起到了一些作用,当项目的模块达到很高的程度的时候,整个小组都会减少很多工作量。以后要有意识的总结反思。

  我的开发时间不算长,以后达到软件组长的位置应该会看的更清晰一些。工作一年,与君共勉!

   

     

0 0