为程序员量身定制的12个目标

 英文原文:12 resolutions for programmers

  对程序员们来说挑战自我非常重要,要么不断创新,要么技术停滞不前。新年伊始,我整理了 12 个月的目标,每个目标都是对技术或个人能力的挑战,而且可以年复一年循环使用。

  接下来我会对这些建议逐个介绍。

变得有耐心

  程序员们会担心锻炼耐心付出的努力得不到应有的回报。其实,培养耐心只要付出很小的投入就能够得到相对而言很大的收获。下面是开始锻炼耐心可以尝试的一个列表,只要全身心投入其中任意一项,都可以在一个月左右脱离门外汉(成为有经验的新手)的阶段:

  • 烹饪
  • 徒步
  • 滑雪
  • 天文
  • 慢跑
  • 木工
  • 武术
  • 舞蹈

保持健康

  程序员通常久坐少动,因此在日常工作中会面临健康问题,但通常都被我们忽略了。一年中花整整一个月来调整你的生活习惯、饮食和生活环境,这会促使你养成持久、健康的生活习惯。每年去一趟诊所检查血压、胆固醇和血糖,看看这些指标最近有什么变化。如果你的手腕开始疼痛或者已经疼了很久,马上停掉手上的工作开始与“鼠标手”(重复性劳损)作战。注意你的坐姿,尤其是肩膀和脖子。我使用了矫姿器来帮助治疗。

  跟踪你的体重、摄入以及燃烧的卡路里。如果有必要,可以改变生活方式以养成健康的饮食习惯和减肥

拥抱变化带来的不适

  在我 20 刚出头的时候,通过观察身边年纪稍大一些的伙伴我发现有些人停滞不前而另一些则活力充沛,我试着寻找背后的原因。答案就是舒适感。舒适会让技术停滞不前。当找到一个能够为我所用的系统时,我们会一直使用它。但技术是不断进步的,而那些停留在舒适区的人永远不会意识到这些进步能够为他们带来好处。不破不立,要让自己适应不舒适的感觉。

  下面列出的事情一开始可能会让你感到不适应:

  • 使用德沃夏克键盘
  • 使用 vim 替代 emacs,反之亦然
  • 不使用鼠标
  • 使用不同的窗口管理器
  • 喝清咖啡不加奶油和糖,或者喝清茶
  • 尝试一个月“流行且无聊的新事物”
  • 一个星期中有一天不开手机
  • 学习使用一种可以单手输入的设备
  • 尝试一个不同的操作系统
  • 一个星期中有一天不上网
  • 试着对饮食加以限制:尝试吃素,成为纯素食主义者,不吃乳制品,等等
  • 每天吃一种你不喜欢的食物
  • 将你习惯使用的胳膊用绷带绑起来
  • 学习用你不习惯的那只手写字
  • 开一个博客
  • 参加公共演讲
  • 一个月听一种你不喜欢的音乐
  • 去医院或退休家庭护理做志愿者
  • 一个星期有一天快生活
  • 去一个与自己文化或语言不同的国家旅行
  • 读一篇广受好评但却不是你喜欢题材的小说
  • 看一场广受好评但却不是你喜欢风格的电影或演出
  • 学会用变速杆(手动)开车
  • 反对你相信的一些事情

  在一个月的尝试之后,你可以决定是否继续采用新方式,或者找到新方式中好的经验与原有方式的结合点。例如,在我从使用了 10 年的 emacs 转向 vim 时,我会为插入模式设置 emacs 风格快捷键从而继续使用 vim。

学习一门新的编程语言

  编程语言起起落落。如果只了解一门语言,程序员的解决问题能力以及职业前景都会因此受到限制。花上整整一个月时间吸收一门新语言或者一个新的编程范式,并用它写一个小程序。

  下面是一些可以学习但不是非常主流的编程语言:

  如果你无所不知,那么你可以实现一门新的编程语言

自动化

  程序员拥有最强大的待开发技能就是将虚拟和现实自动化的能力。如果你从来没有造过一个机器人,那么去做一个吧。至少学会使用 Lego Mindstorms 或者玩一玩 Arduino board

  检查一下你每天的任务,看看其中有哪些可以完全或者部分自动化。自动化在家庭生活里已经有了长足的进步,甚至可以像 Insteon 那样对系统进行 DIY。

  投资一个月的时间来进行自动化:

  • 调整你的邮箱过滤器或者设置 procmail
  • 为频繁进行的工作编写自动化 shell脚本
  • 编写 shell脚本帮助写作
  • 学会如何使用 cron 工具
  • 改造橱柜灯由感应控制
  • 尽可能地用无线替代有线
  • 停止手动同步:将信息存到云端
  • 安装一个远程控制音频系统
  • 通过你的服务器控制家里的空调
  • 安装数字监控摄像头
  • 安装数字内部通话系统,儿童监控系统
  • 让咖啡机自动打开
  • 为宠物安装自动给水槽
  • 为宠物安装自动感应门
  • 将 Roomba 改造成个人信使

  译注:

  procmail:procmail 软件包包含一个自动的邮件管理器,可以很好的过滤和排序邮件。

  cron:linux 下的定时执行工具。

  Roomba:Roomba 是 iRobo 公司生产的定时智能机器人。

学习更多数学知识

  计算机科学本质上讲是数学的一个学科。好的数学家中间会产出优秀的程序员。不要让你的数学能力丧失殆尽。

  考虑每年花一个月时间复习列表中的一项:

关注安全

  很少有程序员具备好的安全习惯。如果你对自己的数字安全很在意,你就会对你写的代码安全性更加关心。确保你在每个站点都使用了唯一的高安全系数密码。使用加密的密码管理器来管理你的密码,例如 PasswordSafe 或者 KeePassX。如果你还没有对整个磁盘加密,留出时间完成它。(在 Mac 上可以轻松完成)

  每年都要研究过去 12 个月中前 10 位的安全漏洞。他们是如何发生的?在编程中需要怎么做能够避免在你的代码中出现这些漏洞?

  下面是另外一些你需要尝试的安全任务:

  • 在 Apache 中加入 SSL 验证
  • 使用RSA 或 AES 实现密码系统
  • 试着破译你的无线网络密码
  • WireShark 侦听你的网络通讯
  • 设置基于密钥的无密码 ssh 登录
  • 自己运行 nmap;配置你的防火墙
  • 建立端口扫描
  • 为 USB 驱动器加密
  • 监控日志文件
  • 设置 cron 任务定期更新你的程序

  译注:

  nmap:linux 下的网络扫描和嗅探工具包

备份你的数据

  每年花一些时间检查你的备份策略。

  花一个月时间将备份花费的时间减到最小。

  使用基于云的备份服务,比如 MozyCarbonite,很容易建立无缝自动备份。

  更全面地防御可以选择为每个人分发硬盘,对每台电脑使用像 Time Machine 这样的自动备份工具进行备份。

  对重要文件使用异地远程仓库进行版本控制。

学习更多理论知识

  计算机科学有丰富的理论基础。

  了解最新进展的同时还要加强对经典开发理论的掌握。

  每年在下列主题上花一个月时间:

  • 形式语言
  • 自动机与可计算性理论
  • 计算复杂性理论
  • 形式化方法
  • 语义学
  • 算法与数据结构

  译注:

  形式语言:按一定规律构成的句子或符号串的有限或无限的集合。

  自动机:是有线状态机(FSM)的数学模型。

  可计算性理论:研究计算的可行性和函数算法的理论。又称算法理论。它是算法设计与分析的基础,也是计算机科学的理论基础。

  计算复杂性理论:计算复杂性理论是理论计算机科学的分支学科,使用数学方法对计算中所需的各种资源的耗费作定量的分析,并研究各类问题之间在计算复杂程度上的相互关系和基本性质,是算法分析的理论基础。

  形式化方法:在逻辑科学中是指分析、研究思维形式结构的方法。

  语义学:研究自然语言中词语意义的学科。也可以指对逻辑形式系统中符号解释的研究。

  对于刚起步的程序员,可以先看一看下列文章:

  译注:

  CEK:CEK 机器是由 Matthias Felleisen 和 Dan Friedman 开发的λ-演算的力学模型。

  Haskell:一种纯函数式编程语言,以美国数学家 Haskell Brooks Curry 命名。

接触艺术和人文

  工程师往往轻视艺术。他们没有意识到艺术和人文是基础升华的重要因素。史蒂夫·乔布斯乐于指出将技术与人文结合的重要性,事实也却是如此。

  艺术和设计原则同样适用于人和计算机之间的交互。不要忽视这些原则。艺术和人文的训练让直觉更加敏锐,而这方面的练习是难以用数字来计量。工程师需要知道如何衡量那些他们不能计量的事物,而不是只是统计他们可以计量的内容。

  每年至少有一个月学习下面列出的主题:

  • 工业设计
  • 哲学
  • 摄影
  • 绘画
  • 素描
  • 音乐及音乐理论
  • 电影
  • 文学

  社会科学同样会对计算机科学家有很大帮助,尤其是经济学和哲学。

向新的软件学习

  一个为自己的软件寻找灵感的好办法就是向新的或新型应用程序学习。例如,如果你从来没有尝试过 3D 建模软件,可以尝试Blender。抑或是,如果你从来没有接触过 LaTeX,请真诚地试着去了解它。

  在学习过程中,请注意你喜欢什么和讨厌什么。真诚地问自己,这些观察到的内容是否在你的软件中存在。在工作中很难看到自己的缺点,但发现别人的不足却很容易。天下没有哪个父母认为自己的孩子长得难看。请学习看到自己作品的不足。

完成一个自己的项目

  如果你整天为别人写代码,那么为自己写程序能让你记得当初为什么会成为程序员。每年为自己选择的项目分配一个月的时间,完成核心功能,将其开源发布。

  原文:mattmight  编译:敏捷翻译唐尤华

数学表

%K@1GRCTU3_]@`QL4}~7)70

 

敢问,你能一看就知道是几点吗?

Explanation of clock numerals:

Legendre’s constant  勒让德常数

2 “An infinite number of mathematicians…

A Unicode character as a HTML entity

Modular arithmetic

The Golden Mean reworked a little

Three Factorial (3*2*1)

6.99999.. Though a different number than 7, still equals 7

Graphical representation of Binary code

An example of a base-4 number

10 A Binomial Coefficient

11 An example of Hexadecimal encoding

12 The cube root is the inverse of 12^3

孩子的家庭教育很重要

一、孩子把水、牛奶等撒了一桌子。
错误做法:训孩子:“你怎么这么笨?连个杯子都拿不住。”更有甚者顺手给孩子一巴掌。
结果:大人和孩子都很生气,事情一团糟,孩子学会通过发脾气、打人解决问题。
正确做法:安慰孩子:“孩子,没事,我知道你不是故意的,下次注意啊。你把桌子擦干净好吗?”
结果:孩子得到的谅解,马上向大人道歉,并高兴的把桌子擦干净。孩子学会宽容。

http_imgload(5)[2]
二、孩子考试不及格。
错误做法:训孩子:“你看你,考这么点分,你也不嫌丢人?你看谁谁,人家怎么就能考一百?你笨死了!气死我了。” 更有甚者使劲踢孩子几脚。
    结果:孩子心情坏到了极点,心里想:“我完了,我这么笨,学不好了,再怎么学也学不好。”
    正确做法: 安慰孩子:“孩子,我知道你心里也不好受,一次没考好不代表什么,关键是我们要找出没考好的原因,然后解决它,好不好,我和你一起分析一下。我相信你,下次一定会有进步。”
    结果:孩子认真地找原因去了,心里想:“我要努力,不辜负爸爸妈妈的期望,我一定行。”

http_imgload(6)[2]
    三、孩子写作业磨,该睡觉了,作业没写完。(孩子作业多,孩子没磨,不在此列)
    错误做法:训孩子:“你气死我了,怎么又没写完,我一会儿不看着都不行,快点写!我看着你。”
    结果:孩子并不着急,依然慢慢悠悠,心里想:“写不完有我妈呢。”
    正确做法:严肃地、平静地对孩子说:“孩子,写作业是你的事,你要对自己的事负责,没写完不准写了,该睡觉了,明天自己去学校跟老师解释吧。”
    结果:孩子意识到自己的错误,很后悔,心里想:“这下完了,怎么跟老师说呀,看来明天写作业得快点了,不然还得挨批。”

http_imgload(7)[2]
    四、孩子作业写得潦草。
错误做法:发火:“怎么写的这么乱,你就不能写好点?”脾气大的会三把两把把孩子作业撕了。
    结果:孩子茫然,不知所措。
    正确做法:严肃地、平静地对孩子说:“孩子,我已经说过了,写不工整要重写,因为不工整,老师看不清楚,你看,这是规定不能破坏,所以你必须重写了。你看,你可以应该这样写字(讲述写字规范,横平竖直,大小一致。)孩子,你只要写得比你刚才的字有进步就行(和自己比),有信心吗?”
    结果:孩子懂得规定的重要性,心里想:“比刚才的字有进步,容易。”充信信心。

http_imgload(8)[2]

五、孩子见人不打招呼,没礼貌。
    错误做法:当众训孩子:“你这孩子怎么这么没礼貌?连问好都不会,我平时是咋教你的,没出息。”
    结果:孩子的自尊心受到很大损伤,觉得无地自容,自卑感油然而生。
    正确做法:给孩子台阶下:“我孩子有点不好意思,慢慢就好了,他平时也挺有礼貌的。”举个有礼貌的例子。
    结果:孩子知道错了,心想:“这次没做好,下次一定做好,不能让父母失望啊。”

http_imgload(9)[2]
    六、孩子的袜子脏了。
    错误做法:家长:“把袜子脱下来,我给你洗。”
    结果:孩子心安理得地接受了,心里认为父母就是为自己服务的,正常,反正他们也不累。

正确做法:和孩子商量:“孩子,你把自己的袜子洗了,好吗?妈妈今天很累啊,能不能把妈妈的袜子也洗了啊?谢谢孩子啊。”

结果:孩子受到尊重,洗袜子去了,心里想:“我以后要多关心一下爸爸妈妈啊,我也是家里的一员啊,他们越来越老了。”

http_imgload(10)[2]
六、孩子问了个问题,大人不会。

错误做法:不高兴:“别瞎问了,把学习搞好就行了,每天不知道想

点啥。”

结果:孩子心里想:“哎,没劲,总说学习学习,烦死了,不问就不问。”从此,遇到难题一概略过,不求甚解。

正确做法:高兴:“孩子,你能问这么难的问题,证明你动脑筋了,不错。可是我不会,咱们一起研究研究吧,好吗?”

结果:孩子心里很高兴,以后遇到问题一定锲而不舍,非研究明白不可。

http_imgload(11)[2]

七、孩子早上不起床。

错误做法:发火:“你怎么还不起?要迟到了!”顺手打两巴掌,手忙脚乱地给孩子找衣服穿衣服。

结果:下次依旧。

正确做法:平静地说:“孩子,我就叫你一次,如果你不起,就会迟到,会挨批,这是你自己的事,你自己处理好。”孩子没及时起床,没吃早饭,还迟到了。

结果:下次一叫就起床。

http_imgload(12)[2]

八、一直看电视不睡觉不写作业。

错误做法:怒气冲天地把电视关掉,吼叫着叫孩子去写作业或睡觉。

结果:孩子满肚子不高兴地去了,心里恨你,说你是 暴君。

正确做法:平静对孩子说:“孩子你该写作业了,如果写不完会挨批。你还想看多久?”孩子:“我再看10分钟行吗?”家长:“行,说话算数,到时间就关电视。”双方各退一步。

结果:时间到了,孩子主动关电视,去睡觉或写作业。

http_imgload(13)[2]

九、孩子正在写作业。

错误做法:一边看电视一边监督孩子,嘴里不停叨叨:“写快点。”“别磨蹭。”“不准看电视,好好学习。”

结果:孩子不高兴:“凭啥你就能看电视,我就不能看,真不公平。”

正确做法:大人也看书,不打扰孩子,家里学习气氛浓厚。

结果:孩子心态平和,心思都在学习上。

http_imgload(14)[2]

十、大人做错事了。

错误做法:强词夺理或视而不见。

结果:孩子心里想:“凭啥你犯错误就不承认呢?嗯,当大人好,有错也不挨批。”

正确做法:承认自己的错误,向孩子道歉。

结果:孩子以后做错事了,主动道歉,觉得理所应当。

http_imgload(15)[2]

十一、家长会老师告状,家长挨老师批评了。

错误做法:一回家就把气撒在孩子身上,对孩子又打又骂。

结果:孩子没任何自信,要么学会暴力,要么胆小,一句话不敢说,学会撒谎,不敢和父母说真话,怕挨打。

正确做法:先把孩子的优点讲讲,然后分析不足的原因,鼓励孩子,相信孩子下次一定会有进步。

http_imgload(16)[2]

十二、孩子的日常生活。

错误做法:家长把孩子的生活安排的妥妥当当,一切都是大人的意见,孩子遵守就行了。

结果:孩子成了木偶,不用动脑,被动执行。胆子越来越小,越来越没自信,能力差,不会做家务。心离父母越来越远,自闭。

正确做法:孩子自己的事,自己做,还鼓励孩子做家务。家里有事和孩子商量解决,鼓励孩子发表自己的意见,并认真听取。

结果:培养了孩子家庭责任感,知道心疼父母,喜欢和父母交流,性格开朗,有自信,遇事有自己的主意。

http_imgload(17)[2]

以上观点,也有偏颇,仅供参考,教育要因人而异,灵活应用。