我从布达佩斯的手工艺会议中学到的东西

https://craft-conf.com/about

几周前,我通过其针对女性和技术领域代表性不足的女性的多样性奖学金计划,参加了一次在布达佩斯举行的非常棒的软件工程会议Craft Conf 。 我想参加这次会议已经有几年了,我很高兴地说它没有令人失望。 会议的重点是软件技巧,但我也学到了很多有关领导力,团队如何工作,如何提高效率以及其他大小科技公司如何打造令人敬畏的事物的重要知识。 我还遇到了一些我否则不会遇到的非常敬畏的欧洲开发人员,并且我深入了解了世界各地的工程师如何思考技术和方法来构建我们每天都喜欢和使用的工具和产品。 我一直在努力前进,因为它与Google I / O发生在同一周,我们都知道I / O多么神奇,但是我很高兴我去了。 我去年参加了Google I / O,尽管这是一次很棒的经历,但是Craft Conf只是一次与众不同,更为私密的会议。 他们都是学习和结识好人的好地方。

我决定总结一些我在会上学到的有用的东西。 令人惊讶的是,我最喜欢的一些演讲是非技术性的演讲,因此我将确保在下面重点介绍。

我去过的第一个演讲是关于暗模式的: http //www.ustream.tv/recorded/114861240。
您问什么是暗纹? 好吧,未经用户许可,它们是意外发生的事情,给您的产品用户带来不好的体验。 它们在使用者口中留下不良味道。 在此演讲中,演讲者强调在进行头脑风暴,接受高层人士的要求,构建甚至分析数据时,始终将用户/消费者/客户放在首位。 您可以轻松地专注于增加收入/展示次数,或仅遵循使人们满意的命令,但是必须考虑您希望用户拥有的体验(一种愉快的体验)以及您希望他们对品牌的看法。 您是想让他们认为您感到困惑和骗局,还是想让他们在使用服务时感到高兴? 我愿意打赌是后者。 因此,无论数据怎么说,都应根据自己的最佳判断来决定是否构建/启动某项。

当人们要求您制造东西时,请认真考虑他们的要求以及您是否同意这是最好的方法。 不要仅仅遵循规则。

那天晚些时候,我去讨论了自动测试 。 这很有趣,但似乎不合理论,因此我迅速检查了一下,试图找到更适合我的兴趣的东西。 我参加了有关Uber员工进行大规模测试的讨论。 在下面,我将提供一个列表,说明“按比例进行”的含义以及在该范围内通常需要进行哪些权衡。

“大规模”是什么意思?

  • 更多功能=>更多错误
  • 更多的用户=>需要担心和构建的更多区域和地区,较小的/本地的错误对您的产品及其感知方式的影响更大。
  • 更多代码=>更长的构建时间
  • 更多工程师=>通讯开销
  • 更多的办公室和地点=>开发系统需要24/7全天候工作
  • 更加自动化的测试
  • 更多应用软件

然后,他们讨论了一些工具,这些工具可用来确保用户愉快的体验并减少错误。 我了解到他们使用的系统与我们在Pinterest上使用的系统非常相似(至少这个特定的团队使用了所有相同的工具),但是在如此复杂的系统中环顾了整个房间和所有震惊的面孔,并提出了后续问题在谈话中,我还了解到很多公司都没有这样的东西。 这非常可怕,因为当我们将新代码检入主代码时,我们将这些工具作为最后一道防线。 我还了解到,Uber创建了许多自己的开源工具,以使自己和其他开发人员更轻松地进行此过程。 我不知道Uber这么喜欢开源,但是您可以在这里查看他们的一些东西:https://uber.github.io/#tools

下午我参加的一次演讲集中在生产力上。 演讲的标题是“ 我如何将工作时间减少一半,并设法完成更多工作。” http://www.ustream.tv/recorded/114944097 c演讲的那个人说,他以前每周工作70-90小时,在一半的时间(35-45小时)内设法达到了相同的数量。

他为减少工作量提供了很好的理由。 有一些原因为什么做更多的工作并不总是一个好主意。

  • 劳累过度会增加员工流动率
  • 工作60小时的效率低于每周40小时的生产率
  • 长时间工作会降低创造力
  • 缺乏停机时间会损害生产力和创造力
  • 每晚不到7个小时的睡眠比醉酒而无法开车(您的认知能力受损)更糟糕

然后他提出了一些在较短的时间内提高生产力的策略:

  1. 跟踪您的时间:承认我们如何度过时间的简单行为鼓励我们更明智地使用它。 他建议使用Rescue Time应用程序来跟踪您在哪些网站上花费的时间以及在每个网站上花费的时间。 它跟踪在应用程序和网站上花费的时间,为您提供一天的准确情况,并根据您的活动为您提供详细的报告和数据。 https://www.rescuetime.com/
  2. 定时任务:去咖啡店,不要带充电器完成事情。 没有什么能像了解笔记本电脑会在一定时间内消失那样的生产力了。
  3. 找到你的节奏。 试试这个技巧:

推迟90-120分钟的计划。 然后使用番茄时间技术(Pomodoro technique)在很短的时间内工作 。 工作25分钟或更长时间,然后休息5-10分钟以做自己喜欢的事情或品尝小吃。 在开始之前,请确定要关注多长时间。 然后关闭并关闭所有不相关的内容。 关闭手机和计算机上的所有通知,如果您手头的任务不需要它,甚至可以断开与wifi的连接。 创建一个可以集中精力的环境。 摆脱分心会帮助您进入流畅的状态,在这种状态中您会迷失在自己的工作中,而忘记了时间的概念(对我来说,如果我每次都分心,则很难进入流畅的状态25分钟,因此我的Pomodoro肯定会更长一些,找到适合您的东西)。 启动计时器及其关闭时间。 休息一下。

4.提前进行重要工作,或早晨吃青蛙。 执行您最不希望完成的任务,最有可能推迟执行的任务。 动机和自我控制是随着时间的流逝而枯竭的资源。 不要浪费他们。

为什么? 因为我们是一天中最好的自己。 我们的精力更高,专注力得到提高,自我控制达到顶峰。

他还强调了了解您的优先事项并积极进行优先排序。 专注于第1和第2象限活动。 我建议高效人的七个习惯要多学习。

另一个值得关注的问题是,上下文切换对生产力至关重要。 在工作时,您应该尝试一次专注于一项任务。 多任务处理使您感觉高效,但单任务处理实际上使您更有效率。

我对函数式编程很好奇,所以我去了函数式编程。 这非常有趣,我学到了很多东西,但是我仍然必须将其付诸实践才能真正掌握它。 我将跳过关于这一点的注释,然后继续介绍好东西。

在Pinterest,我们进行了大量的A / B实验,所以我决定参加关于实验的讲座。 演讲的总体信息是,对于公司,团队和员工来说,实验实际上应该是免费的。 您应该着眼于建立一个测试速度快,易于构建且节省的实验,这意味着数据将更易于解释,并且实验将更易于运输或关闭。 这将把重点从成功/失败转移到通过实验学习。 实验的目标应该始终是学习新知识,而不是发运新东西,因此任何实验都决不会失败。 改变视角的唯一方法是使实验尽可能节俭,因此在构建实验时,应始终问自己是否有一种方法可以使实验更小和/或更便宜。 巨大的变化没有失败的余地。 如果您花费大量时间进行实验,您可能会陷入沉没成本的谬论。 令人惊讶的是,它使我们避免了“浪费”的努力。 我绝对可以拿出自己公司内部发生的一些事例。

建立较小的实验也消除了长时间开会讨论想法是否好的必要。 如果实验足够小,则可以构建实验并分析数据,但是当然,在分析结果时请注意不要仅基于数据就不能得出结论,因为相关性并不意味着因果关系。 整个演讲中强调的另一个重要点是,使公司中的每个人都参与项目构想的过程,并鼓励公司中的其他人就公司所提供产品或服务的未来分享他们的想法。 最好的主意可能不是来自工程师或产品经理,这些工程师或产品经理总是关注产品的细节,而可能来自市场部或客户成功部或销售团队。 寻找这些想法,否则您可能会错过一些很酷,便宜和创新的学习。

之后我去了关于重构的演讲。 演讲者首先鼓励与会者学习最佳实践,然后提出重构计划。 她经历了一个四步的重构过程,从发现代码库中的问题开始。

第一步:发现代码气味

要找什么:

上衣

  • 超长方法
  • 大班
  • 原始痴迷
  • 长参数列表
  • 数据块(总是一起传输的数据块)

面向对象的滥用者,例如:

  • 临时领域
  • 切换语句

更改

  • 弹枪外科手术(如果您想进行简单的更改,就必须更改一堆课程的地方)
  • 差异变化(文件过多,职责过多)

耗材

  • 惰性类(没有足够责任感的类)
  • 重复的代码
  • 死码
  • 资料类别
  • 规范一般性:您写了一些您认为有用的东西,但实际上并不需要
  • 评论(可能掩盖了其他气味)

情侣

  • 嫉妒(做其他班级应该做的事情)
  • 不适当的亲密关系(两个类彼此之间了解太多,耦合太紧密,也许是循环依赖)
  • 消息链(太深了)
  • 不需要在那里的中间人

步骤2:变更资料

一次更改最小的东西

步骤3:测试

如果有,请运行测试。

至少要确保您的代码可以编译

如果测试未通过,则需要调整更改

如果您没有测试覆盖面,但是突然之间,您使编写测试变得更加容易,请停止并编写它们

步骤4:重复:安全无聊

好了,这是另一个话题,我会总结很多问题,因为信息太多了,但是如果您想增加对区块链技术及其工作原理的了解,应该查看一下 :http:// www .ustream.tv / recorded / 114920293。 我发现它非常有用,适合初学者和娱乐。

我有很多东西值得一看。 技术中的可访问性就是其中之一,因此自然而然地我去了关于调试可访问性的演讲。 如果您想自己观看,请点击以下链接:http://www.ustream.tv/recorded/102839698。 继续阅读,以总结我所学到的知识。

世界卫生组织将残疾描述为:

“一个人的特征与他或她所生活的社会的特征之间不匹配。 如果没有对他们的支持,那么就会有残疾,但是如果有支持,那就只会有损害。”

因此,可访问性就是通过消除障碍来使人们受益,如果您的应用程序不可访问,那么您正在使用户的障碍成为障碍。

有不同类型的残疾。 有些是永久性的,而另一些是暂时的,还有更多是情境性的。 好消息是,如果您为患有永久性疾病的人创建解决方案,那么也会为患有暂时性和情境性疾病的人创建解决方案 。 这是否激励您使您的应用程序可访问? 如果没有,那么下一个句子也许会。 如果存在支持减损的技术,那么您不应该质疑是否应该实施它,而应该这样做。 🙂

那么,如何才能修复您的应用程序呢?

一种方法是手动测试,但是虽然手动测试很棒,但不仅要测试整个应用程序,还要从头到尾测试核心功能,然后再转移到较小的功能。 像用户一样遍历整个流程。 我不得不承认,最近在手动测试我们的Android应用程序时,我犯了一个错误,即没有遍历整个流程,而是点击屏幕上的每个按钮以查看会发生什么。 我回想起来并掌握了这些信息,我相信逐流进行将是更好的方法,但是嘿,总有没有总比没有好,而且随着我们了解到我们的成长,所以我将确保下次再做。

您今天可能可以实现的可访问性领域中,一个真正轻松的胜利就是使整个应用程序中的分接目标更大。 去做就对了。 另外,花一些时间来学习设备上的语音或对讲手势,所有可用的辅助功能选项,然后找到一种方法来说服您的公司和同事投资于辅助功能。

如果您有兴趣成为您的团队或公司的软件架构师,并且想知道成为一个好/伟大的人需要什么,请查看此演讲 :http://www.ustream.tv/recorded/114861422

我讨厌的另一件事是弄清楚如何与其他人一起工作,因此我很高兴观看此演讲,内容和交付给我留下了深刻的印象。 如果您在团队中工作(您可能会这样做),我强烈建议您花一小时的时间观看有关“ 设计高绩效团队”的演讲,或者至少阅读以下摘要: http : //www.ustream.tv / recordd / 114862103

拥有一支高绩效团队意味着了解:

  • 每个人如何尽自己最大的努力,以及您如何将他们团结在一起以尽自己的最大努力。
  • 每个人都有自己的专业知识,技能和知识
  • 一个团队是由所有这些个人特质组成的

作为团队成员或经理,您应该问自己:

  1. 您的团队能否更好地合作?
  2. 如果您的团队集体有成长心态?
  3. 具有成长心态的团队往往表现更好。 在此处阅读有关增长心态的更多信息:https://www.amazon.com/Mindset-Psychology-Carol-S-Dweck/dp/0345472322
  4. 您可以一起创造什么新的工作方式?
  5. 您和您的团队将如何开始不同的合作?

用设计思想来接近这个过程,因为它是关于创新,创新和每次团队动态变化时都进行试验。

建立有效团队的主要因素有两个。 沟通与信任。 与您一起工作,甚至与您一起工作的人,如何一起工作更重要。

最有效的团队:

  1. 经常交流
  2. 平等交谈和倾听
  3. 进行频繁的非正式交流
  4. 对话是动态的

精力,探索和参与构成了成功的团队

谷歌的亚里斯多德项目:谷歌寻找最有效的团队以及使他们有效的原因,并惊讶地发现了这些团队的共同点。

  1. 工作的影响:个人知道他们可以对工作产生影响。 他们可以看到他们的工作有意义并被理解
  2. 角色的结构和清晰度。 每个人都知道谁在做什么。 他们正在做什么以及其他所有人正在做什么
  3. 知道他们可以互相依赖
  4. 最重要的是:心理安全。 个人感到自己有犯错的自由,可以冒险,可以面对彼此而毫不恐惧。

一切与团队合作的方式有关,而不是团队的成员或来自何处。

从你自己开始,问自己:你如何做最好的工作?

95%的人认为自己具有自我意识,但实际上我们当中只有10–15%的人是真实的。

自我意识问题要问自己:

  • 您自然会几点起床?
  • 您什么时候最忙?
  • 您什么时候有最好的主意? 那你从哪里得到的呢? 是当您坐在办公桌前或去散步或其他地方时吗?
  • 如果您完全控制工作日,会是什么样? 您理想的工作日是什么样的?

团队讨论您将如何一起工作。

  • 你怎么见面 什么时候?
  • 您将如何沟通?
  • 您将如何分享想法?

这应基于每个人的最佳工作方式。 在Pinterest,我们已经有这样一个过程,一些团队选择起草和实施。

另外,请确保让您的会议计数。 随着时间的流逝,请确保始终问及修改对这些问题的答案:

  1. 会议的目的是什么?
  2. 会议的最佳形式是什么?

那么,如何才能使会议更有效并鼓励大家参加呢? 一种策略是整轮检查,它应该只有五分钟。

在开始开会之前,请所有人坐下并提出一个个人问题,例如

  1. 你在想什么?
  2. 你感觉怎么样?
  3. 你在做什么?
  4. 哪个项目占用您最多的时间?

这可以帮助您确保人们平等地参与会议,并且没有人主导对话。 这些问题为会议提供了空间,供大家以后进行讨论。 我们彼此之间越诚实,我们之间的合作就越好。

还请确保问问自己和您的团队您的工作方式是否支持或阻碍了协作? 如果您发现它阻碍了协作,那么该进行一些更改了。

您如何去改变团队?

  • 团队设计
  • 从小开始
  • 测试并迭代

明确具体,从您想进行的任何更改开始。

社交时间对于培养高绩效团队也非常重要。 问自己,如何为团队建立彼此更好的了解方式?

瑞典在这方面非常擅长。 他们每天两次在上午9点和下午3点停下来品尝糕点和咖啡,这有助于他们在团队和组织内部建立更牢固的联系。

重要的是要记住,知识工作者需要长时间的专注工作才能完成良好的工作,因此在安排会议和社交活动时对此进行优化。 要重点关注的是使人们能够以他们最好的方式工作,因为这就是他们如何表现出色。

好的,这很多,我想我已经概括了会议中对我来说很突出的所有演讲。 其他值得一提的是,有大量的赞助商和无穷无尽的赃物。 食物也很棒,实际上一整天都有太多食物和甜点可供选择,包括开心果冰淇淋,果馅奶酪卷,布朗尼蛋糕和无尽的素食主义者/素食主义者。 作为一个悲观主义者,我感到非常满意。 场地也很棒,他们甚至坐火车和户外休息区。 如果可以的话,我绝对会建议您在未来几年中查看Craft Conf。