你好呀,我是沉默王二,一枚沉默但有趣又帅气的程序员(你听,耳边是不是响起了装逼的声音)。今天我来掏心掏肺地聊聊学好编程的 4 个秘诀,应该会对你产生一些微妙而又积极的影响。
闭上眼睛转个圈,想一下你身边那些人,是不是总有那么几个,能够脱颖而出,好像不管他们做什么事情,都能够取得不错的成绩。
反正我身边就有这么一些人,他们学习学的好,是老师的骄傲,是同学的榜样;朋友处的不错,大家都乐于和他交往;工作上表现突出,不怕事,能抗事,团队中处于核心地位,薪资待遇也高一筹。
认真地想一想,你就会发现,他们在做事情的时候是有方式可循的。
这里多说两句哈。上学的时候,我有一双善于发现美的眼睛,但焦点是自己,所以很多同学都说我很自恋,同时呢,我还特别乐意挑别人的毛病。
最近一些年,我这双眼睛虽然近视度数增加了,但仍然很善于发现美,并且焦点发生了变化,变成了身边的人,无论他做的是什么职业,我总想从他身上学到一些什么。
这种转变,对于我的成长来说,我认为非常重要。你是不是也心有灵犀,这么觉得呢?好了,来看看做好事情都有哪些秘诀(可能算不上)吧。
第一,修炼内功。
大家应该都挺喜欢看武侠小说的吧,尤其是金庸的作品,男主都特别注重内功的修炼。萧峰、郭靖、杨过、张无忌等等等等,内功都是独领风骚的,能与他们匹敌的寥寥无几。
程序员是这个时代的弄潮儿,要想站得住,不被大浪掀翻,内功自然要浑厚。直白点说,就是,只会 CURD 是很容易被淘汰出局的。
对于初学者来说,一门编程语言,一种工具,一个框架,先会用是最迫切的需求。一上来就去看源码,很容易就劝退了。
等会用了之后,用多了之后,就得深入,知道为什么要这样用,能不能按照其他的方式用,这背后的原理又是什么,都得逐渐搞清楚,否则就只能停滞不前,无法更进一步。
就比如说,我们学 Java,上来就去搞多线程并发、Java 虚拟机,我敢保证,学霸都不一定能扛得住。
正确的学习方法是什么呢?
简单了解一些 Java 的历史背景,然后安装 JDK,安装 IDE,写个 Hello World 感受一下编程语言的魅力。再然后学习数据类型、运算符、流程控制语句、访问权限控制、对象和类、接口与抽象类、字符串、异常处理,接着是集合、泛型、枚举、IO,最后才是多线程并发、Java 虚拟机、性能优化。
就这样,循序渐进,一步一个脚印,等到这些都会用了,编程经验也提高了,再去深入地研究源码,了解设计模式、计算机基础知识、计算机网络知识、数据结构与算法等等,就会游刃有余。
算法研究的目的是为了更有效的处理数据,提高数据运算的效率,数据运算是定义在数据结构上的,各大公司的笔试基本都考这个。如果你想拿到更多的 offer,拿到更好的 offer,LeetCode 上的题要能刷个一百到三百道,有时间有精力的话,最好参加一下 ACM 竞赛,在找工作的时候会非常有优势。
算法薄弱的同学,或者想要提高的同学,可以点击链接看我另外一篇文章!
第二,持续改进。
“伟大的牛逼之前都是傻逼式的坚持”,这句话听起来虽然有点糙,但理不糙啊。每个人都知道改进,但并不是每个人都能坚持下去。
我有个大学同学,做淘宝客的,一开始没有摸到门路,就很难,坚持了一年,收益甚微。有一天,他不知道哪根筋“错”了,在淘宝上花了几百块钱做了一个网站,界面很丑陋,但 SEO 做得很不错,慢慢就有人通过百度搜索的关键字找到他。
随着时间的推移,找他的人越来越多,钱自然就赚到了。于是,他成立了一个工作室,很多大学同学都到他那干过,但很多同学干了三五个月后,就坚持不下去,不想干了。
他呢,一直坚持着做,虽然有起有伏,但在郑州买了一套大四室的房子,又买一辆不算差的车。结婚的时候,我去过他老家,条件不是一般的差,这让我更佩服他了。
人,在天赋上,在出身上,是有差别的,不要明目张胆地忽视这两点。但是,能够有所作为的人,你会在他们身上发现一个共同点,就是“持续改进”。
拿写作这件事来说,我有天赋吗?如果有人说我有,我是拒绝承认的。但如果有人说我是一个懂得改变,懂得坚持的人,那我只好承认,他是懂我的。
一开始,我只在 CSDN 上写,后来我同步到各大博客平台,这就是改变。一开始,我只在知乎上同步文章,没有回答问题,后来我发现,回答问题的访问量远超文章,这是知乎的机制决定的,我改变了。一开始,我不会玩 GitHub,最近一段时间我迷上了 GitHub,这也是改变。
这些改变,都是积极的,并且我还会一如既往地坚持下去,所以我才敢笃定,“明天会更好”。
第三,不断叠加。
为什么我一直推荐大家去写博客,并不是因为我尝到了甜头,而是因为写博客本身,最直观的一点就是,博客的浏览量会“不断叠加”,更深层次的是,写博客带来的影响力会“不断叠加”。
再没有其他的事情,比写博客更容易上手,更能带来不断叠加的效应了。
很多人会说,我不知道写什么啊?
学习笔记就可以啊,读书感悟就可以啊,解决 bug 的方案就可以啊。
还有人会说,我写了,没有访问量啊?
个位数的访问量总有吧!一开始,除非天赋异禀,大多数人的访问量都不会特别高,我也是从个位数起步的。
也许还有人说,我写了,有访问量,但遇到瓶颈了。
瓶颈几乎是每个人都会遇到的,“几乎”甚至可以去掉。遇到瓶颈的时候,有人放弃了,一切化为乌有;有人坚持着,并且寻求改变,也许会失败,也许会踏步不前,但更多的是收获,蓄能,为下一次的起飞做好准备。
第四,保持耐心。
我们当前所处的时代,节奏非常快,快到有个 APP 就叫快手。但殊不知,有些事情,慢一点更好。
昨天,我和一个朋友聊天,他说最近接到一个项目,费用大概 9 万多,工期 35 个工作日。还让我看了一下需求文档,说差不多都是增删改查,应该能完工。
看完需求后,我只能说,我这个朋友真的是盲目乐观。但这个时代就是这样,甲方认为所有的项目都很简单,不外乎增删改查,找个开源项目在上面改一改,就能完事,能需要多长时间?
你要是说需要一年半载,甲方就会说,“到那时候,花都谢了。”
足球场上,一个教练一年出不了成绩,换,甚至半年出不了成绩,换。球迷没有耐心,俱乐部高层也没有耐心。
电竞比赛,一场游戏如果超过一个小时,观众就坐不住了,制作方也坐不住,于是比赛时长越来越短,你就会发现,一些酱油位的英雄在一场比赛里穷到只能穿一双草鞋。
在这样的时代背景下,我们其实更应该保持耐心,多给自己一点时间。
之前有个读者私信给我说,自己是转行学编程的,很辛苦,花了很多时间,但似乎证明自己并不适合学编程。我就问他,你学多长时间了,他说三个多月了。
唉呀妈呀,三个多月真的是一个很短的时间,学编程并不是一件轻而易举的事情,是需要时间的。我已经有十多年的编程经验了,但很多时候,我还是觉得自己只是一个刚入门的菜鸟(请允许我谦虚会),还有太多太多的知识等着我去学习。
遇到挫折的时候,能否给自己一点耐心,其实是一种不可多得的能力。表面上的光鲜亮丽,背后都是辛勤的付出,时间的沉淀。
像算法题,一开始刷起来,任何人都会感到很痛苦,关键是你得坚持,保持耐心,每天刷一道两道,不要今天刷 10 道,明天刷 0 道,可能坚持不了一周时间你就放弃了。保持节奏,不要打乱自己。时间就是最好的朋友。
分享一些我之前刷 LeetCode 的心得,我膨胀到要飘起来了!
怎样保持耐心呢?有两个关键点,其一就是降低预期,不要把自己架在一个很高的位置,让自己上下为难;其二就是全力以赴,做到问心无愧。
最后,上个图,一图胜千言。