热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

程序员,春天来了,你定了计划清单没

程序员,春天来了,你定了计划清单没一日之计在于晨,一年之计在于春,对于程序员来讲,挑战自我很重要。有创造力的以及技术性

                           程序员,春天来了,你定了计划清单没

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


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


进入真实生活。


保持健康。


欣然接受不舒适。


学习一门新的编程语言。


自动化。


多学点数学。


专注于安全。


备份数据。


多学点理论。


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


学习新软件。


完成一个个人项目。


继续读下去,看看我的建议。


进入真实生活


程序员们过分沉迷于数码设备,在数码设备之外也别有一番天地。


因此,在真实生活中的投资会带来相对多的回报。


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


  • 做饭

  • 远足

  • 滑雪

  • 天文学

  • 慢跑

  • 举重

  • 木工

  • 武术

  • 跳舞


保持健康


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

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


每年,花一整月的时间,调整你的锻炼、饮食以及环境,来培养持久的健康习惯。

每年去一次诊所,测量血压、胆固醇以及血糖。观察这些数值是怎样随时间而变化的。


如果你的手腕开始疼痛或者已经疼了一段时间了,现在就停下来,采取措施,预防重复性劳损(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):


  • 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

翻译:伯乐在线 - sjw 



推荐阅读
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • Python数据分析入门指南:全面了解Python在数据科学中的应用 ... [详细]
  • 进程(Process)是指计算机中程序对特定数据集的一次运行活动,是系统资源分配与调度的核心单元,构成了操作系统架构的基础。在早期以进程为中心的计算机体系结构中,进程被视为程序的执行实例,其状态和控制信息通过任务描述符(task_struct)进行管理和维护。本文将深入探讨进程的概念及其关键数据结构task_struct,解析其在操作系统中的作用和实现机制。 ... [详细]
  • 在 Linux 系统中,`/proc` 目录实现了一种特殊的文件系统,称为 proc 文件系统。与传统的文件系统不同,proc 文件系统主要用于提供内核和进程信息的动态视图,通过文件和目录的形式呈现。这些信息包括系统状态、进程细节以及各种内核参数,为系统管理员和开发者提供了强大的诊断和调试工具。此外,proc 文件系统还支持实时读取和修改某些内核参数,增强了系统的灵活性和可配置性。 ... [详细]
  • 本文深入探讨了 `ExpressionChangedAfterItHasBeenCheckedError` 错误的原因及其解决方案。通过分析 Angular 的变更检测机制,详细解释了该错误的发生条件,并提供了多种有效的应对策略,帮助开发者在实际开发中避免这一常见问题。 ... [详细]
  • Docker网络基础探讨了如何通过高效的技术手段实现跨主机容器间的顺畅通信与访问。本文深入分析了Docker网络架构,特别是其在多主机环境下的应用,为Go语言开发者提供了宝贵的实践指导和理论支持。 ... [详细]
  • 本文对比分析了机器人视觉中两种关键算法——束调整(Bundle Adjustment)和位姿图优化(Pose Graph Optimization)的应用与性能。通过结合基于特征的方法和直接方法,研究了半稠密实时立体视觉SLAM系统在不同场景下的表现,探讨了各自的优势与局限性,并提出了改进策略以提升系统的鲁棒性和实时性。 ... [详细]
  • 算术表达式分析与解析技术初探
    本文初步探讨了算术表达式的分析与解析技术,针对作者在职业转型过程中发现自身算法基础薄弱的问题,决定在接下来的三个月内,系统地学习和掌握常用数据结构与算法,以提升个人技术能力。研究内容不仅涵盖了基本的算术表达式解析方法,还深入讨论了其在实际应用中的优化策略,为相关领域的进一步研究奠定了基础。 ... [详细]
  • 本文深入解析了 Python 爬虫技术在 B 站数据挖掘中的应用,通过分析海量用户行为和内容数据,揭示了热门 UP 主成功的背后因素。Python 作为一种强大的编程语言,其面向对象和解释执行的特点使其成为数据抓取和处理的理想选择。文章详细介绍了如何利用 Python 爬虫技术获取 B 站的数据,并通过数据分析方法,探讨了热门 UP 主的创作策略和互动模式,为内容创作者提供了有价值的参考。 ... [详细]
  • 图像拼接技术深入解析:基于OpenCV 3.4的Stitching模块源码分析(下篇)
    本文继续深入探讨图像拼接技术,特别是在OpenCV 3.4的Stitching模块中的源码实现。通过与VLFeat的SIFT实现进行对比,详细分析了OpenCV在图像特征提取、匹配及拼接过程中的关键算法和技术细节,为读者提供了全面的技术解析和实践指导。 ... [详细]
  • 如何在Linux环境中高效地创建、编译与运行C语言代码
    本文面向第一次在linux尝试写C语言程序的新人。有经验的请绕行。C语言用法不是本文介绍的关键,本文只是引入如何第一次在linux系统下编写、编译和执行一个简单的c程序。学会后请自行深入 ... [详细]
  • 图像相似度分析软件及常用算法综述
    有没有一款软件能比对两张照片是否一样? 可以用AI软件来对比。AI人脸比对已经变成非常常用的AI场景之一。步骤如下:1、浏览器输入网址百度AI应用,AI ... [详细]
  • PHP编程语言中的标量数据类型及其种类详解 ... [详细]
  • android anko,Anko for Android
    Anko是一个使开发Android应用更简单更快捷的库,Anko使你的代码简洁易懂,使开发者不用再在意AndroidSDK对Java版本的限制(目前还不支持Java8。).Anko ... [详细]
  • 原文:http:blog.csdn.netdamotianshengarticledetails406284171.Knn算法介绍:百度百科:http:baike.b ... [详细]
author-avatar
手机用户2602930515
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有