如何成为一个优秀程序员
从初入职场菜鸟到职场大咖,很多程序员在努力充实自己,有时候我们需要对自己进行一次能力定位,了解自己的优势和没有掌握的技术。芯学苑列出几点作为初入职场的新手评估自己,明了前进学习的方向。
1、技术能力(解决问题的能力)
这是非常重要的事;过硬的技术能让你得到面试机会,并在工作中游刃有余。当公司招聘一个Java开发人员时,是会优先考虑能力因素的。在实际的项目开发中,一个程序员的技术能力等于其解决问题的能力。
如果拿一个尺度来衡量这个能力的话,一个程序员的能力可以用能完成任务的数量和难度来衡量。一个程序员能基本无误的完成项目中的一个功能算是合格,但在此之前,他对项目的生产力为负,为他布置的任务,中间环节的沟通,修补bug的时间其实要多于自己直接完成该功能的时间的。能较好完成一个完整模块的程序员才算是较好的程序员,也是项目中的主要开发者。能独立完成整个项目才是优秀的程序员。
2、专业基础(知识的积累)
一个程序员的知识积累很大程度上决定了其解决问题的能力。知道如何编写代码是基本的技能,但是知道Java编程语言的原理,知道代码背后的算法将使你从人群中脱颖而出。
3、主流编程工具
今天,事实是,你不能成为一个样样都懂的人(杂而不精)。你必须选择你要掌握的工具。有时这是由工作的环境决定的,但是按照下面说的去做也是一个很好的选择:
构建工具:Maven或Gradle。
SCM:Git(不是GitHub。大不相同)。
构建自动化:Jenkins。
IDE:Netbeans或Eclipse——不仅用于编写代码,而且还从IDE中重构和调试代码。我遇到了很多没有如何从他们最喜欢的IDE调试的开发人员。
Bug跟踪:Bugzilla或Jira。
4、JSF的知识
应用程序服务器
所有Java开发人员应该知道如何在Apache Tomcat中部署。
当Glassfish开发停止时,下一个最好的事情是J Boss Wild Fly。
5、沟通的能力
沟通是我们做好一切事情的关键。我们必须与我们周围的环境保持互动,无论是在我们的私人还是职业生活中。一个良好的程序员知道如何在各种团体面表达自己。也许对你来说显而易见的东西在他人的角度来看并非如此。
从大的尺度(比如一个人的工作生涯)来看,一个程序员知识积累的多少只决定于其自学能力和他对编程本身的兴趣。
在一个分工明确的项目中,程序员需要理解产品,和领导沟通理解自己的任务,和同事们沟通以正确的方式进行合作。无论哪一个方面沟通出了问题都不是小事情,同时,程序员还需要正确的传达设计的实现难度,以及让别人正确的理解自己设计模块的接口。在不写文档时,正确的口头沟通非常重要,需要写文档时,良好的编辑能力也算做是沟通能力的一部分。
6、自学能力
这是一个非常重要的技能,在你自己的空闲时间学习新的技能。不要等待公司为你提供培训。你需要自己去学习新技术,提升自己在相关领域的水平。从Java后端开发到架构模式,总是有一些新事物值得学习。经常阅读博客和论坛,尝试加入本地聚会小组。你学到的东西可以帮助你的事业。知识刷新频率极快让人无法追赶的这个时代,难免会有超出自己知识范围的时候,此时你的自学能力决定了你能多快的完成任务。
7、良好的团队合作精神
无论是部分编程还是大型项目,所有开发人员都是作为团队的一部分在协同工作。你需要致力于团队的目的,或帮助新的团队成员克服障碍。不要存在这种“我只要做好我的本职工作,下班就直接回家”的态度。成为团队的一部分,帮助周围的同事,对自己的能力也是不小的提升。
就像拿破仑说的不想当元帅的士兵不是好士兵,追求参与一个大型软件系统的开发,是每个程序员的梦想。在此之前,应该学习更多的专业知识,达到优秀程序师的标准。最后希望各位程序员阅读本文后能够得到一些裨益,在这条路上走得更好。
会持续更新各行业各领域的知识
厉善信息科技(上海)有限公司2015年成立,一直致力于it人才外包业务,提供互联网、金融、银行、保险等行业的it人才外包解决方案。
对于程序员怎么做才能成为一个出色的程序员,建议如下:
1、迷恋技术,保持对代码的热情
兴趣是最好的老师,如果不是最初对编程充满兴趣,应该很少有人会选择程序员这个行业,但同时程序员是一个有点乏味枯燥的工作。如果你不迷恋技术,对代码充满热情,那你只能做一个平淡的程序员。
2、在实践中成长,磨砺技术
程序员是一个在实践中成长的职业。你看再多书,听再多的视频课,自以为学到很多东西,但正在接触项目的时候,就两手发软,头脑空白了。最好的提方法,是正在参与到项目中去,最好是能参与从设计到开发到测试到维护一整套的整套流程。
3、加班虽苦但也是提高的过程
虎虎在之前的文章中说过:毕业之后的前三年最为重要,要认认真真钻研技术,积累经验,至少能在某一方面成为技术达人。程序员加班是很正常的事情,要加班工作,加班学习,同时在这段时间要注意多总结,注意工作方法,合理安排时间,提高工作效率。你现在的付出是为了以后的成功!
4、不怕失败,学会寻找成就感
新程序员由于技术水平、经验的欠缺,写出的程序bug多,执行效率低,可能被同事嘲笑(我发现这还是普遍现象),然后被上司责怪,内心充满有挫折感。要学会自我减压,相信挫折与失败只是暂时的,发奋图强。在工作中要学会寻找成就感,哪怕你只是完成一个小功能,优化了一段代码,都是你辛勤付出的结果,是你能力提高的体现。
5、要学会写文档
不要以为程序员只要负责写代码,如果是那样,你永远不能有上升的空间了。因为不管是走技术路线,还是管理路线,都离不开文档,方案文档,技术文档,产品介绍文档,管理文档等等,是你了解开发流程,产品运营的必由之路。
6、学会复制粘贴
现在的开发资料已经非常的充实,遇到难以解决的问题不要过分纠结,为难自己,请打开搜索引擎搜索一下。毕竟,你做的是工作,不是在学校做研究。
7、细节决定成败
不少程序员都有这样的习惯,好不容易思考出解决问题的方法,迫不及待的把代码写出来,功能也实现了,立马提交代码完事。殊不知你的代码中还有不少细节需要完善,大到内存泄露、资源释放、代码是否高效,小到注释是否规范,都是你必须关注的问题。且不谈这些细节问题对你做出来的项目的影响,就是对你编程习惯的影响也是深远的。
虽然觉得问题的方法可以有很多,但过程中有几个部分让我印象深刻。拥有出色的解决问题的能力的程序员会先将问题的本质提炼出来,以便于确定总体目标并带着这个目标着手解决问题。然后他们将每个问题分解成容易处理的小问题,依次处理每个小问题,有时还可以通过绘制导图使其实现可视化。
这个过程做起来远比听起来难得多。当我开始学习编程的时候,我也会遇到瓶颈:和大多数人一样,我从未在学校学会如何解决问题,这也不是一项容易传授的技能,曾经,老师在数学课上布置了一组习题,我便一头栽了进去,正如我刚刚开始编程的时候。毋庸置疑,我这是在做无用功并且在最简单的问题就遇到了障碍。
学习计算机科学是编程基础的第二部分。我最近开始学习计算机科学,并且喜欢它,因为学会了这些就能站到比别人更高的地方去看问题。比如我开始从幕后的角度去了解使用内置函数时会发生什么。我还学习了内存和运行时间等许多其他主题。简而言之,我正在学习计算机为什么要做它所做的事情。
明白“为什么”让我对前后关系理解更深刻,帮助我成为一个见多识广的程序员。因此我在编写代码时更加深思熟虑。现在我对时间复杂度有了一些了解,举个例子,我更倾向于使用二分查找,而不是遍历列表中的每个元素。