如何成长为一名出色的程序员?

我曾经也是一个学历一般,履历一般的程序员屌丝,后来就因为做对了一件事情,才开始慢慢成长为一个还不错的专业程序员。

年轻时,我也一直在为如何破局而苦恼着,我也是属于起步很差的那种程序员,早期也是在小厂里到处乱撞,整天的CRUD的。

真可谓前途渺茫,也真的是纯种纯正的屌丝码农。

那我是如何做到今天这一步,可以带着整个技术团队的呢?

就一个事,年轻时去了一家大厂。

你自己一定要清楚的认知到,环境改变人。这个是自然规律,因此你必须去一个好的环境,当然未必是大厂,量级不错的中厂也是可以的。

你就记住一句话:

很多的业务系统,就是因为流量变大了,才开始演变的。

流量不大的,爱咋整就咋整,反正又没事。这个就会造成一个问题:

随意。

一旦随意了,就不要谈什么技术追求了,因为没必要呀。而流量一大,好的人和好的技术设计,则必须跟上的。

在小公司写代码,很多时候是为了交差。嵌套几个 for 循环,SQL 不建索引直接连表查,只要功能测通了就行,因为线上压根没几个人用。

但是当你的系统每天要承接百万级请求时,这种随意是致命的。一行低效的代码,一个没处理好的并发锁,上线可能就是 P0 级故障,直接导致公司真金白银的损失。在那种环境下,周围的同事都很严谨,代码 review 会很严格。你被几次线上报警吓出冷汗后,自然而然就会对生产环境产生敬畏心。你会开始主动考虑边界条件、高并发下的数据一致性、服务的降级和兜底方案。

经历过几个这种量级的项目,你的技术视野和代码品味就完全不一样了。

道理大家都懂,但现实问题是,学历一般、履历一般,一直在小公司做 CRUD,HR 那一关都过不去,怎么才能拿到这种大厂高并发中厂的入场券?

硬投简历大概率是石沉大海。根据我这几年带团队、面试候选人的经验,我建议从以下两个方向去踏踏实实地准备:

第一招:单点护城河

就是说,你先得有某一项技术是问不倒的,我举一个我之前团队的一个程序员,他后面去了小米,现在已经是小米的架构师了。他当时来我这边面试的时候,就说:

我只会Spring。

我还真的问了不少关于Spring的知识点,他都是从源码级别的维度跟我解释的,且非常精准。且由于深度的理解Spring的源代码,触使他的思路很广阔,回答难题的时候,又快又准的。

我相信他当时能去小米,也是因为有某一项或者某几项技术,非常熟悉。然后就通过了,我作为面试官我也是这样的,因为这个人的确是有研究过的技术,对技术是有兴趣的。

因此在学历和履历不占优的情况下,你需要选定一个核心技术(比如MySQL、Redis或JVM),往死里钻研。比如别人知道MySQL能存数据,你要能把InnoDB的MVCC(多版本并发控制)、Redo Log / Undo Log/索引,主从原理等讲得头头是道。

而在面试的时候引导面试官聊你的长板。一旦进入你的火力覆盖范围,亮出超出你目前层级(甚至超出面试官预期)的深度,直接扭转学历带来的劣势。

当你深入研究过1到2项技术后,立马就写入到简历里去,作为亮点。同时把不是亮点的简历内容,全部给我删除掉,删它个一干二净的。

到了这里,你的简历已经稍微有点看头了,但是还不够,可能能通过中大厂的HR那一关的了,但是我建议还需要再增加一项内容:

就是项目实战。

第二招:项目实战案例

你首先在当前公司里,去做那些最复杂的项目,如果轮不到你,那就去争取或者等待机会,如果实在是没有,则需要去跳槽了。

你不用担心,这个时候的跳槽,目的性是很强的,就是为了去参与到一些复杂性强一些的项目。

且你之前已经有了1到2项技术的深入研究了,去入职有复杂项目可做的公司问题不大的。

当有了几个复杂项目的经验后,必须做深刻的复盘和总结,了解里面的方方面面,尤其是你主导的复杂模块,必须清楚里面的每一个细节。既能快速画出项目的技术架构图,又能立刻回答面试官的任何细节问题。

且知道当前项目还有哪些可以改进的地方,这些也要提前去思考的。

当这些准备好后,就可以去投中大厂的简历了。因为你又多了一个亮点,但是要注意,简历里,只需要保留2个核心复杂项目就可以了。不要多写,让面试官聚焦在这两个项目里。

当然这个时候,简历依然可能无法入大厂HR的法眼,那你也只能接受现实,且务实一些,先去中厂,先拿到一个跳板先。

毕竟成长期的中厂,还是比如包容的,门槛相对没有那么高的。

然后你只需要在这些中厂,有一段长的累积,比如三年,就可以继续挑战大厂了。

总结一下

普通程序员的成长之路,其实没什么花里胡哨的捷径。就是认清环境的重要性,然后通过一点点的技术深挖和简历优化,把自己送到一个有量级、有要求的业务环境中去。被真实的高并发业务上几年,你自然就会成为一个出色的专业程序员。


最近在知乎出了

  • 「应付6000万会员的秒杀系统专栏」
  • 「几亿用户,百万并发的C端商品系统实战」
  • 「技术团队DDD领域驱动设计三年落地实战」
  • 「应付亿级用户规模的支付系统代码实战」
  • 「应付亿级用户的会员体系代码实战」
  • 「我的项目管理实战手记:10个真实主导项目,还原实战现场」
  • 「9年团队管理实战」

专栏,感兴趣的可以订阅一下。至于知识星球的,可以搜:

  • 老码头的技术浮生录

它是一个能实际帮你解决难题的星球。有问题的,找知心的Sam哥,支持无限次语音一对一解决你遇到的难题。「另外后续我新写的所有对外的付费专栏,在星球内都是免费的,且可以拿到所有源代码。」

当前星球里免费看的专栏是:

  • 「应付6000万会员的秒杀系统专栏」
  • 「几亿用户,百万并发的C端商品系统实战」
  • 「技术团队DDD领域驱动设计三年落地实战」
  • 「应付亿级用户规模的支付系统代码实战」
  • 「应付亿级用户的会员体系代码实战」
  • 「我的项目管理实战手记:10个真实主导项目,还原实战现场」
  • 「9年团队管理实战」

知识星球内后续将推出20+个付费专栏,覆盖电商全链路:

选购线用户会员营销线中后台
购物车服务营销系统订单系统
商品服务用户系统支付系统
菜单服务结算服务

从前台选购到中后台结算,星球成员全部免费,后续新增也不额外收费。

我的知乎账号:

  • SamDeepThinking
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SamDeepThinking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值