前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >男人的三十岁是个多么大的分水岭?

男人的三十岁是个多么大的分水岭?

作者头像
范蠡
发布2019-04-29 14:43:03
7380
发布2019-04-29 14:43:03
举报
文章被收录于专栏:高性能服务器开发

我是一名老程序员,也早过了30岁。因此,无论是我本人的经历,还是曾经见过的,还是眼前的30岁的程序员都不少。所以,今天我就以“过来人”的身份谈一下,程序员该如何度过30岁的关键岁月。

今天回头看,对一名程序员来说,职业生涯有3个关键点:一个是刚毕业入行时,一个是30岁的时候,另一个是35岁的时候。每个点都有自己的关键所在。30岁则是技术的转折点,要么“会当凌绝顶”,要么泯然于众生。

对一个30岁的程序员来说,如果入行不算太晚,一般都有了5年以上的开发经验。因此,对主打的技术(例如Java、JS、C#),至少有以下功力:

  1. 语法熟练
  2. 常用库及API熟练
  3. 熟练开发某种类型的应用(Java后端、页面、桌面程序等)

说的再直白一点。如果在过去的时间里,不虚度,不倒霉。30岁时,你肯定能成长为一名熟练的、有生产力的程序员,也配得上“高级软件工程师”这个职称。

但是,现在回头看,无论是我的朋友,还是同事,大部分人的职业生涯也就到此(高级软件工程师)为止。再往前突破一下,成为技术专家、架构师、开发经理,大部分人都做不到。这其中既有有运气的成分,也有个人努力的原因。

在30岁之前,只要人靠谱,不倒霉,认认真真工作,时间本身就会给你丰足的回报。多年的一线实践,甚至不需要太多的主动学习,就会成为一名“合格”的软件工程师。

对公司来说,且不考虑你技术是否先进,但凭对业务的熟练度,也会给你个高级软件工程师的职称。现实中,以我的观察,大部分高级软件工程师,所依凭的还真不是技术,而只是资历。

以我为例,10年前,无论是Java,还是C#、还是HTML/CSS/JS,我都已有了几年的实践经验,也足以应付日常的开发。但困境也隐隐出现,尤其在写大型企业应用的时候。项目前期还好,但越到后期,各种设计缺陷开始暴露。经常是这边改好了一个bug,那边却又引入更多的bug。因此,无论是项目本身,还是个人,都陷在泥潭中,困顿不堪。(这里再多说两句。十几年前,做软件开发可不像现在,分工这么明确(有前端、后端、移动等细分职位),也没有这么多部门。小的公司甚至就一个部门:技术部。大点的公司,常见也就4个部门:开发、数据库、测试、IT。而作为一名软件工程师,前后端真的是一肩挑,甚至有时候电脑坏了,都要自己修。干的活很杂,也很累,但视野也很开阔。)

这时也是最考验个人悟性的时候。

无论是项目的困顿,还是个人的困顿,有些人会觉得就这样,觉得这就是软件开发的本质,没有办法。而更甚者,技术没有突破,反而是把精力用在推诿扯皮上。在项目陷入困境的时候,这些人首先不是反思设计的问题,而是怪罪市场人员(没错,那个时候还没有产品经理),怪罪领导的需求不合理,工期排的太紧。当然,最后可能确实把责任撇给了别人,但这又有什么用呢?对项目来说,失败了。对个人来说,技术没有成长,很可能终身就都停留在高级软件工程师这个级别。

而我,真的算非常幸运。此时,我遇到了职场上的第一个贵人。

我的一个师哥,当时在惠普做架构师,他负责的业务部主要和IBM合作,方向是企业开发。IBM负责出方案,惠普负责具体实现,客户主要是大型国企,包括三桶油以及各大银行。经过多年的锤炼,再加上惠普先进的技术架构,因此无论是技术细节,还是架构,师哥都非常有见地。机缘巧合,我俩搭上话,也见过几次面。我向他和盘托出我在工作中遇到的困境,希望他能给我些建议。

师哥是个挺热心的人,前前后后给我分享了不少东西,都是肺腑之言。很多观点,就拿现在的标准看,也不过时,也对我此后10年的职业生涯帮助巨大。但其中最最重要的一点就是,师哥给我推荐了不少好书,其中就就包括大神Martin Flower的一系列著作,包括殿堂级的《企业应用架构模式》《重构:改善既有代码的设计》等。

这些书给我的帮助不仅在于本身的内容,更是把我的眼界带到一个更高的层面,为我的世界打开一扇全新的门。让我明白在软件的世界,除了具体的编码,还有更高的东西需要关注。

这一系列阅读,不仅使我的视野上升了一个台阶,同时也顺带的把我的技术带向更多的“纵深”。他使我明白一个好的程序,不仅要有设计良好的架构,更要配上好的技术来实现。就像打仗一样,战略再高,战术不到位,照样吃败仗。

因此,回过头来,我又重新阅读那些经典著作,包括《设计模式》《代码大全》等。这些书我原来都读过,但此后带着更高的视野,更丰富的经验来重新阅读,感觉完全不一样,甚至比初次阅读时收获更大。

可以说,我今天对技术的热爱,以及最终能够走上架构师的职位,最关键的转折点就在那个时候,那年我30岁。

上面是我的一些经历,现在回忆起来,敲下这段文字时,依然感到激情澎湃。

当然,时代在发展,我当年的具体操作,放到今天不一定完全match,但我相信精神依然不过时。

10年前,在企业级开发市场,各大厂商还处于摸索和争鸣的阶段。但今天不一样了,各个领域都已有了统治级的成熟方案存在,因此后来者,在架构上选择上就没有我当时的迷茫。例如现在的企业开发,前后端分离的挺彻底,对后端开发来说,Java + Spring + MySql + MyBatis是一个优秀的组合。不敢说打遍天下,但至少很好用。

但这个时代的开发者自有他的苦恼,因为无论是开发语言,还是框架,都太透明了,大家基本上都在同一个套路上。因此,问题来了,普通开发者如何从众人中脱颖而出呢?你会的别人也会,如果有上位的机会,企业该选择谁呢?这是一个需要思考的问题。

当然,对这个困境有很多解决方案,这里我就提个思路,权当抛砖引玉。

对Java程序员来说,Spring基本上成了标配,会Spring没有什么值得骄傲的。但是虽然很多人会用Spring,但对内部的机理却不甚了解。因此无论是Spring配置,还是代码,都非常粗糙和丑陋。真出了问题也是惊慌不堪,只能东改一下代码、西修一下配置。到最后,代码可能是正常运行了,但细细审视,其中却充满了冗余和腐烂。

这尽管是一个糟糕的现实,但也给那些“有心人”带来了提升的契机:何不去阅读Spring源码,彻底理解它,掌握它,“无真相不自由”。虽然这个过程很痛苦,但痛苦之后却是超越,是脱颖而出。

类似的例子还有很多。例如你是一名前端开发,你可以去阅读JQuery、BootStrap源码,也可以去横向学习设计模式,学习服务开发(例如Java、NodeJS等)。

总之,就是在当前的职位上,不断思考,不甘平凡,超越自己、超越别人。

最后,再回到本文的主题:男人30岁该怎么办?

你也许会觉得我上面说的东西,似乎也可以在30岁之前做,也可以在30岁之后做(例如40岁),但其实不是这样的。

30岁之前,人没有对应的开发经验,没有吃过亏,没有困惑过,自然不可能平地起高楼。但如果年龄再大一点(最晚到35岁),如果你还没有“领悟”,就真的有可能来不及了,一则凡事缠身,精力不济。二则,企业也会失去培养你的耐心。

总的来说,30岁,对一个程序员来说,是一个承上启下的关键点,一定要紧紧的抓住,正如那句话说的:

“有花堪折直须折,莫等无花空折枝。”

作者:沈世钧 链接:

https://www.zhihu.com/question/34354435/answer/597699731 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 高性能服务器开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档