
01
设计编程
**“作为一个有创造力的人,最危险的想法就是你自认为知道自己在做什么。”**
**—— 理查德·汉明**
有件事一直困扰着我。似乎每年都有会有人尝试将编码流程向更“敏捷”或有效的方向优化。新的大师、新术语、程序员成为设计师好朋友的新承诺……都在以着创新和交付更好的软件的名义不断出现。
但也许我们需要考虑的问题根本不是优化我们的组织和流程的代码。相反,也许我们需要挑战编码的本质。
当然,出现了一些无代码平台。但绝大多数都没有认真解决创新或设计驱动价值的问题。
我们最好更仔细地看待这一点,因为今天,我们可能可以改变软件设计和开发。对于软件开发人员的大量短缺以及在创意和商业用途中利用设计的巨大需求,设计编程可能是我们一直在寻找的答案。

Noodl:一个专业的设计编程平台
1.1什么是设计编程?
设计编程是一种融入设计的创建和部署软件的方法。通常利用编程平台不仅包括经典程序员,还包括非工程师。
这种方法特别适用于高度迭代、设计驱动的方法,用于直接在市场或环境中测试最终用户的软件体验。
1.2它的核心是设计
就像设计思维改变了商业和创新思维一样,设计编程应该确保软件创建的每一步都能充分融合迭代、速度和用户反馈等方面,为用户探索新价值。1.3是编程,但不一定是代码
人们常常认为,如果某件事是编程,那么它必须是文本编辑器中的代码。除了代码,还有很多人不知道的几十种不同的编程方式。
通过这个经典的 Bret Victor 演讲你可以了解更多背景和灵感:
(此处为视频,请在原文中观看)
设计编程的一个好处是让非工程师可以直接从事软件开发工作。从而消除瓶颈并最大限度地减少交接。
制作和发布的控制权可以掌握在最具创造力的个人手中。这种控制的民主化有助于更加关注用户价值。
1.4设计编程的一些亮点
- 使创意从业者能够对软件开发进行精细控制
- 使用足够轻量级的工具,可以在几天或几周内学习,而不是几年
- 使用比代码更少符号和更直观的抽象
- 允许非工程师控制从早期实验到软件的生产和维护
- 消除原型和生产代码之间的界限(即,设计程序员不必编写两次代码)
1.5它不同于传统软件开发
如果我们可以为人们提供一种创建以设计方法为核心的软件会怎样?如果它不仅仅是“不是代码”,而是比代码更好,并且让软件创建成为一个设计过程,我们就可以将编程交到有创意的人手中,且不会有任何创意限制。
不幸的是,今天几乎所有的软件开发都是线性阶段(设计、开发、发布)并使用一维平台执行。

在当今的软件开发方法中,即使是最敏捷的团队也在被迫扮演着过时的角色,仅仅由于方法本身的性质,他们的速度和迭代方法也受到了限制。
02
不仅仅是可视化编程
设计编程不一定是可视化编程的同义词,它更加重视基本层面。虽然可视化、基于流的方法在设计编程中很常见,但许多可视化编程环境从未打算支持设计驱动的流程。
同样,一些平台会支持设计过程和价值观的轻量级代码或替代模式。
2.1当今设计编程平台
Noodl: https://www.noodl.net/
(此处为视频,请在原文中观看)
Noodl 是世界上第一个专业的设计编程平台。_“我们使设计师、创新者和开发人员能够通过可视化编程创建功能强大的 Web 应用程序,帮助他们探索和实现无限的创造潜力”。_Scratch: https://scratch.mit.edu/

Scratch 是一种高级的基于块的可视化编程语言和网站,主要针对 8-16 岁的儿童,作为编程的教育工具。网站上的用户被称为 Scratchers,可以使用类上图的界面在网站上创建项目。Webflow: https://webflow.com/Webflow 是一种 SaaS 应用程序,允许设计人员使用基于浏览器的可视化编辑软件构建响应式网站。当设计师使用该工具时,Webflow 会自动生成 HTML、CSS 和 JavaScript。
Unreal Engine Blueprint AI Editor:https://www.unrealengine.com/
其中的蓝图可视化脚本系统是一个完整的游戏脚本系统,它使用基于节点的界面从虚幻编辑器中创建游戏元素的概念。与许多常见的脚本语言一样,它用于在引擎中定义面向对象 (OO) 的类或对象。当使用 UE4 时,你会经常发现使用蓝图定义的对象通俗地用“蓝图”命名。该系统非常灵活和强大,因为它使设计人员能够使用几乎所有通常只有程序员才能使用的概念和工具。2.2早期并且在使用中的设计编程平台示例
PureData:https://puredata.info/Pure Data (Pd) 是一种可视化编程语言,由 Miller Puckette 在 1990 年代开发,用于创建交互式计算机音乐和多媒体作品。”Max:https://cycling74.com/products/maxMax,也称为 Max/MSP/Jitter,是一种用于音乐和多媒体的可视化编程语言,由旧金山的软件公司Cycling74开发和维护。在其 30 多年的历史中,它已被作曲家、表演者、软件设计师、研究人员和艺术家用于创作录音、表演和装置。”Reaktor:https://www.reaktor.com/Reaktor是由Native Instruments (NI)开发的图形模块化软件音乐工作室。它允许音乐家和声音专家设计和构建他们自己的乐器、采样器、效果器和声音设计工具。”Arduino IDE:https://www.arduino.cc/en/software
Arduino 集成开发环境 (IDE) 是用 Java 编程语言编写的跨平台应用程序(适用于 Microsoft Windows、macOS 和 Linux)。它起源于处理和布线语言的 IDE。它包括一个代码编辑器,具有文本剪切和粘贴、搜索和替换文本、自动缩进、大括号匹配和语法高亮等功能,并提供简单的一键式机制来编译和上传程序到 Arduino 板。
03
为什么大多数无代码平台不是设计编程?
3.1设计元素缺乏可控性和灵活性
大多数无代码平台(如 Bubble 或 Adalo)都是围绕拖放预构建组件或填写以生成有限 UI 的表单构建的。粗略的想法似乎很快可以得到表达,但仍缺乏大多数具有 UX 意识的产品设计师所需的精确控制。此外,一旦你碰壁,你就会陷入硬核编码的深处,无论如何都要自己解决这个问题。3.2垂直用例当今大多数应用程序构建器工具都是为解决常见的使用而构建的。想想现有的电子商务建设,基本上就是换了一个皮肤,但是本质没什么不同。换句话说,如果你想在技术上或创造性上做一些与竞争对手不同的事情,这些平台不会让你自由支配你的设计的。3.3只有一个维度的控制
大多数无代码平台只信任你使用软件堆栈的一维并隐藏其余部分。后端无代码工具将为你提供无法更改的预构建前端仪表板。应用程序构建器无代码工具将尽最大努力删除后端和数据处理上的选项。设计编程平台应该让用户在适当的时候全面控制软件堆栈。
04
那么设计原型平台呢?
Framer、Figma 和 Adobe XD 等一些设计原型平台为设计体验原型提供了出色的平台。如果您主要对前端感兴趣,但在测试整个产品创意时经常碰壁,选择这些可能会更好。4.1瀑布不是真正的精益
使用设计原型平台适用于更经典的组织,这些组织在设计和生产阶段之间有很大的区别。采用设计驱动的创新或持续设计和更现代组织改进方法需要尽早且经常地从用户那里获取数据。这需要进行部署并消除那些关于设计原型和开发之间区别的错误假设。4.2非整体测试
如果不设计业务逻辑和数据,测试设计原型的用户只能获得整个用户体验的一小部分。4.3一次性的在传统的设计中,你希望设计是一个独立的阶段,而生产是另一个阶段,设计原型不会被期望进入最终用户的手中。设计编程的挑战不是降低软件的质量,而是通过使编程生产变得更加容易,使你在产品设计过程的早期阶段感到舒适。
05
拥抱新兴软件包豪斯

包豪斯指的是成立于 100 多年前的文化、设计、技术和艺术运动,其基础是创造一个Gesamtkunstwerk(“综合艺术品”),最终将所有艺术融合在一起。
主要领域包括排版、工业设计和建筑。许多相关的设计原则今天仍然存在,推动了我们对设计和商业、工业设计和建筑的许多现代观点。
今天,设计编程也终于接受了包豪斯创建工艺的方法原则和软件!
包豪斯说“艺术家和工匠之间没有界限”时设计编程会说“原型和生产之间没有界限”;包豪斯说“艺术家是崇高的工匠”时设计编程会说“控制软件体验至关重要”;包豪斯说“ Gesamtkunstwerk 或‘完整的艺术作品’”时设计编程会说“不仅仅是 UI,还要包括API、数据、人工智能、第3方、前端等”包豪斯说“真正的材料”时设计编程会说“以数据为设计媒介”。包豪斯说“聪明地利用资源”,设计编程说“软件中最昂贵的资源是人。最关键的是,让聪明和有创造力的人拥有控制权。”
AR应用的开发将重塑线上和线下购物体验。AR可以让消费者与产品进行互动,帮助创造个性化的购物体验。想象一下,你拿着手机在商店里走来走去,在手机屏幕上,你不仅可以看到商品价格、特别优惠或折扣,还可以看到你希望了解的产品的功能和任何你想知道的额外细节。2019年,特别是时尚和美容品牌,有望为光顾其门店的消费者提供AR/VR技术。
06
当今设计编程的最佳应用
有时,改变是困难的,世界各地的许多软件组织都是围绕线性处理构建的,并且拥有充满经典编码器的团队。这些很可能是采用设计编程的落后者。
此外,有些问题纯粹是技术问题,或者需要优化以获得完美的性能——这些并不是开始设计编程的特别好的候选者。
但是,在以下情况下,采用设计编程是必然趋势:
- 设计或 UX 具有广为人知令人赞赏的商业价值
- 精益流程和市场测试改善了结果
- 团队可以灵活地尝试新流程
- 缺乏经典的前端软件工程师
通常,这些条件存在于:
- 新业务团队
- 非工程学校教授设计、编程和软件原理时
- 早期创业公司
- 需要与真实用户一起测试想法的产品设计团队
谁是早期的用户呢?
- 设计技术人员和创意技术人员
- 懂一点代码但可能更喜欢其他流程的设计师
- 真正想与前端合作的后端开发人员和数据人员
- 非技术创业者
- 想要更多控制权的产品经理
- 觉得自己喜欢编程但是不擅长编程的人
ABOUT US

参考文章:
作者:
James Haliburton
译者:糖醋排菇
为尊重版权和译者
转载请联系我们