当前位置: 首页 > 科技观察

爱好程序员的可以看看最佳编码套路

时间:2023-03-18 15:00:53 科技观察

最近看了很多SteveYegge的文章。其中之一,“PracticingProgramming”,写于2005年,当我读到它时,我感到很惊讶:与你可能相信的相反,每天埋头工作并不是真正的锻炼——参加会议不要磨练你的人际交往能力;回复电子邮件并不能磨练你的打字技巧。你必须定期留出时间,专注于锻炼,才能把事情做得更好。我认识很多优秀的程序员——这是在亚马逊工作的一大好处。如果你仔细观察他们,你会发现他们无时无刻不在锻炼身体。他们已经很好了,但他们仍然不忘锻炼身体。它们的计算方法有很多种,在本文中我只会介绍其中的几种。据我所知,这些才华横溢的程序员之所以如此成功,是因为他们一直在锻炼。健康的身体是靠规律的运动获得的,一定要坚持保养,否则就会走样。这同样适用于编程和软件工程。这是一个重要的区别——我每天开车上班,但我开车的次数远不如专业司机;同样,每天编程可能不足以让你成为一名专业的程序员。那么,如何才能让一个普通人成为职业司机或职业程序员呢?你需要锻炼什么?答案就在《科学美国人》的一篇名为《专家的头脑》的文章中:爱立信提出,重要的不是经验本身,而是“努力”,即不断挑战自己能力的其他事情。一些狂热的爱好者花费大量时间下棋、打高尔夫球或演奏乐器,但他们可能始终停留在业余水平,而训练有素的学生可以在较短的时间内超越他们,原因就在这里。值得注意的是,花大量时间下棋(甚至参加各种比赛)似乎比专门训练更有效地提高水平。培训的主要价值在于发现薄弱环节,有针对性地进行改进。“好好学习”就是经常去处理刚好超出你能力范围的问题,也就是对你来说失败概率很高的事情。没有一些失败,你可能不会成长。你要不断挑战自己,超越自己的极限。工作中有时会遇到这样的挑战,但并非总是如此。将练习与专业工作分开在编程界通常被称为“代码套路”。CodeKata的概念是由《程序员修炼之道:从小工到专家》的作者之一DavidThomas提出的。这个概念主要是指对某一特定技术或技能的重复练习来掌握它。——译者注所谓套路,就是一连串的动作。这个概念是从武术中借来的。如果您想查看一些编码例程示例(即努力工作和磨练编程技能的方法),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的清单的地方在于它看起来很全面。有些程序员一想到“练习”,总会想到一些编码问题。但在我看来,编程更多的是关于人而不是代码。所以这种方法在通过解决世界上所有晦涩的编程面试问题来提高你的个人能力方面是有限制的。关于“好好学习”,我也很喜欢PeterNorvig在《TeachYourselfProgramminginTenYears》(花10年时间自己学编程)一文中提出的很多建议:1.多和其他程序员交流。阅读别人的代码。这比任何书籍或培训课程都重要。2.手写程序!最好的学习方法是边做边学。3.将编程课程作为本科或研究生课程的一部分。4.找一些项目做,需要和其他程序员组队合作。随着项目的进展,学会从最差的程序员中识别出最好的程序员。5.和其他程序员一起做项目,学习如何维护不是自己写的代码,学习如何写出别人容易维护的代码。6.学习各种不同的编程语言,尤其是那些与你现在熟悉的语言有着不同世界观和编程模型的语言。7.了解硬件对软件的影响。知道你的计算机执行一条指令需要多长时间,从内存中获取一个单词需要多长时间(有或没有缓存),通过以太网(或互联网)传输数据需要多长时间,从磁盘读取它获取连续数据或跳转到磁盘上的另一个位置等需要多长时间。您还可以从DaveThomas的21个实用编码例程(CodeKata.com)中获得启发,或者您宁愿加入本地“编码道场”(CodingDojo.org)。我不能像史蒂夫、彼得或戴夫那样提供一长串关于“努力学习”的建议。我远没有他们那么有耐心。其实在我看来,“编程套路”只需要两步走:1、写博客。作为我自己辛勤工作的一种形式,我在2004年初创建了CodingHorror.com博客。它开始时不起眼,后来证明是我职业生涯中做过的最重要的事情。所以,你也应该写博客。***“名扬天下”的人往往是那些能够有效写作和交流的人。他们的声音是最响亮的,他们在制定游戏规则,在引领世界潮流。2.积极参与知名开源项目。所有的豪言壮语听起来都很棒,但你是豪言壮语还是实干家?不要光说,这很重要,因为人们会根据你的行为而不是你的话来评判你。试着在公众眼中留下一些真实有用的东西,然后你就可以说,“我为那个项目做出了贡献。”当你能写出精彩的代码,用精彩的文字向世界解释那些代码,那时候,我会觉得你已经掌握了最好的编码套路!