Closed. This question is
opinion-based。它当前不接受答案。
想要改善这个问题吗?更新问题,以便
editing this post用事实和引用来回答。
3年前关闭。
Improve this question
更新:
到目前为止,大家都很好的答案!每个人对找到问题的根源并确保我和我的伴侣都在同一页上确实很有帮助。我认为很多原因是我们没有谈论发布时间表和一般工作流程的实际意图。
在执行此操作时,我遇到了一些我从未想过要解决的相关问题,以后可能会发表更多帖子(可能在
programmers-stack-exchange中结束)
幕后故事:
我正在与我的一个大学 friend 一起开发网络应用程序。
我们正在使用MySQL和PHP开发我们的网站,并计划在前端使用一些jQuery。我们的目标是手机和平板电脑。最终它将涉及大量众包数据。我宁愿不多说一些具体的项目构想。 (如果您认为我应该提供更多具体信息,请对此发表评论。)
我们有一个原型(prototype),并且有一些GUI模型。我们的想法既痒又痒,而且似乎是从未尝试过的东西。
我们的问题:
我们希望遵循37signals的“REWORK”一书中的原则。这本书的很大一部分是提早推出产品的想法。它讨论了为什么我们应该专注于产品的核心,为什么我们应该忽略所有多余的东西。
基本上是尽可能减少可售产品的想法,这样我们就可以发货并开始获得反馈。对于这意味着什么,我们都有不同的看法,这正朝着不同的方向发展。
我认为这本书只是在谈论最小的功能,但他认为这也与代码设计有关。 我认为现在有些事情值得加快,但他希望我们尽快着急,完全跳过那些问题。
我想做一些准备工作,因为这样可以节省很多时间。像从OO开始一样,设计一个彻底的数据库架构,并花时间设置诸如
xCSS之类的东西,并将我们的问题分解为各个步骤。
[我对他的理解方式:]他想着急,即使这意味着编写可怕/草率的代码,只要它能使设计脱颖而出即可。他不想浪费时间在基本代码基础结构上,也不想像我们沿用DRY原理那样进行重构。他不想花时间去决定需要做什么,他只是想去做。他认为,例如,对svn进行小的更改只是开销。
我知道他不希望我们被浪费在浪费时间来制作一个完美的系统上,但是我认为这太过分了,这不是37signals所倡导的。
本质上是乌龟与野兔的问题,我不知道该如何向他解释,如果他至少不做一些简单的时间来节省代码设计选择,并且会解决问题,他将被枪shooting并以小的离散块进行处理。
否则他是一个很好的开发人员,并且有能力做得很好。
我的问题:
多少准备太多,多少准备太少? 在项目开始时,我们应该关注哪些高 yield 的东西? 在开发的这个阶段,我们应该如何判断在代码方面(而不是功能方面)值得做什么? 是否值得花时间实现xCSS和其他系统等事情,这些事情将使从一开始就更容易编写干净的代码? 您将如何向他解释细粒度任务和进行小的原子更改的值(value)。 您对代码执行了哪些操作
导致更快的出货时间? 最佳答案:
我会接受最能改变他/我主意的答案。随意回答我列出的任何问题,并以我们的目标语言提供示例奖励积分。引用其他37signals的工作可能会有所帮助。
How much prep is too much, how little is too little?
取决于经验和项目的复杂性/规模。使用敏捷方法,您应该
规划最简单的应用程序,使您的客户(或用户)获得一些值(value)
和适合较短的发布周期(1-3周)。您已经有一个原型(prototype)和模拟
ups,因此您的用例和需求会很清楚。但是你还是应该计划
您的应用子集,将在规定的期限内完成。
如果您计划很大,那么您将面临一些棘手的问题,这些问题可能会使您的速度慢下来。
那是因为您尝试针对该问题设计软件。但是经常
如果您确实需要解决该问题,则将找到一个更简单的解决方案
将因为某些要求已更改或简化而消失。想象你写
博客应用。显然,您需要一个“所见即所得”的小部件。预先花时间去
评估现有解决方案,甚至自己写一个。最后,事实证明
大多数用户喜欢使用纯文本或要求简化的标记。
您已经花了3天到几周的时间,却一无所获。从最基础和简单开始
您会知道人们何时需要更多花哨的东西。
What high-payoff things should we be focusing on at the start of our project?
不确定这个问题。如果您谈论数据库和OO设计,那么它
并不是很高的返回。通常,将一个简单的数据库模式放在一起
分钟并随时间而变化(包括重构,规范化)。同样适用于您的架构。
这又取决于您的经验,如果您对数据标准化不太了解
或如何应用MVC(即使是非常低的水平),也应该教育自己
小的。
How should we judge what is worth working on, code wise (not features), at this stage of development?
把事情简单化。学习完整的堆栈框架(例如Symfony或Cake)可能会节省
很多时间,但是它们都有不错的学习曲线,您会遇到一些问题
并非微不足道(至少在缩放/性能方面)。体面的抽象代码库并非总是如此
既不需要又没有用,对我来说只要可以测试就足够了。小型爱好项目或
实验性的东西,我拥抱php的简单性。
Is it worth spending the time implementing things like xCSS and other systems that would make it easier to write clean code from the start?
不要误会我的意思,学习新东西总是一件好事。但是干净的代码
从您的思维,处理和抽象问题的方式开始。 xCSS只是
一个会花费时间学习并会引入其他问题的玩具。还请记住
如果您要委派设计任务,则需要找到可以使用它的人。
多年来,我对此类工具和库越来越保守。
通常,您会遇到一些局限性或问题,并且必须实现丑陋的操作
解决方法,否则您必须挖掘和理解整个源。如果给你
一些巨大的值(value),也许值得,但是正如我所说的,xCSS是一个玩具。
How would you explain to him the value of fine-grain tasks and committing small atomic changes.
也许这是你们中的一个或两个人的误解。细颗粒并不意味着
您应该分别提交每个getter/setter或任何新方法。通常这是合乎逻辑的
连贯的提交(应该起作用)。
例子:
错误#2134已修复:管理员密码为空通过测试添加了基本的Book模型
向Book模型添加了逻辑,所有测试均通过添加了另一本书测试将代码库迁移到Book 删除了旧版funcs_book.php文件重构了前端 Controller ,以支持作为 Controller 的功能
提交和注释应该使查找错误或何时引入特定错误变得容易。
代码库已更改。一个好的规则是使用一个衬里作为注释,这对
分析SCM日志。具有大型且不连贯的提交,带有冗长甚至匿名的评论
实际上,您实际上不得不看一下变更集。
此外,还可以将特定更改导出为易于应用到其他补丁程序的补丁程序。
分支甚至存储库。
What things have you done with your code that have lead to a sooner ship time?
不要害怕遗留遗留的或不可读的代码(使用SCM)仅将供应商库用于困难或复杂的任务
定期重构不要让它看起来花哨,让它变得简单拥抱您的语言。有时函数>类
I think the book is only talking about minimal features, but he feels it is about code design too.
整体考虑。具有简洁功能的简单GUI很好用,因为它可以访问
并易于理解。很容易理解三行代码中的for循环,但是
涉及数十个间接引用的抽象对象树很难。许多开发人员不会接受,但是
真的很难。
预先计划好代码设计已经死了。重构和单元测试应该插入
您的设计在不断发展的应用程序中。但是,手头有纸和笔可以进行头脑 Storm
几分钟的解决方案始终是健康的。