(点击
上方蓝字
,快速关注我们)
来源:伯乐在线专栏作者 - sjw
如有好文章投稿,请点击 → 这里了解详情
如需转载,发送「转载」二字查看说明
对于程序员来讲,挑战自我很重要。有创造力的以及技术性的休整是可行的。在新年来临之际,我总结了 12 个心愿。
每个月都是一个每年可更新的技术性的或个人的挑战:
1.进入真实生活。
2.保持健康。
3.欣然接受不舒适。
4.学习一门新的编程语言。
5.自动化。
6.多学点数学。
7.专注于安全。
8.备份数据。
9.多学点理论。
10.对艺术和人文学科有所涉猎。
11.学习新软件。
12.完成一个个人项目。
继续读下去,看看我的建议。
进入真实生活
程序员们过分沉迷于数码设备,在数码设备之外也别有一番天地。
因此,在真实生活中的投资会带来相对多的回报。
这里有一个起步表,表中是真实生活中可供尝试的活动。对于每一项活动,如果你真心付出一个月,你就不再是一个新手(而是一个富有经验的初学者):
-
做饭
-
远足
-
滑雪
-
天文学
-
慢跑
-
举重
-
木工
-
武术
-
跳舞
保持健康
程序员往往过着久坐不动的生活,因此我们面临着我们职业带来的特有健康挑战。
我们往往会忽视这些挑战。
每年,花一整月的时间,调整你的锻炼、饮食以及环境,来培养持久的健康习惯。
每年去一次诊所,测量血压、胆固醇以及血糖。观察这些数值是怎样随时间而变化的。
如果你的手腕开始疼痛或者已经疼了一段时间了,现在就停下来,采取措施,预防重复性劳损(RSI)。
把目标放在改进姿势上,重点关注肩膀和脖子。我使用姿势纠正带:
(对,它对男人也适用)
跟踪体重、卡路里摄入以及卡路里消耗。如果必要的话,改变生活方式,来培养更健康的饮食和减肥方法。
如果你本来就很健康,就考虑一年的结合力量和肌肉的实验吧。
2016 年更新:在过去的几个月,我一直在试着使用可以将桌子改造为站立式办公桌的附件,我不仅在心灵上,而且在身体上都有新鲜感。
我估计我站一天能多消耗360卡路里,然而我觉得它的作用还不止这些。因为站立让我总体上活动得更多了。我发现,相比于坐着,我的注意力在站着时更加集中。
欣然接受不舒适
从我 20 岁出头起,我观察比我年长的同伴,尝试发现为什么有些人停滞不前,而另外一部分人一直精力充沛。
答案是舒适。
舒适导致技术僵化。
一个系统,它能正常为我们服务,而且我们一直在坚持使用它。
但是,技术在进步,那些局限于舒适的人绝对认识不到这些进步的益处。
惯例之所以变为舒适的,是因为它原来就是不舒适的。
清单中的事情,可能让你在刚开始感到不舒服:
-
换成德沃夏克键盘。
-
从 emacs 编辑器转化到 vim 编辑器或者反过来。
-
停止使用鼠标。
-
使用不同的窗口管理器。
-
从奶油和糖转变为不加牛奶的咖啡或者不经过调味的茶。
-
花一整个月的时间试试『流行新垃圾』。
-
每周关掉手机一天。
-
学习使用单手输入设备。
-
尝试使用不同的操作系统。
-
对于一个小项目,尝试不同的版本控制系统。
-
每周强制断网一天。
-
试试饮食上的约束:纯素食主义、素食主义、不含奶类等等。
-
每天吃一种你不喜欢的食物。
-
少用有利手臂(dominant arm)。
-
学习用非利手(non-dominant hand)写字。
-
开始写博客。
-
报名参加公众演讲。
-
听一种你并不喜欢的音乐一个月。
-
在医院或退休之家做志愿服务。
-
一周禁食一次。
-
去一个用不同语言或者有不同文化的国家。
-
从你不喜欢的种类里选读一本广受欢迎的小说。
-
从你不喜欢的种类里选观一部备受推崇的电影或片子。
-
学会开手动档汽车。
-
质疑一些你相信的事。
做一些不一样的事情,一个月之后,决定是否想继续这样做,或者看看能不能找到这样的方法,能把新事物和旧事物最好的东西融合起来。
举个例子,当用了 10 年的 emacs 转用 vim 时,在插入模式下,我设置了 emacs 风格的快捷键,但是我用的编辑器是 vim 。
更新:读者
Shae Erisson
为欣然接受不舒适续写了『3 的规则』:当已经有3个人推荐你尝试一样东西的话,你必须尝试一下。
他还给出了一个『 15 分钟规则』:给某个东西(比如一部电影或电视节目) 15 分钟的评判时间。如果你在 15 分钟之后不想继续下去了,就放弃它。
这两条规则我都喜欢。
学习一门新
的编程语言
编程语言起起落落。
只懂一门语言的程序员,他们解决问题的能力和事业前景会受局限。
用它写一个不大的程序。
这里有一些非主流的可供学习的语言:
-
Racket.
-
Haskell.
-
Rust.
-
Scala.
-
Erlang.
-
Clojure.
-
SML/NJ.
-
OCaml.
-
Squeak.
-
Prolog.
-
Datalog.
-
miniKanren.
如果你有足够勇气,试一试依赖类型(dependently-typed)编程语言或者定理证明系统(theorem-proving systems):
如果你没有编程语言可以去学了,自己发明一个。
自动化
程序员具备的最有力而未被利用的技能就是,使虚拟和现实自动化的能力。
如果你从来没做过机器人的话,做一个吧。
至少玩玩乐高头脑风暴机器人吧:
或者玩玩 Arduino 板或树莓派:
观察你做的日常活动,然后决定哪些能全部或者部分自动化。
家庭自动化技术非常发达,借助 DIY 系统,例如 Insteon,很多东西都成为可能。
花一个月的时间来做一个自动化的项目:
-
调优你的邮件过滤器或者安装 procmail。
-
设置 shell 脚本,自动化经常性的操作。
-
新建一个 shell 脚本来帮助你写作。
-
学习怎样使用 cron 工具。
-
把壁橱的灯和运动检测器连接在一起。
-
在可能的地方用无线代替有线。
-
停止手动同步:把它移到云端。
-
安装远程声控系统。
-
用你的服务器来控制你的恒温器。
-
安装数码安全摄像头。
-
做一个内线通话系统或者婴儿监视器。
-
让你的咖啡机自动打开。
-
为宠物安装自动加水的盘子。
-
做传感器控制的宠物门。
-
破解 Roomba,让它成为快递员。
多学点数学
计算机科学是一门与数学相关的学科。
成为好的程序员的前提是成为好的数学家。
不要让你的数学才能消失。
考虑每年花一个月时间温习这些主题中的一个:
-
逻辑学。
-
离散数学。
-
微积分。
-
概率论。
-
统计学。
-
抽象代数。
-
数论。
-
范畴论。
-
序理论。
专注于安全
极少数的程序员有好的安全习惯。
如果你在意自己的电子信息安全,你将会更在意自己代码的安全性。
检查一下,在每个网站上,你是否在用独特、复杂的密码?
用加密的密码管理器管理你的密码,例如 PasswordSafe 或者 KeePassX。
如果你还没习惯全盘加密,那么抽出时间做一下。(在 Mac 机上,设置它不难。)
每年,研究一下过去12个月的高危漏洞。他们是怎样发生的?什么样的编程习惯能够防止这些问题在你的代码中出现?
这里是你可以尝试的其他安全任务:
备份你的数据
每年,花时间来反思你的备份策略。
用一个月的时间,最小化做备份的成本。
(我最近把我的很多工作文件放到了 Copy 里,它是一个灵巧的类 DropBox 应用,有比 DropBox 更多的免费存储空间。通过这个推荐链接来得到多余的 5 GB。)
选择容灾方案:为每台电脑指派单独硬盘,借助像 Time Machine 的工具,打开自动备份。
用版本控制来管理关键文件,将他们存储在异地服务器中。