这篇文章是关于我对项目管理的前 3 个阶段的看法。
你必须为你的具体情况找到最好的方法,如果你的客户似乎不太自信,也许你不应该花太多时间预先设计,也许需求会改变。
同时,您不能只是盲目地开始编码,因为朝错误的方向前进就像根本不动(除非您按小时付费)。
要求
How to manage programming projects when freelancing
-
是您与客户讨论网站、他们试图解决的问题、业务模型、想法、期望、您遇到的任何领域特定问题等的初始阶段。
-
任何人都应该理解 – 他们不应该包含任何特定于编程的术语
-
可以包括特定领域的术语——即物流、法律、医学。程序员应该询问任何特定领域的问题/假设。如果您不清楚自己在构建什么,它可能不会顺利进行。客户可能很了解领域的细节,但大多数时候他们对编程一无所知,因此他们可能会有不切实际的期望。如果客户看到您参与/对领域感兴趣,而不仅仅是编程部分,他们更有可能让您调整要求。
-
格式如下:
- 作为经过身份验证的用户,我可以将产品添加到我的购物车。
- 作为管理员,我可以更改用户的密码。
规格
-
是我工作流程中设计阶段的第一个肮脏的迭代——我得到了客户的要求,我可以开始考虑
实现选项映射的要求,根据我使用的工具/约束,考虑优缺点有。 -
是基于收集到的需求的以程序员为中心的笔记
-
包括程序员术语
-
包括一些将来要考虑的事情,在设计阶段,
注意事项,写下问题,思考你的
限制,即:- 应用程序的数据模型过于复杂,并且可能会发生变化——不会使用像 Dynamodb 这样不灵活的数据库——应该改用 Postgres。
- 这是一个面向消费者的应用程序,其中 SEO 非常重要,应该为面向消费者的路由使用静态/服务器渲染页面
- 技术
X
将使实现需求更容易,A
因为原因1
,,。2
3
- 技术
Y
不适合实现需求,B
因为原因1
,,。2
3
-
是与客户讨论更改他们的一些要求的完美阶段,如果您发现他们希望事情实施的方式存在缺陷。
设计阶段是什么时候
- we spend time thinking about architecture, models, software
framework options. - we think about the solutions for the problems we have written down in the
specifications phase, and any that may appear in this phase - we think about what our entities are and our models, do we have enough of the
access patterns to go with no-sql, if not – go with sql - we break down larger problems into smaller ones, spend some time to try
and foresee issues - we write down any questions that might come up for the client
- we identify potential solutions for the problems
- we design the database
End #
This is my personal opinionated approach to the introductory phases of
project management, in general I don’t want to spend too much time planning in
advance, because most of the time the requirements change. However I don’t want
to jump straight into coding either, because some decisions are very hard to
undo as the project progresses – like changing database management system,
authentication strategy, etc.
This approach is good for when you go back to a project you haven’t worked on
for a while – you can get up to speed quickly and don’t have to read lots of
documentation that might be outdated. The requirements in the form of intent are
most often enough, for example:
- 作为用户我可以做
X
,,Y
Z
- 作为管理员,我可以做
A
,,B
C
- 我做了决定,
X
因为一些原因1
,,2
3