简单 v.s. 基础

无论做平面设计还是做摄影创作,其基础都是一些比较粗浅的看似毫无用处的简单技能。例如画直线、拍挂在墙上的电视机,不一而足。
同样的现象还能在web的前端设计中看到。一堆类似小孩学绘画的标签,几个可以更改属性的css文件,完毕。
但神奇的是,就靠着这些简单而粗浅的概念,竟然可以做出让人惊叹的作品来。先不谈各种酷炫的网页界面就是由傻气的标签构成,就算是简单得像Windows系统自带的画板程序,也能够在绘画大师的使用下,创造出让人惊艳的绘画作品。至于摄影,很多优秀到让人赞不绝口的作品,也仅仅是依靠手机相机,而不是贵到让人傻眼的数码单反。
如果再配上PS后期,其作品的惊艳程度还能再上升一个等级。但同样让人惊奇的是,即便是PS老手,其使用的大部分功能,也就限于几个基本操作:图层上的转换组合、颜色基本属性的调整、以及简单的裁剪拼接。
那么,有了以上的观察后,我们是不是要得出诸如:基础很重要、简单的东西自有其韵味的陈词滥调呢?
不是,也是。
无疑,以上所举出的这些简单的东西“非常重要”。因为,无数的实践都在证明,掌握了它们之后,就像是嗖地跨过了一扇门,往后的技能便能飞速成长。但我想说的是,这个“重要性”并不是源自于它的“简单”或者“基本”,而是因为它们恰好是各自领域里,类似房屋的脊梁、建筑的基石一般的存在。
在数学的世界里,任何一个分支的基石,一定是其基本的定义和公理。再辅之以逻辑推理,便能够将一个数学分支给建立起来。仅仅学习过数学但却未做过数学研究的人,一般不会有意识地去关注这些基本的定义和公理,到底是如何被提出来的。通常只会一股脑地先接受定义和公理,然后就急匆匆地开始各种逻辑推理。
这样的想法,非常类似于我们学习绘画、设计、摄影和编写代码。我们基本上只会匆匆地快速开始学习如何画线、如何做出一个方块、又如何去构建一个图层或对象,却很少会花费时间去思考,为什么它们可以被当作这个领域的基础?
所谓基础,它一定要起到牵一发而动全身的杠杆作用。简单的事情千千万,为什么有些被当做是杂事、琐事,而有些却可以被当作是基石。其衡量标准不在于哪一个事情更为简单,而是哪一个更能起到杠杆作用。
例如,在PS中,“图层”的概念,无疑就比色彩的调试来得重要。因为色彩的调试,只是技艺的某个方面,它的影响范围是有限的。而图层的概念一旦被提出来,整个“设计”就带有了工程哲学的味道。
它很好地将每一个图形的复杂度控制在一个范围内,并且还能够让这些独立的个体单元做任意的组合(完全就是Unix的设计哲学啊)。通过它这样一个基础设施,既能创造出无限的组合,又能够精细地控制图形的复杂度,提高每一个个体单元的复用率,从而有可能让每一件作品、元素,彼此间产生复利的效果,能够让一种影响力建立在另一种影响力的基础上,成倍地放大。
同理可以考察前端技术的设计。例如CSS,在我看来,其最重要的技术,不在于它能够修改某个字体的大小、颜色,也不在于它能够为某个区域增加背景图片,而是它拥有“选择器(selector)”这样一个强大的工具。如同“图层”这个概念之于PS,有了selector,CSS去控制元素的方式便具备了构建大工程的属性。每一个选择器能够直观简介地控制一个区域的界面样式,但它们又能够通过child-parent、sibling等关系进行组合,从而让你可以大规模地去控制网页元素的样式效果。
又如手机的进化。在iPhone出现之前,一部更为“先进”的手机卖点,在于其是否比普通的手机多了某个功能。例如,Nokia的最新款可以录音,而之前的版本不行。或是Blackberry可以提供PDA记事本、拍照功能,而别的手机不行。
但自从iPhone提出了手机App生态这样的概念后,就一劳永逸地解决了所有功能性多寡的问题。其point不在于它提供了哪一种优秀的具体功能,而是提供了“提供功能”的功能!有了这样的概念后,整个手机开发的视野和创造前景一下子就被打开了。从此,在手机内,便拥有了“无限”的可能性。
那么,再回到文章最开始的那些案例。为什么那些诸如画直线、写标签可以作为各自领域的基础呢?其根源在于:它们都具备“提供各自领域的杠杆性功能”这一属性。或者反过来说,一个概念或者技能,要能够成为某个领域的基础,它就必须具备杠杆性的属性。只不过,之前提到的这些稀疏平常的概念,是在长期大量实践的筛选下,沉淀下来的东西。也即是通过“自然选择”的方式,挑选出的具备杠杆性的工具集。
如果要做数学研究或者工程设计,当然不能被动地等待自然选择。而是要主动出击,费心思考“应该如何提出一个概念、提出哪些概念”才能提高挈领地抓住所在领域的本质。
所以,不是说看到一个东西貌似简单就值得去学习。必须要有能力分辨:哪些简单的东西是具备杠杆属性和复利属性,能让你的学习可以系统地层层叠加,将每一次的投入作为下一次行动的基石,来做指数级的成长。
近期回顾
《网络概念与快递物流 | 墙与梯子》
《精湛技艺的祭品》
《向南的高速公路》
如果你喜欢我的文章或分享,请长按下面的二维码关注我的微信公众号,谢谢!

更多信息交流和观点分享,可加入知识星球:

VIP赞赏专区

简单 v.s. 基础的更多相关文章
- 【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识
第38章 TFTP简单文件传输基础知识 本章节为大家讲解TFTP(Trivial File Transfer Protocol,简单文件传输协议)的基础知识,方便后面章节的实战操作. (本章 ...
- 安卓四大组件之Sevice组件的简单使用 --Android基础
1.本例实现了简单的Service(服务)的创建.启动和停止,点击“启动SERVICE”页面会显示“服务被创建”,接着是“服务被启动”.点击“停止SERVICE”页面提示“服务被停止”.太过基础,直接 ...
- git的简单理解及基础操作命令
前端小白一枚,最近开始使用git,于是花了2天看了廖雪峰的git教程(偏实践,对于学习git的基础操作很有帮助哦),也在看<git版本控制管理>这本书(偏理论,内容完善,很不错),针对所学 ...
- docker 简单介绍及基础命令运用
一.什么是docker? Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. 简单的来讲Docker实际上就是一个大型容器.容器是完全使用沙箱机制,相互之间不 ...
- spark集群的简单测试和基础命令的使用
写此篇文章之前,已经搭建好spark集群并测试成功: spark集群搭建文章链接:http://www.cnblogs.com/mmzs/p/8193707.html 一.启动环境 由于每次都要启动, ...
- 简单的TSQL基础编程格式,存储过程,视图
这里简单整理一下数据库简单的编程,变量定义,赋值,分支语句和循环(这里以Sqlserver),以及存储过程格式 首先是变量定义,赋值,分支语句 --======TSQL数据库基础编程,定义变量,赋值, ...
- ActiveMQ基础教程----简单介绍与基础使用
概述 ActiveMQ是由Apache出品的,一款最流行的,能力强劲的开源消息总线.ActiveMQ是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,它非常快速,支持多 ...
- 函数第一部分:经典的永远是简单的-Python基础前传(10)
(一)前言 对于零基础学习Python的朋友,或者转行做数据分析的朋友,跟jacky交流最多的问题就是Python网络爬虫学习问题,比如说要爬取美团,或者说爬取携程等等,在爬取的过程中,这些朋友总是会 ...
- JQ的简单使用(基础)——————JQ
JQ基础--JQ的简单使用 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /&g ...
随机推荐
- Java 数据类型与运算符
JAVA数据类型分基本(内置)数据类型和引用数据类型. 区别: 基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上. 引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存 ...
- tp3.2 上传文件及下载文件
公共方法 UploadFile.class.php() // 开始 , , , ,];];,; ;; ::::::;,) {//文件上传失败 //捕获错误代码$this->error($file ...
- zabbix添加nginx监控
nginx内置了一个status状态的功能,通过配置可以看到nginx的运行情况,status显示的内容包括当前连接数,处于活动状态的连接数,已经处理的请求数等等,可以利用这个功能编写zabbix监控 ...
- Vue仿string.format
Vue.prototype.$stringFormat = function stringFormat (formatted, args) { for (let i = 0; i < args. ...
- beautiful模块
- Qt跨平台开发Wince5.0和Android程序
所谓跨平台是指维护一份代码,可编译出多平台的应用程序.Qt这方面虽然已经做的不错,但性能还是体验,和原生开发工具开发的程序相比,差距还是不小的.但单从生产应用的角度来说,可以采用,不失为一种好的解决方 ...
- 7B - 今年暑假不AC
“今年暑假不AC?” “是的.” “那你干什么呢?” “看世界杯呀,笨蛋!” “@#$%^&*%...” 确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了. ...
- 教程:使用cPanel管理域名和数据库
cPanel是一个基于web的基于web的控制面板,它简化了许多常见的系统管理任务,如网站创建.数据库部署和管理等.本指南向您展示了如何使用cPanel用户帐户管理域和数据库.所有这些指令都与位于端口 ...
- jmeter用Windows电脑分布式部署
当然,java环境.jmeter安装我这里就不说了. 使用1个controller(imac电脑),2个agent(Windows7 系统) 一.agent配置(Windows7系统) 1.电脑环境变 ...
- List Leave
本次作业是建立二叉树并输出叶结点 (1)首先是定义结点,包括左孩子,右孩子 typedef struct { int lch;//左孩子 int rch;//右孩子 }Node; (2)建立二叉树 c ...