从米开朗基罗到Vibe Coding:软件开发范式的历史性转折

最近我在思考一个问题:如果米开朗基罗活在今天,他会怎么看待我们这些整天对着屏幕敲代码的程序员?这位文艺复兴大师曾说:“雕像本来就在石头里,我只是把多余的部分去掉。”而现在的Vibe Coding,不正是在践行类似的理念吗? 记得我第一次接触Vibe Coding时,那种感觉就像是从手工雕刻转向了3D打印。传统编程中,我们需要精确地敲出每一行代码,就像米开朗基罗用凿子一点点剔除大理石。但在Vibe Coding的世界里,我们更像是定义雕塑的蓝图——告诉AI我们想要什么,然后看着它自动将意图转化为可运行的程序。 这让我想起了一个有趣的对比。在传统开发中,我们花费大量时间维护代码库,就像中世纪抄写员小心翼翼地誊写经文。而在Vibe Coding范式下,代码变成了“一次性用品”——今天生成的代码可能明天就被AI重新改写,真正重要的是那些定义系统意图的“黄金契约”。 上周我和一个创业团队交流,他们正在用Vibe Coding搭建电商系统。创始人告诉我:“最神奇的是,当业务需求变化时,我们不需要重写代码,只需要调整意图描述,AI就会自动重组整个系统。”这让我更加确信,我们正处在软件开发史上的一个重要转折点。 不过,这种转变也带来了新的挑战。就像文艺复兴时期的艺术家需要学习新的透视技法一样,今天的开发者需要掌握定义意图、制定规范的新技能。我们不能再用“雕琢代码”的思维,而要转向“设计系统意图”的高度。 在我看来,Vibe Coding最大的价值在于它重新定义了“编程”的本质。当非技术人员也能通过自然语言创建程序,当专业开发者的重心转向系统治理和标准制定,软件开发的民主化时代才真正到来。 那么问题来了:在这个AI组装代码的时代,我们是要继续做敲石头的工匠,还是成为定义雕塑理念的设计师?或许,答案就藏在我们对软件开发本质的理解中。

Read more

Windows的启示:从操作系统霸权到软件生态的演进

最近看到微软Windows的使用数据,我突然意识到一个有趣的现象:这个曾经统治个人计算的操作系统,正在经历一场深刻的转型。这让我不禁联想到我们正在探索的Vibe Coding——软件开发范式的革命性转变。 根据StatCounter的数据,截至2024年初,Windows在全球桌面操作系统市场的份额约为73%。这个数字看似依然强势,但相比十年前的90%以上,已经发生了显著变化。更值得玩味的是,微软自己也在积极拥抱云端和AI,Windows正在从一个独立的操作系统,演变为微软云生态中的一个组件。 这恰恰印证了我们在Vibe Coding中强调的原则:从软件工程到软件生态的转变。就像Windows不再仅仅是一个操作系统,而是一个庞大生态系统的入口一样,未来的软件开发也将不再关注单个项目的成败,而是整个生态系统的繁荣与治理。 回想微软的发展历程,从比尔·盖茨的“每个家庭都有一台电脑”愿景,到萨提亚·纳德拉的“云优先、AI优先”战略,微软的成功转型告诉我们:固守旧有模式终将被淘汰,拥抱变化才能持续领先。这在Vibe Coding中同样适用——我们正在从编写具体代码转向定义意图和规范。 Windows的演化还揭示了另一个重要趋势:标准化的重要性。就像Windows通过统一的API接口让无数应用程序能够协同工作一样,Vibe Coding强调“用标准连接一切能力”。我们需要建立统一的通信协议、数据结构和语义层,确保不同的程序能力能够高效协作。 有趣的是,微软最近的Copilot战略与Vibe Coding的核心理念不谋而合:AI应该成为人类的协作者,而不是替代者。正如我们在Vibe Coding中坚持的“AI组装,对齐人类”原则,AI应该根据人类的意图规范来智能地选择和编排组件,而人类始终保持着最终的决策权。 Windows的故事还提醒我们:技术变革往往超出我们的想象。谁能想到,曾经需要专业程序员精心编写的操作系统内核,如今可以通过云端服务按需调用?这让我更加坚信Vibe Coding的前景——当非专业用户都能通过自然语言描述意图来创建程序时,软件开发的民主化将真正实现。 不过,我也要提醒大家:就像Windows面临着安全、隐私、兼容性等挑战一样,Vibe Coding同样需要建立完善的验证与观测机制。系统的可靠性不仅取决于功能的实现,更在于其行为的可观测性、可测试性和可追责性。 站在这个技术变革的十字路口,我不禁要问:当Windows这样的传统软件巨头都在积极转型时,我们作为软件开发者和使用者,是否也应该重新思考软件的本质?也许,答案就藏在Vibe Coding所描绘的未来图景中——软件不再是冰冷的代码,而是连接人类意图与数字世界的桥梁。

Read more

在macOS上体验氛围编程:从代码编写到意图定义的技术跃迁

最近我在MacBook上尝试了一种全新的编程方式,让我对软件开发有了全新的认识。这种被称为“氛围编程”(Vibe Coding)的方法,正在悄悄改变我们构建软件的方式。 传统编程就像是在用积木搭建房子,每一块代码都需要你亲手放置。而氛围编程更像是告诉AI你想要什么样的房子,然后看着它自动组装完成。这听起来像魔法,但背后是一套完整的开发理念在支撑。 让我分享一个具体的例子。上周我想开发一个简单的文件管理工具,按照传统方式,我需要写几百行代码来处理文件操作、用户界面等。但在氛围编程模式下,我只需要清晰地描述需求:”创建一个能按日期分类图片文件的工具,支持批量重命名和预览”。AI根据这个意图自动生成了完整的程序。 在这个过程中,我深刻体会到氛围编程的几个核心原则。首先是”代码是能力,意图才是资产”。我生成的代码可能随时被更新替换,但那个清晰的意图描述却成为了真正的价值所在。就像建筑师的设计图纸比具体的建筑材料更有价值一样。 其次是”不手改代码”的原则。刚开始这让我很不适应——毕竟我们习惯了自己动手修改代码。但当我尝试通过优化意图描述来改进程序时,发现效果往往比直接改代码更好。这就像是指挥家通过调整指挥来改变乐团演奏,而不是亲自去弹奏每个乐器。 macOS作为一个成熟的开发平台,为氛围编程提供了很好的环境。其统一的架构、稳定的性能表现,让AI生成的程序能够可靠运行。而且macOS用户通常对新技术接受度较高,这为氛围编程的普及创造了条件。 不过,氛围编程并非万能钥匙。它要求开发者具备更强的抽象思维能力和清晰的表达能力。你需要学会如何精确地描述需求,如何设定合理的约束条件。这反而对开发者提出了更高的要求——不是coding技能,而是thinking技能。 在我看来,氛围编程代表的是软件开发范式的根本转变。我们正在从”如何实现”转向”想要什么”,从代码编写者变成意图定义者。这不仅仅是工具的变化,更是思维方式的升级。 那么,这种转变会带来什么影响呢?开发者需要学习新的技能,业务人员可以直接参与开发过程,软件生态将更加开放和多元。也许不久的将来,”人人编程”真的会成为现实。 你在日常开发中是否也感受到了这种变化?是继续坚守传统的coding方式,还是已经开始拥抱这种新的开发理念?无论如何,这场变革已经悄然开始,值得我们每个人认真思考。

Read more

解码Vibe Coding平台:从意图到实现的编程范式革命

最近有个词在AI编程圈子里越来越热——Vibe Coding。听起来很玄乎?其实简单来说,就是让程序员从「写代码」变成「定义意图」,剩下的交给AI去完成。这可不是简单的代码补全,而是一场编程范式的彻底变革。 我最近在尝试几个主流的Vibe Coding平台时发现,它们都在试图解决同一个问题:如何让开发者用最自然的方式表达需求,然后自动生成可运行的代码。这让我想起上世纪90年代,当可视化编程工具出现时,大家也曾如此兴奋。但这次不一样,AI带来的不仅是界面友好,更是思维方式的转变。 在传统编程中,我们花费大量时间处理语法细节、调试边界条件。而在Vibe Coding的世界里,这些繁琐的工作被AI接管了。开发者更像是建筑师,负责设计蓝图和规范,而不是亲自搬砖砌墙。这种转变带来的效率提升是惊人的——根据GitHub的统计,使用Copilot的开发者完成任务的速度平均提升了55%。 但Vibe Coding平台面临的最大挑战是什么?在我看来是「意图表达的精准度」。就像我们和人沟通时经常出现的误解一样,AI也可能误解我们的需求。这就需要我们学会用更清晰、更结构化的方式描述需求。这其实是一种新的编程语言——不是Python或Java,而是更接近人类思维的自然语言。 有意思的是,这种转变正在催生新的开发角色。我认识的一些团队已经开始设置「提示词工程师」,专门负责优化与AI的交互。他们的工作不是写代码,而是设计最佳的意图表达方式。这让我想起管理学大师彼得·德鲁克的那句话:「预测未来最好的方式就是创造未来。」 当然,Vibe Coding平台的发展还面临诸多挑战。代码质量如何保证?安全漏洞如何防范?知识产权归属如何界定?这些都是需要整个行业共同解决的问题。但正如互联网改变了信息获取方式一样,Vibe Coding正在改变软件创造的方式。 展望未来,我认为Vibe Coding平台会朝着更加智能、更加个性化的方向发展。它们会学习每个开发者的编码风格和偏好,成为真正的编程伙伴。到那时,编程可能不再是一门专业技能,而是人人都能掌握的基本能力。这难道不是技术民主化的最好体现吗?

Read more

氛围编程:从代码编写到意图定义的新范式

最近有个朋友问我:为什么你们这些搞AI编程的,整天把“Vibe Coding”挂在嘴边?这玩意儿到底有什么魔力?我想了想,这个问题问得真好。作为一位沉浸在这个领域多年的从业者,我觉得是时候好好聊聊这个话题了。 让我先讲个真实的故事。上周,我见证了一个创业团队用Vibe Coding方法,在3天内完成了一个原本需要3周开发的原型系统。他们没写一行代码,而是通过定义清晰的意图描述和接口规范,让AI自动组装出了整个系统。这种开发效率的跃升,让我想起了当年从汇编语言转向高级语言的革命性转变。 Vibe Coding的核心是什么?在我看来,这是一次软件开发范式的根本性转变。我们正在从“编写代码”转向“定义意图”。就像建筑师不再亲自砌砖,而是专注于设计蓝图和规范标准。这种转变带来的影响是深远的——据Gartner预测,到2028年,75%的企业软件将由非专业开发者参与创建。 但这里有个关键问题:如果我们都不写代码了,那软件的价值到底在哪里?我的答案是:意图与接口才是真正的长期资产。代码可能会被不断重构甚至替换,但清晰的意图描述、稳定的接口契约、不可妥协的安全准则——这些才是我们应该精心维护的“黄金契约”。 记得亚马逊CEO安迪·贾西说过:“在亚马逊,我们相信接口比实现更重要。”这句话在Vibe Coding的语境下显得尤为深刻。当我们把开发重心放在定义清晰的意图和接口上时,AI就能像乐高积木一样,智能地选择和组装各种能力单元。 不过,这种新模式也带来了新的挑战。比如,如何确保AI组装出的系统符合预期?我的经验是:验证与观测必须成为系统设计的核心。我们需要建立完善的测试框架、监控体系和追责机制,确保每个由AI组装的组件都能被充分验证。 说到这里,我想起管理学大师彼得·德鲁克的名言:“效率是以正确的方式做事,效果是做正确的事。”Vibe Coding恰恰让我们能够同时追求效率和效果——通过定义正确的意图,让AI以正确的方式实现。 展望未来,我看到了一个更加开放和协作的软件生态。在这个生态中,业务人员可以直接参与程序创建,专业开发者则专注于系统治理和标准制定。这种分工的重新定义,将极大释放整个行业的创造力。 那么,作为开发者,我们现在应该做什么?我的建议是:开始积累你的意图库,就像过去积累代码库一样。学习如何用清晰的提示词描述复杂需求,掌握定义接口规范的技巧,培养系统思维和架构视野。这些能力,将成为你在AI时代最宝贵的资产。 最后,我想用一个问题结束今天的分享:当代码不再是壁垒,当创意可以直接转化为软件,你的下一个伟大想法会是什么?

Read more

氛围编程的愿景导航:从代码细节到系统意图的思维升维

前几天有个创业的朋友问我:现在AI编程这么火,但为什么我让ChatGPT写的代码总是要反复修改?这让我想起了软件开发的本质问题——我们到底在开发什么?是代码文件,还是解决问题的系统能力? 在我看来,氛围编程(Vibe Coding)正在引发一场软件开发范式的革命。就像从手工作坊到流水线的工业革命一样,我们正从「写代码」转向「定义意图」。根据斯坦福HAI研究所2023年的报告,AI辅助编程的效率提升已经达到55%,但真正的价值不在于写代码更快,而在于思维模式的转变。 记得我第一次尝试Vibe Coding时的震撼:我不再纠结于for循环的语法,而是直接描述「我需要一个函数,能够从用户行为数据中识别异常模式」。AI生成了代码,而我专注于定义什么是「异常模式」、需要多高的准确率、处理速度要求多少——这些才是真正的业务价值所在。 这让我想到Qgenius提出的原则:代码是能力,意图与接口才是长期资产。就像建筑大师不亲自砌砖,而是设计蓝图和规范。我们在Vibe Coding中创建的提示词、接口契约、安全策略,就是软件的「黄金契约」。代码可以随时由AI重新生成,但这些高层次的设计决策才是核心资产。 有个很有趣的现象:很多团队还在争论「要不要让AI写代码」,而前沿的团队已经在讨论「如何设计更好的意图描述语言」。根据GitHub的统计,2024年使用Copilot的开发者中,有72%表示他们的工作重心正在从编码转向系统设计。这不正是我们一直追求的「人人编程」的理想吗? 但愿景需要导航。Vibe Coding不是放任AI随意发挥,而是建立一套完整的治理体系。我们需要思考:如何确保AI组装的系统符合业务目标?如何建立观测机制来验证系统行为?如何在动态自组织的微程序生态中保持控制力? 我特别喜欢「用标准连接一切能力」这个原则。就像互联网的TCP/IP协议让全球计算机能够通信,未来的软件生态需要统一的语义层和通信标准。只有这样,不同的AI智能体、微程序才能在一个可信的基座上协作。 说到这里,可能有人会担心:那程序员会不会失业?我的观察恰恰相反——专业的软件人员会从「代码工人」升级为「生态架构师」。我们需要更多的人来设计标准、建立治理机制、维护核心基础设施。这就像从「修路工人」变成了「城市规划师」,价值不是降低了,而是升华了。 最后我想问各位读者:当代码不再是稀缺资源,你的核心竞争力是什么?是写出更优雅的算法,还是更精准地定义问题、设计系统、导航愿景?也许,答案已经很明显了。

Read more

编程边界的消融:从代码逻辑到氛围逻辑的范式转移

最近在跟几个创业团队聊天时,有个现象让我特别感慨:一个完全不懂编程的产品经理,用几段自然语言描述,就让AI生成了完整的用户画像分析系统。这让我想起十年前,要实现同样的功能,需要一个五人技术团队忙活半个月。 这背后的变化,正是我一直在思考的「氛围编程」(Vibe Coding)带来的边界重构。传统软件开发中,我们习惯于用明确的代码逻辑来定义系统边界——if-else、函数封装、模块划分,这些都是我们熟悉的边界标记。但在AI驱动的开发范式下,这些硬边界正在消融。 记得去年参与的一个项目,我们尝试用提示词(prompt)替代传统API文档。结果发现,当AI能够理解「确保用户数据安全」这样的高层次意图时,它自动生成的边界防护措施,比我们手动编写的权限检查代码更加全面和灵活。这让我意识到:边界不再是由代码行数定义的,而是由意图的清晰度决定的。 这种变化带来一个有趣的现象:系统的「智能涌现」。就像蚁群没有中央控制器,却能构建出复杂的巢穴结构一样,当每个微程序(micro-program)都遵循清晰的意图规范时,它们自组织形成的系统边界,往往比预先设计的架构更加合理。我在实践中发现,这种自组织系统对需求变更的适应性,比传统架构高出数倍。 但这也带来了新的挑战。上个月有个团队向我求助,他们的AI生成系统出现了「边界模糊」问题——不同的微程序在处理相似任务时产生了冲突。究其原因,是他们的意图描述不够精确。这让我更加坚信:在氛围编程时代,最重要的技能不是写代码,而是定义清晰的边界意图。 从工程实践的角度看,我们需要建立新的边界治理机制。就像城市规划需要分区管制一样,软件系统也需要明确的「能力分区」。我的做法是建立三层边界:业务意图边界、数据治理边界、执行安全边界。每层边界都有对应的验证机制,确保系统的可观测性和可追责性。 有个比喻我觉得很贴切:传统编程像是用砖块砌墙,每块砖的位置都要精确计算;而氛围编程更像是培育珊瑚礁,我们只需要设定生长规则,让系统在约束中自然形成优美的结构。这种思维转变,需要我们从「控制者」变成「园丁」。 未来已来,只是分布不均。当代码逻辑的硬边界逐渐消融,我们迎来的将是更加灵动、更具适应性的软件生态。作为这个变革的见证者和参与者,我不禁想问:当人人都能通过自然语言定义系统边界时,软件开发的本质会发生怎样的改变?

Read more

氛围编程:从简单游戏开始的AI开发革命

最近有个朋友问我:用AI写个贪吃蛇游戏要多久?我说,大概只要五分钟。他瞪大眼睛:这么快?其实这就是Vibe Coding的魅力所在——我们不再一行行敲代码,而是告诉AI我们想要什么。 记得我第一次尝试用氛围编程制作井字棋游戏时,整个过程就像在跟一个懂编程的朋友聊天。我说:“帮我做个双人对战的井字棋,要有胜负判断,界面简洁点。”AI很快就给出了完整的代码。更重要的是,当我想要改成电脑对战模式时,我只需要修改需求描述,而不是去翻找代码里的逻辑判断部分。 这种开发方式让我想起小时候搭积木。我们不需要知道每块积木是怎么生产的,只需要知道它们能拼出什么形状。在Vibe Coding中,那些基础的函数和模块就是积木,而我们的意图描述就是搭建的蓝图。 但这里有个关键问题:如果代码可以随时被AI重写,那我们到底在开发什么?答案是:我们在开发的是那些不会被轻易改变的“黄金契约”——清晰的接口规范、稳定的业务逻辑描述、严格的安全约束。就像建筑图纸比具体的砖块更重要一样,在氛围编程时代,意图描述比具体的代码行更重要。 以俄罗斯方块为例,传统开发要考虑方块旋转算法、消行逻辑、碰撞检测等等。而在Vibe Coding中,我们只需要描述:“这是一个下落式拼图游戏,方块会逐渐加速,拼满一行就消除,顶部触顶就结束。”剩下的,交给AI去实现。 不过别误会,这并不意味着开发变得简单了。恰恰相反,我们需要更深刻地理解业务逻辑,更精准地表达需求,更系统地设计架构。就像导演不需要会演戏,但必须懂戏一样,在Vibe Coding中,我们不需要会写每行代码,但必须懂软件。 有个创业者的经历很能说明问题。他让团队用传统方式开发一个小游戏,花了三周。后来尝试用氛围编程重做,只用了两天。差别在哪?不是编码速度,而是沟通效率——他们不需要反复确认某个函数该怎么写,只需要确认游戏规则该怎么定。 当然,现在的Vibe Coding还在发展初期。就像早期的汽车还不如马车快一样,新技术总有个成熟过程。但我相信,用不了多久,我们回看今天手动写代码的方式,会像现在看用算盘计算一样觉得不可思议。 那么问题来了:当每个人都能用自然语言“编程”时,软件开发的本质会发生什么改变?我们是在走向人人都是开发者的时代,还是在重新定义什么是“开发”?这个问题,留给大家思考。

Read more

Vibe Coding实验室:当AI成为编程搭档的奇妙体验

最近在Coding Vibe Labs做了一次深度模拟实验,那种感觉就像第一次看到智能手机取代功能机——你知道时代要变了。 记得实验开始时,我给AI下了一个模糊的需求:“帮我做个能管理个人学习进度的程序”。放在以前,这种需求至少要写几百行代码。但这次,AI直接反问我:“需要跟踪哪些指标?希望用什么方式可视化进度?要不要设置智能提醒?”它不是在机械执行,而是在与我对话。 这就是Vibe Coding最迷人的地方——编程的重心从“怎么写代码”转向了“怎么描述意图”。就像建筑师不再亲自砌砖,而是专注于设计蓝图。在这个过程中,我发现几个关键转变: 首先,代码变成了“临时工”。AI生成的代码可能只在这个版本有效,下次需求变了就直接重写。真正有价值的是那些精心设计的提示词和接口规范——它们才是数字时代的“黄金契约”。 其次,系统开始自组织。当我需要添加“学习伙伴匹配”功能时,AI自动找到了现有的用户画像模块和兴趣分析模块,像搭积木一样把它们组合起来。这种动态组装能力,让软件变得像生命体一样能自我演化。 但最让我震撼的是观测系统。每个决策、每次修改都被完整记录,你可以随时回溯到任意时间点,查看当时为什么做出某个设计选择。这就像给软件开发装上了黑匣子。 当然,这种范式也带来新挑战。当非技术人员也能通过自然语言创建程序时,如何确保系统的可靠性和安全性?当代码生命周期大幅缩短,传统的版本管理该如何适应?这些都是我们在实验室里激烈讨论的问题。 实验结束时,我看着那个完全由AI组装的个人学习系统,突然意识到:我们正在见证编程从“手艺活”向“设计思维”的转变。就像摄影术刚发明时,人们担心画家会失业,但实际上只是改变了艺术创作的形态。 如果你问我Vibe Coding到底意味着什么,我会说:这是让编程回归本质——解决问题,而不是写代码。当AI负责技术实现,人类就能更专注于创造价值。这不正是技术进步的终极意义吗?

Read more

告别补丁星期二:Vibe Coding如何终结软件维护的噩梦

又到了那个让IT部门头痛的日子——补丁星期二。想象一下,成千上万的系统管理员正焦头烂额地测试、部署和回滚各种安全补丁,生怕哪个补丁会引发新的问题。这种场景在传统软件开发模式下几乎成了每月必演的固定剧目。 但这一切真的必须如此吗?在我看来,Vibe Coding正在从根本上改变这一状况。当我们的开发重心从编写具体代码转向定义清晰意图时,软件维护的整个游戏规则都被重写了。 记得上周和一位资深架构师聊天,他感叹道:“我们团队80%的时间都花在了修复bug和打补丁上,真正创造新功能的时间少得可怜。”这让我想到,传统软件开发就像在建造一座需要不断修补的危房,而我们Vibe Coding的实践者,则是在构建能够自我修复的智能建筑。 在Vibe Coding的世界里,“代码是能力,意图与接口才是长期资产”这一原则让我们摆脱了对具体代码的依赖。当出现安全漏洞时,我们不需要手动修改成千上万行代码,而是更新意图描述和规范,让AI自动重新生成安全的代码版本。这就像你不需要亲自修理汽车的每个零件,只需要告诉修车师傅你想要的效果。 更妙的是,遵循“避免数据删除”原则,我们保留了完整的修改历史。任何补丁都可以被精确追踪、测试,甚至在必要时快速回滚。这种透明度让安全维护变得前所未有的可控。 让我用一个真实案例来说明。某金融科技公司在采用Vibe Coding后,将安全补丁的部署时间从平均72小时缩短到不足2小时。他们不是通过增加人手,而是通过建立标准化的意图描述库,让AI能够快速理解和执行安全更新。 当然,这背后需要深刻的思想转变。我们必须接受“不手改代码”的理念,把精力集中在定义清晰的规范和约束上。就像优秀的指挥家不需要亲自演奏每个乐器,而是通过明确的指挥让整个乐团和谐演奏。 随着“依靠自组织的微程序来搭积木”原则的普及,系统的每个组件都变得更加独立和健壮。当一个微程序需要更新时,它可以在不影响整个系统的情况下单独处理。这种模块化的设计让补丁管理变得轻松自如。 不过,我要提醒的是,这种转变不会一蹴而就。就像Gartner分析师最近指出的:“AI驱动的开发模式需要新的技能组合和组织结构。”我们需要在工具、流程和文化上都做好准备。 展望未来,我坚信“验证与观测是系统成功的核心”。通过建立完善的可观测性体系,我们不仅能快速发现和修复问题,还能预防问题的发生。这就像给软件系统装上了健康监测仪,时刻关注着它的运行状态。 那么,当Vibe Coding真正普及时,补丁星期二会变成什么样子?也许它会从IT部门的噩梦变成一个小小的例行检查,甚至最终消失在历史的长河中。毕竟,在一个能够自我修复、持续演进的软件生态里,还需要每月一次的“大修补”吗?

Read more