做程序员压力山大,很多人都快疯了
软件程序员在如今看来是一个既能挣钱又有工作保障的职业,但是,这种职业对你的精神健康却会造成巨大的伤害。
有两种事情几乎能让程序员疯掉。
一个是被人们称作“骗子综合征(imposter syndrome)”的东西。患这种症状的人通常是发现一起共事的所有程序员都比自己聪明、比自己有天份、比自己有才能。你生活中一直恐惧中,担心其他人会最终发现你是个冒牌货、你的技术和能力是装出来的。
经常会有女性程序员坦白说遭受”骗子综合征(imposter syndrome)”的折磨,这并不让人意外。这种精神疾病是由心理学家Pauline Rose Clance博士和Suzanne Imes博士提出,他们发现一些成功的女性会表现出这种症状。有很多心理健康类的书籍也以”骗子综合征(imposter syndrome)”为题材,在女性读者中很流行。
但是,大量的男性程序员也越来越多的表露他们也有这种精神压力。
通常人们喜欢对其他人高要求,而这些人却有个共同的习惯是,给自己施加极高的标准和要求。这种综合征通常出现在有人评判、有人对比的职业类型中。软件开发正是这样的一种行业,特别是开源软件,每个人都能看到你的代码,可以修改它。
从“骗子”到“真正的程序员”
“骗子综合征(imposter syndrome)”会让程序员落入这样的一个陷阱:他们认为自己需要更努力的工作才能做到足够优秀。这意味着他们要花更多的时间编程——用去全部睁着眼的时间——承担更多的项目开发。
这种被称作“真正的程序员”综合征的心理现象是从Reddit上一篇火爆的帖子中诞生的。这种“真正的程序员”的生活中只有编码。Reddit网友big_al11解释说:
一个“真正的程序员”是那种热爱编程的人!如此之爱,以至于他的所有时间都是在编程。
…
“真正的程序员”并不认为编程是一种”工作“。
…
如果一个程序员不是每周工作60-80小时(自愿无偿的,只是因为编程”有趣“),那他就不是一个”真正的程序员“。
…
整个行业内弥漫着这种文化。
…
如果你想成为一名成功的程序员,你至少要做到看起来像一个”真正的程序员“….于是有人就开始晚上加班、周末加班,只是为了看起来像是一个”真正的程序员“,于是这些人最终精疲力竭。
做老板的都希望他们的程序员通宵达旦的工作,这并不新鲜。但新鲜的是,程序员现在是自愿的要打破自己的每周工作时长记录,纯粹是因为乐趣。
例如,十多年前,在互联网泡沫期间,一本叫做《Death March》的书登上了畅销榜。书中描述了程序员疯狂的工作导致出各种健康问题。书中的结论是,这归咎于糟糕的项目管理。
在2004年,发生了一宗程序员因为加班问题起诉Electronic Arts公司的案件,并最终赢得了1500万美元的赔偿。
几年后的2010年,一篇由一个在Rockstar Games游戏公司工作的程序员的妻子写的文章迅速蹿红。文中讲述了公司如何要求程序员长年累月的每周工作6天、每天工作12个小时,很多程序员健康出现了问题。
到2011年,做“真正的程序员”的风潮继续。当年在编程社区网站StackExchange上的一场讨论让很多人思考。有一个人问,“我在业余时间不编程。这会使我成为一个不合格的程序员吗?”
一般的意见都认为,如果你只在上班时间编程,你也可以成为一名优秀的程序员,但是,“最伟大的程序员都在他们的空闲时间编程。”
“多”并不总是意味着“好”
长时间工作就能让你变得更优秀吗?这是一个值得怀疑的问题。斯坦福大学曾经研究过一个人真正有效率的编程时间是多少?结果你想必不会吃惊,他们发现工作时间过长会使工作效率降低。过度工作的程序员,每周工作60小时的程序员相比起那些每周只工作40的,更容易写出质量低下的代码。
这并未能阻止“骗子”/“真正程序员”综合征的流行。总有一些让人非常心疼的故事时不时的爆出来。
例如,大概一年前,一个叫Kenneth Parker的程序员在他的博客上写了一篇叫做“亲历者讲述一个程序员如何变成精神病人的”文章。
文中讲述了他们的同事如此努力的工作,结果“完全精神崩溃”。
他是我在编程业界里见过的最勤奋的程序员。他经常晚上在公司加班,当周末有紧急工作要处理时,他总能随叫随到
…
然而,当被送到了精神病治疗中心后,他的工作效率就不是那么令人满意了。我被公司派去医院探望他,他向我要了一支笔和一张纸,他想把程序写在上面。“我还能写程序”穿着病人睡袍的他对我说。他在纸上写了两行代码,然后不能自控的抽搐哭啼起来。
最近New Relic公司的程序员 Nick Floyd开始写一些被他称作“Nerd生活平衡”的文章。他首先坦白自己曾经也是“骗子”综合征的受害者,但他现在相信,当你喜欢上一种工作后才会获得快乐。他写到:
在New Relic公司工作是有挑战性的、辛苦的,令人恐惧的,但这从未影响我。在进入这个公司前,我一直认为,工作就是必须要做的活儿,通常是让人不爽的,而生活就是从工作的不愉快中逃脱出来。但现在我不再那样想了——当“工作”变成另外一种表达你的生活中的热情的方式时,生活更精彩了。
而另一方面,Reddit网友给出了一个让人深思的建议:
我真的非常希望我们生活在这样的一个社会里:不要以工作时长论英雄,不要以加班加点为美德。
说一说你期望的工作?
- ofbiz实体引擎(三) GenericDelegator实例化的具体过程
- 机器学习实战 | 第五章:模型保存(持久化)
- Python编程任务 | 斯坦福CS231n-深度学习与计算机视觉课程
- ofbiz实体引擎(二) delegator实例化具体方式
- ofbiz实体引擎(一) 获取Delegator
- 12个非常实用的JavaScript小技巧
- 关于PHP浮点数精度损失问题
- FreeMarker与JSP 2.0 + JSTL组合进行比较
- 从零开始学设计模式(1):基础编程模式
- 机器学习实战 | 第四章:模型验证和选择
- ofbiz中FreeMarkerWorker的makeConfiguration方法
- 后台进程(守护进程)自动备份PostgreSQL数据库
- 了解这些PHP小技巧吗?
- 结构体字节对齐
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 最简实现Promise,支持异步链式调用(20行)
- 40行代码把Vue3的响应式集成进React做状态管理
- 写给女朋友的中级前端面试秘籍(含详细答案,15k级别)
- 写给初中级前端的高级进阶指南
- 为什么 Vue 中不要用 index 作为 key?(diff 算法详解)
- Vue3 的响应式和以前有什么区别,Proxy 无敌?
- 腾讯云TKE-PV使用cos存储案例: 容器目录权限问题
- Vue3 究竟好在哪里?(和 React Hook 的详细对比)
- 前端「N皇后」递归回溯经典问题图解
- 深入 TypeScript 中的子类型、逆变、协变,进阶 Vue3 源码前必须搞懂的。
- Vue3 + TypeScript 实现递归菜单组件
- TypeScript 4.1 新特性:字符串模板类型,Vuex 终于有救了?
- TS 4.1 新特性实现 Vuex 无限层级命名空间的 dispatch 类型推断。
- egg.js踩坑记录(一)开始篇
- VUI创建日志(二)——防抖节流组件的实现