今天分享的一篇文章是Teach Yourself Programming in Ten Years, 中英对照版
文章有点老,但就像计算机科学里的基础一样,不会过时。
进入主题:
The key is deliberative practice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes. Then repeat. And repeat again.
十年学会编程,刻意练习,我觉得英文里的这个task用的非常好,每次用一个刚刚好的task来挑战自己,challenge,这个词也非常好,恰到好处,翻译成中文“挑战”,反而缺点意思,所以会有人中英搭配的讲话,有些人其实不是为了秀,而真的用词比中文对应的词要达意的多。这也无关文化优劣,讲偏了继续解读这篇文章《十年学会编程》。练习之后还要分析,不是说练完就结束了,事后还是很重要的,万维钢在精英日课里有篇文章讲到,失败不是成功之母,只有分析了失败原因的失败才是成功之母。
the most effective learning requires a well-defined task with an appropriate difficulty level for the particular individual, informative feedback, and opportunities for repetition and corrections of errors.
常常纠结于该如何学习,这篇文章已经给出了,面向任务学习,而且是well-defined task ,对于你来说是适当难得,并且随着水平的提高,难度也逐渐提升,也就是自己当自己的老师。还有一点就是要有反馈,你完成任务要有合理的反馈渠道,你得知道你做的咋样。然后才会去改进之。这一点其实是最难办到的,自己给自己做老师安排任务,管理时间都没问题,但是反馈渠道却也是单个人无法做到的。所以开源很棒啊。
Talk with other programmers; read other programs. This is more important than any book or training course.
交流以及看源码,比看任何书都有用。我天,经常会有人问该如何学习,问询学习方法论,这回答,简单直接。费曼学习法,就是交流,分享的学习留存率最高的。以及看源码很重要。
Work on projects with other programmers. Be the best programmer on some projects; be the worst on some others. When you’re the best, you get to test your abilities to lead a project, and to inspire others with your vision. When you’re the worst, you learn what the masters do, and you learn what they don’t like to do (because they make you do it for them).
职场生存之道也讲了,在一个鹤立鸡群和鸡立鹤群的团队里,该做什么事情,非常到位。
Work on projects after other programmers. Understand a program written by someone else. See what it takes to understand and fix it when the original programmers are not around. Think about how to design your programs to make it easier for those who will maintain them after you.
再来一份职场生存之道,以及软件设计的目的,简单说就是严于律己,宽以待人,别人写的不好的,先理解好思路然后fix,自己写代码要以他人可维护为目标。
最后作者举了个一孩与二孩的例子,证明实践的力量。
总结一下
这篇文章其实是在说作为一个programmer,你要热爱,要掌握好方法论,要有职业素养。
很朴素,很实用。
网友评论