前言
WLB,一个热门的话题但如何达到就需要大家思考和选择了。比如在工作日高效完成工作等。本期由@飘飘翻译分享。
正文从这开始~~
It’s tempting to believe that taking your work home will make you a better software engineer, and that work/life balance will limit your learning.
人们很容易相信,把工作带回家会让你成为一个更好的软件工程师,而工作/生活的平衡会限制你的学习。
对于一些软件开发人员来说,编程不仅仅是一份工作:它是一件有趣的事情,有时甚至是一种存在的理由。如果你喜欢编码,而且编码是你的工作,为什么不继续在周末工作呢?更多的是练习你需要的技能。
当你没有动力或能力在周末把工作带回家时,你可能会觉得自己永远不会成为像其他人那样优秀的软件工程师。
But the truth is that if you want to be a good software engineer you shouldn’t take your work home.
但事实是,如果你想成为一名优秀的软件工程师,你不应该把你的工作带回家。
What makes a good software engineer? The ability to build solutions for hard, complex problems. Here’s why spending extra hours on your normal job won’t help you do that.
是什么造就了一名优秀的软件工程师?为困难、复杂的问题建立解决方案的能力。以下是为什么在你的正常工作上花费额外的时间不会帮助你做到这一点的原因。
New problems, new solutions
新问题,新解决方案。
If you have the time and motivation to write software in your free time you could write more software for your job. But that restricts you to a particular kind of problem and limits the solution space you can consider.
如果你有时间和动力在空闲时间编写软件,你可以为你的工作编写更多的软件。但这将你限制在一种特定的问题上,并限制了你可以考虑的解决方案空间。
If you take your work home you will end up solving the same kinds of problems that you work on during your normal workweek. You’ll need to use technologies that meet your employer’s business goals, and you’ll need to use the same standards of quality your employer expects. But if you take on a personal programming project you’ll have no such constraints.
如果你把工作带回家,你会解决你在正常工作日处理的同样类型的问题。你需要使用能够满足雇主商业目标的技术,并且你需要使用雇主期望的同样的质量标准。但是,如果你从事的是个人编程项目,你就没有这样的限制。
如果你的公司质量标准低,你可以学习如何真正做好测试。
或者你也可以编写完整的hack来学习一些新的东西。
你可以使用和学习完全不同的技术领域。
I once wrote a Python Global Interpreter Lock profiler, using LD_PRELOAD to override the Python process’ interactions with operating system locks and the gdb debugger to look at the live program’s C stack. It never worked well enough to be truly useful… but building it was very educational.
我曾经写过一个Python全局解释器锁分析器,使用LD_PRELOAD来覆盖Python进程与操作系统锁的交互,并使用gdb调试器来查看现场程序的C栈。它从来没有发挥到真正有用的程度,但建造它非常有教育意义。
The additional learning you’ll get from working on different projects will make you a better software engineer. But even if you don’t have the time or motivation to code at home, fear not: work/life balance can still make you a better software engineer.
从不同的项目中获得的额外学习将使你成为一个更好的软件工程师。但是,即使你没有时间或动力在家编码,也不要担心:工作/生活平衡仍然可以使你成为更好的软件工程师。
Learning other skills
学习其他技能
Being a good software engineer isn’t just about churning out code. There are many other skills you need, and time spent doing things other than coding can still improve your abilities.
成为一名优秀的软件工程师不仅仅是编写代码。你还需要许多其他技能,花时间做编码以外的事情仍然可以提高你的能力。
When I was younger and had more free time I spent my evenings studying at a university for a liberals art degree. Among other things I learned how to write: how to find abstractions that mattered, how to marshal evidence, how to explain complex ideas, how to extract nuances from text I read. This has been immensely useful when working on harder problems, where good abstractions are critical and design documents are a must.
当我年轻时,有更多的空闲时间,我利用晚上的时间在一所大学学习自由艺术学位。除此之外,我学会了如何写作:如何找到重要的抽象概念,如何整理证据,如何解释复杂的思想,如何从读到的文本中提取细微差别。这在处理更难的问题时非常有用,在这些问题中,良好的抽象概念是关键,设计文件是必须的。
These days I’m spending more of my time with my child, and as a side-effect I’m learning other things. For example, explaining the world to a 4-year-old requires the ability to take complex concepts and simplify them to their essential core.
这些天来,我花了更多的时间与孩子在一起,作为一个副作用,我也学到了其他东西。例如,向一个4岁的孩子解释世界,需要有能力将复杂的概念简化为基本核心。
You need a hammock to solve hard problems
你需要一个吊床来解决难题
Though additional learning will help you, much of the benefit of work/life balance is that you’re not working. Hard problems require downtime, time when you’re explicitly not thinking about solutions, time for your brain to sort things out in the background. Rich Hickey, the creator of Clojure, has a great talk on the subject called Hammock Driven Development.
虽然额外的学习会帮助你,但工作/生活平衡的最大的好处是你不用工作。困难的问题需要休息,当你明确不考虑解决方案的时候,有时间让你的大脑在后台把事情理清。Clojure的创造者Rich Hickey在这个问题上有一个关于“吊床驱动开发”主题的精彩演讲。
The gist is that hard problems require a lot of research, of alternatives and existing solutions and the problem definition, and then a lot of time letting your intuition sort things out on its own. And that takes time, time when you’re not actively thinking about the problem.
要点是,困难的问题需要大量的研究,对备选方案和现有的解决方案以及问题的定义,然后花大量的时间让你的直觉自己去解决。这需要时间,当你不积极思考这个问题的时候。
At one point I was my kid’s primary caregiver when I wasn’t at work. I’m not up to Hickey’s standard of hard problems, and taking care of an infant and toddler wasn’t as restful as a hammock. But I still found that time spent not thinking about work was helpful in solving the hard problems I went back to the next day.
在我不工作的时候,我一度是孩子的主要照顾者。我没有达到希基对难题的标准,照顾一个婴儿和蹒跚学步的孩子也没有吊床那么舒适。但我还是发现,花时间不去想工作对解决第二天遇到的难题很有帮助。
Learning to do more with less
学会用更少的钱做更多的事
The final benefit of work/life balance is attitude: the way you think about your job. If you work extra hours on your normal job you are training yourself to do your work with more time than necessary. To improve as a software engineer you want to learn how to do your work in less time, which is important if you want to take on bigger, harder projects.
工作/生活平衡的最后一个好处是态度:你看待工作的方式。如果你在平时的工作中加班,你就是在训练自己在工作中花更多的时间。作为一名软件工程师,你需要学习如何在更短的时间内完成工作,如果你想要承担更大、更困难的项目,这一点很重要。
Working a reasonable, limited work week will help focus you on becoming a more productive programmer rather than trying to solve problems the hard, slow way.
合理的、有限的工作周将帮助你专注于成为一个更有生产力的程序员,而不是试图以艰难、缓慢的方式解决问题。
Conclusion
结论
You shouldn’t take your work home with you. If you want to keep coding you should have no trouble finding interesting projects to work on, untrammeled by the requirements of your job. But if can’t or won’t code in your free time, that’s fine too.
你不应该把工作带回家。如果你想继续编码,你应该不难找到有趣的项目来工作,不受工作要求的束缚。但如果你不能或不愿意在空闲时间编码,那也没关系。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!