程序员的《学习之道》

最近读过《学习之道》这本书,作者是乔希·维茨金,曾8次在全国象棋冠军赛中夺魁,后来又获得了国际太极推手冠军。他认为自己在不同领域取得成功,靠的是自己学习的方法。那么作为一个程序员,可以学到什么呢。

画小圈

对于象棋来说,如果从开局开始学起,太多的棋子,太多的行走方式会让初学者无所适从。所以作者的老师教的是从残局开始,这样可以找到最基本的东西,比如一只马在不同时候的作用,与兵该怎样地配合等。作为一个程序员也应该从基本的东西学起,而不是一开始久被大量的api,只是让自己感觉学到了很多。以学习Android View系统为例,你可以记住RelativeLayout,LinearLayout各种Layout的布局使用方法以及TextView,Button的各种属性,但这也可能满足不了你,还得到github上到处找开源的代码库,但是也可以用类似“残局”的方法,花些时间琢磨一个View是如何绘制,如何测量大小,如何布局的,深刻理解后再去使用API,或者方便地写出自己的View。

动机问题

作者学习象棋的目的只是享受象棋给他带来的美妙感觉。学习太极地初衷则是为了放松身体,探索自我。作为一个程序员,想要说完全是为了享受而编程不太现实。但是至少不需要为了赶进度而写出丑陋的代码,让未来的自己和同事都感到恶心。即使有KPI压着,PM催着,你仍然可以为了创造更优雅的代码而创作程序。

利用挫折

作者提到与通过与大胖子练习太极最终战胜的例子。当大胖每次都简单粗暴地将他摔倒在地时,正常人会恼羞成怒,以后就不跟大胖子对打了,但是他利用大胖子来使自己进步。通过经常被大胖摔倒在墙壁上的经历,使自己不再害怕被打败,反而可以冷静下来,自己琢磨这个过程中的动作,最终打败了大胖子。在编程时候,遇到难以解决的的bug,可以说这个问题很难解决,直接交给更senior的人,或者可以将这视为提高的机会,仔细研究。遇到不靠谱的产品经理,不妨将这当作提高自己产品方面能力的机会,用心想如果自己做这个产品会怎么做,影响产品经理的选择,也锻炼了自己。

压力与恢复

在下象棋的时候,如果持续长时间的思考,就会作出不明智的决定,“一个有优势的表现者最显著的特征就是有规律地使用恢复期。能在短暂的休息时间放松自己的棋手通常总能最终从比赛的险情中安然脱险。”编程同样也是非常需要注意力的劳动,如果遇到难以解决的问题,可以先喝杯水,休息一下,或者根同事聊一下,等休息完了,或许效率更高。

总结

虽然具体领域不一样,但是如果从人的角度来看,学习这些领域归根到底还是关于人的学习规律。学习一项领域时的方法通常也可以应用到另外的领域。归根到底还是对人的探索。

原文地址: juude.net

时间: 2024-11-05 13:31:37

程序员的《学习之道》的相关文章

【原创】PHP程序员进阶学习书籍参考指南

PHP程序员进阶学习书籍参考指南 @heiyeluren lastmodify: 2016/2/18 [初阶](基础知识及入门) 01. <PHP与MySQL程序设计(第4版)>  http://item.jd.com/10701892.html 02. <深入浅出MySQL 数据库开发 优化与管理维护 第2版> http://item.jd.com/11381295.html 03. <实战Nginx:取代Apache的高性能Web服务器> http://dwz.cn

读我编程,我快乐:程序员职业规划之道 第一章 选择市场

职业规划,从大学开始,很少考虑这个事情,大四那会儿还学过相关的一门课,当时也只是抱着学分修修到的心态.最近一年里开始思考这个问题,近期阅读了这本<我编程,我快乐:程序员职业规划之道>,开始学习着规划自己的职业.这本书不仅适合程序员,也适合其他职业. 准备按照章节摘抄出一些觉得有用的.引人思考的片段和一些有趣的练习题,再附加自己的感想. 在<程序员修炼之道>一书中,Dave Thomas和Andy Hunt谈到了编程中的偶然性:当你开始做一个程序的时候,或许手头上有一个从网上复制的示

《程序员的修炼之道——从小工到专家》读第一章有感

         九月份,我读了<程序员的修炼之道--从小工到专家>这本书,虽然只是读了其中小小的一章,却让我收获了许多,收益匪浅.     从<程序员的修炼之道>这本书的介绍部分可以看出,该书是一本很棒的作品,该书由一系列独立的部分组成,讲述了许多富有娱乐性的奇闻轶事.有思想性的例子.以及有趣的类比,内容丰富多彩,并且本书还阐明了软件开发的许多不同方面的最佳实践和重大陷阱,无论是初学者还是有经验的编程员,都能从中获益.书中更是例举了许多程序员对这本书的看法,从他们的介绍中让我认识

黑马程序员_学习IOS之字典常用的方法

字典是无序的 数组是有序的.字典分为:可变字典和不可变字典  不可变字典对象 NSDictionary * dict = [[NSDictionary alloc]initWithObjectsAndKeys:@"one",@"1",@"two",@"2",@"three",@"3",@"four",@"4", nil]; //value = ke

黑马程序员——C学习总结之数组排序算法实现

发表试试 黑马程序员--C学习总结之数组排序算法实现,布布扣,bubuko.com

zz 游戏程序员的学习之路(中文版)

游戏程序员的学习之路(中文版) Milo Yip · 1 天前 感谢 @楚天阔(tkchu)编写脚本及整理中文译本数据,自动从英文版生成中文版,SVG / PDF 版本中的书籍图片现在链接至豆瓣页面. Github miloyip/game-programmer 检视/下载中文版 SVG / PDF 「真诚赞赏,手留余香」 赞赏 15 人赞赏 程序员游戏开发书籍推荐 分享 举报 977 文章被以下专栏收录 Milo的编程 进入专栏 97 条评论 写下你的评论 trycatch 这是劝退吧...

黑马程序员_OC学习笔记之Foundation框架集合类

OC--集合类 1.OC集合类包括NSArray,NSSet,NSDictionary都是以面向对象的方式操作数组,而且OC数组不像C语言中的数组只能存放同一种数据类型,它可以存放任意类型的对象,但是不能存放非OC对象类型如基本数据类型int,struct,enum等 2.OC数组是以对象的方式存在,因此在创建的时候需要为创建的对象前面加* 3.NSArray数组一旦创建就决定了是不是可变,而且永远是可变或不可变 4.NSArray数组和子类NSMutableArray的基本操作: 1>使用NS

黑马程序员_OC学习笔记之description方法和sel

OC--description方法 1.Description方法包括类方法和对象方法.(NSObject类所包含) -description(对象方法) 2.使用NSLog和@%输出某个对象时,会调用对象的description方法,并拿到返回值进行输出. +description(类方法) 3.使用NSLog和@%输出某个对象时,会调用类对象的description方法,并拿到返回值进行输出,把整个对象一次性打印出来,打印对象使用%@. 4.使用@%打印对象如(“@%”,P)默认打印输出为<

黑马程序员_OC学习笔记之@property和@synthesize

[objc] view plaincopyprint? <span style="font-size:24px;">#import <Foundation/Foundation.h> @interface Person : NSObject { int _age; int age; int _height; int height; int _weight; int weight; int _money; int money; } @property int ag

[JavaScript] 初中级Javascript程序员必修学习目录

很多人总感觉javascript无法入门,笔者在这里写一下自己的学习过程,以及个人认 为的最佳看书过程,只要各位能按照本人所说步骤走下去,不用很长时间,坚持 个3个月,你的js层级会提高一个档次,无他,唯有努力与坚持,请看: 1. 从头到尾对一遍<<Javascript高级程序设计>>,不懂的地方可以暂时掠过,给自己对javascript有一个大体的印象 2. 认认真真的读完这本书:<<编写可维护的javascript>>,从编码规范,技巧,模式,等各个方面