大龄程序员怎样渡过中年危机?(转)

大龄程序员怎样渡过中年危机?

作者前言:

话说再有十几天就进入2016年了,想到这,我不由得五味杂陈。2016年对我来说是一个特殊的年份,因为我即将40岁了,人生正式告别青年期,进入中年了。

在娱乐圈,哦不,是在程序员这个吃青春饭的行业,有一个人人闻之色变的话题,曰:「年老色衰」。只要是个程序员,心里都会惴惴不安的想:「我老了以后卖不动色相,哦不,写不动代码了,我还能干啥呢?」。今天咱们来谈谈这个禁忌话题。

在我还是25岁的时候,我和很多程序员一样,其实有同样的担心,老了以后怎么办?写代码难道还能写到30岁?

当我30岁的时候,我发现自己创业去了,虽然非常苦逼,但是苦中作乐,还挺有挑战的。当然创业是没有退路的,创业要是失败了,估计更加没人要了。所以还是先想创业的事吧,35岁的大龄程序员问题还是5年以后再说。

一晃我就35岁了,创业公司卖给CSDN了,我在CSDN当CTO了。话说这个CTO其实也很苦逼,操心的事太多,每天各种杂事,压根没空想中年危机的话题。

然后我马上就40岁了,不算有钱,但养活自己完全没问题,想着趁自己还能蹦跶几年,再做点什么吧,就到丁香园了。

现在回想25岁的时候,当初的担忧真的是杞人忧天了。我现在写代码也完全没问题,偶尔也会写点代码练练手,自娱自乐一下。但是从2010年我34岁开始,工作上我已经不适合写代码了。不是我不愿意亲自写代码,我反而觉得写代码很有成就感,而是我不写代码对公司的价值更大,我需要把时间和精力放在规划产品方向、决策技术架构、培养团队,提升公司战斗力上。

那些70后的程序员都消失了吗?

如果你现在去一家互联网公司看看,你会发现程序员的主力都是90后了,80后都很少,至于70后几乎绝迹。那么一个有趣的话题是:「70后的程序员都消失了吗?」

其实没有消失,而是70后的程序员已经成为各个互联网公司,各个IT公司的高层了。那么你会问:「一个公司就几个高层职位,哪有那么多职位给70后呢?」

答案是:「20年前根本就没有多少IT公司,70后的程序员也没有现在动辄几百万的规模」。这20年来,整个IT和互联网行业扩大了100倍都不止,创造了海量的就业机会,无论是高层还是一线岗位。

那么还有70后程序员奋战在coding第一线的吗?当然有!比我还大一岁的高春辉,中国互联网的活化石啊。老高身为一家公司的老板,仍然不肯放下coding的乐趣,至今坚持亲自写代码。

所以看起来,到了40岁,无论自己写不写代码,似乎都不至于年老色衰,程序员这个职业的保鲜期似乎没有娱乐圈短。作为一个年轻程序员的你来说,应该怎样延长自己的保鲜期呢?

20-27岁:技术积累阶段

假设本科22岁毕业,那么工作的前5年对你来说是打基础的阶段。在这5年时间里面,你要积累足够的代码量,打磨自己的技术实力,成为某一个技术细分领域的牛人。

而我自己当年在这个阶段的努力程度是如饥似渴的,春节都不回家,蹲在出租房里面啃技术文档。刚参加工作的时候,曾经连续一个月在公司打地铺睡觉。

28-35岁:形成思维方法论和知识体系的阶段

当你积累足够的代码量,例如超过10万行代码以后,你应该形成了自己的思维方法论和自己独立的学习技巧,任何新的技术在你眼中都能迅速的看到技术的本质,快速吸收成为你的知识体系的一部分。

到了这个阶段,你会发现你所完全不了解的新技术新知识是非常少的,新技术对你来说也不过是几天时间就把玩的很好的玩具,学习越来越轻松,掌握的知识储备越来越多。

你开始逐渐的不再满足于纯技术领域的探索,而是思考更多的问题:如何将技术转化为生产力;什么技术在什么样的场合能够发挥最大的价值;技术团队应该怎样构建;在一家公司里面,我怎样才能将自己的技术能力最大化的发挥出来?

在这个阶段,积累技术对你来说简直是小菜一碟,你更需要磨练的是思考能力,形成自己的思维方法和知识体系,这将是你帮助你一生的武器。

35岁以后:了解自己,把自己变现的阶段

毋须讳言的是,35岁以后你的一线coding能力一定是下降的,你写代码绝对不如25岁的程序员快,效率高。但是这不重要,因为编程只是你整个武器库当中相对最不重要的了,你的经验,你的视野,你的架构能力,你的管理能力,你分析和解决问题的能力已经远远不局限于技术这个领域。

30-35岁这个阶段,最关键的是了解自己。知道自己擅长什么,自己的优势在哪里,怎样才能够最大化自己的价值,同时也知道自己有什么缺陷,怎样避开做自己不擅长的事情,不勉强自己,不让自己处于对自己不利的环境,这是人生的智慧。

一个人能够客观的认识自己是非常困难的,很多人终其一生都没有活明白,既不知道怎样发挥自己的天赋,也拒绝承认自己的缺陷。在35岁以后,要接受一个不完美的自己,知道怎样扬长避短,最大化个人价值。能够做到这一步的程序员,人到中年完全不是程序员生涯的终结,反而会走向个人事业的巅峰。

一些后话

在这篇文章当中,我没有提到很多具体的技术人员选择发展道路的问题,例如:

  • 成长为核心业务的核心骨干
  • 成长为技术管理层
  • 转型业务专家,转型做业务咨询顾问
  • 转型产品经理,产品总监,走产品线

这些都可以,都是一些具体的职业发展道路的选择问题。然而无论选择,只要你始终保持开放的学习心态,不断积累知识和经验,构建个人的知识体系,磨练自己的思考能力,并且时常自省,中年对你来说完全不是危机,而是巅峰。

转自:http://zhuanlan.zhihu.com/robbin/20427809

转载于:https://www.cnblogs.com/moyuling/p/5220698.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

靶场练习第十二天~vulnhub靶场之dc-4

一、准备工作 1.靶机下载链接 链接: 百度网盘 请输入提取码 提取码: 3hq4 2.用ifconfig查看kali的ip 二、信息收集 1.nmap的信息收集 (1)主机发现 命令:nmap 192.168.101.0/24 (2)扫描靶机详细信息 发现主机 192…

网络命令-nc(二)

继续Netcat 这个命令吧 1&#xff1a;远程拷贝文件 在本地输出 文件debian.img 到 192.168.5.40 主机12345端口监听 nc -v 192.168.5.40 12345 < debian.img 在192.168.5.40 主机12345端口监听&#xff0c;将文件指定为debian-copy.img nc -l -v 12345 > debian-copy.im…

靶场练习第十三天~vulnhub靶场之dc-5

一、准备工作 1.靶机环境搭建 下载链接: https://pan.baidu.com/s/1csvuJ_NVCBvVr75KhxyM3Q?pwdxie7 提取码: xie7 2.kali的ip 命令&#xff1a;ifconfig 3.kali和靶机的都设置为NAT模式 二、信息收集 1.nmap的信息收集 &#xff08;1&#xff09;寻找靶机的ip 命令&…

Ubuntu中输入输出重定向及管道技术简述

输出 1、标准输出 定义&#xff1a;程序在默认情况下输出结果的地方&#xff08;stdout&#xff09;。 2、输出重定向 定义&#xff1a;用于把数据的输出转移到另一个地方去。 3、Ubuntu中例子 $ls > ~/ls_out ##不显示在显示器上而是输入到文件ls_out中 uname -r > ls_…

activex打包

http://www.cnblogs.com/weiwin/p/4493835.html activeX 打包 原文 http://www.docin.com/p-409284488.html CAB打包文档说明 文档目的本文档的目的在于说明将ocx和dll以及相关的文件打包成一个CAB包&#xff0c;以便在网页下调用ocx控件时免去手工将dll和其他一下文件拷贝到客…

靶场练习第十四天~vulnhub靶场之dc-6

一、准备工作 kali和靶机都选择NAT模式&#xff08;kali与靶机同网段&#xff09; 1.靶场环境 下载链接: 百度网盘 请输入提取码 提取码: bazx 2.kali的ip 命令:ifconfig 3.靶机的ip 扫描靶机ip 命令&#xff1a;sudo arp-scan -l 二、信息收集 1.nmap的信息收集 &#…

最短路径Dijkstra算法和Floyd算法整理、

转载自&#xff1a;http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html 最短路径—Dijkstra算法和Floyd算法 Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法&#xff0c;用于计算一个节点到其他所有节点的最短路径。主要特点是以…

Java Script 中 ==(Equal) 和 === (Identity Equal) 的区别和比较算法逻辑

判断两个变量是否相等在任何编程语言中都是非常重要的功能。 JavaScript 提供了 和 两种判断两个变量是否相等的运算符&#xff0c;但我们开始学习的时候 JavaScript 的时候&#xff0c;就被一遍又一遍的告知&#xff1a; 要求变量的类型和值均相等&#xff0c;才能返回true…

靶场练习第十五天~vulnhub靶场之dc-7

一、准备工作 kali和靶机都选择NAT模式&#xff08;kali与靶机同网段&#xff09; 1.靶场环境 下载链接:https://download.vulnhub.com/dc/DC-7.zip 2.kali的ip 命令:ifconfig 3.靶机的ip 扫描靶机ip sudo arp-scan -l 二、信息收集 1.nmap的信息收集 &#xff08;1&…

ubuntu系统下如何修改host

Ubuntu系统的Hosts只需修改/etc/hosts文件&#xff0c;在目录中还有一个hosts.conf文件&#xff0c;刚开始还以为只需要修改这个就可以了&#xff0c;结果发现是需要修改hosts。修改完之后要重启网络。具体过程如下&#xff1a;1、修改hostssudo gedit /etc/hosts2、添加解析记…

Matplotlib不显示图形

安装好了Matplotlib&#xff0c;使用官方一个例子测试运行时&#xff0c;发现使用画图功能时&#xff0c;运行脚本老是显示不出图像&#xff0c;Google了一下&#xff0c;后来发现是matplotlibrc文件没配置好。 参考了官方文档&#xff0c;修改步骤如下 1.查找matplotlibrc文件…

靶场练习第十六天~vulnhub靶场之dc-8

一、准备工作 kali和靶机都选择NAT模式&#xff08;kali与靶机同网段&#xff09; 1.靶场环境 下载链接:https://download.vulnhub.com/dc/DC-8.zip 2.kali的ip 命令:ifconfig 3.靶机的ip 扫描靶机ip sudo arp-scan -l 二、信息收集 1.nmap的信息收集 &#xff08;1&…

【SpringMVC】SpringMVC系列4之@RequestParam 映射请求参数值

4、RequestParam 映射请求参数值 4.1、概述 Spring MVC 通过分析处理方法的签名&#xff0c;将 HTTP 请求信息绑定到处理方法的相应人参中。Spring MVC 对控制器处理方法签名的限制是很宽松的&#xff0c;几乎可以按喜欢的任何方式对方法进行签名。必要时可以对方法及方法入…

Sprint3

进展&#xff1a;今天主要是各自熟悉安卓应用开发平台&#xff0c;设计了图标&#xff0c;没什么实际上的进展。 燃尽图&#xff1a; 团队工作照&#xff1a; 转载于:https://www.cnblogs.com/XJXYJ/p/4495810.html

靶场练习第十七天~vulnhub靶场之dc-9

一、准备工作 kali和靶机都选择NAT模式&#xff08;kali与靶机同网段&#xff09; 1.靶场环境 下载链接:https://download.vulnhub.com/dc/DC-9.zip 2.kali的ip 命令:ifconfig 3.靶机的ip 扫描靶机ip sudo arp-scan -l 二、信息收集 1.nmap的信息收集 &#xff08;1&am…

Linux内核分析 02

二&#xff0c;操作系统是如何工作的 1、函数调用堆栈 三大法宝&#xff1a;存储程序计算机 函数调用堆栈 中断机制 堆栈&#xff1a;是C语言程序运行时必须的一个记录调用路径和参数的空间。是计算机内部现成的东西&#xff0c;我们直接使用。 包括函数调用框架、传递参数、保…

一 UI基本的用法

1. UIView的基本用法 //打印屏幕的宽和高CGRect screenBounds [[UIScreen mainScreen] bounds];NSLog("%f, %f", screenBounds.size.width, screenBounds.size.height);//创建一个UIView//UIView表示一个矩形区域UIView *v1 [[UIView alloc] init];//1.确定大小CGR…

靶场练习第十八天~vulnhub靶场之hackableII

一、准备工作 kali和靶机都选择NAT模式&#xff08;kali与靶机同网段&#xff09; 1.靶场环境 下载链接:Hackable: II ~ VulnHub 2.kali的ip 命令:ifconfig 3.靶机的ip 扫描靶机ip sudo arp-scan -l 二、信息收集 1.nmap的信息收集 &#xff08;1&#xff09;扫描靶机开…

Object-c基础(2)

类和对象 类 在Object-c中类&#xff0c;其接口&#xff08;interface&#xff09;和实现&#xff08;implementation&#xff09;是分离开来的 类的声明 interface 类名:父类名{实例变量的定义;}方法声明;...end类的实现 implementation 类名方法定义...end对象 一个类提供…

arm linux 下移植busybox 的tftp

&#xff08;1&#xff09;进入busybox目录&#xff0c;make menuconfig &#xff0c;然后在networking中勾选tftp项跟tftpd项。 &#xff08;2&#xff09;配置/etc/inetd.conf 中关于tftp的选项&#xff08;此部未验证&#xff0c;不需要应该也可以&#xff09; tftp dgra…