人人都能看懂的全栈开发教程——明确需求和计划

人人都能看懂的全栈开发教程——明确需求和计划

Chris Yue No Comment
Posts

可能大伙儿一看这标题就觉得这不像是教人技术啊。的确,明确需求并不需要你掌握技术,但我认为这是一个非常重要的,不仅是技术人员,是每个人在团队工作的人都需要掌握的技能。

如果你只是为了了解纯技术知识而对项目管理不感兴趣,此章可直接跳过,直接下一章

我总是能遇到一些开发工程师,看上去很忙,但做出来的东西总是跟需求有差距,或者跟计划的开发时间有差距;有时在开发中途跟他们确认需求或者计划时,总是觉得不清不楚,这就让我很好奇,既然要做啥都不清楚,那到底在忙些啥呢?

也许,可能,大概,一边做一边想怎么做,是更符合人性的一种做事方式,但我强烈不推荐,这是因为:

  1. 以我的经验来说,先想好怎么做,实际上是更省时间的;边做边想所造成的返工时间,远大于先做计划再实施的时间
  2. 边做边想很容易让项目『失控』
  3. 如果你是一个人做项目到也无所谓,但你大概率是在一个团队里做项目,而团队跟个人最大的不同,就是在团队成员之间的沟通上。如果你一开始没有清晰的目标和计划,对开发的难度和时间有误判,将会导致团队的合作的不通畅(『不是你们自己说好了 xxx 之前完成开发的吗怎么又要拖』是常见的其他部门对技术团队的灵魂拷问)。

当然,对于第三点,我建议团队其他人员也应该做到给开发人员留足明确目标和制定开发计划的时间,别逼着开发团队『拍脑袋』。

对于我这次的教程示例,我也会制定这样的一个目标和计划:

目标:创建一个任务清单网站

如果只有这么一个标题肯定是不行的,因为还有太多不明确的问题:

  1. 这个任务清单是只能一个人用还是可以多个人用呢?
  2. 清单可以删除吗?
  3. 如果清单里的某个任务已经被完成,可以被标记完成吗?
  4. 被标记完成的任务,是不显示,还是依然显示?
  5. 清单可以被搜索吗?
  6. ……

这些问题都有一个特点,即它们并不依赖于某种技术的具体实现就可以被解答。把这些非技术类问题明确下来,是产品,或者需求专员的工作,而开发要做的则只是一个把需求『翻译』成代码。

下面我将把教程实例的需求先列出来。为了适合教学的从易到难,我会分阶段给需求。不同的阶段的需求对技术的要求会有不同。

先解决有无的问题。一开始的需求非常简单:

  1. 访问『首页』是任务列表,列出所有的任务
  2. 访问『添加任务页』可以添加任务,只需要一个多行文本输入框和一个『提交』按钮

上面的需求是否已经够清楚到可以开始开发了呢?大家可以再想想。实际上,在一个产品研发团队工作时,产品所召集开发开的需求研讨会,也就是这样。

对于第一个问题,一般列表类需求都需要明确:排序规则是什么?是否要分页?我们这里就规定按时间正序排序,并且先不需要分页。

对于第二个问题,一般用户输入类需求都需要明确:输入内容的校验规则是什么?这里我们规定,内容不为空就行。

实际我们还有一个问题:任务是存在浏览器里,还是存在网站服务器上?如果有同学都不知道这个问题问的是什么,可以先不用深究。简单来说,数据存在网站意味着你在笔记本上保存的任务,你之后在手机上也能看见,你用谷歌保存的任务,用火狐也能看见;而存在浏览器里则意味着你在笔记本上的谷歌浏览器保存的任务,任何别的设备和浏览器都看不到了。既然我们做的是一个网站,还是发挥互联网互联互通的特点,这里就定『任务存在网站上』。

最后,我们应该对网页的外观和交互要求做确认。不过教程一开始,我打算让大家先重点关注后端,所以就对外观没有任何要求了,能用就行。

为了引出另外一个话题,我再加一个需求:

在命令行下也可以列出所有任务,并且可以添加新的任务。

当所有需求都明确之后,技术部门就应该开始分析需求并制定开发计划了。如果是在一个开发团队里,技术大概率会在需求讨论会结束之前被灵魂拷问一个问题:什么时候能做完?作为技术部门,遇到这种问题,我的建议是直接向团队其他组提议在开发计划制定好之后再答复;如果遇到比较『事儿』的,非要当场得个答复不可,那就按最好打算和最坏打算给一个大概的时间范围。

开发计划

为了更适合作为一个入门教程,开发计划就按最简能实现的方式给出了。

首先我们的开发工具或要求先定下来:

  1. 网页使用 HTML 创建
  2. 后端逻辑使用 PHP7 实现
  3. 数据库使用 MySQL

接下来是计划要做的事情,依次为

  1. 创建任务列表页,任务新增页
  2. 创建数据库 minetodo,并且创建任务表 task,包含两个字段:content,类型为 varchar(255) not null;created_at 类型为 timestamp not null
  3. 实现通过命令行列出数据
  4. 实现通过 Web 服务,套用任务列表页列出数据
  5. 实现通过 Web 服务新增任务,用户输入检查要求使用 JavaScript

开发计划里出现的一些专业的词,新手可能不是很熟悉。我的一个建议是,遇到没见过的概念,你不用去强行理解它,但最好能多看几遍,先给自己留个印象,等到后面专门聊到它们时,就不会有那么强烈的『陌生感』了。

接下来就开始认识我们的第一个朋友,HTML

人人都能看懂的全栈开发教程——明确需求和计划 by Chris Yue is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

微信赞赏码

写作累,服务器还越来越贵
求分担,祝愿好人一生平安
天使打赏人

发表评论

− 6 = 3