Incubate 是如何做出来的

目录:
前言
过程
反思

前言

因为比赛的机会, 所以用processing做了这个设计,中间穿过了很多难题, 写个总结, 回顾反思一下。

因为它值得, 一开始根本没有勇气说一定能参赛。 我对自己定的目标是, 不管有没有得奖, 最起码要做完这件事。 现在这件事做完了, 就是对自己最好的鼓励和嘉奖。 因为做这件事, 对我来说有着很大的心理压力和知识上的压力, processing的知识只是看了几本书,仅仅看了范例程序, 没有那种被人带着一点一点打基础的过程。 所以一开始真的是茫然无措的, 不知道自己能不能克服这个困难。

我总是没有准备好, 当机会来临的时候。 知识总是不够, 总是准备得不够充分, 所以放弃了很多机会, 总是因为自己了解得不够多。 但是我并没有偷懒, 也学习了很多。 但是这种知识和机会对接的过程, 可能本身就是最早的鸡汤, 不是所有人在面临机会的时候都能准备好的,

什么是机会呢?机会就是突如其来的变化。 既然是突然的, 那就意味着绝大部分人都是没有准备的。 所以对绝大部分人来说, 绝对不是“努力刻苦学习工作, 等待机会的降临”, 这是鸡汤, 而且是不可能的。

变化是世界的主题。 对普通人来说, 要做的绝对不是埋头苦干,或者毫无方向的埋头苦干, 然后在机会来临的时候总是自怨自怜, 觉得自己准备得不够, 一定是因为不够努力。 这里面是有矛盾的, 除了先知, 没有人能为未来做万全的准备的。

所以真正应该解决的问题是, 如何在条件不充分的时候抓住机会、参加比赛考试工作?

这才是事物的本来面貌。 对一个机会、问题、需求或者缺口等等诸如此类的事情, 能做到完全准备和毫无准备的人,是处于正态分布两端的人群, 是极少数的。 大多数人都是准备不充分的, 基本不可能有“瞌睡了就有人送枕头”这种好事-----这种好事真的发生了, 反而真的要怀疑背后是不是有什么奇怪的目的。

所以, 完成这件事, 对我来说意义重大。 当完成之后, 反思它,记录它, 也是非常重要的事情。

过程

整个构思和制作过程总共经过了两轮。

第一轮以失败结束, 第二轮总结了思路和流程,完成了整个设计和制作的过程。 第二轮核心克服的是心理上的困难, 习得性无助。

第一轮, 第一步, 概念。

IMG_2848.jpg
IMG_2849.jpg

首先收集了一批书籍, 因为那几天正好在找书, 顺便找了很多感兴趣的书。

归纳书籍之后开始翻书找概念。 有很多概念, 有一个呼吸和细胞的概念, 我很喜欢, 甚至比现在表达出的更好, 但问题是, 我做不出来。 第二张图是代码草图。

在看书之后, 了解了程序员写代码是什么样的, 那就是也是要打草稿的。 虽然已经看了好几本书, 但是技能还是仅限于很简单的基础功能, 并没有像现在这样突然开始一个完整的项目, 而是我是一个人, 没有人可以帮忙, 找了很多人, 也没人是专门学习可视化的。

在这里习得性无助可能就已经开始制造错误了。 因为自学processing和swift是穿插的, 我找过swift的小伙伴, 但是听说国内的程序员都主修C语言, 没什么人学习这个, QQ上甚至找不到这样的群, 至少当时是找不到的。 所以可能processing学习上就忘记搜索群了。 直到我的代码写完了结束了, 然后被人推荐了两个processing的群。 我才开始获得迟来的帮助。

习得性无助, 可能是因为以前失败太多次, 受了太多的打击, 所以在主动出击获取知识这个层面上, 常常是一种疲软无力的态度。 一开始寻找swift帮助的时候, 总是找不到, 别人也告诉我国内没人学这个, 国外的我更找不到人, 于是就形成了一种心理印象, 就是包括可视化在内的, 我所探索的这个方向, 是没有同类的。 那么既然是没有同类的, 在解决processing问题的时候, 就忘记了要再去搜索一次QQ群。

可怕的事情是, 人在心理层面的被囚禁。 一个人并不是不喜欢正面的东西, 而是很多时候, 因为失败的经历, 大脑就关闭了朝这个方向继续作出尝试的神经。 我想, 基于这样的经历和认知, 所以我总是会反对那些说女人被家暴被各种伤害的时候的论调: 她选择了那个丈夫, 那个男朋友, 她选择了那条路,她自己不报警, 她被打的时候没有说话, 她在面对帮助的时候没有站起来。 他们说, 因为她们这样, 所以她们活该, 她们活该选了那个丈夫, 那个男朋友, 她们活该选择了那条路所以被杀死被强奸, 她们自己站不起来, 所以她们活该。 人们总是会同情老人和小孩, 因为他们年迈和体弱, 但是女性因为已经成年了, 因为受教育不够, 体力不够, 又很好欺负,很多男权既得利益者也不会放弃红利, 所以他们会这样说, 既出于对已经犯下的罪行或者即将实施的罪行进行辩护, 也出于对习得性无助的无知, 他们不知道很多情况下人备受打击之后, 会变得忽视起解决方法来, 用通俗的话来说, 就是“被打服了”, 相信这话很多人并不陌生, 我也在很多社交环境中看到有些男性觉得女性太出格,不够温驯, 所以就说“打她, 打服就行”。 我也可以猜测, 这也是为什么那些被暴露出来的家暴视频中, 为什么男的总是打女性的头, 要多过打其他的部位。 因为他们需要女性的头脑被控制住。 小时候读高尔基的《童年》, 里面家暴的行为是爸爸 用皮鞋的尖头踢妈妈的肚子,但现在我看到的更多的情况, 其实是打头。

可见在被伤害的时候, 头脑是最重要的部位, 而解决问题的时候, 照顾头脑, 保持理智和清醒, 是最重要最首要的事情。 因为头脑有可能被他人控制, 也有可能被自己囚禁, 习得性无助就是一例。 而解决这个困难的办法, 恐怕唯有永远保持质疑的精神了。 只有质疑它, 才能怀疑它, 才能进行测试, 从而突破心理定势发现突破口。

在这第一轮的尝试中, 可以看到的另一个方面是, 创作过程是螺旋式的, 成品是终点, 一日走不到终点, 一日就不能算完成。 创作可以和绘画过程来对比着看, 一个作品是没有终点的, 永远都有可以修改的部分。 哪怕最后能完美了, 但也可以在最后因为一瞬间的想法或者时势的变化而被推翻。 所以理想条件下, 创作的过程是无穷无尽的。 但这种无穷无尽对于创作者来说, 是一种折磨, 只要开始一个设计, 就永远无法停下来或者进行新的开始。 所以创作者都需要设置一个终点, 达到这个终点, 就可以判断目标实现了, 可以停下来了。

而对于processing创作的可视化项目来说, 这里的终点是一定要经过processing实际运行, 能运行, 并且能产生想要的结果之后, 创作才算完成。 而第一轮在草稿阶段就走不下去了, 所以需要重新调整概念和方向, 从头开始。

第二轮, 第一步, 概念

这里确定了两个部分,

第一部分是从主题到概念, 进行详述, 抓住主要想要表达的思路。 这个思路不是模模糊糊存在于头脑中的, 而是可以非常清晰明确说出来的, 准确到每一句话。

第二部分是确定大致的表现形式, 比如需要一个圆, 里面有很多小圆碰撞。

这里的关键是, 我一开始确定了我想要表达什么, 然后要呈现什么内容出来。 表达的东西有时候和呈现内容不一样。 我要表达的核心并不会因为这样的确定而变成四物, 因为最后读者仍然会有很多解释。

IMG_2846.jpg

第二轮, 第二步, 根据上面的结果, 进行计划。 可以说是原型设计。

比如根据我想要的场景, 进行功能步骤划分, 可以理解为敏捷设计中的故事点, storypoint , 将完成的景象变成一个一个的点, 然后针对每一个点写代码, 完成这个点的事情。

第二轮, 第三步, 代码草图。 每个点用什么办法实现, 之前都是分散的。这一步就是综合起来, 串联起来, 设置全局变量, 安排setup(), draw(), 以及制造自己的class等等。

这一步对熟练之后的程序员来说根本不在话下, 但我相信强调它,对于一个初学者来说有着不同寻常的关键的作用。 因为此前我根本没写过任何一个将这些已有的函数以及自己创作的函数的过程。 它对于初学者是关键的一步,但是对熟练者, 相信也是非常有用的一步, 为什么呢? 因为知识是无穷尽的, 每个人终其一生, 其实都算是初学者, 只要时代在发展, 它就永远都在向前游泳的过程中, 就永远都处于要接受未知的状态中。

就如同前言中考虑到的那样, 对一个人来说, 最重要的技能, 不是提前准备掌握了什么, 用已经有的资源来做事, 而是用已经有的资源, 做超出它能力之外的事情。 而这是人生的常态。 处理未知之物, 是每个人必学的本领, 但是对于这个方面, 我们的文化似乎忽略了很多。 因为我们总是强调经验, 强调已经有了知识和本领的那些人的地位。 但是却不能站在那些人的位置上考虑到, 即使是他们, 即使已经学了那么多知识, 掌握了那么多资源, 也不可能有足够的一天。 永远都有超出能力范围之外的事情发生。 在世界面前, 每个人都是孩童, 而孩童的一大永恒的困难, 就是总有超出能力范围之外的问题, 站在已有知识的层面解决超出部分的困难, 才是自我教育中必备的能力。

IMG_2845.jpg
IMG_2840.jpg
IMG_2841.jpg
IMG_2842.jpg
IMG_2843.jpg

第二轮, 第四步, 代码整合。

经过几轮修改之后, 清理肉眼可见的错误, 誊写了三遍, 得到终稿。

这几步的练习, 一个短期内能看到的长进是, 在后面加了processing群之后, 我发现能帮其他人检查和修正一两个代码中的错误了, 他们不知道我也只是个菜鸡。

第二轮, 第五步, 计算机运行检验。

将草稿纸上的代码写入processing, 通过解决每次运行的问题,一步步达到终点。

这里是另外一种困难, 细节上的, 逻辑上的, 以及心理上的考验。 好几次都快放弃了。看书的时候还有作者帮忙指导, 但是自己实践的时候, 就会出现非常多的可能性。 甚至即使找人问, 我也不一定总是能描述问题出现在哪里, 要请人帮忙解决什么样的问题。

这是超越以往种种难题的升级版吧。 因为每次运行出错的时候, 我只知道这代码有问题, 但是排除了语法错误之后, 问题在哪一行? 并不会有人告诉我。

我想到的办法, 是类似和自己对话的办法, 自己教自己, 对自己提问: 首先这是个什么问题, 描述它, 然后进行预测: 这可能是代码中哪个部分出的问题,有几种修改办法, 接着一个一个实验,运行, 实验, 运行, 直到最开始定义的问题被解决掉。

这部分技术上最难的在两点, 第一点在于问题的定义上。 虽然很早了解TRIZ的时候,就知道定义问题的重要性, 但是真正实践的时候才知道难度。 因为思维惯性的原因, 日常生活中, 对问题的定义通常都用心理模型代替了,大脑早已不知不觉就度过了对问题定义的这个阶段。 这也是经常发生沟通错误的原因, 因为在解决问题之前, 大脑就进行了心理模型的预设, 于是形成了偏见。

而在这个阶段中, 为了克服心理惯性, 我甚至要在纸上写下来, 这是个什么问题, 接下来我要解决什么样的问题。写下来的时候, 经常会发现看起来很简单的问题, 用语言来描述, 实际上是有两方面甚至三方面的难题要解决, 实际上一点都不简单。 语言是明确的过程。

这部分中技术上的难点, 第二点是思维和逻辑上, 有点像是树木的结构, 一条线出发, 有几个枝桠, 每个枝桠继续分叉, 然后就变得越来越复杂。 在解决问题的时候, 一分二很简单, 难的是分形带来的重复, 很容易忘记最开始的问题。 写下来, 在纸面上演示是比较保险的办法。

最后是心态上的问题, 一个是习得性无助, 一个是不知归途的茫然。 习得性无助的办法是质疑,而茫然是一种不知道自己有没有能力继续下去的状态。 一个人如果面对洗碗这件事, 他就很会有一个对未来的预期 , 知道有哪些步骤, 结果是什么样的。 但是在面对未知之物的时候, 尤其是有很多难题的时候, 完全没办法确定自己能不能走到最后, 很多科研状态的人们也会遇到这样的问题。 原因可能都是因为失控, 失去了对所有因素的控制,掌握和了解。

我想这也是为什么人人都应该学会如何解决能力之外、资源之外的难题的意义所在吧。 选择导师、伴侣、朋友、工作的时候, 没有人告诉你正确的答案是什么, 我想这可能有点“十大难题”的特点, 问题很难定义, 很难描述, 解决方法也不确定, 答案也是不确定的。 这种种未知, 才是人生的常态。 解决办法也许是可以反复使用科学家做实验的办法:
1. 定义问题/ 需要突破心理定势;
2. 预测结果/相当于原型设计;
3. 做实验/相当于运行、可行性测试;
4. 得出结果/ 不是一次达成, 通常需要反复检查修改。

最后感谢提醒我使用极坐标的大佬, 用极坐标解决了最困难的那个难题。

IMG_2839.jpg

反思

将整个过程总结来看, 发现和做其他类型的设计差不多, 也许人类的知识体系在源头都是很相似的。

第一步, 概念。 从现实要求出发, 和自己想表达的内容之间架起桥梁。

第二步, 初步形态。 确定做什么样的东西。 用语言、文字明确表达出来。

在这里要要开始确定整个项目的步骤,先完成什么, 再完成什么。

第三步, 草稿,原型设计。

第四步, 测试。 更正实际错误。

第五步, 反思总结。 为下一次创作做准备。

以上仅仅是一个创作的周期, 只是实际创作中的一轮而已。 在实际操作中, 遇到不可解决的问题而重新开始, 是可以被接受的过程, 也是应该事先被纳入到整个创作计划中的。

你可能感兴趣的:(Incubate 是如何做出来的)