首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >终极编程道场(The Ultimate Code Kata)

终极编程道场(The Ultimate Code Kata)

作者头像
刘开心_1266679
发布2021-09-23 15:03:21
5790
发布2021-09-23 15:03:21
举报

今天在Coding Horror上看到一篇不错的文章,原文链接:http://blog.codinghorror.com/the-ultimate-code-kata/

或许与你相信的相反,每天只做你的工作并不能视为真正的练习。就像参加会议练习不了交际能力,回复邮件练习不了打字。为了做好某件事,你不得不偶尔留出一些时间,专注于练习。

我知道很多优秀的工程师——这也是在亚马逊工作的最好福利之一——如果你接近他们,就会发现他们一直在操练。尽管他们已经很优秀,依然在练习。他们有很多种操练的方式,这篇文章将会提到一些方式。

我知道的绝大多数优秀的工程师都是因为他们一直在操练。一些人的身材好,是因为他们经常锻炼,而且坚持锻炼,否则就会走形,编程也是一样。

这是一个很重要的区别。我可能每天开车上班,可是我离专业司机还相差甚远。同样的,每天编程不代表你足够成为一个专业程序员,那么,什么能让一个人成为一个专业的司机,或者程序员?你该如何去练习?

答案在美国科学家的一篇文章中提到:

”Ericsson 认为,重要的不是经历(experience)本身,而是‘付出努力地钻研(effortful study)’,这需要不断地应对超出一个人能力范围的挑战。这就是为什么一些爱好者付出成百上千的时间练习下棋、高尔夫或者乐器却连业余水平都达不到,而一个正确训练的学生却可以在很短时间内超越他们。“

付出努力地钻研(effortful study)意味着持续应对贴近能力极限的挑战,那些你失败率很高的挑战。唯有失败,才能让你不断变专业。你必须寻找这些挑战,推动自己超越舒适极限。

这些挑战有时可以在工作中找到,但也不是一定要在工作中找到,把练习从职业中分离就是我们提到的编程操练(code kata)。

Kata,一系列精心编排的动作,一个来源于武术的概念。

如果你正在找这些code kata的例子——练习‘effortful study’并磨练编程技巧的方式——Steve的文章有一些很棒的起点,被他成为实战演练。

1、写下你的简历,列出你的所有相关技能,然后标出100年内仍需要的技能。给自己列出的每个技能按1-10等级评分。

2、列出一些你崇拜的programmer。尽量包括与你一同工作的同事,因为你可能需要他们一起演练。列出一两个他们擅长并且你希望提高的技能。

3、到Wikipedia的computer science,找到“Prominent pioneers in computer science”,从列表中挑选一个人,了解一下他们的资料,找到里面任何你感兴趣的链接,读下去。

4、通读别人的代码20分钟。对于这个演练,交替阅读好代码和烂代码,都是有益的。如果你不确定它们的差异,请教你尊敬的programmer,给你举例说明。给其他人展示你读的代码,看看他们是如何思考的。

5、列出10个你最喜欢的编程工具:你觉得使用最多的,没有它就没法活的。随意选择一个你列举的工具,花一个小时阅读它的文档。在这 一个小时里,试着学习这个工具的你未曾留意的新特性,或者找出一些使用它的新方法。

6、挑出你最擅长的与编程无关的事。想想专家或者大师是怎么练习的。你能从中受到那些能够用在编程中的启发。

7、拿一堆简历,和一个评审小组在一起一小时。确保每个简历被至少3个评审过目并打分。讨论简历分数间2的巨大差异。

8、Listen in on a technical phone screen. Write up your feedback afterwards, cast your vote, and then talk about the screen with the screener to see if you both reached the same conclusions.

9、举办一个技术面试,候选人是一个你不了解的领域的专家。让他们从头开始向你解释这个领域,假设事先完全不了解这个领域。试着理解他们说了什么,并且在需要的时候提些问题。

10、听一下其他人的技术面试。试着解决他们面临的技术问题。

11、找一个伙伴交换练习问题。询问彼此编程问题,每周交换。用10到15分钟解决这些问题,再用10到15分钟讨论问题。

12、当你听到任何你解决不了的面试编程问题,回到你的书桌,然后记下这个问题并设置提醒,在本周有时间的时候用你最喜欢的编程语言解决这个问题。

我喜欢Steve的建议的原因是,它从某种程度上说比较全面。一些开发者认为只能从解决coding puzzle来得到练习,但是对我来说,编程更多是对人的锻炼而不是代码,所以你能从解决晦涩难懂的程序题中获得的收获是有限的。

我也喜欢Peter Norvig在Teach Yourself Programming in Ten Years中的建议:

1、与其他programmers交流。阅读他们的程序。这比任何书和培训教程都重要。

2、编程!最好的方法就是边学边练。

3、学习大学或研究生水平的编程课程。

4、和一个程序员团队一起做一个项目,找出这个项目对最好的程序员的意义和最坏的意义。

5、在其他程序员之后接手项目。学习如何维护不是你写的代码。学习如何编写代码,才能让其他人高效地维护它2.

6、学习不同的编程语言。找出这个语言不同于你使用的语言的编程模型。

7、了解硬件对你的影响。知道你的电脑执行一条指令,从内存读取一个词(有没有高速缓存未命中),以太网(或因特网)传输数据,从磁盘读取连续的字,并寻求一个新的磁盘位置需要多长时间。

你也可以收集从Pragmatic Dave's 21 Code Katas获得的灵感,或者加入你所在地区的操练道场。

我没有Steve和Peter那么多的建议,我太心急了, 事实上, 在我的code kata字典里只有两个动作(movement):

1、写博客。我从2004年开始写博客,作为effortful study。从开始到现在,它逐渐成为我职业生涯中必不可少的标志性事件。所以你也应该写博客。那些可以高效地写作和交流的人们往往是认真聆听的人,他们有辩驳的资本。

2、积极参与一个或多个值得关注的开源项目。

当你可以编写brilliant的代码,并且能brilliant的解释你写的代码,那好,我敢说这就是终极code kata

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-05-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档