01、前言
作为一名程序员,本职工作当然是编写代码,毫无疑问;就像一名伐木工人,他的本职工作就是锯树;但如果锯子钝了,锯起树来可想而知有多么的吃力。
我相信,99.99% 的程序员都知道要把锯子磨快;但估计只有 0.01% 的程序员愿意停下来,去思考怎么磨快自己的“锯”——泛指编程以外的活动,但可以帮助你成为一名更好的程序员。
当今这个年代,每个程序员都忙得像一只陀螺(更何况还有一支看不见的鞭子一直在抽打着我们),完全没有时间停下来去思考啊,就像伐木工人说自己“连锯树都忙不过来,哪有时间磨锯子啊。”
但无论如何我都要提醒你,该停下来的时候一定要停下来啊。我们成长的过程中需要刻意练习,需要编写不计其数的代码,但如果不知道练习的方法,就只会徒劳无功。好了,废话不多说,让我来告诉你两个磨锯子的好办法吧!
02、拜大牛为师
假如你所在的公司很靠谱,那么在你刚入职的时候,就会派一名尽职尽责的富有经验的“高手”带带你——公司投资你,也是希望未来的你能够公司带来人超所值的贡献。那么恭喜你,你很幸运,机会来了,要紧紧抱住这个大腿,别松手。
但要注意的是,你要做的不是天天尾随“师傅”屁股后面端茶倒水、溜须拍马,而是认真聆听、仔细观察和及时反馈。
认真聆听指的是,师傅安排任务的时候,一定要洗耳恭听,把任务搞清楚,别不懂装懂。说起来,很惭愧,我年轻的时候就经常性犯这个错,总担心自己的词不达意会耽误师傅的黄金时间,就不敢把心中的疑虑说出来,导致工作起来手忙脚乱,最后反倒耽误了师傅的时间,被骂得狗血喷头。
仔细观察指的是,你得拥有一双善于发现美的眼睛,去观察师傅高效编码的习惯,解决问题时的思考方法,以及为人处世时的一些技巧。这些可难得了,学校不会教这些的。
最后,千万别忘了及时反馈,不要在那里干巴巴地等,等师傅来找你要结果,自己要主动去反馈,做一个积极向上的人嘛。
假如你没这么幸运,公司不太靠谱,师傅也不太靠谱,怎么办呢?去网上找啊!比如博客园上的这些推荐博主。
切记,不要一上来就去看他们成功后的经验分享,而要去看他们早年期间刚开始成长时候的经验(非常宝贵)。建议你把他们的博客倒序排一下,从第一篇文章看起(如果他好意思没删的话)。如果还能更进一步,加入到他们的社群当中。切记不要在群里灌水,要去吸收有营养的价值——如果没有,坚决退出。
如果大牛留下了联系方式,不要吝啬,赶紧占个位置先。切记要带着问题去请教或者探讨。因为回答或者探讨问题不需要太多的时间,靠的是经验和积累,这种情况下,大牛们都是很乐意的,毕竟影响力是大牛的一个重要指标嘛。
但如果,你一直停留在“在吗?”、“我很迷茫,给点建议好吗?”这种泛泛而谈,没有任何艺术的提问,大牛是无暇顾及的,毕竟你很忙,大牛也很忙啊。
03、大量的阅读
要用一种开放的心态,去阅读大量的编程相关的博客或者书籍。
有不少程序员会怀着一种真切但不切实际的希望——读完这篇博客、这本书我就能够成为技术大牛了。但实际上,如果我们能从中找到哪怕只有一点(让我们变成更好的程序员的)内容,就赚到了。其实这已经很贪心了。
可能会有一些程序员抱怨说:“我去哪里找这么多时间读书或者读博客啊?能不能给我点快餐?”听到这样的声音,我不免泛起怜悯的同情心;再送你一句鲁迅先生的名言啊,听好了——时间就像海绵里的水,挤挤总会有的。
如果能时光倒流,回到过去,作为一名(Java)程序员,我必须郑重其事地告诉你,这 8 本书(排名不分先后顺序)是必须要读一读的。
1)《代码整洁之道》,推荐指数:五颗星
细节之中自有天地,整洁成就卓越代码。从《代码整洁之道》中可以学到:
好代码和糟糕的代码之间的区别;
如何编写好代码,如何将糟糕的代码转化为好代码;
如何创建好名称、好函数、好对象和好类;
如何格式化代码以实现其可读性的最大化;
如何在不妨碍代码逻辑的前提下充分实现错误处理;
如何进行单元测试和测试驱动开发。
2)《Effective Java》第三版,推荐指数:五颗星
第三版一共包含 90 个条目,每个条目讨论 Java 程序设计中的一条规则。这些规则反映了最有经验的优秀程序员在实践中常用的一些有益的做法。
不过,这本书的中文翻译太过蹩脚,读起来非常生硬。每段文字我都要读上两三遍,才能心领神会的“哦”一声。(要是所有的技术书都能像我的文字一样有趣该多好啊)
3)《人月神话》,推荐指数:五颗星
在软件领域,很少能有像《人月神话》一样具有深远影响力并且畅销不衰的著作。不过话说回来,这本书的受众不应该只是程序员,那些口口声声说“需求很简单,用不了多久就能开发完,大不了再加个开发嘛”的人更应该读一读。
4)《设计模式之禅》,推荐指数:五颗星
本书是设计模式领域公认的 3 本经典著作之一,“极具趣味,容易理解,但讲解又极为严谨和透彻”——可能是因为本书的作者(秦小波)和王小波(我最喜欢的作家)是同一个名字的原因吧?!
读完前言,我就爱上了这本书。说句心里话,技术书就应该这样写嘛,读者才能融会贯通。
5)《程序员修炼之道》,推荐指数:五颗星
本书由一系列独立的部分组成,涵盖的主题从个人责任、职业发展,到用于使代码保持灵活、并且易于改编和复用的各种架构技术,穿插了许多富有娱乐性的奇闻轶事,极大地提高了本书的可读性。
PS:经典的英文书一经翻译,总免不了生涩的味道——就好像是我(wo)在驾驶一辆布加迪威龙一样。
6)《深入理解 Java 虚拟机》,推荐指数:五颗星
几乎所有写 Java 虚拟机方面的博客,免不了在后面加上一个注解:本文参照自周志明的《深入理解 Java 虚拟机》。可想而知这本书的风骚程度。
7)《Java 网络编程》,推荐指数:五颗星
Java 网络编程方面的经典书,不容错过。
8)《Java 并发编程实战》,推荐指数:五颗星
如果你正在编写、设计、调试、维护以及分析多线程的 Java 程序,那么本书正是你所需要的。如果你曾对某个方法进行过同步,但却不理解其中的原因,那么你以及你的用户都有必要从头至尾仔细地读一读这本书。
04、最后
当然了,随意地、没有目的的磨锯子,就适得其反了。然而,如果一个程序员对这些完全不感兴趣,那么问题也很严重。
不信,你瞧,libinlink 就在我的博客下面留言要我少写博客多敲代码(有个读者看不下去就在群里截图给我看)。
幸好呢,有一些读者是理智的。