程序员持续成长,需要持久而痛苦的学习
不要着急,梦想还是要有的。
阅读前请先思考
- 你最重要的竞争力是什么?
- 你为何焦虑?
前言
每个程序员心里多多少少都有一个成为技术大牛的梦。毕竟梦想总是要有的,万一实现了呢?
奇葩说第五季里有一期辩题是《高薪不喜欢的还是低薪喜欢的工作,你选哪一个?》
在所有人的发言中,蔡康永的一句话最让人触动:
不管怎样,选一份能让自己持续成长的工作。
如何才能持续成长,是每一个程序员都绕不开的话题。
每年大量涌入刚毕业的年轻人以及培训机构出来的入行者都在冲刺着工作的机会,不努力只会被时代抛弃。
学习,成为领先的少数人
工作了一段时间的人,最容易陷入迷之自信。“达克效应”的形成原理并不复杂。
在某个领域能力差的人,往往缺少对这个领域全面而深刻的认知。
很多程序员往往在写了一段时间的业务代码后就会以为他精通这个领域了。随着学习的继续深入,大多数人会逐渐发现自己的不足,在经历消沉和重新定位之后,才终于对自己的能力有较为准确的认识。
所以,如果要避免掉进达克效应的泥潭,最好的方法,就是不断地提高自己的学习能力和知识水平。
工作是学习的开始,对于程序员而言,工作之后的学习更加有目标,对于大部分人来说,去了解一门新的技术,掌握一个新的语言,熟悉一个框架,就是为了工作需要,为了更快更好的完成任务。最好的学习实践方法还就是直接在项目中运用知识。
不管你在大公司还是小公司,都可以学到很多东西,关键看你怎么去学习,如何学习,找到方法你就可以提高很快。
学习能力无疑是程序员最为重要的能力之一,尤其是互联网这种日新月异的行业,把持续学习作为长期目标一点也不为过。
学习成长,本质就是一个每天不断的输入和输出的过程。我们只有不断的做高质量的输入,脑子里才有货,才能不断掌握新知,有新观点、有新思考,也只有这样,才能长期、稳定、高质量的输出内容。
从工作的不同目标分析,知识不外乎以下几种:
- 满足当前工作所必备的技能知识
基本的编程语言特性,常见类库,算法,框架和工具使用及配置等。
- 工作提升的深度知识
算法实现,各种框架实现,编译原理,通信协议,设计模式,架构,高并发…
- 拓展视野的个性化知识
项目管理,软件工程学,心理学,产品设计,营销,文学,历史,英语,写作…
阅读,决定你未来的路有多远
最近发现身边的人并不是不想学习,只是每天都在纠结自己到底学什么好:简单的没挑战,复杂的看不懂;旧技术怕过时,新技术没方向。
这个时代,我们可以越来越方便廉价地获得大量学习资源。也正是因为有太多可以选择,反而难以抉择。
如何快速阅读来获取知识,是学习的一项基本能力。专业知识以及大量你感兴趣的领域,都需要投入时间去系统学习,而不是可以简单通过几篇博客文章就可以了解的。
我一般都会建立一个主题阅读书单,把相关项目的书籍豆瓣和京东等排名靠前的都快速阅读一遍,然后进行重点内容精读。重要概念梳理清楚,搞明白他们之间的联系和应用场景,最后就是项目实践和输出了。程序员嘛,自己不撸一遍都不算懂了。从另外一个角度来说,可以这么及时反馈一门知识的掌握程度也只有编程了。
推荐阅读《如何阅读一本书》,《洋葱阅读法》等。
时间管理,做一个工作的主宰者
我们每一个人都拥有最公平的时间,如何利用时间的方式,决定了他成为怎样的一个人。
李笑来在《和时间做朋友》中提出:“我们无法管理时间,能管理的只有我们自己。”
《精力管理》一书中也表达了类似的看法:“真正能管理的只有我们的精力。”
管理大师彼得·德鲁克说,时间是一个人最稀缺的资源。
很多学习和工作上的压力,往往都是由于不擅长对时间进行管理所造成的。因此,学点时间管理的知识,对每个人都很有价值。 特别对长期存在加班压力的程序员,如何管理好时间,工作效率,更是重点。 否则连续加班根本没有个人学习时间,谈何成长。
时间管理的核心理念:要事优先。每天不在于做多少事,而在于把重要的事情优先做,专注做。人的精力都是有限的,每天能做好 3 件重要的事情已经很不错了。
那么问题就来了,怎么找出需要做的重要事情?重点的方法论如下:
- 土豆:将待办事项全部收集到清单当中
- 青蛙:一上来就做最重要的事情
- 番茄:专心致志工作 25 分钟,再休息 5 分钟
推荐使用“滴答清单”这款 APP 来收集代办事情和番茄计时。 简单总结一下,我使用的时间管理方法就是:先收集待办事项(土豆),然后再从最艰难的事情(青蛙)开始做起,最后用番茄工作法(番茄)去保证完成这些事情。
很重要的一点,就是要学会拒绝,写代码的时候经常被打断,这是程序员永远的痛!如果不是很紧急的事情或者领导召唤,请说“我等下找你吧,我正在…”。
技术博客,打造个人品牌
最好的工作方法之一,就是“复盘”,即对已完成的工作进行总结,盘点过程中的优点和不足。通过不断迭代工作方法,提升工作技能。
而写博客则是一个复盘技术学习的过程,也方便日后查阅,同时还可以帮助有同样需要的人。你从工作和生活积累的经验,恰恰是别人渴望的。
写一篇技术博客,首先是要明确该博客的目的,是为了写给别人看的,有个良好的排版很重要,一般我采用的 Markdown 写作。很多时候看到一团糟的排版,即使内容很好,阅读量也很差。没有人会愿意花时间去看一团乱麻的文字。
写博客对自己的提升是很大的,而我写博客是希望,能提升自己的综合能力,并把自己的知识与经验分享给大家,如果有幸我的分享帮助了一些人,那将使我更加欣慰。
写博客是一种思考,对技术的思考,对人生的思考。
总结
想要新学一门新语言,先搭建环境输出了 Hello World 再说;喜欢写作,你先写起来再说;想换工作,你先把新的简历准备好再说。超强的执行力,是对平庸生活最好的回击。
只要做了,就已经能干掉 50% 以上的竞争者。
善于思考,拥抱变化,才能拥有未来,让我们在程序员精进的路上共勉。