产品悟道:计算机从业者成长之路
即使当前大环境增长困难,但作为个体的我们还是希望在职级、薪资上获得成长。只是成长是有方法的,认清自己的当前情况,才能做出有效的策略。本文尝试构建一套数据分析指标,帮助大家定位自己当前的阶段,和可能努力的方向。
计算机技术已经与我们的生活息息关联,不同的人抱着不同的目的,踏进了计算机的门槛。
- 有些人,仅是对计算机有兴趣,还没入门,正在门口观望。
- 有些人,计算机从业多年,因为某些原因,暂时被困在某个境界,很长时间无法突破认知的瓶颈,等待某个机缘,打开新世界的大门。
- 有些人,因为某个机缘,悟到了软件设计的更高层次,从普通的码农或者纯功能型产品经理开始成长,打来了新视野,技术和业务能力得到了突飞猛进的成长。
无论当前处于哪个阶段,肯定都希望一步步成长。
- 爱好者希望多了解一点计算机的相关知识,能给工作生活带来更多便利。
- 程序员希望从基层码农成长为技术组长、技术总监。
- 产品经理希望从产品助理成长为产品经理、产品总监。
无论最终的诉求是什么,希望成长的目的是一致的。
成长前后的差异有哪些呢?有什么数据指标体系能帮助分析一下我与别人的差异有多少吗?
本文尝试构建一套数据分析指标,帮助大家定位自己当前的阶段,和可能努力的方向。
一、成长指标体系的构建
1. 指标体系的神经学依据
现在这个时代,神经学理论已经有了极大的发展,在神经学理论的直接影响下发展的计算机和互联网已经极大的改变了我们的生活,我们已经可以直接使用神经学给予的视角来考察这个问题。
从出生开始,我们大脑里就有了140-160亿量级的神经元,这些丰富的神经元足以让我们有能力,在外部世界与这些神经元之间建立健壮的映射关系,大脑神经元的复杂度是我们能理解复杂世界的物质基础。
婴儿时期,神经元之间的连接很松散,当婴儿随着身体的成长,学习的东西越来越多,神经元之间的连接也越来越多。这些逐渐联系起来的神经元就是婴儿对世界的认知。
随着长大和接触的各种事物和知识原来越多,大脑的神经元与外在的世界不停的建立映射关系。我们认识的外在世界有多大,内在的世界模型对应的外在元素范围就能有多大。
当然这种映射并不是简单的一对一映射,不是外界有100个不同的苹果,大脑中就也有100个与之完全对应的苹果,大脑中的世界是对外在世界的模拟,只是外在世界的象。
我们通过这个内在世界的模型,内在世界的复杂的象,可以对外在世界做出反应。
- 如果内在的模型是正确的,外在世界的反应就是可预期的。
- 如果内在的模型是错误的,外在世界的给到的回应就是混乱的,不可预期的。
想要详细了解神经科学的知识,推荐阅读书籍为:《神经科学讲什么》《人类思维中最致命的错误》
2. 对世界最早的象的模拟
说到观象,我们中国有悠久的观象史,“仰则观象于天,俯则观法于地,观鸟兽之文与地之宜,近取诸身,远取诸物”。
我们后人在踩在祖先们的肩膀上,可以直接学习他们的观象成果。
我们天天使用的汉字就是最系统的观象成果:比如”人”字显然就是对站立的人的侧面描述。
当然我们这里是以汉字举例的,如果用英语从单词上肯定无法看到这种象,但是很明确的是英语的单词也能指向外在世界的各种事物。
这里讲的就是符号学的能指和所指,客观世界是所指,描述的文字,包括动作手势等是能指。
想要详细了解符号学的知识,推荐阅读书籍为:《符号学 原理与推演》
3. 内在世界关系的指标体系
我们的讨论是建立在能指与所指已经正确建立前提下的知识学习,而不是重新建立能指和所指关系的知识创新。
我们此处的指标体系是用来衡量人在不同阶段,内在世界不同能指之间的关系。(能指可以简单理解为文字和概念)
图中主要是元素、元素之间的关系、元素关系的强度:
- 元素:包括概念、手势、表情、语调等等,可以被捕捉的都是此处的元素。掌握100个概念的人肯定比掌握10个概念的人看问题更透彻。
- 元素的关系:就是各个元素之间的关联关系,这里指的是元素之间有关系或者没有关系,哪些元素之间有关系,哪些元素之间没关系。
- 关系的强度:0表示没有关系,100%表示因果关系,60%表示强相关关系,40%表示弱相关关系。
图中的分布会有以下结论:
- 在图中越靠近原点的地方,掌握的元素和元素之间的关系的量级越小,对世界的认知越简单,越片面。
- 越远离原点,掌握的元素和元素之间的关系的量级越大,对世界的认知越复杂,越可能逼近真实世界。
- 越是脑力劳动者越远离原点,越是体力劳动者越靠近原点。
- 婴儿是最靠近原点的人,原点处没有人。
- 越是高认知的人看到的因果关系越多,越是低认知的人看到的越是关联关系或看不到关系。
- 在绝对顶点的人,肯定就是人类文化中的智者,孔子、老子、佛祖、耶稣这些圣人。
- 我们芸芸众生都是位于中间的位置,每个人占的位置各有不同,每个人也都在向着更高的位置移动,有的人移动的快,有的人移动的慢,有的人可能被暂时困住,解困后会继续向上走。
- 一般而言,产品总监会比产品经理更远离原点,技术总监会比程序员更远离原点。
二、众多认知元素是如何分布的
各种元素是怎么分布的,有两个概念需要明确,
- 在外在世界是怎么分布的
- 在内在世界是怎么分布的。
由于我们认识外在世界必须通过我们的眼耳鼻舌身意映射到内在世界才能认识,并且所有的描述本质都是描述的内在世界捕捉的象,所以我们只需要看下内在世界的这些元素是怎么排列的即可。
我们从以下两个层级开始观察:
1. 文字的层级
从文字层级观察,了解文字的排列顺序,最直接的就是找到一本《说文解字》书,说文解字是梳理汉字造字原理的书,打开《新说文解字》的目录,可以看到汉字可以分为:表现人的文字、表现生产的文字、表现自然世界的文字、表现战争的文字、表现社会生活的文字等。
在读说文解字以前,对于汉字,我们肯定不可能全面的清楚他们之间的关系,仔细阅读说文解字后,就会对汉字的关系有更清晰的认识。
推荐张奇臻老爷子的《新说文解字》,该书是对一千个左右最早出现的基本汉字的研究,通过对照甲骨文、金文、篆一直到简体字做了对照分析研究。
这本书是我在上海图书馆找到的,淘宝上买不到新书,十分可惜,推荐有兴趣的同学可以找来研究下。
2. 概念的层级
我们思考要使用概念,概念实际就是容器。容器将更多的内容封装到容器里,让我们可以在更高的层级上考虑问题。
2.1 所有人的平均短时记忆差异很小
虽然在上面的坐标系上每个人所在的位置是不同的,但是同一个时刻我们每个人可以处理的问题数量差异确很小。
如果不借助纸笔、计算器等工具的辅助,我们单靠瞬时记忆能记住的元素基本上在1-7个之间,超过这个数太多我们就会忘记前面的东西,这种记忆特点决定了我们的容器深度,容器深度决定了可以做的计算十分有限。
比如十以内的加减法,是很容易算的,因为可以数手指,超过10个比如需要用更多的容器来辅助了。
容器的重要作用就是,将问题的复杂度降低到普通人可以思考的水平。我们的知识体系的归纳,也会将知识归纳到同一个层级的元素的数量不超过10,这种限度。
根据问题的复杂度,如果想卷入更多的人,同层级思考的元素数量就必须更少。
想要详细理解上述的知识,推荐阅读书籍为:《金字塔原理》
2.2 一切的技术都是容器、都是媒介
从本质而言,所有的技术都是媒介,都是容器,都是对人的延伸,都是将复杂的事物降低到人可以操作的可以理解的尺度上。
不能被别人理解,不能影响更多的人的道理都是水中花镜中月,意义有限。
所谓对人的延伸,就是人本来有类似的属性,但是强度、速度等方面不尽如人意,人要提高这部分能力,就需要借助其他媒介。
以双腿的延伸举例
比如从移动而言,我们有双腿,但是走的太慢,也走不远,我们就需要借助其他的媒介帮助我们移动。
显然,在机械化以前,最成功的媒介是马,马可以让人的移动更快,还可以节省人的体力,所以古代战争使用的也最多。
我们可以说能移动的动物特别多,比如鸡、狗、猪、马、老虎、狮子、大象,确实这些动物都可以移动,但是能满足人的需求的却不多。
鸡、狗、猪体量太小,功率太小,拉不动人和货物。
老虎、狮子、大象的体量很大,功率够大,也能拉的动人,但是先不说我们的土地上能否见到这些动物,就算我们的土地上有这些动物,他们也很难驯化,他们如果不配合,也就无法在人类的尺度上帮助人。
以语言的演化举例
语言文字也一直在演化的,演化有点类似于某个时代的人根据当时的技术水平和认知水平将文字调整,这也类似于动物驯化,驯化后的内容,在人的使用尺度而言更高效,更便捷。
之所以语言说是演化,动物说是驯化,所用的手段不同。因为语言是人创造的,人们怎么写都可以被写出来,写出来是容易的,但是被大家接受和使用则需要符合同时代人的认知,只有被大家广泛接受并使用过的才能叫化,自己随便造的,只能是画。
动物也一样,互联网上可以看到,中东土豪们,也圈养狮子做宠物,显然这只是小部分人的爱好,并不能被更多的人学习。
想要详细理解上述的知识,推荐阅读书籍为:《理解媒介 论人的延伸》
三、计算机编程语言的进化
1. 计算机语言的层次
计算机是目前为止,人造的可以承载内容最多的设备,我们可以从计算机的软件编程模型上来观察上述理论。
上图是计算机编程的语言:
第一层:面向01编程
显然除非汇编语言出现前,或者非常特殊的原因,正常没有人会使用这种方式和计算机互动,太难了,不是思路难,而是不犯错难,写不到50个01人就晕圈了。使用这种方式,肯定少不了频繁的复制粘贴。
第二层:汇编语言和面相01编程的差异
主要是将01序列的替换从人工改成计算机,从思考的时候使用01序列改成思考的时候使用指令。指令MOV和某个01序列是完全等价的,用MOV 作为这组01序列的容器,才使面相01的编程更贴近人的思维。C语言的循环语句when、while是将一组IF、MOV、Jump语言包装成一个容器,这是一个动态的容器,容器的大小是由变量的值控制的。
第三层:
第二层整体上还是面向过程设计的。过程在计算机里就是函数,函数就是有输入、有输出、有计算方法,面相过程编程就是面向函数编程,面向过程编程主要体现函数之间的相互调用,此方法高度还原了内存之间的调用逻辑。
面相对象就是将多个函数、多个属性再用一个容器包装起来,这就是面向对象。对象里的属性不仅可以是普通的数值,还可以是其他的对象,函数输入和输出的内容也不仅可以是普通数值,也可以是对象。
这些对象是怎么包装和相互调用的呢,肯定不是机械的包装,从MOV 替换01序列是机械的替换,对应关系也是机械的对应关系。面相对象的调用,则是有机的,是通过模拟现实世界各种对象之间的关系建立起来的。这个关系就是设计模式。
想要详细理解设计模式的知识,推荐阅读书籍为秦小波的《设计模式之禅》
第四层:
在第三层的应用构建中,产生了很多优秀的辅助设计框架,包括Spring、Struts等各种软件框架,在这些框架的协助下,构建SaaS软件的难度降低了很多数量级。程序员在构建复杂的业务系统时,基本都会基于各种软件框架架构系统。
第四层就是PaaS的软件架构了,在这个层次里,构建业务流程象组积木一样简单,用可视化的拖拽就可以快速的完成业务系统的构建。这是软件最终的方向。
2. 计算机语言的掌握者
前三层的掌握者主要是计算机技术人员,除非你学习掌握了计算机的原理、至少能熟练使用一门计算机编程语言,否则你可能听不懂技术人员在谈论的技术场景。
到第四层的时候,普通的IT人员或者普通的产品经理就可以在极短的时间内构建一套业务系统,甚至业务人员自己就可以完成这个操作。
3. 容器理论的可视化论证
软件编程主要可操作的对象是:
- 存储器:存储器是最简单的容器,在CPU里就是各种寄存器,在内存里就是存储单元,在外存里就是各种磁道等。通过控制器可以对存储器进行写入和读取动作。
- 运算器:运算器是复杂的容器,在CPU里寄存器和运算器相连,通过指令可以将存入的值,不仅可以读取还可以应用不同的算法,常见的算法是加法、减法等,所以运算器可以分为加法器、减法器。
- 函数:函数是更高级的容器,可以使用多个存储器、运算器和运算逻辑一起作用,容纳更复杂的功能。函数的设计需要使用很多的数学知识,比如游戏设计的点、线、圆形、方形、长方体、球体等的模拟函数需要复杂的数学知识。可以阅读《游戏引擎原理与实践》了解。业务型的函数要参照具体的业务。
无论哪种操作对象,无论哪个层级都可以抽象成:有输入、有输出、有处理过程。因此用两个箭头和一个方框组成的对象来代表这种操作单元。
3.1. 面相过程编程的可视化
在面向过程编程时,各个交互单元都直接存储在一个或多个有限的函数里,最常见的就是直接在main()函数里执行,各个元素直接的交互关系十分混乱。虽然有内在逻辑性,但是对编程人员的要求很高,并且即使是高手自己写的代码,一段时间以后再看,可能也很难弄明白。
3.2. 面相对象编程的可视化
而面向对象的编程,则是将按照高内聚低耦合的原则,分装到不同的容器中,容器之间的交互的逻辑可读性更强,降低了编程的难度,无论多久或即使入门不久的程序员也可以方便的读取内部的逻辑。
3.3. 两种方式的对比说明
两种编程方式对于被执行对象的复杂度而言,并未降低。
但是降低了组装的复杂度,降低了理解的复杂度。
面相对象将各个对象的依赖顺序明确化了,在实现某一功能时,可以定出哪些资源要优先加载在内存中,可以定出优先级。
在计算机结构中,最重要的两个部分是CPU和内存,CPU的速度最快,内存的速度相对较慢,面向对象的关系组织,可以使操作系统根据各依赖对象的优先级,动态的将高优先级的对象从外存调到内存中,等待CPU的召唤。
计算机要完成的事物非常多,无论事物再多,总有轻重缓期,总有优先级,不可能全部都是高优先级的。面相对象的各种明确的依赖关系就使操作系统优先级判定的有了决策依据。
4. 更直观的生活例子
码头上每天往来各种货物,对货物的装车和运输,需要安排对应的集装箱、起重机、运输设备,如果有结构化的对照关系,可以两步就能找到对象。如果没有这种结构,每个货物都要依次尝试8种设备才能确定合适规格的集装箱、起重机、运输设备,显然可执行的复杂度而言,第二种方式效率更高。
四、计算机从业者的掘墓人
编程语言的发展路径是面向的可操作人群越来越广,最终可能会在AI的加持下,面向更广泛的人群。
这意味着编程语言越来越简单,对计算机的控制越来越容易,慢慢的从某些人群的专属技能慢慢变成普通人的通用技能。
对于我们计算机从业人员而言这并不是好事。计算机越发展,计算机的门槛越低,计算机技能越成为一种通用技能,越挤压计算机从业人员的生存空间。
1. 计算机从业者挤压出租车司机的空间
在地图软件应用之前,出租车是项技术含量非常高的技能,不仅是驾驶汽车的能力,更是因为需要出租车司机熟悉城市的道路,没有足够的时间的训练,是记不住城市这么复杂的道路的。
滴滴打车的出现,一下子给无数普通有车族打开大门,一下子很多人涌进这个赛道,出租车司机的好日子一去不复返了。
是谁降低了出租车的门槛?
- 是滴滴?不,滴滴只是技术的整合者,
- 是高德,是也不仅仅是,是高德、是GPS、是北斗、是卫星,是各种新技术的出现,让地图信息越来越准确,是定位系统让定位越来越准确。
各种新技术是出租车司机这个岗位好日子的掘墓人,我们做编程做软件的同行们也挖了不少土。是计算机的发展是软件系统的发展改变了这一切。
2. 挤压计算机从业者自己的生存空间
我们不仅给别的岗位掘好了坟墓,我们也给程序员、产品经理,给我们自己掘好了坟墓。
随着PaaS系统越来越成熟,软件行业必然将更多的程序员、产品经理挤出去,因为业务人员自己就可以通过模块化的可视化编程直接构建应用系统。
当然不可能把所有程序员和产品经理都挤出去,但是会有很多人被挤出去,相信很多从业者已经有些感觉了。
四、我们应该怎么自救
1. 小鸡,快走
仅是做业务和技术之间翻译工作的产品经理将会被挤走,仅是做将产品经理梳理的业务流程直接翻译成计算机语言的程序员也会被挤走,留下的只会是有产品规划能力的产品经理,有架构设计能力的技术总监,我们必须也只能继续向上走,要么就换赛道。
我们生活的时代,我们从事的行业,就是一个小鸡快走的游戏,你必须快走,你只能快走,你不走就会被撵下去。
我们无需怨天尤人,也无需怨恨同行,因为如果我们在同行的平台,我们也会这么做,因为这就是我们的工作,我们唯有他途自救。
2. 计算机知识的价值
我们并不是只有被追赶的狼狈,我们也有其他行业所不具有的优势。
计算机给生产生活带来的优势,给企业生产给个人生活、给社会治理带来的影响自不必说,我们无论从事C端还是从事B端软件设计和开发,我们做的就是在改变企业的生产流程,改变用户的信息获取流程,改变商业,改变城市治理的事情。
此处,我只想说给我们自己带来了哪些价值,当潮水褪去,当我们不能从软件产品经理、软件产品设计岗位上挣到足够养家糊口的薪水,当企业不再需要大部分的软件产品经理和程序员的时候,我们还剩下什么?
到时候,我们或许主动或被动的只能转行去做其他的事情,可能是去直播,可能去做网红,别管做什么吧,这段从业经历总要能给下一个岗位提供新的视野和高度。
3. 计算机悟道
从历史上看,计算机系统是目前为止,在“器”的层面最复杂的智慧结晶,无论航空航天探索宇宙、无论生产模拟都需要计算机的协助。
计算机软件可以模拟各种东西,说明计算机就是一个超级容器,可以无限分身的容器。
我们思考喜欢用类比,计算机正是一个最好的容纳这些类比的容器。
接下来我将和大家一起计算机悟道。
计算机悟道,好大的主题,我一直忍着,不希望自己说出这个概念。因为这个太大,一是自己的水平有限,离得道还远的很,另外这是技术主题的文章,写悟道又好像偏离主题了。
但是文章越写越觉得,应该点出这个主题,因为这确实是计算机作为谋生工具以外,还能给每个人带来的巨大的思想价值之一。
本人就大言不惭了,希望大家多多指正,大家一起探讨,共同进步。
本文由 @我是产品张 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自Unsplash,基于CC0协议
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。
- 目前还没评论,等你发挥!