当你开始一个个人编程项目时,你的第一步是什么?我试图启动一个目前只是一个想法的项目。我有很多这样的想法,我会立即开始编码,但过了一段时间后就完全失去了兴趣或者甚至忘记了这个项目。
当你开始时,你的第一步是什么?你是否规划项目?制作图表?在纸上写一些代码?你如何以一种确保成功的方式开始项目?
当你开始一个个人编程项目时,你的第一步是什么?我试图启动一个目前只是一个想法的项目。我有很多这样的想法,我会立即开始编码,但过了一段时间后就完全失去了兴趣或者甚至忘记了这个项目。
当你开始时,你的第一步是什么?你是否规划项目?制作图表?在纸上写一些代码?你如何以一种确保成功的方式开始项目?
对我有效的唯一方法:创建尽可能小但可用的实现,然后使用它。
来自高效能人士的七个习惯, 习惯2: 以终为始。
无论任何项目,你都需要一个明确的目标,一个可以说“我完成了”的点。明确的结果会给你方向。一旦你有了这个目标,你就可以开始计划如何实现它。项目的大小和复杂程度将决定你的计划需要多少详细信息,但通常你会想要经常感觉到你正在按照计划取得进展。
我的下一步是勾画出所需的模块和每个模块之间的API设计。如果API很清晰,那么模块可能就是正确的。然后我开始实施模块,并在进行测试时进行测试。
在我动手敲键盘之前,我会花很多时间思考项目的各个方面。
我会回顾我从以前的项目中学到的东西,并按不同的类别(“技术”,“推广”等)记录下来。
无论是个人项目还是其他项目,我都会设置源代码控制。Git,Mercurial或Bazaar是一些源代码控制工具的例子,它们不会产生干扰,因为您不需要设置主服务器。只需输入一个简单的命令来创建项目、检查文件并提交即可。将来,当您搞砸了其中一个文件时,您将能够“撤消”操作。
我还会建立一个轻量级的问题跟踪系统来跟踪1.问题和2.想法。所谓“轻量级”是指如果使用两个文本文档来维护这些列表对您有用,那就足够了。
希望这可以帮到您。
我同意已经给出的建议:
我还建议开始轻量级设计你的整体架构,这样你就可以有一个建立产品的路线图。
当我对如何进行首次分解至少有个清晰的想法时,我发现开始构建某些东西很困难。思考除了功能之外你需要什么:高性能?可扩展性方案?哪些方案?可用性目标?高可伸缩性?易于部署和安装?等等。问问自己:我需要构建哪些组件才能实现这些架构特性?
不要误会,我强烈支持敏捷软件开发。你不需要花费大量时间设计你的架构(因为它肯定会随着你的构建和反馈而演变),但是基于其架构拥有一个建立产品的蓝图应该有助于规划你的进展并设置现实目标。
和其他人一样,我的个人项目总是有以下要素:
作为额外的激励因素,我尝试使用一种我从未使用过的技术。学习新技术通常成为我最大的动力。
简单来说,不要开始那些你可能会失去兴趣的项目。在开始工作之前花更多时间确保你想要致力于这个想法。
这取决于项目大小。
如果我在编写下一个记事本克隆版,我可能会直接开始编码;如果想自己开发操作系统,则需要更多的非编码工作。
我喜欢画很多图表,用于大部分开发的工具是干净的A4纸和铅笔。先画出用户界面、工作流程、基本类以及如何存储任何数据-然后编码只是将您已经绘制的内容以计算机可读的方式编写。
源代码控制例如SVN只需键入/点击几个按键,因此开销很低,收益很高,非常方便尝试一些东西,如果不起作用就恢复到早期状态。
然后只需创建最基本的原型即可正常运行-一旦有实际进展,添加更多功能就变得更容易了。如果任务太过压人,我会觉得问题已经在我的脑海中得到解决,这已经足够了。