大发PK10


长沙牛耳教育官网
招生电话图

经验之谈丨为什么说程序员有钱途,没前途?

发布日间:2017-07-03   浏览次数:567

我们经常听到这样的质疑:

程序员是吃青春饭的吗?

程序员老了都干嘛去?

程序员如何保值?

程序员是否是有钱途没前途的职业?



知乎上的一位答友曾这样回答人们的质疑:


真正有可能晚景凄凉的程序员,是对技术和产品没有兴趣的人,是仅仅把编程当做生活工具的人,是那些不能终身学习的人。


伪程序员与真正的程序员?


我们听过伪文艺青年,意思是这类人并不是真正喜欢文艺,而只是将其作为一种手段,去获得一些自己想要的东西。通过这个类比,我们可以试问自己,你是真正喜欢、热爱这个职业,还是只是想通过它获得自己想要的生活目的?


当然,更多情况是两者都有,就像伪文艺青年有一天也可能“转正”,成为真正的文艺青年一样。所以,我们可以抛开这个问题,因为如果你想成为一名真正的程序员,你一定会不断地问自己,怎样才能让自己做的更好!


程序员的双手是魔术师的双手,他们把枯燥无味的代码变成了丰富多彩的软件。 ——《疯狂的程序员》



作为一名真正的程序员,你应该具备哪些素质?


自学者的学习能力


一个人的自我学习能力至关重要。如果你了解在你身边的程序高手,你就会发现,他们一般不会在各种IT、技术、软件论坛上去提问,比如“学习XXX该看什么书,如何快速学习XXX,学习XXX有什么代码推荐”之类的问题,他们会通过自己的思考,迅速找到自己想学的相关资料。


这是一个发展太快、技术迅速淘汰更新的行业,3年不学新东西就可能落伍了。


再说,停止学习才是被淘汰的根本原因。


开创者的动手能力


当你还在纠结看什么书,查什么资料的时候,有些人已经去系统的进行学习培训了,有些人的几百上千行代码都已经能运行了。


成功者的耐心和毅力



大家都听过这样一个笑话:


一名程序猿问科比:你为什么能如此成功?

科比:你知道早晨4点钟的纽约是什么样子吗?

程序猿:不知道,那时候我还没下班

科比:……


这个笑话从另一个方面,向我们展示了程序员的工作状态,至少,这个职业所需的耐心和毅力不会小于像科比这样勤奋努力的NBA职业篮球队员。


做程序员兴趣固然重要,写自己喜欢的代码也是一件相当愉快的事情,但是程序开发中不可避免存在大量乏味无趣的事情,需要一个人的坚持,把事情和任务完成。


洞悉者的表达能力



乔帮主拥有无极限的创新力,凭借其敏锐的触觉和过人的智慧,勇于变革,用自己的思考改变了世界的观点。但是,就像张颐武评论时说的:“他肯定是洞悉人性的伟人。”


知己知彼,不仅是智商,更是情商,我们往往因为乔布斯伟大的创新力而忽略了他出类拔萃的表达能力。能将自己思考、创造的东西,用人们能听得懂的语言,用清晰流畅的逻辑表达出来,并且让人们爱上这个东西;这也正是一名程序员需要的能力。


重要的不是技术,而是掌握技术的能力


技术永远是在更替变化的过程中,当我们拥有了以上所阐述的能力之后,学习技术不过是时间问题,因为你将非常高效快速的掌握你自身需要的新技术。


我们常常变成一种有目的却无意识的人群,在学习种种技能的过程中却忽略了学习本身就是一项最牛逼的技能。


关于程序员是不是吃青春饭的讨论由来已久,对于那些步入中年的程序员来说,似乎不转管理岗就会被富有活力的年轻程序员替代。


接下来,给大家讲一讲几位年龄超过 40 岁的老程序员们的真实故事。

他们都是顶级的软件开发者,拒绝从事管理岗位,仍然活跃在开发一线,将编程作为生活收入的主要来源。


Ebbe Kristensen,Prevas A/S(Denmark)的高级软件设计师,62岁


专长:开发实时嵌入式软件、软件配置管理、构建测试用例(系统测试和单元测试)。在实时嵌入式系统、Linux 和 Windows(包括。NET)方面有丰富的写作和文档经验,擅长 C、C++、Python、C# 和 Pascal。


我在 1980 年获得了一个电力系统的电子工程学士学位,从我的第一份工作开始,我就以开发软件作为我的谋生手段。因为专业学位的问题,我花了将近一年的时间才找到第一份工作。但从那个时候开始,我一直是一名软件工程师。


我几乎天天写代码,不处理任何与管理相关的任务。事实上,在很早之前我就意识到,我在管理方面没有什么竞争力。


作为一名程序员,我很喜欢这个角色,我也很胜任这份工作。如果让我做一名管理者,肯定会有大麻烦,而且我一点也不享受管理工作。


我的同事里只有两个人年纪比我大,其他的(包括上司们)都是比我年轻。我的直线经理不到 40 岁,而他是我见过的最好的管理者之一。我在 58 岁那年得到了这份工作,不过我并不是年纪最大的雇员,有两个同事年纪比我还大,尽管如此,他们还是被公司录用了。


有时候,你几天甚至几周都不会学进去什么东西,而有时候几个小时学进去的东西就可以把之前 “损失” 的时间弥补回来。重要的是,你总是想方设法地去学习,时刻准备着,等待机会的出现。


Roger Whitcomb,Actian 公司(Palo Alto,CA)的软件架构师和软件工程师,60岁


专长:C、C++、Java


在我准备成为一名律师的时候,我才开始学习计算机科学(如果你可以想象这是怎样的一种情况)……现在,我通过编写大量具有良好文档化和功能性的代码来获得我的生活收入(起码现阶段是这样的)。


在 Windows 3.0 时代(大约是在 1986 年前后,我也记不太清楚了)我就开始在 Windows 上做开发。大约是在 10 年前,我转到 Mac 上,之后就没有再回到 Windows 上。我感觉自己就是一个使用 MacBook Pro 工作的极客……使用 C、C++、Java 和 Swift 进行开发……


我最近的一份工作需要从头设计一整个系统,这也是我第一次做这样的事情。我现在要跟上 Web 和移动开发的速度有点吃力,但离 “垂暮” 还很远,尽管我已经 60 岁了。过去我也获得一些 “管理者” 相关的工作,不过我都拒绝了,我还是更愿意选择编程工作……


不过,我也知道,我的一些与我年纪相仿(或者年纪更大)但已下岗的同事在找工作时遇到了麻烦(“是因为经验太丰富了吗”),所以我知道人们是怎么看待那些过了一把年纪的人,认为他们没有未来。但是,我认为最关键的是,你要为你的雇主持续地创造价值。


Alec Cawley,DisplayLink(Palo Alto,California)的首席软件研究员,60多岁


专长:嵌入式、多线程、多进程、驱动、通信栈、C/C++、Java、Python、硬件。软件架构师 / 工程师,特别是在与硬件紧密接触的软件系统,与硬件工程师一起工作,最大化发挥软件和硬件的效能。


在我 62 岁的时候,我已经是公司里年纪最大的开发者了,其他人大都是 40 多岁或 50 出头。


我最年轻的同事应该是 20 多岁,他们与我有 35 年的年纪差别,不过这不是问题。


我们要拥抱技术。现在的世界与我的职业生涯刚开始的时候(穿孔纸带时期的 Fortran)已经很不一样了,而变化仍然在持续。但反过来说,需要解决的问题总是很相似的,无非就是如何将人类的需求转成计算机可以做的事情,以及如何避免犯错、如何找出不可避免所犯下的错误。编程语言、开发环境、工具套件、API 等东西只是解决问题的手段,我们只是在需要它们的时候才去学习如何使用它们。


我是从穿孔纸带开始的。即使是到了磁盘文件时代,我仍然是最早从行式打印机里读取程序的人。后来就有了普通文本编辑器。现在我使用具有语法高亮功能的 IDE。


我认为,在 10 到 20 年的时间里,仍然需要软件开发人员。在我看来,软件开发者的工作就是把客户的需求转换成计算机执行的指令,而这样的工作是不可或缺的。这个世界总是需要一些高手,他们在计算机方面比普通人懂得更多,并且掌握了大量与工具相关的知识(软件包、API、接口,等等)。


在选择公司方面,我是幸运的。我的大部分时间都花在了软件开发上,而且总能做一些以前没有做过的事情。软件开发里总有一些重复性的工作,我可以想象得出那样做是很无聊的。不过,如果你总是在做新的东西,那就不会无聊了。


我所在的嵌入式领域似乎比应用程序更加能够扛住潮流的冲刷。应用程序每几年就会有新的东西出现,有些几乎是昙花一现,有些会持续一段时间,经历巅峰,然后逝去。而嵌入式一直保持坚挺,以 C 语言为基础,再融合一点 C++。另一方面,硬件也在持续发生变化,这让事情变得更加有趣。


Victor Volkman,Proquest(Ann Arbor,MI)的高级软件工程师,54岁


专长:编程方面擅长 Python、Linux、C/C++、.NET,数据库方面精通 MS Access、MySQL 和所有基于 SQL 的环境,还有 TCP/IP、企业系统自动化和分布式计算方面的经验。


架构与管理是两道平行线。在超过 250 人的公司里,技术人员一般都会有这两条路可以走。


你喜欢你正在做的事情吗?如果是,那么就继续做下去。为了一点薪水而放弃你所喜欢的事情,整天摆弄会议和邮件,这样会让你得不偿失。


每过两年,游戏规则就会发生变化。不过不用为此感到苦恼。花 3 到 4 天时间学习新的编程环境,然后用它们来支持业务。在过去的 30 年,我几乎每 4 年就要学习新的东西。我所在的团队有 6 个人,年龄从 48 岁到 56 岁。我们经历了 3 到 8 次的技术更新。


以下是我的职业概览:


● 从使用 C 和汇编语言编写 MS-DOS 代码开始

● 学习使用 C++ 和 MFC 开发 Windows 应用程序学习使用 Unix Perl 开发基于 CGI-BIN 的 Web 应用

● 学习 C#

● 学习 Java 和 JSP

● 学习智能手机开发:iOS/Android/Blackberry

● 回到 Unix,开始使用 Python

● AWS 开发(EC2、RDS、SQS,等等)


Kurt Guntheroth,软件工程师,50多岁


专长:Windows、Linux/Unix、嵌入式;算法设计、C++、C、多线程和分布式、电信、安全、套接字编程、标准委员会成员、产品计划和概念落地;TQM、ISO 9000、敏捷开发和传统开发方法论。


软件开发仍然是一个年轻的领域,工具和技术仍然在发生快速的变化。如果软件开发人员不能持续地更新他们的技能,在不到 20 年的时间里,他们就会过时。所以,一个 40 岁的老程序员很快就会发现自己已经无法胜任工作,而且前途堪忧。


好的开发人员会持续学习,直到他们退休,比如 Ken Thompsons 和 Bjarne Stroustrups。不过,我们大多数人(特别是 40 岁左右的)最终都会意识到,我们并不能成为行业的大神。


C++ 变化很大,每几年就会有新版本出现,并且包含了全新的特性,我从来没有停止过学习。也就是说,我已经成为了一个非常有经验的 C++ 开发者,拥有超过 20 年的全职系统编程经验。如果有人要我给自己的经验打分,从 1 分到 10 分,那么毫无疑问,我会给打自己 9 分,因为比我更了解 C++ 的人只有那些写书的人。后来,我写了一本有关 C++ 优化的书。


编程是一件很容易的事情。你告诉它们做什么,它们就做什么。它们是可以信赖的,也是可靠的。对于代码来说,无所谓好日子,也无所谓糟糕的日子,它们存在的意义就是在你与它们发生交互的时候。代码可能会是难啃的骨头,它们要求对细节的重度关注和相当程度的脑力付出。


人类与代码完全不一样,人类狡猾、变化多端,而且不可能充当工具使用。你不能直接告诉他们做什么,你要去影响他们,这样他们才会做你需要他们做的事情。他们不会直接对你的输入做出响应,而是间接地对你的鼓励或者你所提供的一些奖励物品做出响应。虽然人类对奖惩很敏感,但如果只是通过这种方式来管理人类并不会奏效。管理应该要像与家人、朋友和同伴互动一样。如果你喜欢与人打交道,那么你就会喜欢上管理。如果你不喜欢与人打交道,那么你就不会成为一个成功的管理者。


薪水高的管理者比薪水高的程序员赚得更多,不过他们需要有很多名校的学历背景,拥有良好的人际网络和政治同盟,也需要有一定程度的冷酷无情来震慑大部分人。而编程不需要这种冷酷无情,这也就是编程很好的一个方面。编程是关于创新,而不是操纵。


所以,你要问问自己,你更喜欢哪一种交互模式,是代码的确定性和优雅,还是人类的友情和领导力?喜欢代码完全没有问题,那些高级架构师和 CTO 也能赚很多钱。


有时候,当我们真正知道自己缺乏的是什么,并且朝着这个方向去努力,就会突然发现,那些看似无法避免的问题变得不再那么重要,甚至只是一个伪命题。


因为,无论如何我们都将面对技术的淘汰、年龄的增长、新人的涌入等一系列问题,而这些是我们不可抗拒的规律;面对这些,或许我们唯一能做的就是,保持不断地学习和接受新事物的能力。


关于程序员的年龄与职业发展的问题讨论颇多,让我印象最深的一条评论是这么说的:


我想等到我八十多岁了,躺在医院的病床上,还能把医院的系统给黑了,生命不息,编程不止!

点击了解牛耳 TEL:400-0731-162
相关新闻
经验之谈丨不来牛耳读书的骚年都不是好工程师 !2017-04-23
经验之谈丨你之所以不就业,因为你选的学校不叫牛耳2017-04-23
经验之谈丨学Java是自学好还是培训好2017-04-23
趣味IT丨有趣的IT词组,快来认识吧!2017-04-23
相关新闻
IT培训学校有用吗?2020-07-23
IT培训-想转行IT行业,培训机构我该怎么选?2019-10-21
即将毕业?参加IT培训是否靠谱?2019-07-03
IT培训机构如何选择?选择IT培训机构3大误区2020-04-13