# Talk

# 一个程序员的成长之路

张云龙大大 的文章有感:

# 如何快速成长为技术大牛?

摘自 阿里技术人生

不管是开发、测试、运维,每个技术人员心里多多少少都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。

然而“梦想是美好的,现实却是残酷的”,很多同学在实际工作后就会发现,梦想是成为大牛,但做的事情看起来跟大牛都不沾边,例如,程序员说“天天写业务代码还加班,如何才能成为技术大牛”,测试说“每天都有执行不完的测试用例”,运维说“扛机器接网线敲 shell 命令,这不是我想要的运维人生”。

# 拜大牛为师

有人认为想成为技术大牛最简单直接、快速有效的方式是“拜团队技术大牛为师”。

但我并不认为你是一个很好的做法。大牛很忙,不太可能单独给你开小灶,更不可能每天都给你开 1 个小时的小灶;一般要找大牛,都是带着问题去请教或者探讨。因为回答或者探讨问题无需太多的时间,更多的是靠经验和积累,这种情况下大牛们都是很乐意的,毕竟影响力是大牛的一个重要指标嘛。然而也要特别注意:如果经常问那些书本或者 google 能够很容易查到的知识,大牛们也会很不耐烦的,毕竟时间宝贵。经常有网友问我诸如“webpack proxy 怎么配”这类问题,自己查文档不会么。而且最重要的一点是大牛不多,不太可能每个团队都有技术大牛,只能说团队里面会有比你水平高的人,即使他每天给你开小灶,最终你也只能提升到他的水平。

综合上述的几个原因,我认为对于大部分人来说,要想成为技术大牛,首先还是要明白“主要靠自己”这个道理,不要期望有个像武功师傅一样的大牛手把手一步一步地教你。适当的时候可以通过请教大牛或者和大牛探讨来提升自己,但大部分时间还是自己系统性、有针对性的提升。

# 业务代码一样很牛逼

有人认为写业务代码一样可以很牛逼,理由是业务代码一样可以有各种技巧,例如可以使用封装和抽象使得业务代码更具可扩展性,可以通过和产品多交流以便更好的理解和实现业务,日志记录好了问题定位效率可以提升 10 倍等等。

业务代码一样有技术含量,这点是肯定的,业务代码中的技术是每个程序员的基础,但只是掌握了这些技巧,并不能成为技术大牛,就像游戏中升级打怪一样,开始打小怪,经验值很高,越到后面经验值越少,打小怪已经不能提升经验值了,这个时候就需要打一些更高级的怪,刷一些有挑战的副本了,没看到哪个游戏只要一直打小怪就能升到顶级的。成为技术大牛的路也是类似的,你要不断的提升自己的水平,然后面临更大的挑战,通过应对这些挑战从而使自己水平更上一级,然后如此往复,最终达到技术大牛甚至业界大牛的境界

所以我认为:业务代码都写不好的程序员肯定无法成为技术大牛,但只把业务代码写好的程序员也还不能成为技术大牛。

# 上班太忙没时间自己学习

很多人认为自己没有成为技术大牛并不是自己不聪明,也不是自己不努力,而是中国的这个环境下,技术人员加班都太多了,导致自己没有额外的时间进行学习。

这个理由有一定的客观性,毕竟和欧美相比,我们的加班确实要多一些,但这个因素只是一个需要克服的问题,并不是不可逾越的鸿沟,毕竟我们身边还是有那么多的大牛也是在中国这个环境成长起来的。

  • 上班做的都是重复工作,要想提升必须自己额外去学习

形成这个误区的主要原因还是在于认为“写业务代码是没有技术含量的”,而我现在上班就是写业务代码,所以我在工作中不能提升。

  • 学习需要大段的连续时间

很多人以为要学习就要像学校上课一样,给你一整天时间来上课才算学习,而我们平时加班又比较多,周末累的只想睡懒觉,或者只想去看看电影打打游戏来放松,所以就没有时间学习了。 实际上的做法正好相反:首先我们应该在工作中学习和提升,因为学以致用或者有实例参考,学习的效果是最好的;其次工作后学习不需要大段时间,而是要挤出时间,利用时间碎片来学习。

  • Do more

做的更多,做的比你主管安排给你的任务更多。

其实就是想说:要想有机会,首先你得从人群中冒出来,要想冒出来,你就必须做到与众不同,要做到与众不同,你就要做得更多!

成为技术大牛梦想虽然很美好,但是要付出很多,不管是 Do more 还是 Do better 还是 Do exercise,都需要花费时间和精力,这个过程中可能很苦逼,也可能很枯燥,这里我想特别强调一下:前面我讲的都是一些方法论的东西,但真正起决定作用的,其实还是我们对技术的热情和兴趣!

印第安人有一句谚语:I hear and I forget. I see and I remember. I do and I understand

# 技术变化那儿快,程序员如何做到不被淘汰?

在浩大的软件世界里,作为一名普通程序员,显得十分渺小,甚至会感到迷茫。我们内心崇拜技术,却也对日新月异的技术抱有深深的恐惧。有时候我会思考难道在技术领域内不断紧跟新潮,不断提升技能就是我的价值所在?那么我是技术的主人还是技术的奴隶?

仔细想想很多时候业务在我们脑海中存留的只是逻辑和流程,我们丢失的是对业务场景的感受,对用户痛点的体会,对业务发展的思考。这些都是与价值紧密相关的部分。我们很自然的用战术的勤快掩盖战略的懒惰!那么这样的后果就是我们把自己限死在流水线的工位上,阉割了自己能够发现业务价值的能力,而过多关注新技术对职场竞争力的价值。这也就是我们面对繁杂技术,而产生技术学习焦虑症的根本原因。

# 只有烂程序员才相信世界是由技术驱动的

只有烂程序员才相信世界是由技术驱动的,优秀的程序员会意识到世界是由资本和权利驱动的。

人,是一种社会性动物。技术也好,商业也罢,都只是用来解决社会问题的工具。以前我认为技术是面向机器的,现在明白了,其实真正优秀的、可靠的技术,都是面向人类的。你在优化设计模式的时候,不是在优化机器,而是为了让“人”维护起来更方便;你在优化算法的时候,不是在节约内存,而是为了让“人”拥有更好的用户体验(即速度);你在做一个 GUI 的时候,不是在与机器对抗,而是为了让数据管理更加方便。一切因为人,一切为了人。

我的意思是说,程序员在做好本职工作的时候,必须清晰的认识到,你所做的一切,你所设计的一切,最终是为了服务于什么。

我不知道为什么,很多程序员在听到“销售”这两个词的时候,总是露出一个嘲讽脸。是,你是读了很多书,你掌握了很多复杂的算法,还做了很多高大上的东西。但是,你可曾想过,没有销售,谁把你做的东西变现,你的工资是凭空出来的吗?销售出去不停被人拒绝,你能经受得住这种心理压力吗?你可知道,特斯拉在命悬一线的时候,是马斯克下令“人人皆销售”才把公司从死亡边缘拉回来。

上次更新: 11/14/2019, 3:15:12 AM