写点什么

在工作中学习和成长

  • 2017-08-10
  • 本文字数:1352 字

    阅读完需:约 4 分钟

来自 Stripe 的程序媛 Julia Evans 在 Twitter 上问了一个问题:“你们是如何进行自我学习的?”很多人给出了他们的回答,大致总结如下:

  • 阅读博客
  • 参加技术大会
  • 读书
  • 利用闲暇时间观看演讲视频
  • 使用想掌握的技术开发实验性项目

这些事情几乎都发生在工作之外,而且相信很多人也是这么做的。但问题是,为什么有些非常优秀的程序员并没有在工作之余做这些事情,或者至少没有经常这么做,但仍然不影响他们成为大神之类的人物?带着这个问题,Julia 在 Twitter 上与人们展开了交流,最后总结了以下几点。

在工作中学习编程语言和框架

以 Julia 为例,她在工作中需要用到 Go 语言,她很喜欢这门语言,只是她并不想花太多的个人时间在学习 Go 语言上。因为她觉得没有必要,她完全可以在工作中通过编写代码、阅读别人的代码、让别人审查她的代码这些方式来学习这门语言。虽说在工作之外学习编程语言不是什么坏事,但既然可以在工作中更高效地学习,那为什么不直接这么做呢?

选择可以从中学到东西的项目

Julia 在过去三年学到了很多东西,比如 Scala、Ruby、Go、Hadoop、Java 并发编程、Java 诊断、AWS、网络、容器、服务发现,等等。人们经常会说:“我们使用了某某技术,你需要具备这些方面的经验才能胜任这份工作。”但实际上,Julia 在掌握这些技术和知识之前,都没有接触过这些东西。所以说,在一开始你不一定要是某某方面的高手,但是你要学会成为高手。选择那些可以从中学到东西的项目。

向高手学习

当 Julia 遇到高手时,就会观察高手是怎么做事情的,然后模仿他们,或者向他们请教。当她开始独立负责新项目时,就会谨记前辈们的教导,让项目进展得更加顺畅。

查看每一个 pull request(PR)

查看别人的 PR 也是很有帮助的,通过跟踪这些 PR 可以知道别人在做什么以及他们是如何解决问题的。Julia 引用了两个很有意思的推文。

我在一个小团队里,我会查看每一个 PR,直到完全了解问题所在以及解决问题的方案。

我通过跟踪人们 checkin 的代码了解他们是如何解决问题的。

阅读源代码

阅读源代码是一个非常重要的学习途径。很多系统并没有完备的文档,如果不阅读源码就很难搞清楚内部的细节。

阅读源码对我来说是非常重要的。不仅要了解它们内部的原理是什么,也要了解为什么要那么实现。

跟踪你无法修复的 bug

有时候,你在面对 bug 时会束手无策,当别人三下五除二把问题解决掉之后,你会迫不及待地想知道他们是怎么做到的,在以后碰到类似的问题时就知道该怎么处理了。

在为问题寻找解决方案时,我通常会从更广的范围着手,进行更深入的探索。

有时候,我也会深入了解与我无关但与我的工作有关的问题,看看能否从中学到什么。

利用通勤时间

有很多人说,可以利用通勤时间来学习一些东西,比如听音频、阅读论文或感兴趣的文章。看起来这也是一个不错的学习方式!

总结

不要觉得利用工作时间充电是在“假公济私”。在实战中学习是最好的学习方式,况且也只有先提升自己,才能更好地回馈工作。程序员的时间不可能都用来写代码,程序员真正高效的写代码时间一天不会超过 4 个小时。可以花一些时间用于思考和学习,在交付工作成果的同时也要不断提升自己。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-08-10 19:004293
用户头像

发布了 322 篇内容, 共 160.2 次阅读, 收获喜欢 148 次。

关注

评论

发布
暂无评论
发现更多内容

自动化测试

IT蜗壳-Tango

6月月更

被疫情偷走的时间都去哪了 | 社区征文

宇宙之一粟

时间管理 居家办公 6月月更 初夏征文

Wireshark的HTTP请求包和响应包如何对应

程序员欣宸

Wireshark 6月月更

16 种企业架构策略

涛哥 数字产品和业务架构

企业架构

Java Core 「17」ThreadLocal

Samson

学习笔记 Java core 6月月更

一文搞懂php中的(DI)依赖注入

乌龟哥哥

6月月更

学习React源码的五个层次

郭明

React

记一次给OpenHarmony提交代码的过程

坚果

OpenHarmony 6月月更

SDN系统方法 | 9. 接入网

俞凡

架构 网络 sdn SDN系统方法

模块五(微博评论)

Geek_701557

Android 硬布局item的高级写法

yechaoa

android layout 6月月更

你真的需要自动化测试吗?

老张

软件测试 自动化测试

牛客java选择题每日打卡Day2

京与旧铺

6月月更

论一个优秀红队人员的自我修养

穿过生命散发芬芳

6月月更 攻防演练 自我修养

Rxjs TakeUntil 操作符的学习笔记

汪子熙

typescript 响应式编程 angular RXJS 6月月更

词法陷阱(C)

fy

c C陷阱与缺陷

Google I/O 2022: Android Jetpack 最新进展

fundroid

android Google android jetpack

面向对象开发

Jason199

面向对象 js 6月月更

Object.defineProperty也能监听数组变化?

德育处主任

JavaScript Vue 原理分析 数据变更跟踪 6月月更

Mysql 源码阅读(二)登录连接调试

MySQL 源码

Linux网络编程_网卡操作指令与TCP协议介绍

DS小龙哥

6月月更 socket网络编程

java定义属性错误_错误处理

工程师日月

6月月更

Neat Syntax Design of an ETL Language (Part 2)

Bright

数据开发 ETL 大数据开发 EasySQL

语法"陷阱"

fy

c 语法陷阱

ERROR日志格式与注意点

zarmnosaj

6月月更

由点到面贯穿整个Java泛型理解

知识浅谈

Java泛型

给你讲懂 MVCC 续篇

Nick

MySQL 源码 MVCC 6月月更 深入解析

程序猿职业发展9项必备软技能

慕枫技术笔记

职业发展 6月月更

DevEco Studio 3.0编辑器配置技巧篇

坚果

OpenHarmony 6月月更

编程技巧│提高 Javascript 代码效率的技巧

已注销

JavaScript 编程效率 6月月更 美化程序

在工作中学习和成长_技术管理_薛命灯_InfoQ精选文章