蒋耀锴:剑桥毕业,硅谷敲代码8年,回国创业做低代码

2024-06-07 16:44

本文主要是介绍蒋耀锴:剑桥毕业,硅谷敲代码8年,回国创业做低代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是《开发者说》的第10期,本期我们邀请的开发者是蒋耀锴,曾在意大利、英国、美国读书,专长高性能计算、高容错分布式系统与软件工程,毕业后在硅谷的Medallia写了8年代码,19年回国创业做低代码,喜欢半夜里一边喝酒,一边写代码,业余时间都在旅行与投资,他好奇于坦桑尼亚人的爬山方法,也对《母猪的产后护理》感兴趣。如此有趣有货的程序员,不想了解一下吗?

1、请自我介绍一下

我小的时候在杭州出生,13岁的时候去了意大利,读的初中和高中,毕业去了英国剑桥读的计算机,在美国卡耐基梅隆大学读计算机的研究生,后来就一直在硅谷工作,在一家做CEM的公司Medallia做后端开发。2019年回国开始创业,一直到现在。

2、6岁接触电脑,9岁开始写代码,是什么体验?

小时候,我妈是浙江医科大学教供科的一个职工,在92年,我不到五岁的时候,他有一阵子会带回家一个纸键盘,当年键盘还是很贵的东西,大家也买不起,为了要练盲打,就做成纸键盘练习,我很好奇,问她这是什么东西?她说这是电脑的键盘。我就缠着她说要去看看那个东西是什么样子,她就把我带到那个机房里去,当时那些电脑还很金贵,进去还要穿鞋套,戴头套。这就是我第一次跟电脑打交道,我当时也不知道这东西到底能干什么,只是觉得这是一个非常有意思的机器。

在小学四年级的时候写下的第一行代码,那时候也不知道自己在干什么,我记得是用VB,写的第一个程序就是去画一个计算器。很多人第一次写代码都是写这个。

3、你在意大利、英国、美国都有读书经历,它们的优点与缺点是什么?

这很难对比,我在国内只上过小学,跟国内上学的人的交流而言,第一是在国外的标准答案少很多,我们的历史考试基本上就是写作文,高考是三道题,两个半小时,反正你就写,不管是引经据典也好,自己去论证也好,你要证明你的这个观点,从历史书籍中查找,引用历史学家的观点,或者逻辑推理也好,你得想办法证明你的观点,它的题目也非常庞杂,有些非常刁钻,比方说有考题是,如何看待《凡尔赛合约》对德国的抑制其实延迟了二战的到来?观点尽可以千奇百怪,重要是你要给出扎实的论证过程。

第二个是老师真的是非常的专业。我从来都没有觉得给我上课的老师,不懂他在说什么东西,他是真的对他的那一门课非常热爱,也非常精通,从来没有怀疑过他会不知道我的问题。我觉得这两点是很大的区别。

国外的学校管理上很开放,没有国内这么严格,在本科的时候,大三只要考一半的题,一张试卷,答对一半的题,就算100分的,你可以想上什么课就上什么课,有12门课,你只需要上6门,你也可以上12。最终考试你只要答对一半的题就可以了,有很多自己的选择。

当时我特别感兴趣的是硬件,选了一门课computer architecture,还有一门计算机的理论课叫foundations of computer science,里面讲的东西我都不知道有什么用,但到了解决困难问题的时候。我非常感谢当时老师教了我这些东西,包括现在自己做产品的时候,真的用到了当年学的东西,这个感觉真的很好。

4、最佩服的程序员是哪位?中国程序员能开发出ChatGPT这样的产品吗?

我最佩服的程序员是一个挪威人,我在实习的时候碰到他,他是让我第一次见识到有人对程序的分析可以到入木三分的地步,从更高层的架构,软件工程的代码结构,JVM的调用,CPU指令的翻译,他可以在每一层都找到问题。这是我第一次见到有人可以真的做到所谓深入浅出,他真的震惊到我了。
他知道四个以下的排序在CPU内部是有特殊的电路的,知道除法,很多时候我们也知道,但是根本就不会想这个事情。

有一次我们在调一个性能,当时是为了要做一个set,这个set直接用java的性能是不够的,因为那个set的存取是非常的高频,我们要自己去做那个set。是专门针对int做那个set,要考虑它的load factor,也要考虑它的size的成本,我们要做的全部都考虑了,最后性能还是不够。

我就在那边看了大概一个礼拜,百思不得其解,我们做了所有的尝试,还是不行,他说我们看一下到底CPU跑的哪个指令是最慢的。如果他不跟我说,我都不知道intel有一个软件叫什么VTUNE,这个软件可以告诉你哪一个汇编的指令花的时间最长,它还会分解这个指令运行时间。

最后找到了问题所在,我们在算哈希值的时候不是一个int to int,用了一个除以质数取余的方式去算,正常情况下,我会觉得那你除以一个大的质数,取个余可以保证它的分布非常的平均,就是因为这个除法。造成了说,你这里就用掉了七个周期。然后说不要做除法了,直接做乘法吧,做乘法,取余的时候用二的几次方,直接CPU有专门电路去做就行了,一上去之后马上性能暴涨五倍,性能平衡这个问题就这么解决的,我就觉得他太牛逼了,如果不是他告诉我可以一层一层的去观察,我永远都想不到Hash function是性能瓶颈,我永远在想array access是瓶颈,他让我感觉是人外有人天外有天的感觉。尤其是他又在面对面的教我。

国内的环境根本就不适合GPT的产生,它产生的必要条件,第一要有闲人,要有人不断的在钻研,GPT的架构是谷歌出来的,而且是17年出来的,那个时候的谷歌还没有说要什么financial discipline,什么东西都还没开始,就是让你去做自己的事情,本质上就是有闲人。

另一方面它是事故,transformer这个东西,算力得到位,那算力到位的前提是比特币,为什么,GPU那阵子发展那么快是因为比特币在那边打,大家都开始挖矿,比特币暴涨造成了显卡供不应求,那个nvidia就有足够的钱去研发更牛逼的芯片来,最终带来的价值是transformer model可以利用到这么多的算力,并且产生了质变。比特币之前GPU又是干什么的,是在玩游戏的,这种不务正业的事情在国内怎么可能会被鼓励去做,你会觉得这些对社会的进步没有帮助。

世界的发展,我觉得是有随机性的,很多东西都是从一些看似没什么用的东西突变过来的。

5、Zion的灵感来自哪?它是一款什么样的产品?

从2015年开始,我跟合伙人一起在做各种各样的项目,这些项目一般都是商业模型的创新,创新就必然带来对新软件的需求,因为一个商业模型都要有一个软件去承载。当时我们还在上班,都是业余的时间在搞,搞过程中就觉得非常的烦躁,天天就要重新做一些数据库建表,把这个东西通过API暴露出来,前端去接,接完了之后写个页面react的各种状态的变化,还要调CSS,感觉非常的重复而烦躁,总觉得这些事情不应该花这么多昂贵的工程师这么久的时间。它的业务逻辑也没有多复杂,工程师也没有在浪费时间,为什么产出的量没有想象的那么多,本质上是因为我们在重复的做事情。

还有一点,这些业务逻辑需要一个经过了系统的计算机教育的人去做吗?好像也不需要。所以我们就想要做一款解决这些问题的产品。不管是移动端软件也好,还是网页软件也好。它都是一个前端,后面是个数据库。前端大家都用jquery,那其实是比较难管理的,当你有了这个react的virtual dom之后,就轻松多了,你只需要管理状态就可以了,不需要管理事件触发对UI的修改,它已经帮你抽象了这一层,我们的产品就是管理这个状态,之前的项目,我们用的是graphql和kubernetes这一套,API那一层用graphql。

存取数据怎么弄,我们看到了一个软件叫做hasura,它可以直接将数据库以某种形式暴露成graph的API,你就可以在里面做到增删改查,还带有强类型,后端选了个springboot。数据库用的是postgres,因为我本身对postgres很熟,也做了很多的对比。首先数据库的schema怎么办?是我们帮用户管还是我们用C的类似mongodb的方式去做,全部都是json的,我们选择了用schema帮你做migration。

对于使用无代码的人来说,他更加难以找到schema对不上之后的脏数据,怎么排查问题更加难处理,你要做的是给这些人做更多的护栏,而不是给他更多的自由。无代码的本质是更多的护栏,不是更多的自由,自由的背面都是责任,你让一个没有能力承担责任的人,去承担代码的选择带来的责任,这本身就是不合理的,所以你要做的是尽量限制他能做的事情,能做的选项,但是不限制他能够产生的场景,就是所谓的holy grail,你到底灵活在哪,你的封闭在什么地方?

6、Zion的典型应用场景是什么,相比请一个员工,到底能省多少钱?

Zion最重要的问题是要服务的人,我们给他的定义,第一大概是智商115以上的,智商115的数字怎么来的,这个人不管实际学历如何,他要相当于一个average研究生或者一个优秀本科毕业生的水平,这群人已经是前16%聪明的人了。为什么是这样?因为不管用无代码还是用代码,软件的核心难点是抽象能力和理清需求的能力,东西是不变的,如果你理不清需求,不管有代码无代码都做不出来。无代码开发本质还是开发,还是将实际业务映射成数字逻辑。需要的是有自学能力和业务理解能力的人

还有一个,开发者不需要经历过专业的代码训练。经过我们自己的测算。聪明人20到30个小时之间,他就已经上手了,他就可以开始做软件了。

我们现在跑的典型用户。他原来在亚马逊做产品经理,后来不得不接手家族企业了,他就回到了海南。接手的家族企业是个批发店,批发店底下可能有几百个零售店跟他对接。他不会写代码,但他用我们的软件搭建了自己的零售商管理系统,让他们可以订货,可以讨价还价,可以追溯货到哪里,仓库管理系统。只要零售商一下单,价格谈好了,仓库员工的手机就会叫,就可以去理货了,你还要确保这个货理出来是对的,软件里面还有一个扫码的,快递的track的系统,全部都里面。

用传统的开发去做这件事,怎么也要个几十万的成本吧,你招外包,没有办法很好的跟他沟通你的业务需求。他是老板,他特别懂自己的商业是怎么运作的,他是专门从海南飞过来,在我们这里,做了三天,就做好了,他现在打算把这一套东西拿出去当一个saas往外卖,作为解决方案卖给别人。那你说他的开发成本有多少。

Zion还有一个优点,通常一个页面,同一个Entity的列表可以有很多种方式呈现,每一种呈现方式需要的字段是不一样的,需要join的这个表也是不一样的。是post表,这个时候需要看到的是有多少个comment,也有可能有个地方,要看到前三最新的三条comment。也有可能要看到author的头像。我们做到了只取你要的数据,最大程度保证它的性能。我们最大的客户是一个做题的,他的做题记录已经有6700万条了,我们就是一个非常简单的数据库,没有做任何其他的东西。不管是sql也好还是数据库的表的结构也好,还是数据库的表上面的索引也好,都是自动帮你去优化的,用比较便宜的硬件就可以支持,这些是我们提供的一些价值。

7、低代码未来会只有一个输入框吗?输入你的描述就可以生成一款应用。

这是常见的AI versus 低代码的问题。

AI在低代码上面会有两种体现,一种是让你的客户做出来有AI能力的软件,直白一点,你可以低代码的搭建agent,而不是需要人用代码来搭建agent。第二是代码编辑器有AI的copilot,就跟我们的Github copilot在VS里面是一个道理。这两个是相辅相成的,它并不是一个互斥的关系。

至于人们的想象,我讲一句话就可以生成一个软件。这是根本不可能的事情,如果你把AI当成一个人,他是个很聪明的人,是个万能码农。你找一个万能码农,你跟他说一句话,他也做不出来,因为你说的那句话,天然就是缺乏细节的。软件的每一个环节都利用AI,把相对模糊的、含有歧义的自然语言表达的东西变成一个精准的、结构化的结果,程序本身上是结构化的,对于结构化的一个状态的改变,我们是需要做的,所有的IDE一样,我们都有一个copilot。

Zion本质上是开发工具加上一个部署平台,我们所有的功能都必须是正交的,所谓功能的正交就是指每一个功能都是不能有另外的功能去替代,他们是不重复的。第二个,最理想的就是所有的功能加起来,能够覆盖开发者需要的方方面面,当然这得花很多时间去做。
我们有一个数据库的功能,有AI的功能,那么数据库就要能用AI,A I也要能用数据。又引入了第三方API 也是一样,数据库要能够直接从它里面的字段去作为输入用到API里面。

8、自己最喜欢的产品有哪些?国内的产品大而全,国外的产品小而垂直,怎么看待两种设计思路?

我比较喜欢飞书,因为它的产品比较正交,所有的东西跟所有的东西都可以互动,我的文档可以在聊天里面,嵌入文档里面又可以有聊天记录,然后在搜索里面可以搜所有的东西,会议结论可以在聊天里,也可以在文档里,整个东西概念的数量虽然不多,但是组合起来的可能性是非常大的。

对于国内这些大而全的产品,我自己也非常惊讶,最可怕的是一个地图软件都会给你来借钱,所有的银行App都有商城,我都懵了。正常的情况下,银行是用来看我有多少钱和欠了多少钱的地方,你为什么要让我去买东西,还有电影票。

原因可能是国内产品对流量的变现没有止境,但没有想清楚要做什么,看到别人做什么赚钱就做什么,但这些边际投入的回报是很低的,我肯定是偏好一个简单的产品,我听歌,你就给我听歌,你不要给我借钱,我根本不想看到能借什么钱,我要借钱,我会去问银行的。

9、从码农到公司老板,最大的感受是什么?你最理想的第二职业是什么?

在很多人身上看到了曾经的自己,你在那个位置上面想过的事情,所以你会更加理解,相较于大部分的老板来说,我是更能理解码农到底在想什么,他们的态度为什么这个样子,所有会有更多的耐心,虽然我经常跟他们吵架,我还是会非常认真的跟他们解释。

做码农轻松多了,做老板的话你就得什么东西都得懂一点,虽然我自己不介意什么东西都懂一点,术业有专攻,有些东西就是做不好。在做码农的时候就不会有困扰,有一些事情做不好怎么办?做不好有人给你做。你做老板说做不好怎么办,那不行,你只要自己做不好。你招人都招不好,你都不会招人,所以你就没有办法,你一定要自己上,即便你有很多的知识储备,纸上得来终觉浅,书看的再多都是纸上谈兵,虽然纸上谈兵,但也比没有纸上谈兵还是要好一点,但是纸上谈兵跟真的干过这个事情的人相差还是很大的,所以就深深的感到自我的局限。

我自己是更喜欢对付死的东西。没有任何情感,不会对你进行反抗的东西,或者它的反抗是完全是根据你的输入的,不管是汽车也好。计算机也好,还是股票市场也好,只要你对了就给你奖励,只要你错了就打你脸,我非常喜欢这种东西。对付人的话,我对自己的认知是,我是一个很有人格魅力的人。但是另外一方面,我又不喜欢对付人。

我曾经一个爱好就是天天拿着公各种公司的财报在那一点点看,就为了理解一个行业是怎么运作的?我宁可这个样子,我也不愿意出去跟人聊天,我喝酒也是跟自己喝,有人会说你这是不是在喝闷酒,我一点都不闷,我觉得我非常的快乐。在21年的时候,有一阵子,我经常会半夜里一边喝酒,一边写代码,我很享受那种状态。

我的第二职业应该是做投资,我现在持有很多很奇怪的东西,我有一个秘鲁的磨金子的一个公司,把金矿砂提纯到90%左右金块,我会买各种地方的奇怪的玩意,有点像收集珍宝的样子。最近我在我在买国内养猪的股,为了这个东西,我看了很多乱七八糟的东西,比如说《母猪的产后护理》,为了知道养猪到底需要注意些什么东西,在豆粕价格高的时候,你怎么样给猪补充蛋白质,这种莫名其妙的东西。我都会去研究。

10、写代码以来,你最开心或影响深刻的一件事是什么?

我印象最深刻的一件事,真是有点创伤。当时我是跟数据库打交道,我当时那家公司卖给花旗它的saas,经常有人抱怨说他那个网页会时不时的崩掉,本来这事跟我没有什么关系,我是一个后端,你网页崩了,那不应该前端的事吗?后来,经过一堆人的排查,说这个东西是因为返回值在这里有问题,日常的返回值为什么有问题,后来发现是他数据库不断的在重连,我就觉得很奇怪,数据库重连在别的地方也没有,代码也没有改动。如果代码都一样,那它唯一的可能性是数据。只有可能数据或者配置不一样。

我花了两个礼拜去修复,他就是持续的崩掉,崩掉的时候db断连,我一边在看java的log,一边在看数据库的log。就看不出任何的端倪来,最后在数据库服务器的dmsg里面发现了了几个东西,写着什么ECC error.,我想会不会是内存坏了,就找那个运维,把花旗数据库的内存给换了,换了之后ECC error消失了,数据库重连也消失了,居然碰到了一个硬件造成的问题,还不是死机?只是数据库断联。花了我两个礼拜才看出来这个问题。当看出来那一刻,又觉得自己似乎升华了,就觉得我从此又知道一种failure mode了。

11、分享一下自己业余爱好?

我生活中最大的特点就是好奇心,美国的51个州,每一个州我都去过至少两遍,世界的各个地方都去转过,以前不觉得,现在觉得行万里路还是有那么点用,你对世界的理解会更丰富。美国中部的人的生活,跟美国两岸人的生活也不一样,秘鲁人爬山的爬法。坦桑尼亚人也有自己爬山的方法,非常有趣,这些都是我感兴趣的东西。

12、对于自己的生活与工作,未来有何期待?

我希望Zion可以提升更多人的效率,真正让一个开发者有惊艳的感觉,不仅可以帮你部署后端API的生成,甚至帮你做AI搭建的平台。对我来说,AI就是一个新的软件基础能力,不管你是react、java、postgres,还是ChatGPT,它都可以被更多的没有经历过专业训练的人去使用,不管是在国内还是国外,大概这就是我心目中的应许之地。

故事征集:

《开发者说》是我们最新推出的一个访谈栏目,邀请了一些国内外有趣的程序员来分享他们的经验、观点与成长故事,我们尝试建立一个程序员交流与学习的平台。

欢迎大家推荐朋友或自己来参加我们的节目,分享与对话是一件利他又利己的事。

这篇关于蒋耀锴:剑桥毕业,硅谷敲代码8年,回国创业做低代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1039726

相关文章

IIS 7.0 及更高版本中的 FTP 状态代码

《IIS7.0及更高版本中的FTP状态代码》本文介绍IIS7.0中的FTP状态代码,方便大家在使用iis中发现ftp的问题... 简介尝试使用 FTP 访问运行 Internet Information Services (IIS) 7.0 或更高版本的服务器上的内容时,IIS 将返回指示响应状态的数字代

MySQL 添加索引5种方式示例详解(实用sql代码)

《MySQL添加索引5种方式示例详解(实用sql代码)》在MySQL数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中,下面给大家分享MySQL添加索引5种方式示例详解(实用sql代码),... 在mysql数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中。索引可以在创建表时定义,也可

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Python实现一键PDF转Word(附完整代码及详细步骤)

《Python实现一键PDF转Word(附完整代码及详细步骤)》pdf2docx是一个基于Python的第三方库,专门用于将PDF文件转换为可编辑的Word文档,下面我们就来看看如何通过pdf2doc... 目录引言:为什么需要PDF转Word一、pdf2docx介绍1. pdf2docx 是什么2. by

Spring Security介绍及配置实现代码

《SpringSecurity介绍及配置实现代码》SpringSecurity是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorizatio... 目录简介Spring Security配置配置实现代码简介Spring Security是一个功能强

通过cmd获取网卡速率的代码

《通过cmd获取网卡速率的代码》今天从群里看到通过bat获取网卡速率两段代码,感觉还不错,学习bat的朋友可以参考一下... 1、本机有线网卡支持的最高速度:%v%@echo off & setlocal enabledelayedexpansionecho 代码开始echo 65001编码获取: >

Java集成Onlyoffice的示例代码及场景分析

《Java集成Onlyoffice的示例代码及场景分析》:本文主要介绍Java集成Onlyoffice的示例代码及场景分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 需求场景:实现文档的在线编辑,团队协作总结:两个接口 + 前端页面 + 配置项接口1:一个接口,将o

SpringBoot实现Kafka动态反序列化的完整代码

《SpringBoot实现Kafka动态反序列化的完整代码》在分布式系统中,Kafka作为高吞吐量的消息队列,常常需要处理来自不同主题(Topic)的异构数据,不同的业务场景可能要求对同一消费者组内的... 目录引言一、问题背景1.1 动态反序列化的需求1.2 常见问题二、动态反序列化的核心方案2.1 ht

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到

Kotlin Compose Button 实现长按监听并实现动画效果(完整代码)

《KotlinComposeButton实现长按监听并实现动画效果(完整代码)》想要实现长按按钮开始录音,松开发送的功能,因此为了实现这些功能就需要自己写一个Button来解决问题,下面小编给大... 目录Button 实现原理1. Surface 的作用(关键)2. InteractionSource3.