首页 > PHP资讯 > 职场技巧 > 最牛B的编码套路

最牛B的编码套路

职场技巧
  近来,我许多阅览了Steve Yegge的文章。其间有一篇叫“Practicing Programming”(操练编程),写成于2005年,读后令我惊奇不已:

  与你所相信的恰恰相反,单纯地每天静心于作业并不能算是真实意义上的操练——参加会议并不能操练你的人际交往才能;回复邮件并不能进步你的打字水平。你有必要定时留出时刻,会集操练,这么才干把作业做得非常好。

  我认识许多超卓的程序员——这是在亚马逊作业最佳的额定“福利”之一。假如仔细观察他们,你会发现他们不时都在操练。他们现已很优异了,但他们仍然不忘操练。他们操练的办法各式各样,而我在这篇文章中只会介绍其间的几种。

  据我了解,这些超卓程序员之所以如此成功,即是由于他们一直在操练。完美的身段要靠定时的操练才干取得,而且有必要坚持操练才干坚持,不然身段就会走形。关于编程和软件工程来说,道理是相同的。

  这是一个主要的差异——我每天都开车去上班,但我的驾驭水平远远不如专业车手;相似的状况,每天编程也许并不足以使你变成一名专业的程序员。那么,啥才干把一个普通人变成一名专业车手或许专业程序员呢?你需求操练啥呢?

  答案就在《科学美国人》的一篇名为“The Expert Mind”(专家思维)的文章里:

  爱立信提出,主要的并不是经历自身,而是“尽力的学习”,也即是要不断地应战自身才能以外的东西。一些疯狂的爱好者花费了许多的时刻去下棋、打高尔夫球或许玩乐器,但他们也许一直停留在业余水平上,而一个操练有素的学生却可以在相对较短的时刻里逾越他们,缘由就在这儿。值得注意的是,在进步水平方面,花费在下棋上的许多时刻(即便参加各种竞赛)好像仍是比不过专门的操练来得更为有用。操练的主要价值在于发现缺点,并有关于性地进行进步。

  “尽力的学习”意味着,要常常去处理那些刚好在你才能极限上的疑问,也即是那些对你来说有很大也许失利的作业。假如不阅历一些失利的话,你也许就不会成长。你有必要不断地应战自我,逾越自个的极限。

  那样的应战有时会在作业中碰到,但也未必。将操练从职业作业中分离出来,这在编程范畴常被人称为“编码套路”(Code Kata)。

  Code Kata的概念是由David Thomas提出的,他是《程序员修炼之道:从小工到专家》的作者之一。这个概念主要指的是,关于某一种特定技能或技能进行重复性的操练,然后将其娴熟掌握。——译者注

 

  所谓套路,即是一系列的招式。这个概念借鉴于功夫。

  假如你想要看一些编码套路的比如(也即是尽力学习和训练编程技能的办法),SteveYegge的文章里倒是提出了一些不错的主张。他把它们称作为“实习演练”:

  1. 写一份自个的简历。把自个一切的有关技能都罗列出来,然后把那些在100年后还用得到的标出来。给每个技能打分,满分为10分。

  2. 罗列出你所慕名的程序员。尽量包括那些与你一同作业的人,由于你会在作业中从他们身上获取一些技能。记录下他们身上的1 ~ 2个闪光点,也即是你期望自个有所进步的方面。

  3. 检查维基百科上的“计算机科学”节目,找到“计算机范畴先驱者”这个分类,从这个列表中选择一个人,阅览他的业绩,而且在阅览时翻开任何你感兴趣的连接。

  4. 花20分钟通读别人的代码。读超卓的代码和读差劲的代码都是有利的,两者都要读,轮番切换。假如你无法感觉出它们之间的差异,可以求助于一位你敬重的程序员,让他给你展示一下啥是超卓的代码、啥是差劲的代码。把你读过的代码给别人也看看,问问他们的看法。

  5. 罗列出你最喜爱的10个编程东西——那些你觉得你用得最多、非有不可的东西。随机选择其间的一个东西,花一个小时去阅览它的文档。在这一个小时里,尽力去学习这个东西的某个你不曾意识到的新功能,或许发现某种新的使用办法。

  6. 想一想,除了编程以外你最拿手啥作业?再想一想,你是经过怎么的操练才变得如此娴熟和专业的?这关于你的编程作业又有啥启示呢?(怎样把这些经历应用到编程方面?)

  7. 拿出一叠简历,并和一组面试官在同一个房间里待上一个小时。保证每份简历都至少被3个面试官看过,而且要给出1 ~ 3分的评分。关于那些不一样面试官评判截然不一样的简历展开评论。

  8. 参加一个电话面试。过后写下你的反馈,抛出你的观点,然后与掌管电话面试的人聊一聊,看看你们是否达成了共同的定论。

  9. 进行一次技能面试,而且被面试的人应当是某个你不太了解的范畴里的专家。让他假定听众在该范畴里一窍不通,因而请他从最根底的讲起。尽力去了解他所说的,必要时问一些疑问。

  10. 有时机参加别人的技能面试。时期,你仅仅仔细地听、仔细地学。在应聘者尽力处理技能疑问的一起,你也要在自个脑子里测验处理这些疑问。

  11. 找到一个能和你交流实际疑问的人,每隔一星期,彼此交流编程疑问。花10 ~ 15分钟来测验处理这些疑问,再用10 ~ 15分钟进行评论(不管能否处理)。

  12. 当你听到任何你一时之间也无法处理的面试疑问时,赶忙回到你的坐位上,把这个疑问用电子邮件发给自个,以留作日后的提示。在那一星期里找出点时刻,用自个最喜爱的编程言语来处理它。

  我之所以喜爱Steve开出的这个清单,是由于它看上去很全部。有些程序员一想到“操练”,总以为即是一些编码上的难题。但在我看来,编程更在于人,而不是代码。因而,经过处理世上一切的、而且不流畅的编程面试标题,在进步你的个人才能方面,这种办法是有限制的。

  关于“尽力的学习”,我也很喜爱Peter Norvig在“Teach Yourself Programming in TenYears”(花10年时刻自学编程)一文中提出的许多主张:

  1. 与其他程序员交流。读别人的代码。这比任何书本或训练课程都更主要。

  2. 动手写程序!最佳的学习办法即是边做边学。

  3. 在本科或研究生的课程中学习编程课程。

  4. 找一些项目来做,而且需求与其他程序员形成团队来协作。在项目的进行过程中,学会区分最超卓的程序员以及最差劲的程序员。

  5. 在项目中跟从其他程序员一同作业,了解怎么保护那些不是你写的代码,而且学习怎么写出利于别人保护的代码。

  6. 学习多种不一样的编程言语,特别是那些与你现在所了解的言语有着不一样的国际观和编程模型的。

  7. 了解硬件对软件的影响。知道你的电脑执行一条指令需求多少时刻,从内存中取出一个字(在有缓存或没缓存的状况下)需求多少时刻,在以太网(或许因特网)上传输数据需求多少时刻,从磁盘中读取接连的数据或许在磁盘上跳转到另一个方位需求多少时刻,等等。

  你还可以从Dave Thomas的21种实用的编码套路中获取灵感(CodeKata.com),或许你更情愿参加一个你家本地的“编程武馆”(CodingDojo.org)。

  关于“尽力的学习”,我无法像Steve,Peter或许Dave那样供给一个长长的主张列表。我远不如他们有耐性。实际上,在我看来,“编程套路”只需两个招式:

  1. 写博客。我在2004年草创办了CodingHorror.com博客,作为我自个尽力学习的一种方式。它在一开始很不起眼,到后来变成我职业生涯中做过的最主要的一件事。所以,你也应当写博客。最终“显达于全国”的人,通常即是那些可以有用书写和交流的人。他们的声响最嘹亮,是他们在拟定游戏规则,而且引领国际的潮流。

  2. 积极参加闻名的开源项目。一切的高谈阔论听起来都极好,但是,你是一个鬼话王仍是一名实干家呢?别光说不练,这个非常主要,由于大家会用你的举动来衡量你,而不是你的言辞。尽力在公众面前留下些实实在在有用的东西吧,到时候你就可以说,“我在那个项目中出过力。”

  当你能编写精彩的代码、而且能用精彩的言辞向世人解说那些代码时,到那时候,我会觉得你现已掌握了最牛的编码套路!(文章来自南京欣才PHP培训机构)

本文由欣才IT学院整理发布,未经许可,禁止转载。