当你认准一件事的价值,长期投入;随着时间积累就会慢慢地产生质变。这些年,我就是这样做的——持续在设计与技术交叉领域投入精力。
我获得了:能自由地、按照内心的想法,创作软件产品的能力。代码能力对于我来说,和设计一样,都是为了创造出好产品的一种手段而已。不知大家在平时工作中会不会有这样的感觉:作为设计师,与开发打交道,难免觉得 ” 巧妇难为无米之炊 “ ;而作为程序员,当自己开发了某个工具之后,为了追求更好的体验,却苦于不能「设计」,很难发挥更多。产品上,通过AI 扮演篮球解说员,为用户讲解各个球星历年的表现;体验上,AI 聊天机器人更像是一个搜索引擎的升级版,这种减轻聊天界面的设计,非常契合产品的调性。技术与设计的融合催生了新的体验。设计师认真思考了技术的优势及特性,利用设计手段把技术融入产品体验中。这些年,我们在工作中使用的工具一直在演进:从Sketch 、 Pixate,再到 Framer。Framer 就是一款结合代码与可视化实现的交互设计工具。通过代码,可以完全控制交互效果,设计师不仅停留在画图的层面,更多的可以关注到实现的真实效果。设计工具在进化中影响了使用者融合技术与设计。如今,技术的迭代速度非常快。比如 web 网页的 css 布局方式,就历经了 float 、 flex 、 grid 的进化;移动端 APP 的混合开发也经历了由 IONIC 、 REACT NATIVE 的变迁;机器学习也越来越普及,相关的深度学习、强化学习、迁移学习等,也越来越大众。技术的变迁,也为用户带来了新体验。具体表现为交互方式的革新、新的设计方法产生。例如,语音识别技术的成熟,对话聊天技术应用的场景越来越多,从可视化的 UI 界面,过渡到了语音的控制。还有文本转语音技术的成熟,使得用户不想看文字的时候,可以选择倾听。人工智能渗透到各行各业,人与机器如何协同创新,产生了人机协同设计的新理念,比如在香水瓶的设计上,通过简单设定一些条件,机器生成大量的参考,然后设计师再进一步深入设计:宁静技术Calm Technology,倡导技术无缝地融入人类的生活,而不是让人类时时感到技术的存在。通俗点来讲,我们不会消失在电脑空间中,而是电脑将消失在我们的生活。通过智能手环,界面融入到我们生活当中。我们需要做的可能只是晃动一个手势,几句语音应答而已。保持好奇心,以开放的心态,持续学习。我自己每天都会在《MIX+人工智能》更新人工智能交叉学科的习得。雷军在小米之前,做了10年程序员。京东刘强东在一次讲座上,称自己大三(1995年)的时候,给别人写代码,一个晚上就能赚5万……但是,写代码是困难的吗?Mixlab群里一位朋友,学习Python,在坚持了2个月左右,最终放弃了。他觉得代码要学习的知识太庞大了,不知如何入手,一旦有新问题解决不了学习进度就卡在那里,从而越学越觉得难。引用一位Oracle程序员在Hacker News上吐槽自己工作的讨论:“Oracle经历长期的产品线迭代,代码异常庞大、逻辑复杂。每新增一个特性或者修复BUG,就需要大量的调试,每天都小心谨慎的进行着日常的工作”。Oracle每次的版本发布都经历数百万次的测试,工作量可想而知。学代码有方法吗? 一般来说,初学者有2类:零基础,指的是系统了解过编程语言的;入门级,会一门编程语言,会写一点点代码,但无法自己完成一个项目从0到1构建的。如果是零基础,建议先学一门语言,一步步来,适当增加实践项目的练习,比如DIY一个以图搜图引擎等类似的项目。当你学完这一阶段的入门,不再是0基础之后,就可以尝试了解各种语言的环境安装、最小可运行代码集,以及各种开发工具,尝试各种好玩、复杂的项目了。主要通过看示例,包括作者提供的示例代码,网上文章提供的示例代码等;理解代码里的每一句的含义,真实的行为,就跟读书一样,知道作者的核思想是什么;比如下面这3句:输入是字符串,还是一个列表,还是一个字典?输出的是什么也非常重要。比如输出的时候,有None的可能,那下一段代码对此输出结果引用的时候,就要注意啦。 如果输入_idea为"",输出为None,这个时候写代码的时候就要留意输入跟输出的各种可能。
当你掌握以上技巧的时候,就会发现没必要从头到尾全部一口气把代码全部学完,需要的时候再快速翻阅文档,通过示例、输入输出、理解功能这三个点,就可以现学现用啦。配合搜索引擎,我们几乎可以解决任何编程问题。对于初学者来说,需要关注如何书写优雅的代码,主要表现在:这里面的内功修养,离不开设计模式(插入文章链接)和代码重构,还要有非常多的实践与刻意练习。写代码是基本功,锻炼的是逻辑思维能力,跟解决问题的能力。在不久的未来,写代码也是可以机器完成的。pix2code 等论文就提出了一个强大的前端代码生成模型,解释了如何利用 LSTM 与 CNN 将设计原型转化为 HTML 和 CSS 网站。