首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

大牛谈:一个优秀的程序员是如何炼成的?

关注本文评论提供java学习

编程讲的是如何解决问题。但在你开始写代码之前,你需要清楚如何解决问题。一个好的程序员应该拥有这样的技能,他能将问题分解成子问题,直到每个子问题都可以很轻松地进行解决。不过要找到一个解决问题的方式可不是件简单的事。

程序员必备的主要技能

深刻理解数据结构和类,知道什么情况下以及怎么运用它们。

熟悉已经开发完成的库,这样就可以站在巨人的肩膀上,不必重新浪费时间了。

熟悉各种基础和高级的算法,理由同上条。

找程序员很容易,但要想发现优秀人才就很难了。劣质的程序员似乎总是在找工作,而优秀者,只要这家公司能发现他们,肯定会不惜一切代价留住他们,所以他们不会去频繁找工作。而当他们去找工作的时候,大多规划长远,所以会显得很挑剔——这就是为什么很多公司都会不约而同地表示“没有优秀程序员可用”的原因——因为找到的尽是些“普通货色”。

所有事物都会逐步趋向衰退灭亡,谁都无法抵抗。

代码也会慢慢发旧直至死亡。这时候你能做的就是把它们埋葬,然后再重新写过。不要为了省钱而继续维护那些费力不讨好的代码!

注释必须易于理解注释应该是有意义的,能够清晰地解释所有关于软件程序的内容。

注释的数量多少无所谓,质量才是关键。你需要使用/ *注释* /的风格来写注释,以确保位于每个源文件的顶部。此外,你也可以选择在注释中包括你的名字,编写代码的日期,以及简明扼要地说明程序的实际用途。不过,你可以选择省略一些功能明显的注释。你需要遵循的行内注释格式为//注释。

读代码就像读书一样,时间久了不读书,会失去对文字的感觉。但不一定要全读。核心系统的核心代码,和公司碰上的大 bug 时候,都应该经常看看。前者对于自己公司的最核心的技术实现有个第一手的了解,知道强在哪里;后者可以了解自己的团队通常是磕磕碰碰在什么地方,知道弱在哪里。

不要贬低你的工作

因为是新人,新手程序员总是倾向于认为他们的工作没那么重要。又或者也许你是一个有经验的程序员,但是在一个让你感到不适应的新领域里工作。在我看来,一些最好的想法正是来自于新手程序员,他们能看到现有技术的可改进之处,而那些已经形成固有观念的人却看不到。

优秀的程序员标准

优秀的程序员标准:对技术充满热情;编程是生活的一部分;如果你有兴趣的话,会在你的耳边谈论技术相关的话题;主动学习新技术;对自己不能认同的技术,感到不适应,无法全身心投入(在某些方面);足够聪明,对很多话题都感兴趣;在大学/工作之前就开始编程了;有隐藏的冰山,有(能)自己完成的大项目;对许多不相关的技术都有了解。

优秀的程序员会告诉你打根基的重要性,会劝你在厚积薄发前要隐忍。优秀的码农会告诉你学啥底层、啥啥啥一拖就好了,学了python还要啥自行车啊,数据结构排序函数二分搜索这不都内置了吗?工作中永远用不到,学算法有啥用啊?成为高手有很多种方法汇编是个屁啊?

抽象思维能力

在编程语言中,类、栈、堆、层等这些概念是非常抽象的,不是具体化的概念。

你必须学会和这些抽象概念共处,如果一个指针你捣鼓了半天都没弄懂,那必须不适合当程序员。

合理分配时间

你的世界里不能只有代码,你要学会思考、绘画、唱歌、跳舞、工作、玩耍,每样都会一点。我喜欢 Google的方式,在那里,你有 20%的时间用来思考任何你认为值得做的事情。老板应该提供休息室、娱乐室或者一些能让人放松清醒的环境。

学习他人的代码

我非常喜欢与那些在IDE里有java源代码的优秀程序员交流互动,阅读/参考他们的代码。因为这么做不但能了解基本知识,还可以学会写项目的新方法。阅读和参考一些可靠和已知的开放源码或者自己的高级代码,也有助于我们更好地编程。

记忆力对程序员重要吗?或许有些人会不以为然,其中包括当初的我:编程是一门灵活的学问,怎么能靠死记硬背呢?

当然不是死记硬背,但是记忆力有时候真的很重要。你写过的一行代码,你阅读过的一篇博文,你听过的一场技术分享 ...... 都是一笔需要牢记的财富。

有人问了:我天生就记性不好,我该怎么办?

好记性不如烂笔头,只有勤做笔记,用“外存”弥补“内存”的不足吧。

不要总是说不会

作为程序员,总有一些工作是以前没有做过的,也许来自产品人员的需求,也许来自项目自发的优化。我见过一些程序员,在面临未知的问题、挑战时,总是习惯于说:不会、没办法、不可能,这样的程序员就算不上合格的程序员。事实上,这样的程序员是给自己过早地留好退路,事实上问题可能并没有想象得那么困难,也许经过一番探索就能解决。如果习惯于对未知说不,那么在别人看来就是能力不行,影响个人形象与声誉,而且总是待在自己的舒适区也不利于自我成长。

与其它程序员多交流

与沟通讨论相比,阅读书籍和博客都是被动的事情。与程序员讨论一个程序问题,往往会获得更好的解决方案,这是很常见的,因为当你发言,听别人时,你会学到更多。

如何衡量学习效果?

第一种就是通过感受自己的学习情绪来衡量学习效果。大部分人都能感受到自己的情绪,比如你今天学习很吃力,还是不断体会到很带劲,后者的情况就说明你走对了路子,说明你正势如破竹地前进。

另一种衡量方式,是从客观效果来看的:在一个时间盒内,评估自己的进度与平均水平的差距。比如学习Java编程,可以了解别人花多长时间掌握了基本语法,然后与自己比较。

挖掘过去的研究成果

如果一个想法让你感到很兴奋,你可能很想立刻就展开工作。但是在那之前,你应该先粗略研究一下前人是如何解决这个问题的。花上几天时间研究要解决的问题*总能*彻底改变我的思路。

关注本文评论提供java学习

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180304A11BFS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券