为了说明程序员思维的轴劲,网上有一个非常有意思的段子:
老婆给程序员老公打电话:“下班路上买一斤包子,如果看到卖西瓜的,买一个。”
最后,老公只拎了一个包子进了家门……
老婆怒道:“怎么就买了一个包子?”
老公答曰:“因为看到了卖西瓜的。
action = "买包子" # 动作
amount = "1斤" # 数量
if situation == "看到卖西瓜的": # 如果看到买西瓜的
amount = "1个" # 买一个
然而,这段子只是程序员的一种自我调侃。现实中不会发生,如果真发生了,不过是缺心眼罢了,跟技术思维没有什么关系。
另外一方面,绝大部分程序员(工作)所依赖的程序语言,其本身是需要追求逻辑当如自然语义般容易理解。所以,段子只是段子,真正的代码世界,是不应该出现这种明显逻辑有悖于上下文语义的情况。
程序员思维与技术思维是截然不同的。
比如说一个人的思维原本类似于 阳光与尘,窗格对夕照,晚城对伤痕
非理性的,那么,当他成为程序员后,在时光的雕琢之下,原本思考、联想的能力、甚至待人方式会发生变化。但他仍然是他,只是发生了些许变化,或许更理性,又或许人文性少了,或许更有逻辑,也或许更死板了。
这是一个行业、一个领域,给个体带来的影响,可勉强称之为程序员思维。
而技术思维,从某种角度来说,它是一种客观的,描述一个产品从构思到成品的技术实现思路。
我们要理解、领会的是 技术思维,而不是程序员思维。甚至说,后者并不需要领会,更多时候还需要我们自己努力克服的。
再衍生一个『段子』:
夫人说: 回家顺路,买个西瓜或者葡萄吧。
然后,你同时看到了西瓜、葡萄,请问,最终买了西瓜还是葡萄,还是两者一起买?
如果从 技术思维 的角度出发,答案是 只会买西瓜。
这里涉及到的是(多数)程序语言中 或
的逻辑,比如 a or b or c or d
这种连续的判断 或
,是以碰到第一个 符合条件(真)
为准的,然后返回它的值。比如 1 or 2 or 3
返回的是 1
,而 0 or '' or 12 or 15 or 1
返回的是 12
。那么,西瓜 or 葡萄
两者同时存在的时候,返回的是 西瓜
。
技术思维,描述的是一种事物运行的机理,但是作为人类,你遵循或不遵循,或者完全遵循或进行部分调整,大多是可以根据我们的主观意愿而改变的。
简而言之,技术思维 更多描述的是一种(如何实现的)规律,有一定客观性,但最终仍取决于实施者。
我们也将刚才的例子代码化:
注: 两个截图里的代码,需要引起我们的思考,到底 grapes
好还是 grape
更好?到底是 fruit1
好还是 fruit_1
好呢?
《FirstWeb》这个课程是从 Web 前端的基础入手,希望能帮助学习者建立基本的技术思维。
基本的技术思维构建了,剩下的都不是事情了。如果计划在技术上继续深入的,自己花时间实践就可以了;如果打算点到为止,所得知识与技能,也足以推动团队内部的沟通效率提升,未来继续深入的时候也有方向可依。
我们当中不少人其实有一种隐性的焦虑感,有时特别想学会编程、技术,就可以将自己的一些(产品上的)想法变成现实。
这种焦虑感,可能由团队内部环境触发,也可能是由这个行业触发的,也可能是进取心不死的群体本身在信息技术时代中必然存在的普遍现象。
处在信息技术时代,技术无处不在,而我们因为对它所知不多,又无法控制。不可控的,却又常在的,这种矛盾,导致焦虑感倒是自然的事情。
愿最终,技术的焦虑,在此处消解,并多出另一种思维,去重新审视以及改造这个世界。