停止考虑扩展规模—针对开发疯狂的新启动创意的开发人员
你有这个好主意。 该产品将解决很多人的大问题,但是有一件事情会阻止您的到来! 重大技术问题的答案;
我应该用什么语言写?
我应该使用什么框架?
当意识到我的想法多么神奇时,我该如何构建它来支持将涌入的数百万用户?
我认识的大多数产品开发人员都喜欢为未来做计划,他们希望构建简单,整洁且合乎逻辑的产品,并且无论将来范围和需求的变化如何,都将保持这种状态。 他们的心在正确的地方,毕竟,一个小时的计划可以节省数月的错误方向,对吗? 好吧,不是真的。 不适用于尚不存在的产品。
我喜欢Art&Fear的这则轶事(感谢codinghorrors.com !)
陶艺老师在开幕日宣布,他将课堂分为两组。 他说,工作室左侧的所有人员仅根据他们制作的作品数量进行评分,右侧的所有人员仅根据其作品的质量进行评分。 他的程序很简单:在上课的最后一天,他将带上浴室磅秤并称量“数量”组的工作:五十磅的锅被评为“ A”,四十磅的锅被称为“ B”,依此类推。 但是,那些按“质量”评分的人只需生产一个锅(尽管是一个完美的锅)即可获得“ A”。
好吧,来了分级时间,一个奇怪的事实浮出水面:最高质量的作品都是由按数量分级的小组制作的。 看起来,虽然“数量”小组忙于进行大量工作,并从错误中吸取教训,但“质量”小组却对完美理论进行了理论探讨,最后,除了宏大的理论和一堆枯死的粘土。
这个故事的寓意是,如果您想要完美,那么数量总是胜过质量 。 如果要创建最佳软件,则必须先编写,然后再编写。 如果仍然不好,请再次编写! 所有软件都是如此,但对于需要根据其未来用户的需求进行成型的产品而言,情况尤其如此,他们在创业初期可能只是一群投机的陌生人。
有趣的是,当您为新创业公司编写软件时,更容易忘记此规则,因为您需要考虑的未知数更多—规模,基础架构成本,未来招聘,团队的技术能力,初始速度发展,变化的速度……而且由于要考虑的因素太多,因此人们开始尝试立即做出所有决策。
那么答案是什么呢? 对我来说就是这样
我应该使用哪种语言?
您最能胜任的职位。它是否快速,可扩展,是否易于雇用— 没关系 。 您需要解决的最重要的问题是您是否可以在现实世界中验证您的想法。 有市场吗?人们愿意为您的解决方案花钱吗?
我应该使用什么框架?
同样, 您最有能力的人 。 您在创造业务,而不是美丽的雪花。
我如何构建它以便可以扩展?
从头开始,最好忽略这一点。 如果发布后3个月内最大的问题是您需要重新架构产品以实现规模化,那么您所处的位置将比大多数情况更好。
如果这样做,则不会在产品设计,开发和测试生命周期的基础上增加不必要的学习周期。 建立新的软件业务不像为他人构建软件。 您需要弄清楚自己的作品,对谁以及为什么重要。
因此,不必担心如果您的产品是用Clojure编写的,会更凉爽,还是会在Rust中缩放更好,或者如果全部是JavaScript,会更容易被雇用。 开始,编写,测试和共享,这是前进的唯一途径。
想看看我在做什么吗? 看看 Paperform ,就像是中型编辑器+表单生成器=性感的登陆表单。