启动项目的最佳方法

24

当你开始一个个人编程项目时,你的第一步是什么?我试图启动一个目前只是一个想法的项目。我有很多这样的想法,我会立即开始编码,但过了一段时间后就完全失去了兴趣或者甚至忘记了这个项目。

当你开始时,你的第一步是什么?你是否规划项目?制作图表?在纸上写一些代码?你如何以一种确保成功的方式开始项目?

14个回答

16

对我有效的唯一方法:创建尽可能小但可用的实现,然后使用它。


11

来自高效能人士的七个习惯, 习惯2: 以终为始。

无论任何项目,你都需要一个明确的目标,一个可以说“我完成了”的点。明确的结果会给你方向。一旦你有了这个目标,你就可以开始计划如何实现它。项目的大小和复杂程度将决定你的计划需要多少详细信息,但通常你会想要经常感觉到你正在按照计划取得进展。

我的下一步是勾画出所需的模块和每个模块之间的API设计。如果API很清晰,那么模块可能就是正确的。然后我开始实施模块,并在进行测试时进行测试。


10

在我动手敲键盘之前,我会花很多时间思考项目的各个方面。

我会回顾我从以前的项目中学到的东西,并按不同的类别(“技术”,“推广”等)记录下来。

无论是个人项目还是其他项目,我都会设置源代码控制。Git,Mercurial或Bazaar是一些源代码控制工具的例子,它们不会产生干扰,因为您不需要设置主服务器。只需输入一个简单的命令来创建项目、检查文件并提交即可。将来,当您搞砸了其中一个文件时,您将能够“撤消”操作。

我还会建立一个轻量级的问题跟踪系统来跟踪1.问题和2.想法。所谓“轻量级”是指如果使用两个文本文档来维护这些列表对您有用,那就足够了。

希望这可以帮到您。


3
为项目设定目标。看起来你似乎只关注解决方案而不是问题本身,但如果一个程序不能解决问题,那么对你和其他人都没有任何用处。编写代码很好,但似乎你在开始后就失去了兴趣和重心,因为你只看到了代码,而不是问题。
请花时间考虑是什么导致你编写这段代码。思考其他人可能会如何发现相同的需求,他们可能会走上哪条路,才会遇到你一样的困境。
然后,找到其中的一些人并提供你的(部分)解决方案,在他们中间引起兴趣和建议。
这将使你的项目始终有动力。共同的兴趣、分享甚至争议,这些都是需要软件的人!不要创建解决方案(软件)来寻找问题(人)。虽然你的需求或愿望是从自己开始的,但要专注于问题,而不是代码,否则你就会失去推动项目的动力。
当你通过解决问题进行编程时,会感觉更有趣。但你需要时刻关注问题,并与他人分享,这才能建立社区。这才是真正的目的,不是吗?

3

我同意已经给出的建议:

  • 规划一个最小实现版本,作为第一个完整版本发布时能够使用的有用功能。
  • 确立具体目标,以便有东西可以与你的进展进行比较。

我还建议开始轻量级设计你的整体架构,这样你就可以有一个建立产品的路线图。

当我对如何进行首次分解至少有个清晰的想法时,我发现开始构建某些东西很困难。思考除了功能之外你需要什么:高性能?可扩展性方案?哪些方案?可用性目标?高可伸缩性?易于部署和安装?等等。问问自己:我需要构建哪些组件才能实现这些架构特性?

不要误会,我强烈支持敏捷软件开发。你不需要花费大量时间设计你的架构(因为它肯定会随着你的构建和反馈而演变),但是基于其架构拥有一个建立产品的蓝图应该有助于规划你的进展并设置现实目标。


2
在我的个人项目中,我会直接开始编写代码。当然,这些项目目前还没有足够大到需要任何形式的预先规划。如果这将是一个严肃的项目或相对较大的规模,最好至少明确每个程序部分需要做什么,并提供如何实现它们的高级视图。

2

和其他人一样,我的个人项目总是有以下要素:

  • 一个最终目标
  • 任务列表
  • 小型可用单元
  • 源代码控制

作为额外的激励因素,我尝试使用一种我从未使用过的技术。学习新技术通常成为我最大的动力。


2

简单来说,不要开始那些你可能会失去兴趣的项目。在开始工作之前花更多时间确保你想要致力于这个想法。


1

这取决于项目大小。

如果我在编写下一个记事本克隆版,我可能会直接开始编码;如果想自己开发操作系统,则需要更多的非编码工作。

我喜欢画很多图表,用于大部分开发的工具是干净的A4纸和铅笔。先画出用户界面、工作流程、基本类以及如何存储任何数据-然后编码只是将您已经绘制的内容以计算机可读的方式编写。

源代码控制例如SVN只需键入/点击几个按键,因此开销很低,收益很高,非常方便尝试一些东西,如果不起作用就恢复到早期状态。

然后只需创建最基本的原型即可正常运行-一旦有实际进展,添加更多功能就变得更容易了。如果任务太过压人,我会觉得问题已经在我的脑海中得到解决,这已经足够了。


0
以上所有内容,但开始着手实施计划......
使用一些工具 SmartSheet - 即使你是独自工作,也应该制定一些阶段和日期 yEd - 以及来自www.yworks.com的Graphity

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接