Today’s post is a guest contribution from Shawn Xu (no relations). Shawn is one of the early engineers at Ascend.io, got his Masters in Human Computer Interaction at Carnegie Mellon, and writes an informative WeChat public account on SaaS called 硅谷成长攻略.


(The audio version of this post can be found on the Interconnected YouTube channel):

The "Low Code, No Code" (LCNC) category of software products has been a hot, trendy area of VC investment (at least in Silicon Valley). This concept of LCNC coincided, and in some ways catalyzed, the rise of so-called "citizen developers". However, this umbrella term LCNC, especially the Low Code part, remains confusing and often lumped together with developer tools and API products.

In this Part I of a two-part series, we will explore the hypergrowth of the LCNC economy from the lens of an investor, and provide a landscape in an attempt to organize this vast landscape. (Note: you should not treat this post or any post on Interconnected as investment advice. Please do your own research.)

In Part II, to be published in a few weeks, I will look at the trends that are pushing LCNC forward, share some product evaluation heuristics, and discuss why we haven’t seen significant LCNC innovation in tech ecosystems outside of Silicon Valley, like China.

Definition

Modern software deployment largely follows a 6-stage lifecycle. Each stage can be broken down further into smaller stages. For instance, testing alone may consist of unit tests, integration tests, end-to-end tests, accessibility tests, etc., each requiring all-code test cases and execution mechanisms.

https://www.netsolutions.com/insights/software-development-life-cycle/

LCNC abstract away one or more steps in the software development lifecycle.

The most meaningful difference between Low Code and No Code is the level and amount of abstraction.

No Code is about empowerment, enabling users to create software they weren't capable of before. Low Code, on the other hand, is about freeing engineers from repeatedly writing low-impact code.

Before diving into No Code and Low Code separately, we should note that it's almost impossible to draw a clear line between the two concepts. As the above diagram suggests, code level is a linear line rather than a set of three distinct buckets. To keep things clear, we categorize a product into either No Code or Low Code, based on its stated product mission and target users.

Landscape

With that broad definition in mind, I’ve composed the first 2021 Low Code No Code landscape, which contains 369 companies. Here’s the corresponding Airtable sheet and here’s the link to the hi-res version of this landscape graphic.

Now let’s break down No Code and Low Code, respectively, in more detail.

No Code Breakdown

The level of abstraction of No Code products is so high that users can get started without any programming background. It is roughly divided into two categories: site builders and business automation.

Site Builders (WYSIWYG, what you see is what you get)

This category is probably the most widely known No Code application. Products like Wordpress and Ghost (which runs this newsletter) bring about a new age, where designing and building a simple website no longer requires formal programming training.

In the past few years, we have seen new products emerge, setting their sights not only on simple graphical interfaces, but also all aspects of a complex application: front-end / back-end logic, database, operation and maintenance, etc., providing truly end-to-end solutions with no code!

Bubble's WYSIWYG builder, with composers for complex logic and database operations

Among the new breed of site builders are some notable use case verticals:

  • Internal tooling:

    Today, if a company's finance team wants a customized expense reporting tool, chances are that they can tailor-make one themselves. They might need some help from engineer colleagues to integrate with the company’s authorization services, but the whole ideation-to-launch process now takes a fraction of time and cost thanks to No Code solutions, compared to either buying off the shelf solutions or dedicating an internal engineer team to build it.

Airtable and Retool stand out as two of the best known examples in the industry.

  • E-commerce builders:

    It's hard to imagine how challenging it was just a decade ago to "get your store online". Shopify came along and not only provided a No Code tool to build custom storefronts, but also bundled complete e-commerce backend and fulfillment processes, such as shopping cart, checkout, payment, order management, and logistics management.

    Fifteen years after its founding, Shopify, like Amazon, has become a giant with its own complete ecosystem. Nevertheless, the e-commerce site builder space continues to be competitive and attract entrepreneurs. These newcomers aim to provide differentiated and specialized services for different verticals or different parts of the e-commerce experience: warehouse management, pre-sales and after-sales service (Volusion), art transactions (BigCartel), extensive multilingual support (PrestaShop).
  • Mobile app builders

    "Write once, run anywhere" is the holy grail for cross-platform app building. This is still extremely challenging technically, due to the distinct and ever changing programming interfaces of iOS, Android, and the web.

    Products in this domain mostly adopt a hybrid model (that is, wrapping a web application with a native shell using tools like React Native). Popular offerings include Thunkable, perry.io, Buildfire and Appgyver.
  • Rapid builders

    While this category has some overlap with the previous ones, it deserves its own bucket because of its unique use case. We're entering an era that encourages personal identities and individual brands, and the rapid builders empower people and companies to express themselves more quickly.

    While some app builders become "heavier" and more powerful, others prefer a lighter touch. Apps like Kodika, Play, and Pineapple let users "build mobile apps from an app". Products like Glide (screenshot below), Pory, and Softr make it insanely easy to build an app for display or viewing purposes. Point to a Google Sheet, pick some source data, choose some styles, and you have a mini app based on that data.
Five minutes from a Google Sheet to this? Not bad! (Source: https://www.glideapps.com/)

Business Automation

Companies love to have their processes "interconnected". When site visitors fill out “Request for Demo” forms, their records are synced automatically to Salesforce. When users submit a bug in the help forum, an issue is automatically created in JIRA.

IFTTT (If This Then That) is one of the earliest products to provide No Code automation services. Back in 2012, cloud-based services were like remote islands, with little interfacing and interactions with other similar services. I was obsessed with IFTTT to build up my personal automation workflow: "liking" a good article on Feedly would save it to both Dropbox and Evernote; adding a new contact on my phone would immediately get synced to Google contact, etc.

In SaaS, products that provide similar services are called BPM (Business Process Management). Compared to their consumer-facing counterparts, like IFTTT, these services are more often used to connect various SaaS services. Zapier is perhaps the leader in this market -- a unicorn with reportedly a 9-figure revenue level, with only $2.6 million of venture funding raised.

Zapier example: email alert from a new Shopify order

Similar to the Site Builders bucket, we're also seeing different verticals emerge within the Business Automation sector:

Marketing automation

Marketing automation is a type of business automation, often optimizing the "sales pipeline", which describes the entire sales process from advertising, to collecting business leads, to closing deals. Typically, the higher up in the sales funnel, the noisier it gets. Deploying algorithms to triage the noise is a lot more cost-effective than hiring more people to sift through it all.

Products like Funnel.io and ActiveCampaign can seamlessly connect to ad platforms such as Google and Facebook Ads, with a No Code interface that let’s users define "what to do under what situation". For example, if a site visitor downloaded the whitepaper or stayed for over 20 minutes on the website, automatically mark this person in Salesforce as a high priority business lead.

Funnel.io's automation editor

Chatbots

Most messaging apps today have opened up their APIs to allow business users to form automated responses, aka chatbots. These bots also exist on webpages (the famous Intercom bubble) or as phone operators. However, building a meaningful end-to-end chatbot is an extremely code-heavy project: conforming to APIs of different platforms, fetching customer's personal and order information, parsing and understanding the natural language questions, forming a personalized response, etc.

The Intercom Bubble

Chatbot is probably the most heated space in the entire LCNC landscape for two (good) reasons: 1. Businesses are more than willing to pay for ubiquitous chatbots, which can greatly scale up their pre and post sales activities; 2. Progress made on machine learning and natural language processing has made end-user experience more “human” and less artificial.
Drift and Chatbot (chatbot.com) are among the new wave of chatbot products that integrate easy-to-configure AI, to help populate smarter and more human responses.

Chatfuel's bot experience, built with No Code interface

Algorithm trading builders

"When the United Airline stock price rises, buy some Airbnb stock." This type of algorithm-driven trading monitors certain trends in the market and executes trading strategies instantly.

Low Code platforms such as Alpaca came around a few years ago, making it easy for developers to obtain market data and focus on developing and testing algorithms. However, the entry barrier is still high; you still need to know how to code.

Now, with the drag-and-drop UI of Streak, Tradetron, and Composer (beta), anyone can come up with their own algorithm-based investment strategies to be executed automatically.

Streak's trading algorithm editor

Components of a data pipeline

Data visualization platforms such as Tableau and Looker have come a long way to help users drive business insights without writing lengthy Excel scripts.

Yet, they only make part of an end-to-end data process easy. Prior to visualization, analytics and machine learning, data has to undergo a chain of steps including extraction, ingestion, cleaning, transformation, storage, and so on. To build these steps, a company had to hire and rely on seasoned engineers.

Source: https://medium.com/the-data-experience/building-a-data-pipeline-from-scratch-32b712cfb1db

This "bottleneck" made the lives of data consumers, from analysts to executives, miserable. Thus, products like Fivetran and Trifacta came to the rescue, offering them self-serve experience for simpler data pipelines, and offloading work from engineers to enable them to focus on more complex pipelines.

Low Code Breakdown

As we defined above, Low Code products free engineers from repeatedly writing code that either creates less value or is too time-consuming.

These two categories make up the main use cases:

  • Project scaffolding

    A new engineering project does not typically start with writing business logic right away, but requires a lot of “prep work”: configuring the environment, setting up a test framework, hooking up CI/CD, etc. For larger teams with more established workflow, this typically follows some internal playbooks, but for smaller teams with limited resources, the process could be daunting and error prone.

    This is a common "reinventing the wheel" problem. Thus, a group of startups are tackling these repetitive and mundane tasks, by packaging up and turning them into Low Code SaaS solutions: CircleCI's one-click deployment, Wayscript's cloud scripting environment, and Mabl's automatic test platform. There are many other examples.

Take CircleCI as an example. The work of sorting out build dependencies between services, chaining them up, supporting rollback and retries can keep a few well-paid engineers busy for weeks if not longer. With CircleCI, the work is just providing a few declarative configuration files and the platform handles the rest.

CircleCI's architecture (Source: CircleCI)

We can find similar examples in the Big Data domain. For data scientists and analysts, they find value in conducting analysis and building models, not setting up the underlying infrastructural environment. Databricks found their sweet spot by offering a "one-click" cluster spinup, dynamic scaling against workload, and automatic shutdown after inactivity.  This type of Low Code offering allows these data scientists and analysts to focus on the more value-add part of their work.

  • New tech, small team

    The notion of "full-stack engineer" is popular in Silicon Valley, and increasingly in other tech hubs around the world. But, in reality, no engineer is fully “full-stack”; every engineer has his or her own strengths and weaknesses.

In a large company or team, the weaknesses can be patched up with enough resource allocation. In a small startup or team, it’s much harder, so more Low Code solutions are adopted to fill the gaps. A startup that’s focused on developing a distributed system may have little UI expertise, so to provide its customers with a polished dashboarding experience, they will adopt Low Code products, such as Cube.js or Superset.

Certain layers of the tech stack also tend to open up more Low Code opportunities than others, especially if the pace of change is quick while the ramp-up time is quite long. Two that I’ll mention are Infrastructure/DevOps and Data Engineering. For both categories, there is no default architecture or “way to do things”, many different options and opinions exist in the market, and the learning curve is still quite steep.

Low Code vs API Products

It is worth noting that while both Low Code and API products (Stripe, Twilio, etc.) can help offload repetitive, low value engineering workloads, they should not be conflated. From a product perspective, Low Code differs from pure APIs in that it also provides an environment to execute the code -- providing another layer of abstraction. Pure APIs, on the other hand, are integrated as one of many parts of a solution, allowing for higher flexibility than Low Code.

Low Code products also tend to have more pricing schemes and options, e.g. by the number of seats (Wayscript, CircleCI), usage (Databricks), or features (Repl.it). API services usually only charge by usage.

I hope this Part I of our two-part series on Low Code No Code gives you a broad sense why this area is so trendy lately, who the main startups are in this space, and the value they are providing (real or perceived) for the market.

Please read Part II of this series on how to ride the Low Code Node Code wave.

If you like what you've read, please SUBSCRIBE to the Interconnected email list. To read all previous posts, please check out the Archive section. New content will be delivered to your inbox every Sunday. Follow and interact with me on: Twitter, LinkedIn, Clubhouse (@kevinsxu).

今天的文章是徐晟洋(和我没有亲戚关系,纯属凑巧哈)写的《互联》的第一篇“嘉宾专栏”。他是创业公司Ascend.io的早期工程师之一,在卡内基梅隆大学获得了人机交互的硕士学位,并写一个与SaaS行业有关的干货很足的微信公众号《硅谷成长攻略》。


过去几年里,“人人都是程序员”的概念逐渐深入人心, 无代码、低代码(Low code, no code - LCNC)这个概念开始大放异彩。然而,对这个包罗万象的概念本身,鲜有统一的认识。许多人将其与API经济、开发者工具相混,也有人将其与“拖拽建站”类的产品画上等号。

这上下系列文章里,我们一起来尝试理解LCNC经济和其背后的逻辑。上半部分中,我们聚焦于“什么”,旨在给这个宽泛的概念画上边界,做好分类。下半部分里,我们来看看LCNC兴起的背后,适宜的评价体系,以及其风光背后面临的挑战,也即“为什么”和“怎么样”。

LCNC:定义

大多现代的计算机程序开发遵从下图所示的六个步骤。每一个步骤还可以进一步细分。比如,光是测试,就包含单元测试、整合测试、端到端测试、无障碍测试等等内容。每一种测试,都需要写全代码的测试用例,以及跑测试的程序。

LCNC工具的到来,则将其中一个或多个步骤封装起来,可以更简单抽象地完成。LC和NC的主要区别,在于抽象的步骤多少、程度高低。

无代码,核心在于”赋能“,把搭软件这个复杂任务平民化,让每个人拥有写程序的‘超能力”。而低代码,重点在于“解放”,将工程师从他们不想写的代码中解放出来,投入到更高价值、更想写的代码中。

在进入到分类之前,我们应该意识到无代码、低代码之间并没有清晰明了的界线。如同上图所示,代码的程度高低是线性的,而非离散的全、低、无三个点。仅为了让分类可以进行,我们根据一款产品的愿景和目标用户,来判断其为低代码还是无代码。

行业版图

参考前面的定义,我制作了一份2021年LCNC版图(英文),和与之对应、包含359家LCNC公司的Airtable表单这里是高清版的版图PDF。

接下来,让我们分别对无代码、低代码市场做一个分类。

无代码产品分类(NC)

无代码产品的抽象程度很高,以至于用户不需要任何的编程背景就可以上手。大致分为两类:

  • 可视化建站软件(WYSIWYG,所见即所得)

    这是最广为人知的无代码应用。从Wordpress开始,自己设计、搭建一个简单的网站已不再需要程序员介入(顺便一提,这个博客也是用无代码工具Ghost搭起来的)。这几年新出世的服务,将目标不止定于简单的”界面“,还包含了一个复杂应用的方方面面:后端逻辑、数据库、运维等等,成为真正端到端(End to End)的解决方案。
Bubble的可视化编辑界面,包含一些简单逻辑(替代部分Javascript和服务器端)、数据库服务

这其中,逐渐涌现出一些垂直的应用:

  • 内部工具

    以Retool、Airtable为例,在2021年,假如某公司的财务人员想开发一个报销平台,那么TA不再需要购买、部署专业软件,或找内部工程师搭建。一个人,一台电脑,一周时间,拖拖拽拽就能上线。

  • 电商网站

    自2015年Shopify上市,这家新晋电商的股价已经翻了数十倍。Shopify易用的界面,让任何商家都能不写代码,就搭建属于自己的在线商店。这个商店除了展示商品,还包含了购物车、结账、订单管理、物流管理等完整的电商流程。

    Shopify像Amazon一样,已经成为拥有完整生态系统的巨无霸。尽管如此,电商这块巨大的蛋糕依然源源不断地吸引着创业者们。他们同样主打无代码建站体验,但提供与Shopify不同的差异化服务。这其中,有提供仓储管理和售前售后服务的(Volusion),有专注画家和艺术交易的(BigCartel),有提供多语言服务的(PrestaShop)。

  • 移动端开发

    由于iOS、Android两个平台的存在,移动端无代码平台的技术要求一直较高。提供这方面服务的产品,大多采用混合模式(即用原生的”壳“包裹一个网页应用)。比较领先的公司有Thunkable,appery.io,buildfire,appgyver等。
  • 快速建站

尽管与之前的有些重合,我还是想单独拿出聊聊。我们身处一个追求个性化、表达欲的时代,这也包含了个人数字化上的自我表达。

如同一些建站软件开始变得越来越庞大、功能越来越复杂,也有另一些产品标新立异,主打“轻量级”:

  • Kodika、Play (createwithplay.com) 和Pineapple致力于挖掘手机本身的生产力,使得用户们可以“用手机软件搭建手机软件”。
  • Glide, Pory, Softr之类的产品,将搭app变得极其轻松:选定一张Google Sheet,指定数据范围,套用一个模板,一个可以下载、可以交互的展示性手机app就完成了。这背后的想法十分优雅:将表单想成迷你的数据库,作为app的数据来源。
五分钟从Google Sheet变成一个app,还不错?(Source: https://www.glideapps.com/)
  • 流程自动化(Business automation)

    每个公司都希望他们的商业流程实现“互联”:潜在客户填写demo意向表单,自动将其信息同步到Salesforce;用户在帮助论坛里提交一个bug,自动在JIRA里创建一个issue。

    IFTTT(If This Then That)是最早通过“无代码”形式提供触发服务的产品之一。2012年,各种云软件还像一个个孤岛,我一度痴迷于用IFTTT将他们连接起来:看到Feedly的好文章,一键自动保存到Dropbox和Evernote;在手机上加一个新联系人,立刻同步到Google contact,等等。

    在SaaS服务里,提供类似服务的公司被称为BPM (Business Process Management)——这两者的界限正在逐渐变得模糊。与IFTTT这样的to C平台相比,他们提供的服务,更多用来连接各种SaaS云服务软件。其中最有名的,莫过于只拿了260万融资,却已营收上亿美元的Zapier。前文提到的庆祝邮件、创建bug拷贝,都可以在很短时间内通过Zapier的界面搭建。
Zapier示例:Shopify新订单自动发送邮件提醒

相比于通过邮件、Excel沟通和手动输入数据,流程自动化产品的优势不言而喻:更少的错误,过程清晰、接口明确的过程流水线,极快的响应更新速度。

与可视化建站产品一样,近年来,流程自动化领域也涌现了几个发展迅速的垂直类别:

  • 营销流程自动化

销售管道(Sales pipeline)指为了拿下一个新订单,从打广告到签定单的全部过程。无论是to C还是to B,这条管道里,越靠前的环节(广告和初步接触),噪音越大,自动化识别优质客户的需求也越大。

类似Funnel.io、ActiveCampaign等产品,可以无缝连接Google Ads、Facebook Ads等第三方平台,在此基础上提供了无代码界面,来编辑各种触发流程,比如”如果一个网站访问者下载了白皮书,或停留超过20分钟,把TA自动归类到Salesforce的高优先组别“,又如”如果一个非会员用户在购物车里加入超过100美元的产品,未下单就退出网站,给TA发送一个新会员折扣邮件“。

Funnel.io的触发编辑器
  • 聊天机器人

    Facebook Messenger、Whatsapp、微信、Line等一众聊天软件,都开放了API给商家,方便打造聊天机器人。类似机器人也出现在网页端,例如著名的Intercom小气泡,甚至是电话里的自动回复系统。然而,要结合用户信息和问题,做出合适的回答,则是一个”重代码“项目:搞明白各个平台的API接口,抓取对应用户的个人信息和订单信息,理解他们提出的问题,最终做出人性化的回答。

大量的初创公司集中于售前售后、企业内咨询的聊天机器人搭建,也有聚焦于高等教育、人力资源等垂直服务。参考后面整理的2021年版图,可以看到这是一条竞争十分激烈的赛道。这主要有两个原因:聊天机器人可以极大的帮助商家提升售前售后应对能力,卖家付费意愿强;机器学习和自然语言处理技术的进步,使得产品体验逐日上升,不再显得那么“尬”。

例如Drift和Chatbot(chatbot.com)的产品使得用户相对轻松地上手,配置智能AI来回复用户的问题。

Chatfuel的聊天机器人界面,完全用无代码搭建
  • 投资决策自动化

    “当United Airline股票价格上升,购买一些Airbnb股票”。这一类算法驱动的交易(Algo trading)通过监测市场的某些动向,及时执行交易策略。尽管已经有Alpaca这样的低代码平台,让开发者可以便捷地获取市场数据,专注于开发、测试策略,对大部分不会代码的用户来说,门槛依然高了一些。

    Streak、Tradetron、Composer(Beta)的拖拽式UI,则可以让任何人都简单地编辑自己的投资策略,而不用写一行代码。
Streak的交易逻辑编辑界面
  • 数据管道的各个环节

    Tableau、Looker这样的数据可视化平台,做到了让不想折腾Excel各种复杂功能的用户,也能做高质量的数据分析。
    而可视化和机器学习,只是数据管道的最后一个环节,在这之前还有从数据收集、储存、复制、清洗、转化等各个步骤。这些步骤,曾经都依赖有经验的数据工程师搭建。然而,即使再有经验的团队,也常因为多变的需求和技术的变化,不断扩大项目规模,最终难以交付。
‌‌来源:https://medium.com/the-data-experience/building-a-data-pipeline-from-scratch-32b712cfb1db

这给数据的使用者,无论是分析师还是企业高管,带来不少的困扰。于是,类似Fivetran和Trifacta的产品赢得青睐。这些产品提供近乎”自助式“的产品体验,令以往掌握在少数人手里的”数据控制权“,分散给更多人;而数据工程师们则可以专注于更加复杂、有挑战的问题,而不是疲于应付内部客户们不断变化的种种需求。

低代码(Low code)

与无代码”赋能“不同,低代码的核心是”解放“:将工程师从他们不想写的代码中解放出来,投入到更高价值、更想写的代码。

有哪些是工程师们不想写的代码?

  • 工程脚手架: 配环境、搭测试框架、做自动部署... 一个工程项目的前几小时甚至前几天,很有可能需要花在这些脚手架上。为减少这些重复枯燥的”造轮子“,一系列低代码平台开始崭露头角:Circle CI的一键部署,Wayscript的云端脚本运行环境,Mabl的自动测试平台,等等。

以Circle CI为例,想要自己搭建一个部署流水线,需要手动设置每个步骤的前后依赖关系,连接代码托管系统,提供回滚、报错、重试等复杂操作。而使用了Circle CI服务,只需要一个简单、描述性的配置文件,其余交给平台完成即可,所有的部署情况都可以通过Circle界面控制和监控。对一个中小公司来说,这几乎能解放一两个运维工程师的生产力。

CircleCI的系统架构(来源:CircleCI)

另一个很好的例子,是数据行业当红产品Databricks。对数据科学家、数据分析师来说,配置一个大小合适、高效的Spark底层环境,十分令人头疼。他们所想要的,只是一个熟悉的Jupyter Notebook或者SQL query界面,连接生产数据,可以用熟悉的Python、R或SQL语言,跑各种分析和建模。Databricks准确的抓住了这个痛点:”一键“配置集群,离线后自动待机,根据运算强度自动调整机器数量,让这些用户从不想干的活里解放出来,专心于他们的”本职工作“。

  • 陌生技术栈与团队短板:

硅谷很早开始流行”全栈工程师“这一概念,然而即使是全栈工程师,通常也会有自己的专精。在团队够大的情况下,各个技术栈都有多人专门负责。

对”全栈工程师“的调侃:如果你再给我指派一个技术栈,我就要栈溢出了(来源:Twitter)

中小创业公司则不然,工程师团队往往有一两个专攻的方向,在其他领域则比较陌生。比如一个做企业分布式数据库的初创,早期很可能不会多招前端工程师。于是,如果他们想要向用户提供一些可视化服务,就会考虑Cube.js或者Superset这样的低代码产品。

某一些技术栈正在经历快速的变革,在变得更为强大、标准化的同时,也造成更为陡峭的学习曲线。例如基础架构与运维、数据工程领域,业界尚未对最佳实践达成共识,市场上有各种各样的选择,几乎每个月都能看见新的工具、库出现,学习成本很大。

值得注意的是,低代码产品与API产品(Stripe、Twilio等)都有着“解放工程师生产力”的使命,但存在着一些区别。从产品层面来说,低代码产品不仅仅提供API,而更是提供了一个环境,来运行用户的代码、配置。API产品则通常以代码的形式,被整合到一个软件项目中,因此有更高的灵活度。

低代码服务的收费模式更为多样,有按用户数收费(Wayscript、Circle CI),按用量收费(Databricks),也有按功能收费(Repl.it),而API服务通常按照用量收费。

这个低代码、无代码系列的上篇,为这个火热的领域做了一些梳理与分类,并且描绘了他们提供的价值(实际或感知的)。

请读本系列的第二篇探讨怎么冲这股低代码、无代码的浪。

如果您喜欢所读的内容,请用email订阅加入“互联”。要想读以前的文章,请查阅《互联档案》。每周一次,新的文章将会直接送达您的邮箱。请在TwitterLinkedIn、Clubhouse(@kevinsxu)上给个follow,和我交流互动!