免费创办网站_足够好的工程来创办一家互联网公司

免费创办网站

I gave a guest lecture in an undergraduate software engineering class (CSCE431) at Texas A&M University in March 2019. Now I’ve turned this lecture into a blog post here, and hopefully some people on the Internet will find this useful.

我于2019年3月在得克萨斯州农工大学的软件工程本科班( CSCE431 )上做了客座演讲。现在我已将此演讲变成了博客文章,希望互联网上的某些人会觉得有用。

If you arrived from a Google search, here are some contexts:

如果您来自Google搜索,请参考以下内容:

I’m running a small Internet company — Listen Notes, Inc. — with only one full-time employee (me), as of August 2, 2019. We built a podcast search engine website ListenNotes.com and a podcast API.

截至2019年8月2日,我正在经营一家小型Internet公司-Listen Notes,Inc.,只有一名全职员工(me)。我们构建了一个播客搜索引擎网站ListenNotes.com和一个podcast API



I’ll share with you my experience about starting an internet company. Building an internet product is not like building an iPhone or a pyramid. Your product doesn’t need to be perfect at the beginning. If you are building something useful, other people will tell you what to do next. And you’ll figure out what’s next. Generally, you should be comfortable dealing with uncertainty, if you want to start your own company.

我将与您分享我创办互联网公司的经验。 构建互联网产品不同于构建iPhone或金字塔。 您的产品在开始时并不一定是完美的。 如果您要构建有用的东西,其他人会告诉您下一步该怎么做。 然后您将了解下一步。 通常,如果您想创办自己的公司,应该对不确定性感到满意。

The first version of Facebook was launched in early February 2004, which was an undergraduate student’s mere four weeks worth of work. It was a good enough product with good enough engineering. Every Computer Science college graduate nowadays should be able to build the first version of Facebook over a weekend, using a modern web programming framework (e.g., Rails, Django…).

Facebook的第一版于2004年2月上旬发布,当时这是一名大学生仅花了四个星期的时间。 这是一个足够好的产品,具有足够好的工程设计。 如今,每个计算机科学学院的毕业生都应该能够使用现代Web编程框架(例如,Rails,Django…)在一个周末内构建Facebook的第一个版本。

Companies such as Google, Snapchat, Spotify, Amazon, Twitter, and others are all great internet companies in our generation.

Google,Snapchat,Spotify,Amazon,Twitter等公司都是我们这一代伟大的互联网公司。

However, I can’t tell you how to become a company as successful as them. I’m not there yet. These companies are so successful and so big. For example, Google has 100,000 employees, as of March 2019. But there was a moment in the history of time when Google had only two employees. You have to start from somewhere or nowhere. I can talk about how to get started.

但是,我无法告诉您如何成为一家像他们一样成功的公司。 我还没在那里。 这些公司是如此成功,规模如此之大。 例如,截至2019年3月,Google拥有100,000名员工。但是在历史上,有一段时间Google只有两名员工。 您必须从某个地方或任何地方开始。 我可以谈谈如何开始。

Hopefully after this lesson, you’ll feel that starting an internet company is not hard at all. And you’ll learn about some tools and services that you can use in your future projects.

希望在上完这一课后,您会觉得创办一家互联网公司并不难。 您还将了解可以在将来的项目中使用的一些工具和服务。

You’ll hear me saying “there’s a tool” a lot. This is what I mean by “good enough engineering.” It’s 2019 now. It’s unlikely that you are the first person to encounter a fundamentally new problem. There must be tools and services out there that can help you solve problems — oftentimes, for free!

您会听到我经常说“有工具”。 这就是我所说的“足够好的工程”。 现在是2019年。 您不太可能是第一个遇到根本性新问题的人。 必须有一些工具和服务可以帮助您解决问题-通常是免费的!

Before we delve further, let me provide a brief introduction of Listen Notes.

在深入研究之前,让我简要介绍一下“听力笔记”。

Listen Notes is a podcast search engine website. You type in a keyword and you search the whole internet’s podcasts. It’s as simple as Google :) But simple doesn’t mean easy. We also built a lot of tools on top of the core search engine to help people discover & enjoy podcasts.

Listen Notes是一个播客搜索引擎网站。 您键入一个关键字,然后搜索整个互联网的播客。 它和Google一样简单:)但是简单并不意味着容易。 我们还在核心搜索引擎之上构建了许多工具,以帮助人们发现和欣赏播客。

https://www.listennotes.com/

https://www.listennotes.com/

Let’s take a step back to talk about podcasts. A podcast is a type of media format. Some people call it “on-demand radio.” We consume tons of media content everyday. We watch YouTube videos, watch TVs, read books, listen to music, and listen to podcasts. We consume media content because we want to get information, gain knowledge, and be entertained. Nowadays you can literally learn any topics by listening to podcasts. You can listen to podcasts while your eyes & hands are busy (e.g., driving, working out, walking, doing housework…).

让我们退后一步来谈论播客。 播客是一种媒体格式。 有人称其为“点播广播”。 我们每天消耗大量媒体内容。 我们观看YouTube视频,看电视,看书,听音乐和听播客。 我们之所以消费媒体内容,是因为我们想获取信息,获取知识并获得娱乐。 如今,您可以通过收听播客从字面上学习任何主题。 您可以在眼睛和手忙碌时收听播客(例如,开车,锻炼,散步,做家务……)。

In early 2017, I found myself consuming more information from podcasts than from other media formats (e.g., TVs, books…). I needed a podcast search engine that I could use to search & find individual episodes to binge listen to. In hindsight, a podcast search engine should be a very straightforward thing to exist. But I couldn’t find a good one. So I spent less than one week building a prototype of Listen Notes, the podcast search engine birthed out of my own wishes and necessities.

在2017年初,我发现自己从播客中消费的信息比其他媒体格式(例如,电视,书籍等)要多。 我需要一个播客搜索引擎,我可以使用它来搜索和查找单个剧集以使其暴饮暴食。 事后看来,播客搜索引擎应该是一件非常简单的事情。 但是我找不到一个好人。 因此,我花了不到一周的时间来构建Listen Notes的原型,该播客搜索引擎是出于我自己的愿望和必需品而诞生的。

I launched the prototype and used it a lot myself. But I didn’t touch the code for about nine months, until I decided to work on it full-time after I left my first failed startup. That was September 2017. Cut to 1.5 years later, I’m still having fun working on Listen Notes :)

我启动了原型并亲自使用了很多。 但是我大约九个月没有接触代码,直到我决定离开第一次失败的启动后才全职工作。 那是2017年9月。缩短到1.5年后,我仍然很乐于使用Listen Notes :)

Do you need to know where to find an office? Yes, there’s a service for that. I use WeWork. I’ve got a small office inside WeWork in San Francisco. The office is not cheap, but I think it’s a good investment for productivity.

您需要知道在哪里可以找到办公室吗? 是的,有一项服务。 我使用WeWork 。 我在旧金山的WeWork内部有一个小型办公室。 办公室并不便宜,但我认为这是提高生产力的不错的投资。

I can choose to spend money being 200% more productive myself, or spend money hiring one more employee. I can choose to save money and waste more time, or to save time and make more money. If you were me, what would your choice be?

我可以选择花200美元来提高自己的生产力,或者花钱再雇用一名员工。 我可以选择省钱并浪费更多时间,或者节省时间并赚更多钱。 如果您是我,您会选择什么?

By starting an internet business, we need to have a formal company, a legal entity. There’s a service for that.

通过开展互联网业务,我们需要拥有正式的公司,法人实体。 有一项服务。

I used Stripe Atlas to incorporate Listen Notes, Inc. I paid $500, and I got a Delaware C Corp within 10 days. Stripe Atlas provides some nice perks, e.g., $5k AWS (Amazon Web Services) credits. But to keep the company around, I have to pay ~$2k/year for taxes, accounting, and other stuff. This gives you a basic idea of the minimum cost of running a company.

我用Stripe Atlas合并了Listen Notes,Inc。我花了500美元,在10天内得到了Delaware CCorp。 Stripe Atlas提供了一些不错的特权,例如$ 5k的AWS(亚马逊网络服务)信用额度。 但是要保持公司运转,我每年必须缴纳约2000美元的税金,会计费用和其他费用。 这为您提供了运营公司最低成本的基本思路。

Because we are a company now, we have to deal with some legal stuff. There’s a service for that.

因为我们现在是一家公司,所以我们必须处理一些法律问题。 有一项服务。

You can use Clerky to generate legal documents or use UpCounsel to get a lawyer. I’ve used both services. They aren’t perfect, but they worth the money. You can’t expect to get Ritz-Carlton-level services with a McDonald’s price, right? If you want to be happy, you’d better set the correct level of expectation.

您可以使用Clerky生成法律文件,也可以使用UpCounsel获取律师。 我已经使用了两种服务。 它们并不完美,但是值得。 您不能指望以麦当劳的价格获得丽思卡尔顿级别的服务,对吗? 如果要快乐,最好设定正确的期望水平。

To get started, you just need a good enough domain name — a $10/year .com domain. You can always buy a great domain name later.

要开始使用,您只需要一个足够好的域名-每年$ 10的.com域名。 您以后总是可以购买一个不错的域名。

For example, Dropbox used getdropbox.com for more than 2 years before they bought dropbox.com for $300k. How did I discover that kind of trivia? I listen to podcasts! There was a podcast interview of Drew Houston(Dropbox co-founder & CEO), where he talked about how they secured the dropbox.com domain name.

例如,Dropbox在使用getdropbox.com超过2年之后才以30万美元的价格购买了dropbox.com。 我如何发现这种琐事? 我听播客! Drew Houston (Dropbox联合创始人兼首席执行官)在播客采访中谈到了他们如何保护dropbox.com域名。

After you get a domain name, make sure you also create a bunch of company accounts on social networking sites such as Twitter, Facebook, Instagram, and (maybe) Snapchat.

获得域名后,请确保您还在社交网站(例如Twitter,Facebook,Instagram和Snapchat)上创建了一堆公司帐户。

And most companies just use G Suite for their company email, which is basically Gmail.

而且大多数公司只是将G Suite用于他们的公司电子邮件,基本上就是Gmail。

Internet companies build online services. Most software today is online services. If you can’t access the Internet, you can’t use most apps on your phone.

互联网公司建立在线服务。 当今大多数软件都是在线服务。 如果无法访问Internet,则无法使用手机上的大多数应用程序。

Online services typically follow the client/server model. The client side software sends requests to the server side and gets responses to render the UI or to perform certain tasks.

在线服务通常遵循客户端/服务器模型。 客户端软件将请求发送到服务器端,并获得响应以呈现UI或执行某些任务。

All websites are online services, obviously. We use web browsers to access websites. To some degree, mobile apps are specialized browsers.

显然,所有网站都是在线服务。 我们使用网络浏览器访问网站。 在某种程度上,移动应用程序是专用的浏览器。

On the server side, we run servers. You just need good enough servers to get started. By “servers” I mean VPS (Virtual Private Servers), which basically provides root access to an IP address. Once you ssh into an IP address (a VPS), you can do whatever you want, e.g., install software & put your code there. And you are now open for business.

在服务器端,我们运行服务器。 您只需要足够好的服务器即可上手。 “服务器”是指VPS(虚拟专用服务器),它基本上提供对IP地址的根访问。 SSH到IP地址(VPS)后,您可以做任何想做的事,例如,安装软件并在其中放置代码。 现在,您开始营业。

For VPS, I recommend using something simple at the beginning, e.g., DigitalOcean or AWS Lightsail. At Listen Notes, we used DigitalOcean for about one year because it’s cheap & easy to set up, then we switched to AWS EC2 when our website got more traffic and we needed more flexibility & “production”-ish setup.

对于VPS,建议在一开始使用简单的方法,例如DigitalOceanAWS Lightsail 。 在Listen Notes,我们使用DigitalOcean大约一年,因为它便宜且易于设置,然后当我们的网站获得更多流量并且需要更多灵活性和“生产”设置时,我们切换到AWS EC2。

Such backend architecture is pretty common for running an online service.

这种后端体系结构对于运行在线服务非常普遍。

The client side (e.g., browsers) sends requests. The load balancer distributes requests evenly to web servers. We typically run a lot of web servers, where the server side code is running (e.g., Rails, Django…). We need a datastore to store our data. Web servers interact with the datastore to read and write data.

客户端(例如,浏览器)发送请求。 负载平衡器将请求平均分配到Web服务器。 我们通常会运行许多Web服务器,其中正在运行服务器端代码(例如,Rails,Django…)。 我们需要一个数据存储区来存储我们的数据。 Web服务器与数据存储交互以读取和写入数据。

On the left hand side, it’s synchronous processing. Here comes a request, and the web server processes it and returns a response right away. It’s synchronous.

在左侧,它是同步处理。 这是一个请求,Web服务器将对其进行处理并立即返回响应。 它是同步的。

We need asynchronous processing as well to handle non-urgent, long-running, or compute-intensive tasks. We don’t want to consume compute resources for such tasks on the web server. So we typically offload such tasks for the workers to process. Web servers place messages in the message queue, and workers pick up messages to process the tasks.

我们还需要异步处理来处理非紧急,长时间运行或计算密集型任务。 我们不想在Web服务器上为此类任务消耗计算资源。 因此,我们通常将这些任务分担给工人处理。 Web服务器将消息放入消息队列中,工作人员提取消息以处理任务。

For example, we generate this kind of image for search results on Listen Notes (Example):

例如,我们在Listen Notes( 示例 )上为搜索结果生成这种图像:

This type of image-generation task is kind of compute intensive and is not urgent. So we offload it for workers to process, instead of handling them on the web servers.

这种类型的图像生成任务需要大量的计算,因此并不紧急。 因此,我们将其分担给工作人员处理,而不是在Web服务器上进行处理。

Finally, there must be a Scheduler for time-based scheduling jobs. Many companies just use cron jobs on Linux and they switch to something else when they become bigger (e.g., I built a Scheduler system for my former employer Nextdoor a few years ago to replace cron jobs). For Listen Notes, we have a lot of time-based scheduling jobs, e.g., sending Listen Alerts.

最后,必须有一个基于时间的计划作业的计划程序。 许多公司只是在Linux上使用cron作业,而当它们变大时,它们会切换到其他作业(例如, 几年前我为我的前雇主Nextdoor构建了Scheduler系统以替换cron作业 )。 对于Listen Notes,我们有很多基于时间的计划作业,例如,发送Listen Alerts

We use Nginx as a simple load balancer. The backend code is mostly in Python/Django. We use different datastores for different purposes. We use Postgres for the main datastore, which is our single source of truth. We are a search engine, so we use Elasticsearch. We use Redis for a lot of things, but mostly for caching & implementing some “fast” features like Listen Real-Time.

我们使用Nginx作为简单的负载均衡器。 后端代码主要在Python / Django中。 我们将不同的数据存储区用于不同的目的。 我们将Postgres用于主要数据存储区,这是我们唯一的真理来源。 我们是一个搜索引擎,因此我们使用Elasticsearch。 我们将Redis用于很多方面,但主要用于缓存和实现某些“快速”功能,例如Listen Real-Time

On the asynchronous processing land, we use Celery, Celery Beat, and RabbitMQ.

在异步处理领域,我们使用CeleryCelery BeatRabbitMQ

We have to keep the server-side processes up and running 24/7. We’d better use some kind of process manager to automatically restart processes if they crash. We use Supervisor a lot at Listen Notes.

我们必须保持服务器端进程24/7全天候运行。 我们最好使用某种进程管理器来在进程崩溃时自动重启。 我们在Listen Notes中经常使用Supervisor

Two recommendations here:

这里有两个建议:

  • Learn tech stacks of real companies on stackshare.io

    stackshare.io上了解真实公司的技术堆栈

  • Listen to Software Engineering Daily. They interview engineers from real companies, so you can learn how companies do engineering.

    收听软件工程日报 。 他们会采访来自真实公司的工程师,因此您可以了解公司如何进行工程设计。

As end users, we get tons of notifications from online services via email, SMS, and push notifications. When an Uber driver is approaching, we get push notifications. When we shop on Amazon, we get email notifications (typically with receipts). When our bank accounts experience problems, we get SMS notifications.

作为最终用户,我们通过电子邮件,短信和推送通知从在线服务中收到大量通知。 当Uber司机接近时,我们会收到推送通知。 在亚马逊上购物时,我们会收到电子邮件通知(通常带有收据)。 当我们的银行帐户遇到问题时,我们会收到短信通知。

Let’s turn the table. When we build online services, how do we send notifications to users? There’s a service or API for each notification channel, e.g., SendGrid or Amazon SES for email, Twilio for SMS…

让我们转过去。 建立在线服务时,我们如何向用户发送通知? 每个通知渠道都有一个服务或API,例如,电子邮件的SendGridAmazon SES ,短信的Twilio

Next, we need some kind of triggers to initiate notifications.

接下来,我们需要某种触发器来启动通知。

One type of trigger is from user actions. For example, a user can invite people to contribute to the same playlist on Listen Later. When he or she clicks the invite button, it triggers an email notification that is sent to the potential contributor. So the web server places a message in the message queue, and one of the workers picks up the message and sends the invite email later.

一种触发类型是来自用户操作。 例如,用户可以邀请人们在“ 稍后收听”上为同一播放列表做出贡献。 当他或她单击邀请按钮时,它将触发一封电子邮件通知,该通知将发送给潜在的贡献者。 因此,Web服务器将一条消息放入消息队列中,然后其中一名工作人员接收该消息并稍后发送邀请电子邮件。

Another type of trigger is from time-based schedules, e.g., send emails to these 500 people at 7 a.m. every morning.

另一种触发类型是基于时间的计划,例如,每天早上7点向这500个人发送电子邮件。

Each of the blocks in the architecture diagram represents a process or multiple processes on the operating systems. We can run those processes on one server or multiple servers.

体系结构图中的每个块代表一个或多个操作系统上的进程。 我们可以在一台或多台服务器上运行这些进程。

We typically create a provision of multiple sets of servers for different audiences & for different purposes.

我们通常为不同的受众和不同的目的创建一组多组服务器。

Each set of servers runs in a separate environment.

每套服务器都在单独的环境中运行。

Servers in the production environment serve live traffic. The audience is made up of real users.

生产环境中的服务器提供实时流量。 受众由真实用户组成。

Servers in the staging environment are primarily for testing. The audience is comprised of employees in the company. We need the staging environment to manually test product features before releasing the whole shebang to production.

登台环境中的服务器主要用于测试。 听众由公司员工组成。 在将整个产品投入生产之前,我们需要一个暂存环境来手动测试产品功能。

And we need a dev environment for development purposes, which is typically used by a single developer.

而且,我们需要一个出于开发目的的开发环境,通常由单个开发人员使用。

For Listen Notes, we use Vagrant & VirtualBox to set up a virtual machine. And we run everything inside this virtual machine.

对于Listen Notes,我们使用VagrantVirtualBox设置虚拟机。 然后,我们在此虚拟机中运行所有内容。

Since the backend code of Listen Notes is primarily written in Python/Django, I use PyCharm to write code. I know, it’s not VS Code or whatever cool text editors others use. But I’m 1000x more productive using PyCharm than using other text editors - though, I was a Vim user for 5 years and an Emacs user for another 6 years :) It’s like some people like spicy food, while others don’t. We can’t blame people who don’t like spicy food, right? Don’t get involved in the religious war of IDEs, languages, technologies… GETTING THINGS DONE™ is more important.

由于Listen Notes的后端代码主要是用Python / Django编写的,所以我使用PyCharm编写代码。 我知道,这不是VS Code或其他人使用的炫酷文本编辑器。 但是使用PyCharm的效率要比使用其他文本编辑器高1000倍-但是,我使用Vim已有5年,而使用Emacs已有6年了:)就像有些人喜欢辛辣的食物,而其他人则不喜欢。 我们不能怪不喜欢辛辣食物的人,对吗? 不要卷入IDE,语言,技术的宗教大战中……更重要的是做事。

In terms of front-end engineering, I have very little to share here. Listen Notes has only a website. We don’t have native apps (except for an experimental Just Listen app).

在前端工程方面,我很少分享。 Listen Notes只有一个网站。 我们没有本地应用程序( 实验性的“ Just Listen”应用程序除外)。

For the web front-end, I use the conventional Reactjs & Bootstrap. Pretty standard nowadays.

对于Web前端,我使用常规的Reactjs& Bootstrap 。 如今相当标准。

If you just get started with your projects, I would suggest focusing on a single platform first. Don’t go cross-platform too early. We typically have very limited resources at the very beginning. Look at Instagram: When they were an independent company, they had only an iOS app initially. And they got acquired for $1B.

如果您只是开始您的项目,我建议您先专注于单个平台。 不要过早跨平台。 我们一开始通常资源非常有限。 看一下Instagram:当他们是一家独立公司时,最初只有一个iOS应用程序。 他们以$ 1B的价格被收购。

If you are building a website, make sure you make it responsive from day 1. You can easily use modern browsers’ developer tools to test different screen sizes (e.g., on Chrome).

如果您要建立网站,请确保从第一天起就可以响应。您可以轻松地使用现代浏览器的开发人员工具测试不同的屏幕尺寸(例如, 在Chrome上 )。

You also want to test on multiple operating systems & browsers. There’s a service for that: Use BrowserStack.

您还想在多种操作系统和浏览器上进行测试。 有一个服务:使用BrowserStack

If you have more than one server, you’d better NOT install software & do configuration manually. Infrastructure as code is a common practice in internet companies nowadays. Basically, we codify the specification of servers and automate the server configuration.

如果您有一台以上的服务器,则最好不要手动安装软件并进行配置。 如今,将基础设施即代码作为互联网公司的一种普遍做法。 基本上,我们整理服务器的规格并自动执行服务器配置。

For Listen Notes, we use Ansible. We need to write a bunch of yml configuration files to specify what software to install & where to put config files. When we run ansible-playbook in command line, it’ll automatically configure multiple servers for us.

对于Listen Notes,我们使用Ansible 。 我们需要编写一堆yml配置文件来指定要安装的软件以及在何处放置配置文件。 当我们在命令行中运行ansible-playbook时,它将自动为我们配置多台服务器。

Nowadays, servers are elastic or even ephemeral, with on-demand configurations to suit the necessary workload. Servers come and go. You may run more servers during the daytime, when there’s more traffic; and run fewer servers at night, when there’s less traffic. Infrastructure as code makes this type of thing easy.

如今,服务器具有弹性甚至是短暂的,并具有按需配置以适应必要的工作负载。 服务器来来去去。 当流量增加时,您可能会在白天运行更多服务器; 并在流量较少的夜晚运行较少的服务器。 基础设施即代码使这种事情变得容易。

Internet companies deploy code pretty frequently nowadays, at least once per week or even many times a day. Some companies do continuous deployment, shipping code whenever there’s a new git commit.

互联网公司如今经常部署代码,至少每周一次甚至一天多次。 一些公司会进行连续部署,每当有新的git commit都会发布代码。

For Listen Notes, I’ve got a quick script to deploy code, where I can specify the deployment environment, server type, and git commit SHA as parameters. So I can push a button and deploy a specific version of code (e.g., HEAD, or any git commit) to specific servers (e.g., web, API, worker…) in a specific environment (e.g., production, staging…).

对于Listen Notes,我有一个快速脚本来部署代码,可以在其中指定部署环境,服务器类型和git commit SHA作为参数。 因此,我可以按一个按钮并将特定版本的代码(例如HEAD或任何git commit)部署到特定环境(例如生产,登台……)中的特定服务器(例如Web,API,worker…)。

We deploy new code, but we don’t necessarily release new features. Nowadays we do feature toggles in the code, which is basically some if-else statements. We can hide new code behind an if statement, and we use the feature toggle variable to control whether or not to execute the new code. We typically store the feature toggle variable in some kind of datastore, e.g., Redis. We can go very fancy here. We can turn on the new feature to 10% of users first, then 20%, then 50%, then 100%.

我们部署了新代码,但不一定发布新功能。 如今,我们在代码中进行了功能切换 ,基本上是一些if-else语句。 我们可以将新代码隐藏在if语句后面,并使用功能切换变量来控制是否执行新代码。 我们通常将功能切换变量存储在某种数据存储中,例如Redis。 我们可以在这里非常喜欢。 我们可以先为10%的用户启用新功能,然后再为20%,50%和100%启用。

Online services need to be up 24/7. So it’s important to have tools for monitoring & alerting.

在线服务需要提高24/7。 因此,拥有用于监视和警报的工具很重要。

There’s a service for that!

有一项服务!

Many companies use Datadog. We use Datadog at Listen Notes as well. We can easily build monitoring graphs to provide great visibility for servers and applications. We can also set up alerts when some metrics are abnormal (e.g., higher than a certain threshold).

许多公司使用Datadog 。 我们也在Listen Notes上使用Datadog。 我们可以轻松地构建监视图,从而为服务器和应用程序提供良好的可见性。 当某些指标异常(例如,高于某个阈值)时,我们还可以设置警报。

If you want to learn the best practices of building & operating online services, read The Twelve-Factor App.

如果您想学习构建和操作在线服务的最佳实践,请阅读The Twelve-Factor App

When it comes to internal tools, I see this iceberg image. Internal tools are a big chunk of code like an iceberg lurking under the water, which is invisible to outsiders.

关于内部工具,我看到了这个冰山一角。 内部工具是一大堆代码,就像潜伏在水下的冰山一样,这是外部人员看不见的。

If you have never operated a popular online service before, you won’t be aware that you need to build a lot of tools to use internally (by yourself, by your employees).

如果您以前从未操作过流行的在线服务,则不会知道需要构建很多内部使用的工具(您自己,您的员工)。

Different companies build different internal tools for various purposes. So far, I’ve built some internal tools to help development (e.g., preview email notification without actually sending emails), to provide God’s view (e.g., see search queries, quickly pull info for a particular user…), and to fight bad actors (e.g., content moderation, detect spam…).

不同的公司为各种目的构建不同的内部工具。 到目前为止,我已经构建了一些内部工具来帮助开发(例如,预览电子邮件通知而无需实际发送电子邮件),提供上帝的观点(例如,查看搜索查询,快速获取特定用户的信息……)以及避免不良行为参与者(例如,内容审核,检测垃圾邮件……)。

So by this point, we know how to start a company with $500 and we know how to build an online service with good enough engineering.

因此,到此为止,我们知道了如何以$ 500成立一家公司,并且知道如何以足够好的工程技术来构建在线服务。

Profit!

利润!

Oh, wait….

等一下…。

How do people find the thing you have built? How do you make money?

人们如何找到您建造的东西? 你怎么赚钱?

Pinterest CEO says key to success was marketing, not engineering. Well, this is so true.

Pinterest首席执行官表示,成功的关键在于营销,而不是工程。 好吧,这是真的。

Engineering is deterministic. Marketing and business are non-deterministic.If you want to build an online service, you can build it. But we live in a noisy world now. Tons of things are competing for our attention. Marketing is super hard.

工程是确定性的。 营销和业务是不确定的。如果您要构建在线服务,则可以构建它。 但是我们现在生活在一个嘈杂的世界中。 众多事物正在争夺我们的注意力。 营销非常困难。

I’m not an expert of marketing. I’m still figuring out how to do better marketing myself…

我不是行销专家。 我仍在寻找如何更好地自我营销的方法……

There are multiple channels that you can use to get your messages out. Try them all. Find the most effective one. Double down on that one. A recommendation here: The 19 Channels You Can Use to Get Traction

您可以使用多种渠道发布消息。 尝试所有。 找到最有效的一个。 加倍下来。 这里的建议: 您可以用来牵引的19个渠道

If you want to do SEO, you can find some good tutorials on the Internet. But generally, you want to make your website as fast as possible. Google prefers fast websites nowadays.

如果您想进行SEO,可以在Internet上找到一些不错的教程。 但通常,您希望使您的网站尽快。 Google如今更喜欢快速的网站。

The best SEO document is from Google itself.

最好的SEO文档来自Google本身。

And if you are curious about a website’s traffic, just use SimilarWeb’s chrome extension. The number is not 100% accurate, but should be in the same order of magnitude :)

而且,如果您对网站的访问量感到好奇,请使用SameWeb的chrome扩展程序 。 该数字不是100%准确的,但是应该在相同的数量级:)

An Internet company makes money by selling eyeballs to advertisers or selling goods/services directly to users.

一家互联网公司通过向广告商出售眼球或直接向用户出售商品/服务来赚钱。

At Listen Notes, we do both. We run ads with a combination of Carbon Ads& direct sales (managed via Google Ad Manager). We also sell API to developers.

在Listen Notes,我们都做。 我们投放的广告结合了Carbon广告和直接销售(通过Google广告管理系统进行管理 )。 我们还向开发人员出售API。

You may ask me why I don’t use XYZ technologies. Well, I’m a practical person. The goal is to get things done, instead of doing tech for the sake of doing tech.

您可能会问我为什么不使用XYZ技术。 好吧,我是一个务实的人。 目标是把事情做好,而不是为了做技术而做技术。

In particular, I prefer boring technologies, which typically have existed for many years or even decades. Check out this blog post for Listen Notes tech stack.

特别是,我更喜欢无聊的技术,这种技术通常存在多年甚至数十年。 查看此博客文章,了解Listen Notes技术堆栈

Software engineering nowadays is mostly Google and StackOverflow-driven :) If you need help, you can find more information for old & mature technologies from Google & StackOverflow — but like many things in our lives, this is not always true.

如今,软件工程主要由Google和StackOverflow驱动:)如果您需要帮助,可以从Google&StackOverflow上找到有关旧技术和成熟技术的更多信息,但是就像我们生活中的许多事情一样,这并不总是正确的。

I need to tell you bad news: It’s impossible for you to come up with a 100% original startup ideas nowadays. If you think your idea is unique and original, then it’s more likely that you don’t read enough books or don’t listen to enough podcasts :)

我要告诉您一个坏消息:如今您不可能提出100%的原始启动想法。 如果您认为自己的想法是独特且新颖的,则很可能是您没有阅读足够的书或听不到足够的播客:)

When I mentioned “there’s a tool/service for that,” it’s a startup itself. You can borrow their ideas, and build a better version. Or you can tackle similar problems from a different angle.

当我提到“为此提供工具/服务”时,它本身就是一家创业公司。 您可以借用他们的想法,并构建更好的版本。 或者,您可以从不同的角度解决类似的问题。

Oh, and here’s a video about Facebook’s tech in 2005: https://www.youtube.com/watch?v=xFFs9UgOAlE

哦,这是有关2005年Facebook技术的视频: https//www.youtube.com/watch?v = xFFs9UgOAlE

Okay. You can start a company TODAY!

好的。 您可以今天开始公司!

Eighty Percent of Success Is Showing Up

成功的百分之八十出现了

You can find the deck here: http://bit.ly/good-enough-tech

您可以在此处找到平台: http : //bit.ly/good-enough-tech

And you can always talk to me asynchronously via email :)

而且您随时可以通过电子邮件异步与我交谈:)



If you like podcasts, try Listen Notes.

如果您喜欢播客,请尝试收听笔记

If you want to build a podcast app, try Listen API.

如果要构建播客应用程序,请尝试Listen API

翻译自: https://www.freecodecamp.org/news/good-enough-engineering-to-start-an-internet-company/

免费创办网站

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值