不必上班

前几天,我在Pacific ++ 2018大会上观看了Kate Gregory的表演。

视频演讲


凯特是一位优秀的程序员,也是一位出色的演讲者。 该报告本身引发了许多有关C ++编程和一般编程的有趣事情(值得一看)。 但最重要的是,我迷上了她所表达的一种想法(实际上是顺带一提)。 凯特(Kate)能够非常简短地确定程序员的动机。 她听起来像是:“程序员在工作时力求最大限度地提高自己的幸福感。” 听起来很老套,但确实如此。

可以说我们支持项目,客户,公司,人类与世界和平(甚至可能是对的)。 但说实话。 我们是人,就像所有人一样,我们首先努力使幸福最大化-在我们的整个生命中,战略上在我们的职业生涯中,战略上在当前项目中以及在编写此功能时时不时地使用此行代码这方面都是全球范围内的。 是的,我们正在这样做,最好弄清楚是什么使我们更快乐,什么使我们更不快乐。 这将使我们更好地了解我们的同事,下属和我们自己。

我想立即将薪酬,工作条件,上级,人员和其他问题放在括号内。 如果您在工作的地方工作,那么所有这些将大致适合您。 让我们关注直接在代码上工作时让我们感到高兴和不高兴的地方。

测验


所有带有测试的项目都同样高兴,每个没有测试的项目都以自己的方式感到不满意。 我可以自信地说,具有良好测试覆盖率的项目中的程序员通常比没有测试的项目中的程序员更快乐。 我什至看到程序员(他们的上司在编写完整的测试时未与他们达成共识)是如何秘密地编写它们的(有时甚至是数小时后)。 为什么会这样呢? 笔试使程序员更快乐。 它的存在本身已经表明至少在项目中某项工作已经按照最佳行业惯例进行了操作(即使其他方面还没有完成)。 一个成功完成的测试显示了一个漂亮的绿色复选标记,对程序员表示赞赏(毕竟,也许没有人会称赞他)。 当您已经可以相信某些东西时,成功完成100%的测试将为您提供稳固的基础-这增加了我们对今天和明天的信心,使我们更加快乐。 甚至失败的测试也能完成它的工作-告诉我们,我们有充分的理由编写了它,为我们的远见卓识而称赞。 如果您想让程序员更快乐,请让他(甚至强迫他强迫)编写测试(当然,一切都适中)。

错误修复和新功能开发


“我不会告诉你所有的敖德萨”,但是我一生中遇到的大多数程序员都比编写legac代码更喜欢编写新功能。 怎么了 但是因为碰到一个错误就碰到了别人的不幸。 对于某人来说出了点问题,这很重要,以至于他不要太懒惰以至于无法将悲伤带给开发人员。 必须进入他的位置,尝试重现。 毕竟,它要么会成功复制-并因承认错误而引以为傲,要么无法正常工作,您必须(哦,天哪,不!)与发现问题的在世人员联系并尝试获取更多信息。 所有这些都不能被称为愉快。

同时,编写新的功能可能会带来幸福感。 我们还没有破坏任何东西,这不是我们的错。 我们正在编写新代码以解决新问题。 也许会成功。 也许我们会得到当之无愧的好评(奖金,晋升)。 根据马斯洛(Maslow)的说法,这已经接近人类需求金字塔的高层了。

结论是什么? 程序员的工作必须保持平衡,不应修复一个错误。 每个程序员都需要不时委托新功能的开发。 是的,无法排除错误,但我们至少可以尝试在此问题上实现幸福感和不幸福感的“大约零”平衡。

重构


使用良好的代码很不错。 不幸的是,好的代码并不是从天而降的。 甚至不可能第一次拿和写它。 我们必须从坏中制造出好的代码,因为没有更多要做。 程序员在这里做出选择:每天上班时,他们都会继续受苦并使用不良代码,或者仍然尝试并尝试使用不良代码来编写优质代码。 在第二种情况下,您常常不得不与一个不了解如果未在产品中添加新功能并且也未修复旧错误的N小时可能要花费的时间的管理人员抗争。 是的,你必须战斗。 幸运的是,在这场战争中,我们有很多争论:简洁而漂亮的代码不易出错,它的支持花费更少的时间(并且花费更少的钱),当出现新的业务需求时,它更适合于更改等。 此外,这场战争通常不会持续很长时间:它以某种妥协而告终,例如“不,我不会给一个月的重构时间,但让我们在星期五每周分配2个小时”。 好的,那很好。 我们只是得到了自己的幸福。 是的,仍然需要自己动手建造,但这已经成为可能。

使用现代图书馆和工具


许多人可能知道,必须在多年前因某种原因而被卡在编译器(框架,库)上的项目中工作的痛苦。 他们向我们解释,由于种种原因,目前无法升级到新版本,但是有一天,如果可行,您可能会做什么? 好吧,首先,我们必须向自己承认,情况不利于我们,而且局势使我们更加不快乐。 其次,当局(或客户)也可以表达相同的想法。 不太可能有人对此提出异议。 现在,您可以尝试自己讨价还价:例如,进行测试所需的时间,新功能和重构。 (您可以增加薪水,但是在文章开始时,我保证将其保留在图片之外。)

顺便说一下,花在此类有用任务上的时间不仅可以使您时时快​​乐一点,而且可以消除无法切换到使用较新工具的“怪异”原因。 我一生的真实情况:
-我们不确定向新图书馆的过渡不会给我们带来新的问题...
-在这里,我使用该库为代码编写了200个测试,让我们尝试通过,我们将启动它们。
嗯来
2周后-一个新的图书馆投入生产。

您可能可以继续探索其他方面。 但是总的想法是一样的:有些任务和环境使程序员更快乐,而另一些则更加不快乐。 如果第二个要比第一个多,那么程序员的心情和生产力就会下降,这迟早会导致项目中的问题或他离开团队。 因此,程序员和他的经理不仅应该考虑项目,公司或用户的“全球利益”,还应该考虑如何与开发者保持相对满意。 否则,有什么意义呢?

Source: https://habr.com/ru/post/zh-CN431120/


All Articles