编程创业需要什么(编程创业能做什么)


时间飞逝!以下是作为独立开发者经营一家科技公司近一年后的一些想法、提示和错误。


作为独立开发者一年后的最终产品

我在建造什么?❓

我有一个想法,我想为健身房和运动员构建一个 Crossfit 训练应用程序。我将它命名为Dreamwod ,并在App Store和Google Play上推出了它。我一直在构建的东西是两个应用程序,一个用于 iOS,一个用于 Android,一个后端 API 和一个公司网页。

本文将讨论技术堆栈、工作方式、我学到了什么以及我犯了哪些错误。

决定技术栈

我对技术堆栈的要求如下。

后端和操作

快速的开发和迭代时间。易于在本地运行。易于扩展后端/能够处理高负载。易于部署。尽可能简单。

应用程序开发

易于学习(我没有任何 iOS 应用程序开发经验)。堆栈后端 - Golang

后端选择的语言是 golang。我想要一些易于学习、快速编译、具有良好性能并且在生产中占用内存和 CPU 占用率低的东西。

应用程序 — Flutter ☎️

我对 iOS 或 Android 没有太多经验,我想要两个平台的应用程序,所以决定很容易,试试 Flutter 看看它是否有效。

数据库——PostgreSQL

选择数据库时,我有几个可用的选项。我做出决定的假设是,

数据将在用户之间共享,即应用程序中的数据不仅由上传它的用户查看和编辑。我会有一些连接和互连的表。我假设我想要支持全文搜索并且不想在 ElasticSearch 或类似的东西上花费时间和精力。

决定使用 Postgres。它通过pg_trgm扩展获得了开箱即用的全文搜索支持。它还对带有postgis扩展的 PostGIS 提供了良好的支持,因此可以轻松计算从用户到健身房的坐标和距离。

云 — GCP ☁️

我查看了两种托管选项:Google Cloud Platform (GCP) 和 AWS。我选择 GCP 是因为我可以在 Cloud Run 上运行后端 API,并且只需支付处理时间,在开发和测试期间基本上为零。

我一直在使用的其他一些有用的工具,

用于构建容器的Cloud Build 。由于我是唯一的开发人员并且没有构建那么多容器,所以我很容易在他们每天 120 分钟的空闲时间内。

云存储用于用户上传的内容。

Pub/sub用于异步处理,请参阅文章了解我如何使用可以在本地开发以及轻松将其部署到 GCP 的方法。

现在每月的账单大约是 30 美元,其中最大的两个服务负载均衡器是 CDN 18 美元和 Postgres 10 美元。当我获得更多用户并需要使用更大的数据库实例时,这笔费用当然会增加,但对于相当多的用户来说,成本应该仍然相当低。

电子邮件 — Mailgun

那里有很多选择,因为我过去使用过它们,所以我选择了 Mailgun。

付款 - 条纹

我正在应用程序中添加对订阅的支持,使用 Stripe 是一个不错的决定,因为他们有一个订阅门户供用户取消和更改订阅。

公司网页 — Webflow

我选择 webflow 作为公司网页的框架/工具。我一直在寻找一些简单的东西,我可以设置然后忘记。网页可在www.dreamwod.app获得。

工作方式没有测试

这种说法并不常见,也许稍后会证明这是一个错误,但这里是我没有在后端项目中添加超过 5-10 个测试的主要原因。

作为单独的开发人员(后端、前端、QA),我将在实现前端时测试后端代码。添加测试需要很多时间。在构建这个应用程序时,需要进行大量的试验和尝试想法,并为我不会使用的东西添加测试会减慢开发速度。我测试的东西主要是与正则表达式相关的解析,因此与直接测试 API 相比,编写测试更快。单体而不是微服务

使用一项服务而不是微服务策略总是有点争议,但我只有一个后端 API/服务的原因是这样的。

我不想花时间定义合同/API 和解决多服务方法带来的与托管相关的问题。在开始一个新项目时,很难知道在哪里将单个服务拆分为不同的服务。我敢打赌,如果/当需要时,以后这样做会更容易。我的系统没有太多负载,因此我没有任何性能瓶颈问题或后端需要优化的特殊流程。

话虽如此,将代码划分为不同的区域/域并且在代码库中没有“意大利面条代码”当然仍然很好。

我学到了什么?“最后 20% 需要 80% 的时间”,这是一句名言,但对我来说确实如此。最后的事情比预期花费的时间要长得多。独自工作意味着我没有任何严格的截止日期,但很难集中精力。我了解到,对我来说,如果我在编码、培训等方面拥有尽可能多的例程,就像在正常的朝九晚五的工作中一样,那效果最好。典型的一天是午餐前的一次编码会议,一个较长的午休时间和健身房课程,然后是下午的编码会议。在 Tech Stack 中我会做些什么不同的事情?

总的来说,我对技术堆栈非常满意,而且我不会改变很多事情。但我会做不同的一些事情是:

我会调查 GraphQL API 是否会比 REST API 更好。我有点担心在全球范围内扩展解决方案可能会很棘手(让我们看看是否需要它)。数据库和服务现在托管在比利时的数据中心,如果有人从美国或巴西使用它,就会有很高的延迟。从产品的角度来看,我会做些什么不同的事情?

有时,采用“快速简单”的解决方案而不是“正确的解决方案”会更好。

一个例子是,当我开始使用 Cloud Run 时,它还是个新事物,它们不支持从 GCP Secrets Manager 中检索机密等某些功能。我花了一些时间来实现一些相关的东西,如果我只是做一些快速简单的 hack,然后等待 Google Cloud 的适当支持会更好。结论

回顾事情并思考那些没有按计划进行的事情总是很容易,但是思考实际上效果很好的事情同样重要,这就是我写这篇文章的原因之一简短的文章——反思那些行之有效的事情。

如果您正在考虑以独立开发者的身份创办一家公司,请停止思考并去做!其乐无穷!