MVP(最小可行产品)和迭代开发最终产品
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
这篇文章最初发布在我的博客上。
我一直难以完成我计划中的项目,也难以将它们上传到我的 GitHub 仓库。这源于我极度追求完美,不惜一切代价。这种倾向不仅会损害我的心理健康和工作效率,还会影响我未来的雇主。
我开始感到自己所创建的项目规模庞大,令我感到窒息和不知所措……直到最近才有所缓解。
Dan Abramov 在 JSConf 2018 大会上
Dan Abramov 的演讲让我对 React 和 JavaScript 有了全新的认识。它帮助我卸下了之前为了打造完美应用/工具而背负的重担。
Dan Abramov 在推特上
最近,丹在推特上发了一条消息,促使我放弃了应用程序中所有额外的功能,并提出了一个更小的概念来发布,称为MVP(最小可行产品)。
那么,什么是MVP?
MVP 代表最小可行产品(Minimum Viable Product)。这是一款功能较少的应用程序,发布后即可供用户使用。
MVP(最小可行产品)能帮助新开发者用有意义的项目丰富他们的作品集,从而使他们在众多新开发者中脱颖而出。前提是代码简洁、结构良好且项目功能齐全。
你可以不断迭代最小可行产品(MVP),而不是试图完善一个项目:没有软件项目是完美的。不如直接发布。
真正的艺术家会交付作品。——史蒂夫·乔布斯
选择一个最小可行产品(MVP)并将其开源。
开源并非软件工程师狂热追捧的某种潮流,而是当今软件开发的生命线。
使用GitHub、GitLab或Bitbucket等开源平台¹可以向潜在雇主展示你正在做的事情。它还能展示你完成工作的水平,以及你的成长和学习过程²。
开源,但不要盲目追逐明星
很多时候,包括我自己在内的新开发者都希望在 GitHub 上大获成功,让一个项目获得成千上万的 star,并登上热门仓库列表。
住手!这绝对是个陷阱。
在 GitHub 上拥有一个热门代码库非常罕见;GitHub 拥有超过 3.5 亿用户,代码库的数量更是惊人。至少在初期,你的成功几率并不高。
对于初学者来说,最好的做法就是先涉足开源领域,积累技能。一旦你熟悉了开源,就可以着手开发更有意义的项目。如果开发者社区觉得它有趣,那么它就会大放异彩。
在公共场所学习
Shawn Wang是Netlify一位颇受欢迎的React开发者。他发推文说“在公开场合学习”,这句话概括了我所说的“你应该开源你的MVP”的含义:
在公开场合学习和失败是让你的作品被注意到的重要环节。你迭代和分享得越多,潜在雇主就越能看到你。这就是为什么把作品展示出来如此重要的原因。
体验完美主义
我希望我目前的应用 Check Yo Self 能成为一个美观且功能齐全的环境,用来检查你的 Markdown 博客文章。它经历了多次迭代,但我始终无法完成开发。每一个我想添加的、旨在使其臻于完美的新功能都让我感到不知所措,甚至可以说是束手无策。
我开发这款应用已经一年半了,快两年了。考虑到它简单的功能,它本该已经完成了。但不断扩大的应用范围,以及总觉得它必须比同类应用更好看的想法,让我束手无策。我根本无法继续开发,这严重影响了我的工作效率,导致我停工了好几个月。
看完丹的演讲和推文后,我决定先开发几个功能。开发完成后,我就可以进行迭代改进了。
我们走吧。
我还在开发一个命令行工具。我已经为此工作了8个月,耗时这么久的原因也一样。
我去掉了所有多余的选项,并且在过去几天里一直在做这件事。
考虑到市面上已经有很多小型的 npm 工具,我可以自己做一个包含几个实用小功能的工具。就这么简单。
这让我过去一年来承受的压力大大减轻。现在我知道我可以发布项目,而不用担心GitHub个人资料里堆满废弃的 代码库。
结论
即使市面上已有类似的工具,你几乎可以构建任何你想要的东西。你拥有独特的视角,可以将这种视角融入到别人已经完成的项目中。你会用不同的方式去构建它。
在GitHub上注册账号,创建一个仓库,编写一些文档,然后分享到 Twitter、LinkedIn、Hacker News 等平台。
这样一来,你就可以把一些值得骄傲的经历添加到你的作品集和简历中。以后你还可以在此基础上继续发展。
-
我会选择 GitHub 而不是其他平台。它目前是事实上的标准。大多数寻找开源贡献者的雇主都会在 GitHub 上进行搜索 。
-
关于是否应该将 GitHub 账号作为软件工程师职位的必备条件,一直存在很多争议。如果你朝九晚五,有家庭和其他责任要承担,那么开源业余项目或任何其他类型的业余项目对你来说都难以实现。为开源项目做贡献也会很困难。但无论如何,这都是新开发者应该了解的事情 。
