许多Java开发人员问我:"如何成为一个更好的程序员?" ,"我如何提高自己的编程技能?" 或者 "我擅长Java开发,但不擅长解决问题的技巧"等,这是大多数程序员的现状。
在这行有很多编程语言专家,理解 Java编程语言的关键字,方法和API 是很容易的,但解决遇到的实际问题却是很难的,设计一个可复用和稳定的软件程序,并使用性能最优的数据结构和算法尤其更难。
我经常看到Java程序员在被要求在有限时间内设计和编写一个好的程序,或者解决一个难以解决的BUG,但不可思议的是他们都有很好的Java基础和理论,但效果不是很理想。
即使是4到6年的Java编程经验的高级程序员,有时也无法解决架构等问题;也无法解决像JVM,机器语言编码或有时甚至是递归链表的问题。我可能只是从成为一个好程序员的思维出发,但发现自己的不足 然后再改正是很有必要的。
如果你在编码方面感到压力和迷茫,那么你应该尽可能的写代码,如果你对 面向对象编程缺乏理解,那么你应该尽可能地先在纸上用笔做初步的设计。
我本人发现,对于一般的程序员来说架构是一个很艰巨的问题,因为他们大多数的工作中没有做足够的编码和软件开发。
提高编程技巧的10条建议
如果你想成为一名优秀的程序员,你需要非常擅长数据结构,算法,OOP 编程,多线程和各种编程基础,例如递归、分离原则、设计模式和单元测试。
编程是许多技术的组合,这意味着你在短时间内不可能学好并精通,而是需要时间和经验,但也不会自然的成长,你可以花5年时间做一个Java编程工作,但并不能说你就是一个优秀的程序员。由于你可能大部分时间花在Java的理论上,而不是真正研究编程和编码技巧上。
大部分程序员却没有练习这些基本的编程技巧。如果有一个必须要解决的问题需要写编程测试,我敢打赌,你的技术将会提高的很快。
无论如何,下面是我的一些建议清单,仅可能帮助你成为一名优秀的程序员。
1)编码,编码,再编码
为什么我的建议首先提这个编码?
因为持续编码很艰难的,同时它也是编程的核心。通过大量的编程,你也可以自己设计代码,异常处理,高并发多线程等方面实现自己的想法,然后再回到相应的技能上来进行不断的改进优化。如果你能在编码中输出自己的思想,这就是你成功前提。顺便说一句,不要只是在解决问题之后就停下来,最好pass掉你的第一个解决方案,换一个新的方案再去解决这个问题。
2)阅读书籍
编码说起来容易做起来难,不同程序员之间代码和代码差别很大,但你怎么知道的呢?
直到你看到一个好的代码,知道一个模板的代码为什么是好的,你却不明白的他们的区别。这就是书籍的能帮助到你的,很多时候,作者本身就是程序员出身。他们将所学经验以书的形式分享给大家。我本人也喜欢书,有一本书对我很有帮助。
通过看这本书,我发现了自己代码存在很多的不足,并且经常参照本书给出的案列去开发我的程序。我建议,如果你找到这样的书,就不要错过。我也推荐你多阅读下这本经典的书,以后也会不定时的推荐一些好的书籍。
另一本类似的书是Joshua Bloch的Effective Java,这本书的内容有很多不错的建议。另外,通过阅读书籍,你可以学习到别人到知识,只有两种方法可以对比自己的代码好坏。借鉴自己的编程经验(非常有限)或从别人的经验中学习(无限)。阅读大量的书并不见的是好事情。 我认为 你不需要去阅读大量的书,而是花多次去读一两本优秀书。
3)参考开源项目,和issue
借助开源代码,特别是来自Apache、Google、和其他不错的公司和个人的一些项目来提高你的编程技巧。只需star他们的开源列表,下面的issue会教你很多。
由于大多数issue都是在优秀的程序员之间进行的,通过阅读他们的建议,和理解问题的方式,以及解决文推的方案和观点,自然而然帮你养成良好的编程习惯。为了让自己提高得到最大化,不要只是被动的去阅读,而是去提出问题,回答问题,同时也要去关心他人的技术建议。
4)练习数据结构,算法和设计模式
我本打算把这条作为第二条,但结果却是第四条。在我看来,这是成为一个优秀程序员最关键的事情。我见过的大部分优秀程序员都非常擅长数据结构,算法和基础知识。
通过学习这些知识,你可以更有效地利用其它有用的东西。由于数据结构是任何一个程序中的关键之一,因此在解决问题时可以获得扎实的知识。同样,编程思想,搜索和排序算法帮你提高开发编程技能。你可以参考一些书籍来掌握对数据结构和算法的了解。
5)阅读优秀的博客
阅读不错博客是也是属于阅读书本的一小部分。为什么阅读博客能帮助你成为优秀的程序员?
由于博客往往是由程序员自己编写的,大多数博客都分享他们的个人思想和经验,所以我们经常会发现博客内容和他们自己经验是相关的。而且,博客的内容一般是一小块信息,所以消化得很好。
博客还有助于学习现有语言和API的新技术和新特性。很多时候,我看到一篇博客文章中写的Java 部分中会学到了一些新东西。
6)阅读源码
如果阅读博客有助于成为一名优秀的程序员,那么阅读源码比这个更有价值,阅读博客很容易,但阅读代码是艰难的。阅读源码你怕吗?
如果怕,那么你应该这样做:
- 查看主流优秀开源项目的代码
- 你关注的程序员的代码
- 你手头上拥有的代码
- Java SDK中的代码
并试着了解它们是如何工作的,试着看看里面在做了什么逻辑以及它们为什么做。
找到里面的设计模式,开发技巧,刚开始你会发现代码很无聊,阅读起来也是困难的,但随着时间的推移,你会拥有一个良好的阅读代码感,当你犯了一个错误,你的代码感会提醒你,让你发现和别人的差距。这种代码感是成为合格程序员的标志之一,他们往往倾向于看你的代码出了什么错。
7)编写单元测试
单元测试补充编程思维和编码技巧,并帮助你更好地设计代码。
任何难以测试的东西都需要改经优化。此外,编写单元测试可以帮助你找到更好的类名,更好的抽象思维,更好的UI界面和抽象类的设计,并提高代码的质量。但是像编码和设计模式一样,对于一般的程序员来说单元测试也是一项艰巨的任务,你会发现很多不足。有些程序员写的是微不足道的测试代码,而不是在使用场景上努力思考。
记住,在分析,设计原型和开发之后,没有什么可以替代思考的方式让你提高的更快,单元测试是另外一个机会来弥补思考代码中的场景的空白。做一个规则为你的代码写一个单元测试。
8)做代码ReView
就像单元测试一样,代码审查是帮助成为一名优秀靠谱程序员的一项指标。代码审查都能帮助review的人和作者,review的人给了他的代码意义,并提供有用的意见,同时作者也从他的建议中学习,通常有助于你纠正你认为的代码是没问题,但是一些问题只有其他的程序员可以看到。
如果你有机会在一个有单元测试的公司工作,把代码审查当作规范,那么你很可能是一名有大量时间休息的程序员。这两件事对于提高编程技巧非常有帮助。
9)与其它程序员多交流
与沟通讨论相比,阅读书籍和博客都是被动的事情。与程序员讨论一个程序问题,往往会获得更好的解决方案,这是很常见的,因为当你发言,听别人时,你会学到更多。
接着,我在与同事讨论时会发现自己的差距,缺点,代码设计缺陷。在软件行业,程序员们更倾向于用聊天工具沟通。不要只是坐在那里编码,你应该跟他人沟通,倾听,思考并和其他程序员混在一起。
10)多上StackOverflow和论坛,多在博客评论
这是另一种有助于提高知识的办法。通过分享知识,第一个受益人就是分享的人。由于编程是复杂的,你往往会忘记3个月以上不使用的技术。去StackOverflow 浏览答案 并回答,评论博客和论坛是学习知识的好方法,同时也纠正你对某个技术的错误认知。
通过把自己知识分享给他人,我们不仅帮助了别人,而且还帮助他们做自我检讨。很多时候,你会看到,有人从你的知识中受益,但你也会发现自己的不足。每个程序员都想成为一名优秀的程序员,但不是每个人都能达到这个境界。
除了你拥有丰富编程和解决Bug的天赋,你还需要付出更多的努力,不断的坚持学习才能让你成为一名优秀的程序员。
你接下来做的事情实际上越多,例如 大量编码,设计模式,单元测试和代码审查,你就会变得越优秀。
如果你现在只想做一件事情,我建议你反手来个赞。
出处:http://javarevisited.blogspot.com/2014/01 翻译:Tmaic 开发者技术前线 欢迎各界读者投稿,加群学习请回复“加群”, 免费小密圈请点击:免费小密圈资格邀您加入