2018计划清单

一日之计在于晨,一年之计在于春,对于程序员来讲,挑战自我很重要。有创造力的以及技术性的休整是可行的。给自己的新年列个计划清单,一起在新的一年更好地成长吧!

每个月都是一个每年可更新的技术性的或个人的挑战:

  • 进入真实生活
  • 保持健康
  • 欣然接受不舒适
  • 学习一门新的编程语言
  • 自动化
  • 多学点数学
  • 专注于安全
  • 备份数据
  • 多学点理论
  • 对艺术和人文学科有所涉猎
  • 学习新软件
  • 完成一个个人项目

进入真实生活

程序员们过分沉迷于数码设备,在数码设备之外也别有一番天地。
因此,在真实生活中的投资会带来相对多的回报。

这里有一个起步表,表中是真实生活中可供尝试的活动。对于每一项活动,如果你真心付出一个月,你就不再是一个新手(而是一个富有经验的初学者):

  • 做饭
  • 远足
  • 滑雪
  • 天文学
  • 慢跑
  • 举重
  • 木工
  • 武术
  • 跳舞

保持健康

程序员往往过着久坐不动的生活,因此我们面临着我们职业带来的特有健康挑战。

我们往往会忽视这些挑战。

  • 每年,花一整月的时间,调整你的锻炼、饮食以及环境,来培养持久的健康习惯。
  • 每年去一次诊所,测量血压、胆固醇以及血糖。观察这些数值是怎样随时间而变化的。
  • 如果你的手腕开始疼痛或者已经疼了一段时间了,现在就停下来,采取措施,预防重复性劳损(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

如果你有足够勇气,试一试依赖类型(dependently-typed)编程语言或者定理证明系统(theorem-proving systems):

  • Agda
  • Coq
  • Idris

如果你没有编程语言可以去学了,自己发明一个。

自动化

程序员具备的最有力而未被利用的技能就是,使虚拟和现实自动化的能力。

如果你从来没做过机器人的话,做一个吧。

至少玩玩乐高头脑风暴机器人吧,或者玩玩 Arduino 板或树莓派:

观察你做的日常活动,然后决定哪些能全部或者部分自动化。

家庭自动化技术非常发达,借助 DIY 系统,例如 Insteon,很多东西都成为可能。

花一个月的时间来做一个自动化的项目:

  • 调优你的邮件过滤器或者安装 procmail
  • 设置 shell 脚本,自动化经常性的操作
  • 新建一个 shell 脚本来帮助你写作
  • 学习怎样使用 cron 工具
  • 把壁橱的灯和运动检测器连接在一起
  • 在可能的地方用无线代替有线
  • 停止手动同步:把它移到云端
  • 安装远程声控系统
  • 用你的服务器来控制你的恒温器
  • 安装数码安全摄像头
  • 做一个内线通话系统或者婴儿监视器
  • 让你的咖啡机自动打开
  • 为宠物安装自动加水的盘子
  • 做传感器控制的宠物门
  • 破解 Roomba,让它成为快递员

多学点数学

计算机科学是一门与数学相关的学科。

成为好的程序员的前提是成为好的数学家。

不要让你的数学才能消失。

考虑每年花一个月时间温习这些主题中的一个:

  • 逻辑学
  • 离散数学
  • 微积分
  • 概率论
  • 统计学
  • 抽象代数
  • 数论
  • 范畴论
  • 序理论

专注于安全

极少数的程序员有好的安全习惯。

如果你在意自己的电子信息安全,你将会更在意自己代码的安全性。

检查一下,在每个网站上,你是否在用独特、复杂的密码?

用加密的密码管理器管理你的密码,例如 PasswordSafe 或者 KeePassX。

如果你还没习惯全盘加密,那么抽出时间做一下。(在 Mac 机上,设置它不难。)

每年,研究一下过去12个月的高危漏洞。他们是怎样发生的?什么样的编程习惯能够防止这些问题在你的代码中出现?

这里是你可以尝试的其他安全任务:

  • 学习 SSH 还能做什么
  • 在 Apache 上安装 SSL 安全证书
  • 实现一个加密系统,例如 RSA 或者 AES
  • 尝试破解你的无线网络的密钥
  • 用 WireShark 嗅探你的网络交通
  • 设置无需密码、基于密钥的 ssh 登录
  • 自己运行 nmap。配置你的防火墙
  • 设置端口敲门(port-knocking)
  • 做一个加密的 U 盘
  • 安装日志文件监视器
  • 设置 cron 作业(cronjob)来规律地更新软件包

备份你的数据

每年,花时间来反思你的备份策略。

用一个月的时间,最小化做备份的成本。

(我最近把我的很多工作文件放到了 Copy 里,它是一个灵巧的类 DropBox 应用,有比 DropBox 更多的免费存储空间。通过这个推荐链接来得到多余的 5 GB。)

选择容灾方案:为每台电脑指派单独硬盘,借助像 Time Machine 的工具,打开自动备份。

用版本控制来管理关键文件,将他们存储在异地服务器中。

多学点理论

计算机科学有着丰富的理论结构。

跟上新进展,复习你已经掌握的经典理论。

每年花一个月,学习类似下面的理论:

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

对于初学者,你可能想看看这些帖子

  • 用 Haskell 语言写 CEK 形式的(或者语义学上的)解释器
  • 用推导来进行语法分析
  • 被遗忘的方法:怎样从 Okasaki 的红黑树中删除元素
  • 用推导的方法,使用 Scheme 语言对正则表达式进行模式匹配
  • 将正则表达式转化为非确定有限状态自动机(NFA)

对艺术和人文学科有所涉猎

工程师往往轻视艺术。

工程师没有意识到的是,艺术和人文成就了卓越的技术。

史蒂文 · 乔布斯喜欢指出联系技术和人文的重要性,而且真的是这样。

不要对这些理论一无所知。

艺术和人文训练直觉,并且使其变得敏锐。这个过程是以一种很难量化的方式进行的。然而这种直觉对于在量化领域中工作的我们来说,是必要的。

工程师需要学习怎样度量他们不能计算的东西,而不是只计算他们能度量的东西。

每年至少花一个月,多学学类似下面的理论:

  • 工业设计
  • 哲学
  • 摄影
  • 绘画
  • 写生
  • 音乐和音乐理论
  • 电影
  • 文学

社会科学也对计算机科学有很多贡献。具体来说的话,试试经济学和心理学。

学习新软件

要为你自己的软件获得灵感,一个好的方法就是,学习一个或一类新应用。

举个例子,如果你从来没有用过 3D 建模工具,试试 Blender。

或者,如果你从来没学过 LaTeX,真心地付诸一试。

在你学习的过程中,把你喜欢的和不喜欢的东西都记录下来。

扪心自问,这些观察是否反映到了你创造的软件中?

在你自己的作品中指出坏毛病很难,但给别人的作品挑毛病就很容易。

每一对父母的孩子都是漂亮的。

学会认识自己丑陋的小孩。

完成一个个人项目

如果你整天总是为别人写代码,就要记住,程序员之所以成为程序员,是因为他为自己写程序。

每年把一个月的时间花在你自己选择的项目上。

实现那个项目的核心部分。

使其开源,将它发布到世界。


英文出处:Matt

写给程序员的 2018 新年计划清单相关推荐

  1. 2019年快来了,送给每位程序员一份新年计划清单

    一日之计在于晨,一年之计在于春,对于程序员来讲,挑战自我很重要.有创造力的以及技术性的休整是可行的.给自己的新年列个计划清单,一起在新的一年更好地成长吧! 进入真实生活 程序员们过分沉迷于数码设备,在 ...

  2. 2019年快来了,送给每位程序员一份新年计划清单...

    ​ 一日之计在于晨,一年之计在于春,对于程序员来讲,挑战自我很重要.有创造力的以及技术性的休整是可行的.给自己的新年列个计划清单,一起在新的一年更好地成长吧! 进入真实生活 程序员们过分沉迷于数码设备 ...

  3. 500 字写一篇程序员的个人发展计划

    作为一名程序员,个人发展计划是非常重要的.通过制定并执行自己的发展计划,可以帮助我们更好地了解自己的优势和劣势,并为自己的职业发展制定出具体的目标. 首先,我们应该对自己的技术能力进行全面的梳理和评估 ...

  4. 各位程序员兄弟姐妹,新年好!

    六个月,看了很多文章,很多书,对很多东西有了新的各位程序员兄弟姐妹,新年好!认识,继续,视野需要拓展.六个月,唯一遗憾就是放掉了java,用了三年多,记得时隔几个月再一次打开eclipse时,激动了一 ...

  5. 写给程序员看的项目管理入门

    写给程序员看的项目管理入门 项目管理铁三角 定义任务范围 任务分解 进度计划 资源评估 任务排期 项目执行 提测阶段 冒烟周期长 代码bug 开发阶段 项目监控 项目回顾 附录 程序员从拿到一个需求到 ...

  6. 写给程序员的管理入门课程 -《格鲁夫给经理人的第一课》

    写给程序员的管理入门课程 -<格鲁夫给经理人的第一课> 序 格鲁夫给经理人的第一课 <格鲁夫给经理人的第一课> 最早出版于 2007 年,书原名为<High Output ...

  7. 写给程序员看的“幻灯片”制作教程

    大家好,我叫谢伟,是一名程序员. 如果你比较关注国外开发者大会,你经常可以看到,一些程序员分享一些在线可以查看的"幻灯片",当然这里的幻灯片和微软 Office 旗下的 Power ...

  8. 一个程序员的2018年终总结

    一个程序员的2018年终总结 总结过去 2018年转眼即逝,而2019也已经要过完一个月了,作为一名程序员,是时候对自己一年来的所为所为做个总结了. 作为程序员 在18年初的时候,公司内部人员结构发生 ...

  9. Discuz验证码识别(编码篇)-写给程序员的TensorFlow教程

    欢迎大家回到<写给程序员的TensorFlow教程>系列中来,本系列希望能给广大想转型机器学习的程序员带来一些不一样的内容,我们不讲公式,只调方法,不聊文献,只说代码.不求最好,只求有用. ...

  10. 写给程序员的美术创作指南

    引言 独狼游戏开发工作室日益增多,而他们之中也确实有不少成功者.尽管如此,如果这匹独狼恰巧没点美术技能又该如何呢?本文为独立游戏开发者创造.获得美术资源列出了一些选择. 像素美术 仿佛是从上个世纪 8 ...

最新文章

  1. OpenCV中MeanShift算法视频移动对象分析
  2. React Router 黑笔记?
  3. 如何使用Javascript 访问local部署的YAAS service
  4. 终端如何粘贴快捷键_你有什么喜欢的 Linux 终端技巧?
  5. freebsd从安装到想要的状态配置
  6. DockPanel 类
  7. 【MATLAB】卡尔曼滤波器的原理及仿真(初学者专用)
  8. 基于前端javascript的搜索功能
  9. 【机器学习】监督学习--(分类)决策树①
  10. 在ASP.net中的UpdatePanel,弹窗失败解决办法
  11. 设计模式——函数的写作使用外卖模式
  12. acl在内核里的位置_在Linux中使用ACL(访问控制列表)保护文件/目录
  13. Three.js案例分析系列1--webgl_animation_cloth 草坪上漂浮的白布
  14. 大数据之路—— 数据服务
  15. 泰坦尼克号各种因素对存活率的影响
  16. 输入数字转换成英文输出
  17. c语言猴子吃桃问题(简洁做法)
  18. java文件批量改名代码_[原创]JAVA版批量更名程序(附源码)(要求加分)
  19. esp32邮件服务器,ESP32智能家居集线器的制作
  20. java 时间戳最大值_Java中在时间戳计算的过程中遇到的数据溢出问题解决

热门文章

  1. fedora30解决Rhythmbox MP3中文歌曲歌名乱码
  2. Android清理缓存工具类
  3. 卡西欧计算机开机键,卡西欧手表怎么开机
  4. mpv - 一个免费、开源、跨平台的多媒体播放器
  5. Base64 密码加密解密
  6. 学Python运维,这知识点你肯定会遇到,【必收藏之】nginx 域名跳转相关配置
  7. matlab 汉字是方块,linux下Matlab 2020中文字体方框问题解决方法
  8. python缺失值处理 fillna_python 处理缺失值
  9. 【QNX Hypervisor 2.2 用户手册】1.3 QNX hypervisor架构
  10. 服务器系统漏洞rc4,服务器如何修复旧加密算法漏洞