如何启动一个项目

简介

在这里,我们将学习如何启动任意一个项目。大多数时候,我们只是学习这些东西。 但我们从不关注如何开始做这些事情。在我生命之中我见过很多学生,以及我自己也浪费了很多时间,因为我不知道如何开始一个项目。大多数人在职业生涯中学习了这种技能。

不同的软件产业

我们有两种软件行业。

在基于产品的行业中,大多数时候,我们如何编写代码并不重要。他们只想完成任务。在基于产品的场景中,软件公司不关心代码的重构。他们只关注如何赚钱。这是真的,如果你想赚钱,你可以选择基于产品的方法。但请记住,他们对学习和实施新技术不感兴趣。他们知道,这项工作是用他们已掌握的常规技术完成的,所以他们对学习新事物不感兴趣。他们甚至不关心软件开发的设计模式和架构模式。

但是在基于项目的场景中,您将学习新的东西。尽管你会赚的钱比基于产品的软件研发少,但你最好还是以项目为基础。您将在这里使用新的工具和技术,将看到新的和最新的方法。但也会让你变成一个夜猫子。因为在基于项目的公司里,员工在白天晚上都是完全随时可召唤的。

如果你问面试官你的公司是基于产品还是基于项目的,那么面试官也会给你留下好印象。

项目规划的步骤

现在回到主题,我们正在讨论如何开始我们的项目。其实需求收集是非常重要的。如果对开发人员和客户来说需求是明确的话,那么你项目的50%已完成了。大多数时候你仅看到软件公司是从文档开始。他们应该清晰看到相关概念。无论如何,让我们讨论一下我发现很多有用的,并节省了大量的时间和精力的周期。

思维导图

思维导图是一种技术,我们使用主线来完整描述我们的项目。大多数情况下,客户端只是认为他需要特性A,特性B,特性C,开发人员的多数情况下也是一样的,这样会使我们忘记了些重要的事情。

所以我们要做的是,把事物形象化,使事物更容易理解。仅仅是关于需求的口头交流是不够的,我们需要清楚地理解和记录这些东西。

有许多数据格式可以增加文档的可理解性。所以用思维导图来得到客户的确认,而不是从头到尾地读取文本文件。通过这种方式,客户还可以了解他购买的是什么,以及他们将为他开发什么。

市面上有不少思维导图工具,不过我只推荐其中两个。

Mind Meister 和 XMind

无论使用什么工具,思维导图的概念都是一样的,所以你只需要了解思维导图是什么以及如何应用。

你可以在这里这里了解到思维导图。

思维导图完成之后,你就可以轻松的跟客户讨论系统中到底有多少模块,它们如何工具,哪些是基础,以及你需要花多少时间来完成这个项目。对你来说,这时候大部分事情都已经清楚了。

在不同的场景和不同的要求下,思维导图及其制作技巧会有所不同,但中心思想不会改变。

从我做的这个思维导图,你可以建立对思维导图的印象。

建立原型

现在是时候定义项目流程了。你想做的事情都已经清楚了,但你还不知道如何来对这个项目进行布局。

如果你想做一个婚介应用,以此为例,我建议你至少搜索5个不同区域的婚介应用,首先列出它们的优点和缺点。然后你会产生一些想法,知道该做什么,同时该避免什么,这些想法会让你的系统对用户有的更强的吸引力。这里我们使用这个叫Balasmiq的原型工具。

你不用编写代码,只需要拖动各种组件就可以搞清楚应该如何在屏幕上布局。你可以设计移动端的原型,也可以设计桌面应用或者网页原型。

选择主题 (对web开发者)

现在你已经清楚了在mockup中有哪些重要的事情。你可以轻松地选择你的Web项目的主题。如果主题不适合你的mockup,那么它可能接近你的balsamiq mockup,之后你需要根据自己的要求手动定制主题。你可以在themeforest中看到数千个与你的需求相关的主题。

业务需求文档(BRD)

如果你编写你项目中的BRD,那么你可以很简单的创建数据库,但是这不那么重要。如果你直接从第三步跳到第五步,也没有问题。但是BRD仍然是重要的。

这种做法有助于团队了解我们可以如何开发这个界面。如何开发数据库,我们实际需要哪些字段。

表映射也是BRD的一部分,在这里面我们需要提到所有的表名和列,而不是向任何项目中的开发者发放资格证让数据库更糟糕。BRD的目的是不管什么时候我们将文档交给别人,那他就可以独立开发应用而不需要问任何问题。文档中所有的细节都已经提及了。例如,这是一个界面

数据库

设计或者开发数据库对任何一个新人都会很难。由于标准化,存储过程等等。我们只有在理论上了解他们,我们甚至不知道如何用这些东西,我们将这些方法用到哪里。那么这些概念和这些东西让我们意识到我们无法开发数据库,一个新人大多都会遇到这些情况。在我的人生中我就面对过这种情况。

因此不必烦恼。经验法则就是添加你在原型中或主题中看到的这些字段(让我澄清一件事情,可能你对这个市场没有任何经验。大多时候开发者购买主题或者破解主题来让他快速工作,然后他将主题集成到项目中,然后只注重于它的功能方面和数据库方面)。所以我之前说,始终添加你在原型中看到的字段。让我们假设

这就是界面,现在不用想其他事情,只需要看,然后确定你在这看到了什么。

这就是我们看到的。

这些就是你房子实体的字段。现在我点击房子然后下面的界面显示出来。这个详情有点大,我只给你看相关的东西。

现在你可以看到我们还需要其他字段。将这些字段添加到房子实体。

从模板中我们想到怎么才能将地址分割到多个字段。这不只是一个位置字段,而是国家,地址等之类的。
如果界面上的东西都是静态的,那么我们只将他们写死到项目界面上。但是如果是动态的,那么肯定就是从数据库读取的,然后为动态内容创建数据库表。如果我总结论述,简单来说,就是问你自己下面的问题。

看,创建一个数据库多简单。在实践场景中,有时候分配给你任务让你创建实体关系图(ERD),他们只告诉你项目名称,比如创建部门存储系统的ERD,说实话这是一个很糟糕的方法。当你开发或者设计数据库时,不要假设任何事情。
如果你对如何创建ERD,ERD到底是什么还不了解,这有一个非常棒的链接

开发

现在是时候打开 IDE 来进行开发了。在开发之前你可以使用 Microsoft Project 来制定项目计划,预估每个任务或每个模板所需要的时间。你会了解每个任务所需要花费的时间。一定要尝试为每个任务添加缓冲时间。假如你需要4个小时来完成任务,但可能会遇到BUG,也可能会在开发过程中受阻。所以如果在项目中添加了缓存时间,你就会更容易按计划进行,否则项目进度可能会让你头痛不已。

不要忘记在项目中计划分析、设计和测试和时间。

你可能已经进入或者即将进入职业生涯,给你一个建议,永远记住,不要为了钱所所有时间都花在项目上。每天都要花点时间来学习新东西,至少把两个小时用在自己身上。别太担心,否则对自己发展不利。如果你能把自己安排好,大把的机会就出现在眼前。多数开发人员都只关心开发,他们还应该了解如何测试程序,如何使用单元测试,如何实现不同的设计模式等等。


如果你以不包含缓冲时间的错误方式制定项目计划,那么你会看到施加给你的压力山大。而且你永远不会学习如何编写简洁代码。

另一个重要的事情是,如果你可以使你的代码更简洁并且使其逻辑比以前更好,那么你现在就应该做。因为如果你认为未来我会把它弄整洁,那么有70-80%的可能性是你不会有这种机会。 现在你所拥有的时间再也不会来了。你可以做出决定了。

最后的话

所以我最后的话题是如果你正在开始你的职业生涯,那么你应该尝试在基于项目的公司中调整自己,这是我的观点。它可能与你的有所不同,因此请进行调整。你应该从思维导图开始,在那里定义你的项目模块和子任务,以便让客户清楚,并让他们对正在处于正确路径的事情上感到满意。然后制作mockup来定义项目的流程,并了解事情将如何运作,导航是如何从一个屏幕跳转到另一个屏幕的。你会有所了解。然后根据你的mockup或与之相似的主题。然后使用BRD梳理出数据库端的内容,如数据库表及其与屏幕相关的字段。然后根据你的BRD生成数据库,然后开始开发。

你可能会认为这些步骤非常耗时,但请记住,这些步骤可以消除项目中的许多冗余和争议,并使你和你的客户明晰整个过程。

许可

本文以及任何相关的源代码和文件均看使用源码项目开放许可证(CPOL)获得许可。

关于作者

Muhammad Usama Khan

全栈 .Net开发人员| 疯狂的技术学习者| 喜爱微软的技术| 好儿子| 兄弟| 学生|博客作者