关注码农话题
做一个实实在在的内行人

程序员该如何过好他的整个职业生涯?

明确入行的目的

很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML、DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开发人员更容易找到工作,收入比普通的工作还要高一些,所以成为了很多高校毕业生的选择。如果您只是抱着这样一个心态来入行的话,那阁下可真的要小心。

因为干IT这一行竞争本来就比较激烈,特别是页面设计这方面,能够开发的人很多,所以为了节省成本在大部分公司都会在需要的时候才招聘这类人员,在没有订单的时候一些小公司还可能找各类的借口或者以降薪的手段去开除这类员工。而在招聘信息上常常会看到“招聘页面设计师,条件:30岁以下……欢迎应界毕业生前来应聘”这样一条,因为这一类工员对技术上的要求并不高,找应界生可以节约成本。

所以在下觉得“IT行业是吃青春饭的”这句话只是对着以上这类人所说的,如果阁下缺乏“进取之心”,而只抱着“收入高,容易找工作”这样的态度而入行,那“IT行业是吃青春饭”将会应验了。

明确发展的方向

当您对某种开发语言已经有了一定的了解,开始觉得自己如同“行尸走肉”,成为一个开发工具的时候,那您就应该要明确一下自己的发展方向了。归纳一下,可从下面几项里选择适合自己的一条道路:

1、从技术向业务过渡

在国外,很多发达国家都很重视人才,一个高级的程序员与一个Project Manager收入相差一般不超过15%。但中国是世界上人口最多的国家,国内人才众多,所以人才滥用的情况经常可以看到。一个小公司的开发部里面经常会见到新面孔,但PM却不会常换。因为做老板的对技术是一窍不通,依他们看来只到拉住PM的心,那在技术方面就能搞得定,至于技术部要换人,他们根本不需要费力气去管。

所以从一个技术员过渡到一个PM是向前发展的一个选择,但开发人员也需要知道,要成为一个PM不单单是使用技术,而更重要的是对管理方面认识。一个PM主要的工作是组织团队,控制成本,管理业务,控制项目进度,与客户进行沟通,协调工作,定期进行工作报告等。所以要成为一个成功的PM更要重视组织能力,PM必须能提高团队的积极性,发挥团队所长,在有限的开发资源前提下为公司得到最大程度上的利润。

成为一个PM后,通常不需要直接接触技术开发,而着重管理的是业务发展,但PM对技术也需要有一定的了解(在下曾经为PM对技术了解的必要性写过一篇文章,得到很多支持但也惹来不少的争议)。在这里我还是要强调自己的观点:要成为一个成功PM最重视的是管理能力,但对技术也应该有足够的了解,因为这是与团队成员沟通的桥梁,只有这样才能与整个团队的成员有着紧密的结合,让团队成员感觉到他们自己存在的意义,从而调动团队的积极性,而不是漠视技术人员的存在。技术并非成为一个成功PM的充分条件但却是必要条件!

2、从程序员向技术管理发展

其实一个Team Leader的职责与Project Manager相像,但Team Leader更着重于技术开发方面,通常一个大型项目都会有一两个开发团队由Team Leader带领,负责开发核心部分,而其它部分分派给不同开发小组或者分派给外包公司。在网上常看到几句话,贴切地形容了PM与TL的区别:“技术人员乐于被领导;但他们不喜欢被管理,不喜欢像牛一样被驱赶或指挥。

管理者强迫人们服从他们的命令,而领导者则会带领他们一起工作。管理是客观的,没有个人感情因素,它假定被管理者没有思想和感受,被告知要做什么和该如何做。领导是引领、引导,它激励人们达成目标。领导力是带有强烈个人感情色彩的,它不是你能命令的,也不是你能测量评估和测试的。”

程序员不一定要写一辈子程序

以前人们总是说年龄大了就不要写代码了,或者说写不动代码了。现在多少有点矫枉过正,比如 CTO 怎么能不写代码呢,写代码可是一辈子的事呀。在我看来,这个问题根本没什么可以争论的,一个阶段一种做法。如果你写代码是最有价值的,就去写代码。如果你做产品是最有价值的,就去做产品。如果你去管理公司是最有价值的,就去管理公司。前一阵子看过一篇文章「扎克伯格开发笔记:打造 Jarvis 的日子」,扎克伯格在文章里写到:

2016年我给自己制定了一个挑战:打造一个像钢铁侠里 Jarvis 那样的家庭 AI 助手。

在这一年里,我打造了一个可以通过手机和电脑进行对话的 AI 系统。它能够控制我家里的灯光、温度、电器、音乐和安防系统,而且这个 AI 还能了解我的品味和习惯,可以学习新的词汇和概念,甚至可以逗我的女儿 Max 开心。Jarvis 是由 Python、PHP 和 Objective-C 编写的,运用了包括自然语言处理、语音识别、面部识别以及强化学习在内的人工智能技术。

扎克伯格是为了编程而编程么,显然不是。除了保持技术的敏感度,他主要是为了了解人工智能发展的现状。通过挑战熟悉 Facebook 的工程师们使用的内部技术,同时了解智能家居。而且,这些工作仅仅占用了他很少一部分时间。

实际情况也是这样,与我一起成长起来的七零后程序员,差不多有超过一半,他们的工作重心已经不再是编码,而是其他工作事务,另外一半则依然以编程为主要任务。这两种状态,都是很好的存在。

下面就我最近思考的几个问题梳理下:

自身找原因

1.没有形成自己独特的优势,和项目技术优势的唯一性,不具备不可替代性。

2.技术方面仍然不够深入,新项目多涉及爬虫、数据采集、大数据,这几点都比较薄弱。

3.擅长C、C++、Shell,但公司中Java、Python占了近8层,在努力跟进学习中。

不善于主动请缨,公司很看重个人主动担当,但是以前大公司的程式化的工作,都是分配,把手头的工作做到极致就能够在公司中站得住脚。

外部因素

1.做项目非做产品

很大的不同在于:产品有技术的重用性、深入性;而项目则是这一个和下一个可能是两个截然不同的方向,有的项目就是应付交差性质的,周期短,学的是多,但不见得能真正掌握住东西,有所沉淀。

公司不是在项目中锻炼大家的能力并提升之,相反甚至让大家去找方向,这点在做产品的公司几乎不存在的。

2.薪资较老婆越拉越远

其实,作为男人、尤其IT男人,这点可能感觉压力非常大。近年来,习大大上台后,事业单位高歌猛进,工资和激励机制都非常不错(老婆单位也不例外)。一个月下来比老婆低好几K了。

着实想在IT深入发展,但是这种心理落差,的确比较郁闷。

3.除去每个月的房贷,所剩无几(前有提及,一切的梦想落脚现实必然不可回避钱的问题,没有办法)。

4.项目中的功劳和苦劳(牢骚,可以略读)

之前我也甚至回避不谈钱,总感觉,付出总会有回报。但忙活了多半年,到头来,只有苦劳没有功劳。这点,程序员几乎不可以接受的。不想去沟通,也不屑于沟通。心中明白即可,没必要说。

我不明白,程序员为什么写的好不如说的好?(这在大公司几乎不存在的,业务、销售人员除外)。

5.关于主动

多向其他同事学习,变通,积极主动。多学习,多努力!

变或是不变

温饱都不能解决的程序员真的感觉梦想是很奢侈的事情。但是我还是坚持说说梦想,因为每一次敲击编码跑通程序的时候、每次提交自己的博文的时候,至少我都是很兴奋的。包括现在已经是周五的23:56,我仍然很兴奋。

乐嘉节目中曾说“热爱是成功的源泉”,我可以非常肯定的说我对编程是热爱的,我对写博客更是爱的不要不要的。

”我做了那么多改变只是为了我心中不变。”容我好好想想,再做具体陈述。

程序员该如何过好他的整个职业生涯?


入职你的梦想 VS 变现你的技术

IT面试宝典码农市场