本文共 2264 字,大约阅读时间需要 7 分钟。
编程讲的是如何解决问题。但在你开始写代码之前,你需要清楚如何解决问题。一个好的程序员应该拥有这样的技能,他能将问题分解成子问题,直到每个子问题都可以很轻松地进行解决。不过要找到一个解决问题的方式可不是件简单的事。
程序员必备的主要技能
深刻理解数据结构和类,知道什么情况下以及怎么运用它们。
熟悉已经开发完成的库,这样就可以站在巨人的肩膀上,不必重新浪费时间了。
熟悉各种基础和高级的算法,理由同上条。
找程序员很容易,但要想发现优秀人才就很难了。劣质的程序员似乎总是在找工作,而优秀者,只要这家公司能发现他们,肯定会不惜一切代价留住他们,所以他们不会去频繁找工作。而当他们去找工作的时候,大多规划长远,所以会显得很挑剔——这就是为什么很多公司都会不约而同地表示“没有优秀程序员可用”的原因——因为找到的尽是些“普通货色”。
所有事物都会逐步趋向衰退灭亡,谁都无法抵抗。
代码也会慢慢发旧直至死亡。这时候你能做的就是把它们埋葬,然后再重新写过。不要为了省钱而继续维护那些费力不讨好的代码!
注释必须易于理解注释应该是有意义的,能够清晰地解释所有关于软件程序的内容。
注释的数量多少无所谓,质量才是关键。你需要使用/ *注释* /的风格来写注释,以确保位于每个源文件的顶部。此外,你也可以选择在注释中包括你的名字,编写代码的日期,以及简明扼要地说明程序的实际用途。不过,你可以选择省略一些功能明显的注释。你需要遵循的行内注释格式为//注释。
读代码就像读书一样,时间久了不读书,会失去对文字的感觉。但不一定要全读。核心系统的核心代码,和公司碰上的大 bug 时候,都应该经常看看。前者对于自己公司的最核心的技术实现有个第一手的了解,知道强在哪里;后者可以了解自己的团队通常是磕磕碰碰在什么地方,知道弱在哪里。
不要贬低你的工作
因为是新人,新手程序员总是倾向于认为他们的工作没那么重要。又或者也许你是一个有经验的程序员,但是在一个让你感到不适应的新领域里工作。在我看来,一些最好的想法正是来自于新手程序员,他们能看到现有技术的可改进之处,而那些已经形成固有观念的人却看不到。
优秀的程序员标准
优秀的程序员标准:对技术充满热情;编程是生活的一部分;如果你有兴趣的话,会在你的耳边谈论技术相关的话题;主动学习新技术;对自己不能认同的技术,感到不适应,无法全身心投入(在某些方面);足够聪明,对很多话题都感兴趣;在大学/工作之前就开始编程了;有隐藏的冰山,有(能)自己完成的大项目;对许多不相关的技术都有了解。
优秀的程序员会告诉你打根基的重要性,会劝你在厚积薄发前要隐忍。优秀的码农会告诉你学啥底层、啥啥啥一拖就好了,学了python还要啥自行车啊,数据结构排序函数二分搜索这不都内置了吗?工作中永远用不到,学算法有啥用啊?成为高手有很多种方法汇编是个屁啊?
抽象思维能力
在编程语言中,类、栈、堆、层等这些概念是非常抽象的,不是具体化的概念。
你必须学会和这些抽象概念共处,如果一个指针你捣鼓了半天都没弄懂,那必须不适合当程序员。
合理分配时间
你的世界里不能只有代码,你要学会思考、绘画、唱歌、跳舞、工作、玩耍,每样都会一点。我喜欢 Google的方式,在那里,你有 20%的时间用来思考任何你认为值得做的事情。老板应该提供休息室、娱乐室或者一些能让人放松清醒的环境。
学习他人的代码
我非常喜欢与那些在IDE里有java源代码的优秀程序员交流互动,阅读/参考他们的代码。因为这么做不但能了解基本知识,还可以学会写项目的新方法。阅读和参考一些可靠和已知的开放源码或者自己的高级代码,也有助于我们更好地编程。
记忆力对程序员重要吗?或许有些人会不以为然,其中包括当初的我:编程是一门灵活的学问,怎么能靠死记硬背呢?
当然不是死记硬背,但是记忆力有时候真的很重要。你写过的一行代码,你阅读过的一篇博文,你听过的一场技术分享 ...... 都是一笔需要牢记的财富。
有人问了:我天生就记性不好,我该怎么办?
好记性不如烂笔头,只有勤做笔记,用“外存”弥补“内存”的不足吧。
不要总是说不会
作为程序员,总有一些工作是以前没有做过的,也许来自产品人员的需求,也许来自项目自发的优化。我见过一些程序员,在面临未知的问题、挑战时,总是习惯于说:不会、没办法、不可能,这样的程序员就算不上合格的程序员。事实上,这样的程序员是给自己过早地留好退路,事实上问题可能并没有想象得那么困难,也许经过一番探索就能解决。如果习惯于对未知说不,那么在别人看来就是能力不行,影响个人形象与声誉,而且总是待在自己的舒适区也不利于自我成长。
与其它程序员多交流
与沟通讨论相比,阅读书籍和博客都是被动的事情。与程序员讨论一个程序问题,往往会获得更好的解决方案,这是很常见的,因为当你发言,听别人时,你会学到更多。
如何衡量学习效果?
第一种就是通过感受自己的学习情绪来衡量学习效果。大部分人都能感受到自己的情绪,比如你今天学习很吃力,还是不断体会到很带劲,后者的情况就说明你走对了路子,说明你正势如破竹地前进。
另一种衡量方式,是从客观效果来看的:在一个时间盒内,评估自己的进度与平均水平的差距。比如学习Java编程,可以了解别人花多长时间掌握了基本语法,然后与自己比较。
挖掘过去的研究成果
如果一个想法让你感到很兴奋,你可能很想立刻就展开工作。但是在那之前,你应该先粗略研究一下前人是如何解决这个问题的。花上几天时间研究要解决的问题*总能*彻底改变我的思路。
转载地址:http://kthbm.baihongyu.com/