我开发web应用已经有一段时间了,使用敏捷开发技术和原则来实现软件是我们团队的标准实践。
最近,我还参与了机器学习和自然语言处理。我听说人们主要使用Matlab来开发ML和NLP算法。敏捷开发是否有一席之地,还是这种技能是完全多余的?
换句话说,当您将ML和NLP算法开发为一项工作时,您是否在过程中使用敏捷开发?
发布于 2011-12-29 01:56:48
机器学习和自然语言处理在某种程度上是由数据驱动的.如果没有持续提供高质量的数据(在添加新标准时必须重新捕获这些数据),软件开发可能无法达到预期的目标。
客户和产品所有者可能会将更多的时间用于测试数据收集。
适应措施将取决于:
将有两个反馈循环:
因此,我们认为“数据”取代“功能”是进度的主要定义。
由于“研究/尖峰”在ML/NLP开发中的重要性越来越大,因此有必要采取一种更有组织的方法来处理spike -这一点您可能已经从任何研究生研究团队中学到了。尖峰被视为“小任务”,从几个小时持续到几天。一个算法套件的实现将花费更长的时间,在某些情况下需要数周。由于任务大小的差异,尖峰和实现要分开排序。实现是昂贵的,如果可能的话,应该避免。这是使用固定算法/现有库的原因之一。
scrummaster需要不断提醒每个人:(1)记下每一个观察,包括“传递思想”和假设,并经常(每天)交换笔记。(2)花更多的时间在尖峰上(3)尽可能多地使用现有的库(4)不要担心执行时间--这可以在以后进行优化。
如果您确实决定实现库中缺少的东西,请以良好的质量完成它。
日常活动:
冲刺活动:
关于延迟优化的注意事项: ML/NLP中的思想代码比在商业软件中要高得多。因此,一旦有了工作思路,重写ML/NLP应用程序的算法就比重写业务软件容易。这意味着更容易消除体系结构中继承的低效率(也就是说,在最坏的情况下,只需进行一次重写)。
(欢迎所有编辑重新安排(重新排序)我的观点。)
https://softwareengineering.stackexchange.com/questions/127472
复制相似问题