我是靠谱客的博主 整齐彩虹,最近开发中收集的这篇文章主要介绍程序员特有的精神分裂现象,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

编程可谓是一项纯脑力劳动,程序员们专注于代码,并用它构建起一个虚幻的世界。

而这个虚幻世界可以不大,但世界范围内的每一个细节都要足够夯实,甚至是里边的一块砖都要实实在在地被考虑和实现。


所以在编程的过程中,各位猿们往往是一个脑袋,两种身份


于是乎,程序员在构建世界的时候,出现了一种独特的精神分裂现象:起初他像个上帝一样开天辟地,指点江山,甚是过瘾,我们就叫它上帝模式


可是一旦框架搭建完成,规则制定完毕,世界里被构建的每一个物种或者建筑都要细细地一笔一笔雕刻完成,极度辛苦,我们就称它为木匠模式


正是因为这两种身份的思考方式差异巨大,心情差异也巨大,经常来回切换,不得不让我们猿们感到“精神分裂”。


那你什么时候做上帝又什么时候做木匠呢?


01

上帝模式:开天辟地,指点江山


“上帝模式”,听名字就觉得很高大上,其实他离大家并不远。最普通的,当你在设计类的封装和继承时,你已经在和上帝打交道了。


程序员当上帝的时候,在干什么呢?


处于上帝模式的时候,程序员似乎在充当一个造物者,是他们最有成就感的时候,能极大地感受到编程的乐趣。

上帝模式干的最主要的工作是,如何把代码更高效地组织起来。把小的东西组合成大的,添加简单的东西慢慢变复杂,让静的东西变动。


上帝模式中有几个技术层次。

  • 最底层是类(或结构体)的封装和继承设计,还有流程设计。

  • 建立在这之上呢,有各种设计模式。

  • 很多人以为设计模式就顶天了,其实上面还可能有架构模式,就是大家经常用的各种框架。

  • 而架构模式之上,还要考虑到物理架构,到底跑在哪些机器之上。

上帝模式的特点如下。

  • 技术发展不会那么快。木匠模式的技术,变化周期大概一两年。而上帝模式的技术,变化周期大概是 10 年、20 年甚至更长。这对大龄程序员是个好消息,因为有充足的时间去消化新技术。

  • 它的知识点比较散,比较虚,让你列出来吧,又没那么好归纳。其中设计模式和架构模式前人已经总结得非常好了。但除此之外,还有好多技巧比较散,不是那么好把握。很多选择只能是具体问题具体分析。

  • 由于应用场景不一样,好坏的标准很难精确,所以最后每个人的领悟可能会不一样。

  • 即使有提高,但效果不会立竿见影,还需要长期的磨练和检验。

  • 积极活跃的技术分享者相对少。


虽然上帝模式的技术,是每个程序员应该追求的目标。不过,这个过程不仅需要持续地尝试,更需要自己的思考和总结。演示图如下:


640?wx_fmt=png

以上步骤,反复历练,你定会悟到属于自己的东西。


和产品设计的争夺

产品设计原本不是一个独立的工种,起初是程序员自己兼着干。

21 世纪初,随着互联网的迅猛发展,产品设计作为一个专门的细分行业横空出世了。但就是这么一个不经意的不起眼的行业细分,让程序员在上帝模式中退避三舍,这就值得我们好好聊聊了。


640?wx_fmt=png

上帝模式中的产品设计

在上帝模式中,还有一个很重要的模块,因为它比较特殊,不涉及编程,但是其重要性不亚于任何代码的架构设计,这就是产品设计。

从事产品设计的人,即便不管人,也一般称为“产品经理”。如果程序员想当经理,那么转产品设计是个很好的途径,只要转过去,就变成了“经理”。

在多次和产品经理打交道的过程中,你可能对产品设计的重要性深有体会。比如,遇到原有设计难以使用的情况,产品经理通过更改用户操作的流程,大大降低了难度。也遇到过本来挺简单的事,产品经理为了满足一个小需求而大大增加了难度,导致整个系统架构变得很复杂。

如今,很多程序员对产品设计者有着不同程度的误解。

首先,误解他们就是负责产品的界面设计的。

但情况远不止如此,你得懂交互吧?你得懂视觉吧?还得懂市场吧?拿产品经理自己的话来说:产品设计的首要职责是决策该做什么,不该做什么?要达到的指标是什么?如何拆分优先级并落地?上线后的效果跟进以及之后的迭代优化等。界面呢,只是最终的一个呈现。背后的逻辑和思考才是最耗时、最考验人的。

其次,误解他们的工作内容至少比编程更容易、更简单。

实际上不是这样的,产品设计更需要经验和灵感。初级程序员写出来的烂代码,只要能运行,用户是不知道的。但产品设计者一旦弄出一个糟糕的设计,其欠缺之处用户会一目了然,这是躲不掉的。

而且产品经理也要不断地去沟通和反复修改自己的设计,这不比程序员调试代码更容易。

640?wx_fmt=png 程序员和产品设计者的关系

自从产品经理这个角色诞生以来,他们和程序员的关系变得非常微妙。

在产品设计者的眼里,程序员就是将他们脑子里的设计化为实物的劳动力而已。程序员是受他们间接指挥的,每一个细节设计都是对程序员的命令。

产品设计者比程序员掌握更多的信息。产品或项目的规划进展以及其中各种幕后的曲折和妥协,程序员可能都无从知道。此外,产品设计者思考的角度也处于程序员的前面。例如,针对用户的需求,或者用户不知道自己有这方面的潜在需求,产品经理会首先将这些东西具体化,程序员得到的是最终的决定。

因此,产品经理和程序员在慢慢的长期博弈中,很自然就占领了主导权。随着产品经理这个角色的出现,他们实际上瓜分了相当一部分程序员处于上帝模式中的工作。反过来讲,这无形中让程序员把更多的精力放在木匠模式的工作中,同时也降低了资深程序员的价值。

这听起来着实让人沮丧,幸好事情还远没有到悲观的程度。

  • 和 IT 相结合的行业是很广的,并不是每个行业都有必要请产品经理。实际上,很多产品设计还是由资深程序员兼任的。

  • 对于上层的应用软件来讲,也就是对广大用户提供操作界面的程序,其产品设计是非常重要的,好的设计能让编程架构事半功倍。但软件领域也是很广的,并不是所有软件都是直接面向普通大众用户的。例如,在数据挖掘系统中,产品经理基本退化到“项目管理”的功能了,最主要的驱动力还是程序员自己。

而每个程序员也应该具有产品经理的思维。程序员作为第一手的用户,如果多花点心思去体验,理应对该产品有最深的理解。所以,如果发现界面设计的问题,应该勇于发表自己的看法。

但请注意:一定要站在用户体验的角度去和产品经理争论,这样才能占领制高点。切不可直接站在实现难度的角度去争论,这是大忌讳!尤其是双方刚合作处于磨合期时,对方搞不清楚到底是真的实现困难,还是你技术能力不行。






02

木匠模式:致富只有勤劳一条路



程序员在木匠模式下,处理的是最细节、最琐碎、最具体的实现,每行代码都一丝不苟地完成,还要确保它们没有 bug。

在编程中,大多程序员大部分时候是做木匠,扮演上帝的时间其实挺少的。可见,木匠的工作效率对于当前整个项目的开发效率是决定性的。

虽然长期来看,上帝比木匠更重要。但每次轮到当下,木匠又比上帝更重要。

那么,如何才能成为一个高效的木匠呢?

中华民族 2000 年的历史告诉我们:想要致富,必须勤勤恳恳,没什么捷径可走。而程序员的木匠模式能力的积累,也是这样的,没有捷径可走。

随着互联网的普及,各种木匠模式的资料也得到极大发展,很多资料规整得更好,容易搜到,容易看懂。除非特别前沿的技术,否则针对一般具体问题,你都能比较容易地找到相关信息。尤其是开源代码的流行,更能直接帮助初学者去提高,去积累。所以,现在的初级程序员比前辈要幸福,上手更容易。


随着时代的发展,木匠模式的门槛越来越低,也意味着竞争压力也越大。虽然门槛低,容易学,但并不意味着做木匠很幸福。长期看,木匠很被动,因为木匠们所积累的知识点,隔三差五可能被清零。针对这个特点,刚毕业的程序员会觉得很爽,因为刚毕业就和工作 10 年的人面对差不多一样的处境。而工作 10 年的人就觉得很受伤,经常被逼着反思要不要继续程序员生涯。


上帝的生存很优雅,虽然他的工作内容也在进化,但进化的时间轴要慢许多。木匠的使用工具进化很快,稍一懈怠,学习速度就可能赶不上新的变化。你必须认识到:一个程序员若想依靠纯技术而体面地度过漫长的中年危机,必须在上帝模式中有充足的积累


所以各位猿们加油吧!


精彩回顾

♡ 程序员究竟能干多少年?

♡ 互联网公司各岗位真实工作内容起底

♡ 一次尴尬的采访和程序员的传奇脑洞!

♡ 天一冷,程序员都穿上格子衫

♡ 史上最真实的行业鄙视链曝光

♡ IT公司老板落水,各部门员工怎么救

♡ 宿命之战:程序员VS产品经理

♡ 作为一个前端,可以如何机智地弄坏一台电脑?

♡ 程序员跟产品经理打起来了,这是一个需求引发的血案...

 后端说,你个前端不会用 headers吧,我怒了!

♡ 有个厉害的程序员女朋友是什么体验?

 多年来,程序员经常加班的真相终于揭开了…


640?wx_fmt=gif


最后

以上就是整齐彩虹为你收集整理的程序员特有的精神分裂现象的全部内容,希望文章能够帮你解决程序员特有的精神分裂现象所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部