软件工艺典范之作:Jupyter notebooks的隐藏力量


全文共1486字 , 预计学习时长5分钟
软件工艺典范之作:Jupyter notebooks的隐藏力量
本文插图
图源:unsplash
我们不得不承认 , Jupyternotebook确实是一款非常棒的工具 , 它不仅加入了探索性数据分析功能 , 也开辟了整个软件工艺界的典范 。
现代软件行业非常了解如何保持代码基础整洁 。 为了进行结构化 , 代码基础将首先被分为多个域 , 然后是服务或库 , 接着它们被分为不同的程序包 , 最后被分成类或函数 。
每一个过程中都会有用于拆分、设计应用程序接口(API)和通信的多种模式 , 有集成新代码的进程和支持该进程的工具 , 有多种测试方法(和工具) , 还有用于发现不良设计的代码审查实践和工具 。
在代码投入生产之前 , 经验丰富的软件工程师会应用以上全部最佳实践 , 因为忽视不良设计的风险确实存在——你可能会为了在系统中添加一些小功能而花费数周时间 , 而且修复bug的过程也会是一场噩梦 。
问题是 , 不是所有的代码都值得投入生产 。 对企业来说 , 没有直接或间接附加价值的代码最好不要生产 。 在生产过程中 , 无用的功能会产生两个不好的影响:
· 为了遵循上述所有的最佳实践 , 生产过程会非常昂贵 , 所以你就不能再实现其他功能了 。
· 它增加了系统的复杂性 , 相当于增加了用于系统维护的运营成本 , 也使得进一步的改变难以实施 。
有时候 , 检验创意是否符合客户需求的唯一方法就是实施几个计算机程序设计(MVP) 。 但更加简单的办法是通过研究进行假设 , 这也是Jupyter notebooks发挥作用的地方 。
数据科学家的首要目标若是改进某一特定产品 , 那么假设将成为其工作的主要内容 。 这是满足特定需求(通常是客户需求)的一种可行的方法 。
假设可以分成更小的部分 , 比如研究、数据传递、分析和模型构建 。 最重要的一点是 , 假设有可能成功 , 也有可能失败 。 失败的原因可能是该假设完全没有需求 , 或者它并没有真正覆盖需求 , 也可能是没有足够的数据来构建模型 , 或者客户不愿支付所需的价格 , 又或者因为其他的一些原因 。
因此 , 你需要一种方法 , 既能让你以低廉的价格去测试假设并很快得到反馈 , 又能迭代多个假设 , 直到你找到一个可行的解决方案 , 或宣布该问题无法解决 。
软件工艺典范之作:Jupyter notebooks的隐藏力量
本文插图
图源:unsplash
假设你是一名保险推销员 , 想向客户推销更多的旅游保险 , 你会如何寻找合适的群体呢?是依据人口统计学资料(年龄/性别/家庭状况/就业状况)还是他们拥有的其他产品?还是基于他们的财务交易?或是基于他们的GPS数据(假设客户拥有你的应用并共享该数据)?你会提出一定的折扣还是按正常价格出售?这些都是有待检验 。
使用Jupyternotebook , 可以对每个假设执行如下操作:
· 对客户的数据进行探索性分析
· 随机导出部分受众 , 以便将其传递给市场部进行活动
· 在该活动开始运行后 , 追踪活动的数据并撰写报告
· 建立一个基于规则或使用机器学习的简单模型 , 以此将客户基础限制为你的目标受众
不要围绕模型构建服务 , 不要将其集成到CI/CD管道中 , 不要在客户关系管理(CRM)中实施新的流程 , 也不要在此时向移动应用程序添加旅行保险小部件!
软件工艺典范之作:Jupyter notebooks的隐藏力量
本文插图
【软件工艺典范之作:Jupyter notebooks的隐藏力量】图源:datacamp
实现单一假设所做的所有工作都应限制在1周左右 , 而且反馈周期也不应太长 。 你也要做好接收到差评的心理准备 。 将这些反馈记录下来 , 然后进入下一个假设——毕竟扔掉一个笔记本比扔掉一个完全构建和集成的解决方案要容易得多 。