2019独角兽企业重金招聘Python工程师标准>>>

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

01. 变得有耐心

02. 保持健康

03. 拥抱变化带来的不适应

04. 学习一门新的编程语言

05. 自动化

06. 学习更多数学知识

07. 关注安全

08. 备份你的数据

09. 学习更多理论知识

10. 接触艺术和人文

11. 向新的软件学习

12. 完成一个自己的项目

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

变得有耐心

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

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

保持健康 

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

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

拥抱变化带来的不适

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

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

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

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

学习一门新的编程语言

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

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

Racket、 Haskell、Scala、Erlang、Clojure、SML/NJOCaml、Squeak、Prolog、Datalog.

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

自动化

程序员拥有最强大的待开发技能就是将虚拟和现实自动化的能力。如果你从来没有造过一个机器人,那么去做一个吧。至少学会使用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下的网络扫描和嗅探工具包

备份你的数据

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

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

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

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

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

学习更多理论知识

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

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

  • 每年在下列主题上花一个月时间:
  • 形式语言
  • 自动机与可计算性理论
  • 计算复杂性理论
  • 形式化方法
  • 语义学
  • 算法与数据结构

译注:

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

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

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

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

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

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

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

  • 用Haskell编写CEK风格的解析器(或语义分析器)
  • 通过推导进行语法解析
  • 遗失的方法:如何对Okasaki的红黑树执行删除
  • 通过推导使用Scheme进行正则表达式模式匹配
  • 将郑则表示转换成非确定性自动机(NFA)

译注:

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

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

接触艺术和人文

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

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

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

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

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

向新的软件学习

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

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

完成一个自己的项目

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

转载于:https://my.oschina.net/ray1421/blog/713729

转载-为程序开发人员量身定制的12个目标相关推荐

  1. 为程序开发人员量身定制的12个目标

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

  2. 为IT程序员量身定制的12个目标——很经典

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

  3. 寻java、.net、或C#兼职程序开发人员(上海)

    寻java..net.C#兼职程序开发人员开发一款免安装软件,要求有实际开发经验并在上海工作.有意者请致信 engineer.center@hotmail.com 并请介绍一下自己相关的开发经验. 转 ...

  4. Facebook再现丑闻,约100位应用程序开发人员偷看用户数据

    Facebook今天披露了另一起安全事件,承认大约100名应用程序开发人员可能不正确地访问了某些Facebook组中的用户数据,包括他们的姓名和个人资料图片. 在周二发布的博客文章中,Facebook ...

  5. MeeGo 程序开发人员乐园

    最主要的人群是软件程序开发人员-特别是了解QT知识的人员,但是欢迎各类人员都欢迎参与进来. 背景: 我们拥有很多充满创意的开发人员,但是他们不知道自己的哪些技能可以帮助他们使用MeeGo开发. 我们不 ...

  6. 安卓应用程序一般采用什么计算机语言开发,Kotlin 编程语言成为其 Android 应用程序开发人员的首选语言...

    本年5月,谷歌在I/O大会上宣告,Kotlin编程言语成为其Android使用程序开发人员的首选言语. Kotlin是一种面向现代多平台使用程序的编程言语,成为谷歌开发Android使用程序的首选言语 ...

  7. ionic4开发微信小程序_15个适用于Ionic应用程序开发人员的资源

    ionic4开发微信小程序 无论您是专业人士还是业余爱好者,在网络上寻找合适的资源来构建Ionic应用程序都可能很耗时,更何况令人沮丧. 在移动应用程序世界中,信息和内容可能会很快过时,因此,保持最新 ...

  8. vimeo 镜像_Vimeo的首席应用程序开发人员Kevin Sheurs访谈

    vimeo 镜像 Vimeo is quickly becoming one of my favorite websites. You can find videos on just about an ...

  9. 程序开发人员缺乏经验的7种表现

    作者 | Lokajit Tikayatray 译者 | 王莉敏 策划 | 李俊辰 知道这些表现,你才能在自己的程序员职业生涯中不犯相同的错误. 软件行业的工作经验和你从事这个行业的工作年限直接相关. ...

最新文章

  1. vue里面嵌入sound music音乐播放
  2. 一个简单HTML鼠标事件问题的衍化历程
  3. TensorFlow各版本下载地址,强烈推荐
  4. 机器学习笔记:RMSProp,Adadelta
  5. jsp mysql demo_利用JSP+MYSQL实现注册+登入的demo----0001
  6. mes系统服务器要求,mes系统 服务器配置
  7. Bug邮件队列插入不了
  8. oracle查看角色内容,oracle创建,查看用户和角色,用户角色赋权
  9. Android 第四章 ListView 的使用
  10. Visio 中如何画实现接口的连线
  11. 《SEM长尾搜索营销策略解密》一一2.9 长尾,寻找蓝海的最好方式
  12. (2016弱校联盟十一专场10.2) E.Coins
  13. (一) pyhon 基础语法(数值 字符串 元组 列表 字典)
  14. sql必知必会学习记录(五)
  15. Appstore下载Big Sur并使用U盘制作黑苹果系统安装盘
  16. linux脚本无法执行命令,shell脚本在Windows下能执行,而Linux不能执行的原因及解决...
  17. Pega How To系列之一:如何在页面上动态显示/隐藏内容 ----CheneyWang
  18. 【年终总结系列 2021】不变的心态应对变化的环境
  19. 游资会带散户炒股吗?
  20. 鸿蒙系统生态建设怎样了,鸿蒙系统正式发布-华为OS生态建设开始布局

热门文章

  1. java实现游戏的循环及游戏帧数处理
  2. 【Excel技穷】简称查全称
  3. oracle报错ORA-39002: invalid operationORA-39070: Unable to open the log file.ORA-29283: invalid file
  4. 复制粘贴发明人、Java 和互联网创建者相继去世
  5. int / uint 的 取值范围、二进制表示形式、与十进制转换方法
  6. webp图片在html上显示,WebP 格式图片在实际项目中的使用方式
  7. 那个人,徐志摩。那些话,痛彻心扉。
  8. ext ext.ajax_在Ajax应用程序中使用Ext.Direct
  9. Java 14 发布!不使用class也能定义类了?还顺手要干掉Lombok!
  10. sharepoint 2010新功能预览2-Fast Search