励志司机锐锐|高级软件工程师成长秘诀( 三 )


保护你的空闲意味着不要让截止时间拘束你 。 通常 , 这和沟通一样简单(或者困难) 。
空闲可能有一种负面的内涵“闲人” , 但是保护空闲是非常重要的 。 这是一种以短期效率为代价的对自我成长的长期投资 。
当我快速地交付代码时 , 我也会花很多时间来修复bug 。 我没有花费时间来创建系统的合适的思维模型 , 这意味着我的设想与代码不匹配 , 而这种不匹配是大多数bug产生的地方 。
我保护自己的空闲 , 因此我能够花时间来优先学习东西而不是做东西 。
我最喜欢利用空闲来进行实验 。 有时候 , 我会发现一个对我来说完全没意义的bug 。 我发现自己有点困惑 , 然后在StackOverflow上找到答案 , 然后再继续 。 然而 , 这个问题会一直困扰我知道我理解这个bug 。 StackOverflow回答了我的问题 , 但没有解释我的理解有哪些错误 。 为了提升我的理解 , 我需要进行实验 。
如果我没有空闲 , 我没有时间去实验 , 这意味着我必须忘掉这个bug 。 当有空闲的时候 , 我能够进行实验来发现我的理解到底哪里错了 。 当我发现了这个系统的一些新东西时 , 我喜欢这样的时刻 。 这会让我下次更有效率 。
问问题
我们通常很不擅长问问题 。 或者是因为我们害怕这些问题会让我们显得很愚蠢 , 所以我们根本就不问这些问题 , 或者我们扯很多废话来问这些问题来避免我们显得很愚蠢 , 而不是学习更多东西 。
问题是 , 在你找出答案之前 , 你无法判断一个问题是否愚蠢 。 我回避这个问题的方法是声明我会问很多问题 。 这让我得以解脱 , 从底层开始修补我认知上的漏洞 。 积极的团队文化会对此有帮助 。
例如 , 以下是我学习打包软件的过程:
问:什么是软件包?
答:那是被打包到一起 , 可以被安装到系统上的代码 。
问:为什么我需要软件包?
答:它们提供了一种一致的方法 , 可以将你所需的所有文件放在正确的位置 。 没有它们 , 东西很容易一团糟 。 你需要确保每个文件都在它该在的地方 , 设置了系统路径 , 并且依赖包可用 。
问:软件包与我可以在自己的系统上安装的应用程序有什么不同?
答:想法很相似!Windows安装包像是一个包管理器 , 能够帮助安装应用程序 。 类似地 , DPKG和rpm包有点儿像.exe文件 , 可以安装在Linux系统上 。 你可以借助于apt和yum包管理器 , 它们有点儿像Windows安装包 。
问:我明白了 。 所以python中的setup.py如何转换成一个dpkg?那是如何工作的?
答:我们有一个python-debhelper , 运行setup.py来进行转换 。
答:哦 , 真有趣!你是怎么知道的?
答:debian/rules文件包含如何创建一个dpkg的说明 。 我看了它就弄明白了 。
然后我就知道 , 我该自己看看这个文档了 。 我有足够的细节来理解大纲 。 事实证明 , 这并没有我想的那么简单 , 问这个问题也不蠢 。
这是我养成的一个思维习惯 , 而且你可以经常问一些好问题 。 大多数问题都是依赖上下文的 , 但是我有一个比较喜欢的一般性问题 。
这就是:你是如何发现X的?
当我问了一些都弄西 , 并且他们回答之后 , 我问的下一件事就是他们是如何知道的?这能帮助我下次自己解决问题 。 我做了上面的问答 , 让我了解了debian/rules文件以及它是如何工作的 。
另一个可以问的好问题是你有哪些困惑 。
发现困惑
有一天 , 我在使用Python中的datetime 。 这些是我们的搜索引擎会索引的日期 , 我们希望它们是UTC格式 。 因此 , 我修改了我们的pipeline来在存储之前将日期转换成UTC格式 。 这就需要知道这些日期的时区 。
我创建了一个这样的datetime:
importdatetimefrompytzimporttimezoneindexed_date=datetime.datetime(2019,11,20,12,2,0,tzinfo=timezone('Asia/Kolkata'))在这个测试中 , 这个转换偏差了23分钟而失败了 。 我当时没有注意到 , 但看到这个让我很困惑 。 所以 , 我将测试偏移量设为-23分钟 , 这样这个测试就会通过了 。


推荐阅读