真正的成功者是在练习中慢慢积累起来的。
你在看大佬文章的时候,也许已经意识到了这一点。看到他们在做的一些事情,你就会想:
我不知道这个人为了实现目标付出了多少努力。
编码也不例外。如果你想要成为一个顶尖的工程师,你必须时刻地练习你的技能。
我主要会这么做。
目标
这是个人的信念,它也许能引导着我的一生。无论是从个人的角度还是从职业生涯,我们总是需要每个阶段为自己设置一个的目标,然后去干掉它。
比如,你可以:
-
创建一个你一直想要创建的应用程序。
-
认真看完一本你想看的书并进行独立的输出和思考。
-
学习一门自己感兴趣的语言,通过它实现一个功能也好,还是把之前老项目重写。
-
列举公司项目或者自己项目中的缺陷、痛点,通过思考、查阅资料、设计方案、落地完善系统。(别和我吹牛你的系统没问题)
-
参与开源
-
……
定目标的时候,不要太过于抽象,最好是一个可视化的目标。
另外设置目标的难度应该是超过当前能力范围,但是这个幅度不能过大,否则会脱离实际意识,我们就会称之为:劝退师。
如果目标很庞大,那么就需要进行拆解,就和我们系统模块一样,可以进行划分。目标也一样,可以进行拆分。设置一个总周期,那么相应的,阶段任务也就出来了。
更重要的是这个过程,过程才是目标的意义所在。结果只是意料之中的附属品。你永远也不知道这个过程能给你带来什么?打通任督二脉也不是不可能。
有些话我还是挺喜欢的。种一棵树最好的时间是十年前,其次是现在。
对于编程来说,空想是最没用的,一定得通过不断的练习。另外,延迟满足感是一件很重要的事情,当你觉得自己越来越菜的时候,可能是你越来越强的时候。
为什么是可能呢?
因为,也许你是真的菜。
我记得初入职场的时候,忘记实现了一个什么功能性的东西,那时候觉得自己好牛逼,现在我只想说:草率了。
输出
在实现目标的同时,一定会遇上自己不会的,从不会到会到熟练掌握存在一个过程,它也是一个个阶段。每一个阶段你都需要去总结分析你所学到的技能,如何知道自己的掌握程度?那一定是输出。输出的方式很多,比如:
单纯写 blog 给自己看,但是只存在自己的认知。
社区写文章分享。帮助别人的同时,可能有人能指出你的问题,或者提供了不一样的角度。
通过掌握的知识点写程序或者应用到实际项目中。
组内分享。
开源社区线下分享。(估计已经是大佬级别了)
多看书多阅读开源代码
目前公众号内卷比较严重,加上你看别人的文章都是别人学习、吸收、总结的最终产物。对于某个不了解的知识点,还是需要先看一手的资料。在这个基础上,回头看作者的文章,也许会有不一样的体会。
另外一篇文章由于篇幅限制或者侧重点的选择,往往会比较片面。这时候更应该看书了。你能吸动 «TCP/IP详解»的书,你看不懂别人写的阉割版 TCP/IP 文章?
至于源码,我觉得得从实际出发,比如项目中使用到的优秀库或者最近任务涉及到的技能想看别人的实现。整体架构?底层原理?设计细节?为什么要这样设计?只有了解底层原理,用起来才能更加舒心。从使用到原理,说不定后面有对应的需求,还会进行扩展,提交 PR,一举成为 Contributor。
总结
编码不是彩票,并不能一夜暴富。它是一个缓慢的过程,如果你能每天坚持向着目标学习,也许短时间你看不到任何可视化的效果。但是一年,两年…..,当你回头想想一年前的自己是不是个傻逼,你就看到成长了,话糙理不糙。
仅以此篇献给我自己,也献给迷茫的你。