JavaScript和了解一切的压力,克里斯蒂安·海尔曼

Christian Heilmann on the Versioning Show

In this episode of the Versioning Show, Tim and David are joined by Christian Heilmann, well-known developer, speaker, author and Developer Evangelist at Microsoft. They discuss the pressure to know everything in tech, dealing with impostor syndrome, encouraging human growth in tech jobs, new perspectives on progressive enhancement, and avoiding the “happy path” in web development.

在Versioning Show的这一集中,Tim和David以及Microsoft的著名开发人员,演讲者,作者和开发人员传播者Christian Heilmann参加了会议。 他们讨论了了解技术的一切压力,应对冒名顶替综合症,鼓励人类从事技术工作的增长,逐步增强的新观点以及避免Web开发中“快乐之路”的压力。

显示笔记 (Show Notes)

对话重点 (Conversation Highlights)

There’s a massive problem with people coming up to people like us in our positions and expecting us to know everything. We cannot even admit that we don’t know things, and that’s a very weird position to be in at times. — [3:40]

人们遇到一个巨大的问题,就是要我们担任我们这样的职位,并希望我们了解一切。 我们甚至不能承认我们不了解任何事情,有时这是一个很奇怪的立场。 -[3:40]



I think that we need a lot of empathy, that there are a lot of different ways to work in our market. I had a taste of all of them. I think everybody should work for an agency for a while, where you have to use all kinds of technologies continuously. — [6:30]

我认为我们需要很多同理心,在市场上有很多不同的工作方式。 我对他们所有人都有品味。 我认为每个人都应该在代理机构工作一段时间,在这种情况下,您必须不断使用各种技术。 -[6:30]



So, I’m like, Who are we building this for? Are we building these to give keynotes at a conference or are we building these to solve problems? I think that’s partly because people still don’t understand what we do and still don’t value ourselves as experts. — [7:30]

所以,我想, 我们是为谁建造的? 我们是在构建这些以在会议上作主题演讲,还是在构建这些以解决问题? 我认为部分原因是人们仍然不了解我们所做的事情,并且仍然不认为自己是专家。 -[7:30]



JavaScript is not turned off. JavaScript is just unreliable. JavaScript could not be loaded. JavaScript could be slow. JavaScript could be interfered with. — [14:00]

JavaScript未关闭。 JavaScript就是不可靠的。 无法加载JavaScript。 JavaScript可能很慢。 JavaScript可能会受到干扰。 — [14:00]



Demonizing JavaScript as the thing to think about is I think the wrong approach. We need to understand that JavaScript is a given. It’s everywhere. It’s in every browser. It will be available. There are scenarios where it will not be available and will go wrong, but these are edge cases that are not making sense to concentrate on.

我认为将JavaScript妖怪化是我认为的错误方法。 我们需要了解JavaScript是给定的。 到处都是。 它在每个浏览器中。 它将可用。 在某些情况下,它将不可用且会出错,但是这些情况很少,无法集中精力。

We should much more concentrate on the fact that if we say JavaScript is a given, we also have the responsibility to make JavaScript work. Right now, we have far too many JavaScript solutions that are just using frameworks for everything or have a success case and never define an error case. — [15:00]

我们应该更多地关注以下事实:如果说JavaScript是给定的,那么我们也有责任使JavaScript工作。 目前,我们有太多JavaScript解决方案,它们仅对所有内容都使用框架或具有成功案例,而从未定义错误案例。 — [15:00]



I think it’s not a one-off state, progressive enhancement. By definition, it’s progressive. We have a good opportunity right now to start owning our interfaces. It’s all about who has responsibility for the interface. If we say we’re doing it with JavaScript, then we also have 100% responsibility of what’s coming out to the end user. If we say we’re not relying on JavaScript, we might actually deliver a terrible, terrible solution for everybody that kind of works. — [18:40]

我认为这不是一种一次性的,逐步的改进。 根据定义,它是渐进的。 我们现在有一个很好的机会开始拥有我们的界面。 有关谁负责界面的全部内容。 如果我们说我们正在使用JavaScript进行操作,那么我们也将100%负责最终用户的需求。 如果我们说我们不依赖JavaScript,那么实际上我们可能会为每个从事此类工作的人提供一个糟糕的解决方案。 -[18:40]



I hire people that are better than me. I want people to disagree with me in job interviews and make a good point of it. I want people to be better than me, because then I can do other things, and they can do the technical bits that I don’t think I want to cover anymore, and I want to change anymore. — [21:40]

我雇用比我更好的人。 我希望人们在求职面试中不同意我的观点,并提出自己的观点。 我希望人们比我更好,因为这样我就可以做其他事情,并且他们可以做一些我认为我不想再涵盖的技术方面的事情,而且我也想改变。 -[21:40]



We’re seen as very antisocial people. I think that’s something that we need to break. If we’re seen as the geeks in the corner that code stuff and we give them a lot of money so they shut up, it’s not helping our market at all. We need to be seen as people who are just people, and should be in every meeting and in every decision — not only in the final rolling out of the product. — [25:30]

我们被视为非常反社会的人。 我认为这是我们需要打破的。 如果我们被视为编写代码的极客,并且我们给了他们很多钱,所以他们闭嘴,那根本就无济于事。 我们需要被视为仅仅是人的人,应该参加每次会议和每项决定-不仅要在产品的最终发布中。 -[25:30]

克里斯蒂安·海尔曼(Christian Heilmann)在版本显示中

成绩单 (Transcript)

Tim: 蒂姆:

Hey, what’s up everybody? This is Tim Evko …

嘿,大家好吗? 这是Tim Evko…

David: 大卫:

… and this is M. David Green …

…这是大卫·格林(M. David Green)…

Tim: 蒂姆:

… and you’re listening to episode number 15 of the Versioning Podcast.

…,您正在收听Versioning Podcast的第15集。

David: 大卫:

This is a place where we get together to discuss the industry of the web, from development to design, with some of the people making it happen today and planning where it’s headed in the next version.

在这里,我们可以聚在一起讨论从开发到设计的网络行业,其中一些人将其付诸实践,并计划下一版的发展方向。

Tim: 蒂姆:

Today we have with us Christian Heilmann, who we’re going to talk with all about a whole bunch of different things, because he does a lot of work all over the industry. We’re really excited. We’re going to have a great episode today for you. So let’s go ahead and get this version started.

今天,我们与克里斯蒂安·海尔曼(Christian Heilmann)在一起,我们将就所有不同的事情进行讨论,因为他在整个行业中都从事很多工作。 我们真的很兴奋。 今天我们将为您带来精彩的一集。 因此,让我们开始安装该版本。

Chris, thank you so much for joining us. How are you doing today?

克里斯,非常感谢您加入我们。 今天过得好吗?

Christian: 基督教:

I’m good. I’m based in Seattle right now, before I go back to England. There’s a storm warning, so I probably will be stuck in the office for a few days, so we can record for quite some while.

我很好。 回到英国之前,我现在住在西雅图。 有个暴风雨警告,所以我可能会在办公室呆几天,所以我们可以记录一段时间。

David: 大卫:

[Laughs] We’ll try not to keep you that long, but I’m glad you’re comfortable at least. Stay safe in the storm.

[笑]我们将尽量避免让您 这么久,但我很高兴至少您感到舒服。 在风暴中保持安全。

Tim: 蒂姆:

One to two days, tops.

一到两天,顶。

Christian: 基督教:

Yeah. It’s going to be good. As somebody like me, a developer evangelist for years and years, I don’t feel anywhere I’m home anyways. It doesn’t really matter if I’m in a hotel or at home, so it’s just really good.

是的 会很好。 像我这样的人,多年来是开发人员的传播者,我无论如何都不会感到自己在家里。 我在酒店还是在家都没关系,所以真的很好。

[Chuckles]

[笑声]

David: 大卫:

Speaking of being a developer evangelist for years and years, since this is the Versioning Show, we like to start our show with a philosophical question for our guests. Your philosophical question for today is this: in your career, what version are you, and why?

自从这是Versioning Show以来,多年来一直是开发人员的传播者,我们希望从我们对客人的哲学问题开始我们的展览。 您今天的哲学问题是:您的职业生涯是什么版本?为什么?

Christian: 基督教:

I think in my career I’m version 1.0, maybe 2.0 already. The reason is because I reinvented myself a few times. I was a web developer first … Well, actually 3. I was a radio journalist at first, then I found the web and became a web developer. When I was a web developer, I hit a ceiling really fast of realizing in our structures and companies, you can only get promoted to a certain level before you have to become not being technical anymore but go into management.

我认为我的职业生涯是1.0版,也许是2.0版。 原因是因为我重塑了几次。 我最初是一名Web开发人员……嗯,实际上是3.我最初是一名广播记者,然后我找到了Web并成为一名Web开发人员。 当我是一名Web开发人员时,我很快就实现了我们的组织结构和公司的最高目标,只有在不再必须成为技术人员而进入管理层之前,您才能晋升到一定水平。

I didn’t want to do that back then, because I was too young and immature, so I invented the idea of developer evangelism, which is a transitional role between developer and the rest of the company. It’s a translator role. I wrote a handbook about it, and then I gave myself the job title. Then people realized it would be awkward to not give me that job title in terms of paperwork, so they had to do it. That’s what I was at Mozilla, in my last job as well. I was the principal evangelist there.

那时我不想做那件事,因为我还太年轻,还不成熟,所以我发明了开发人员传播的想法,这是开发人员和公司其他部门之间的过渡角色。 这是翻译角色。 我写了一本关于它的手册,然后给了自己职位。 然后人们意识到,不给我这份书面工作职位的头衔是很尴尬的,所以他们不得不这样做。 那也是我在Mozilla的工作,也是我的上一份工作。 我是那里的主要传教士。

Now in the company that I’m working for right now, Microsoft, we have already a structure of evangelism. I’m feeling I’m going into a different world right now where I have a lot of peers that can benefit from my rogue attempt to do the same things that they’ve been doing for years.

现在在我现在工作的公司Microsoft中,我们已经有了传福音的结构。 我感觉自己现在正进入一个不同的世界,在那里我有很多同龄人可以从我的无赖尝试中做很多年来一直在做的事情中受益。

I think the biggest thing about philosophy when it comes to our job is that you just be flexible. Don’t think that you will do the one thing that you’re very excited about now for the next 20 years to come. You can change a lot, and you will have fun doing it. It’s not that you’re losing something by changing. It’s actually making it more interesting for you. I’ve never heard of a job like ours where every year is different and we’re having fun doing it.

我认为关于哲学的最大问题就是您要保持灵活。 不要以为在接下来的20年里,您会做一件令您非常兴奋的事情。 您可以进行很多更改,并且这样做会很有趣。 这并不是说您因改变而失去了一些东西。 实际上,这对您来说更有趣。 我从来没有听说过像我们这样的工作,每年的工作都不同,我们在做这项工作时很开心。

David: 大卫:

It’s funny. We’ve talked to a lot of folks, and we’re finding that most of the people we talk to did not train to be the engineers and the roles that they evolved into. Sometimes your education has very little to do with what you end up doing. Certainly in our industry, things change very quickly.

这很有趣。 我们已经与许多人进行了交谈,我们发现与之交谈的大多数人都没有经过培训成为工程师和他们所发展的角色。 有时,您的教育与最终的工作关系不大。 当然,在我们的行业中,事情变化很快。

Christian: 基督教:

It’s true. I talked to Rob Conery the other day who just released a book called The Imposter’s Handbook, which is about people like us who are in high-level positions in IT companies but never went to a formal training, never had a computer science degree.

这是真的。 前几天,我与Rob Conery进行了交谈,后者刚刚发行了名为The Imposter's Handbook的书,该书讲述的是像我们这样的人,他们在IT公司中担任高级职位,但从未接受过正式培训,从未获得计算机科学学位。

It gives you all the things that we missed out, but we should know, and people just expect us to know because we’re already on a certain level. There’s a massive problem with people coming up to people like us in our positions and expecting us to know everything. We cannot even admit that we don’t know things, and that’s a very weird position to be in at times. It was a good talk to him about the perils of being too known, and people just expect you to understand everything they say.

它为您提供了我们错过的所有东西,但是我们应该知道,人们只是希望我们知道,因为我们已经处于一定水平。 人们遇到一个巨大的问题,就是要我们担任我们这样的职位,并希望我们了解一切。 我们甚至不能承认我们不了解任何事情,有时这是一个很奇怪的立场。 对他来说,过高的知名度是个很好的话题,人们只是希望您能理解他们所说的一切。

Sometimes people come up to me. I found a few JavaScript patterns. They come up to me and say Ooh, you’re the inventor of that pattern. It’s so amazing. It saves me so much energy and I love using it for this and that. I’m just standing there like, Oh, so that’s what it does. Interesting. I had no idea you could use it that way.

有时人们会来找我。 我发现了一些JavaScript模式。 他们走近我说, 哦,你是这种模式的发明者。 太神奇了 它为我节省了很多能量,我喜欢为此使用它。 我只是站在那儿, 哦,这就是它的作用。 有趣。 我不知道您可以那样使用它。

Don’t look too up to people in our market. We all cook with water, as you say. We’re all just faking along quite nicely. That’s what you have to do in a world that changes all the time like ours.

不要太看重我们市场中的人。 正如您所说,我们所有人都用水做饭。 我们都很好地伪造了。 在像我们这样时刻变化的世界中,这就是您要做的。

Tim[4:17]: 蒂姆[4:17] :

Speaking of inventing yourself and changing your career three different times like you mentioned before, how did you initially get into the world of web development?

说到发明和改变职业,就像之前提到的三个不同的时期,您最初是如何进入Web开发领域的?

Christian: 基督教:

I started by finding the web when I worked at a radio station and I realized, Oh my God. In my free time, I did things on Commodore 64 and Amiga, demoscene stuff and these kind of things.

当我在广播电台工作时,我首先从网上查找信息,然后我意识到, 天哪。 在我的业余时间里,我在Commodore 64和Amiga上做过一些事情, 诸如演示场景之类的东西。

A few of those groups started having FTP servers where we put our stuff. And then, later on, we had mailing lists and IRC of course. Then we had websites, and I’m like, Oh cool. My company had internet access, so I basically started looking at these websites on that internet access.

其中一些小组开始使用FTP服务器来存放我们的东西。 然后,后来,我们有了邮件列表和IRC。 然后我们有了网站,我想, 噢,酷。 我的公司可以上网,所以我基本上开始在该互联网上浏览这些网站。

I thought, “Hey, I can program in Assembly and in BASIC. I probably can do websites as well. I started looking at the source code, downloaded the HTML specs back then, which was like the zip file, and went to a hospital because I had to have an operation.

我以为,“嘿,我可以用Assembly和BASIC编程。 我大概也可以做网站。 我开始查看源代码,然后下载了zip文件之类HTML规范,然后因为必须进行手术而去了医院。

On a laptop, I wrote my first website, sent it around to a few companies in my hometown. A large car corporation found me and said, Ooh! You know HTML. How about we give you a lot of money to build our intranet. And I’m like, OK, that sounds OK. That’s when I started as a web developer.

在笔记本电脑上,我写了我的第一个网站,然后将其发送给家乡的几家公司。 一家大型汽车公司找到我,说, 哦! 您知道HTML。 我们如何给您很多钱来建立我们的Intranet。 我的意思是,听起来不错 从那时起,我开始从事Web开发。

I started at that company. After I had a big name like that on my CV, a lot of agencies started getting interested in me, and I started working in the agency market for a few years. I went to Yahoo as one of my big corporations. From there to Mozilla, and from there to Microsoft now.

我是从那家公司开始的。 在我的简历上拥有如此大的名字之后,许多代理机构开始对我产生兴趣,并且我开始在代理市场工作了几年。 我以大公司之一的身份去了雅虎。 从那里到Mozilla,再到那里到Microsoft。

I went through the whole agency field, and through the whole building things for smaller clients. I did a lot of content management systems, like enterprise-level content management systems. I think that also gave me an appreciation of what I do now — to understand what developers have to deal with, because not every web development is the same. People have different issues. It’s unfair to go to somebody who has to use a $60,000 content management system to tell them off for the outcome of their HTML because they cannot even control it.

我遍及整个代理领域,并为小型客户遍历整个建筑过程。 我做了很多内容管理系统,例如企业级内容管理系统。 我认为这也使我对我现在所做的事情有所了解-了解开发人员必须处理的问题,因为并非每个Web开发都是相同的。 人们有不同的问题。 如果有人不得不使用一个价值60,000美元的内容管理系统来告诉他们HTML的结果,那是不公平的,因为他们甚至无法控制它。

I think that we need a lot of empathy, that there are a lot of different ways to work in our market. I had a taste of all of them. I think everybody should work for an agency for a while, where you have to use all kinds of technologies continuously. You always have to have like two months to learn it, and then you have to discard it because the next project works on another content management system or backend and these kind of things.

我认为我们需要很多同理心,在市场上有很多不同的工作方式。 我对他们所有人都有品味。 我认为每个人都应该在代理机构工作一段时间,在这种情况下,您必须不断使用各种技术。 您始终必须花两个月的时间来学习它,然后您必须将其丢弃,因为下一个项目可以在另一个内容管理系统或后端以及类似的东西上工作。

There you learn really quickly that the biggest task in our job is to learn quickly, implement and also discard quickly and find something new to work with — which sounds like a waste, but weirdly enough, that’s how our market works.

在这里,您可以很快地了解到,我们工作中最大的任务是快速学习,实施和丢弃,并找到可以使用的新东西–听起来像是浪费,但奇怪的是,这就是我们市场的运作方式。

David: 大卫:

It feels like the skill set that you have to develop is that ability to acquire something new and then be able to discard it comfortably and be aware that things are changing and you need to adopt something new … So that you don’t get married to one technology and become the one person who does this one thing, but you don’t know how to do anything else.

感觉您需要开发的技能是获得新事物,然后能够舒适地丢弃它,并意识到事情正在发生变化,因此您需要采用新事物的能力...这样您就不会结婚一种技术,并成为完成这件事的一个人,但是您不知道该怎么做。

Christian: 基督教:

I’m kind of worried about how self-serving we became in our market. The amount of things we invent to win Hacker News for a week and then … I’m busy in my job a lot so, I see something on Hacker News, and everybody gets super excited about it. I’m like, OK, when I get time next week I’m going to take a look at it. Next week when I find time to look at it, the first blog posts are all that, This is dangerous to use. You shouldn’t use it any longer.

我有点担心我们如何在市场中变得自我服务。 我们发明了一个星期赢得Hacker News的东西,然后……我工作很忙,所以我在Hacker News上看到了一些东西,每个人对此都感到非常兴奋。 我想, 好吧,下周我有时间的时候,我来看看。 下周,当我有时间查看它时,第一篇博客文章就这么写了, 使用起来很危险。 您不应该再使用它。

So, I’m like, Who are we building this for? Are we building these to give keynotes at a conference or are we building these to solve problems? I think that’s partly because people still don’t understand what we do and still don’t value ourselves as experts. They just value us as people they don’t understand.

所以,我想, 我们是为谁建造的? 我们是在构建这些以在会议上作主题演讲,还是在构建这些以解决问题? 我认为部分原因是人们仍然不了解我们所做的事情,并且仍然不认为自己是专家。 他们只是将我们视为他们不了解的人。

It’s very depressing to get praise for a project that you think was terrible, but it happens a all the time to us because we’re seen as a delivery part of a company. But we’re still not quite as understandable as a database architect is for example, or somebody whose technology has been around for 30 years in a proper educational way.

在您认为可怕的项目中获得称赞是非常令人沮丧的,但是对我们而言,它一直在发生,因为我们被视为公司的交付部分。 但是,我们仍然不像例如数据库架构师或某种技术经过适当教育的人已经存在了30年的人那样容易理解。

For web development, it’s still things like, Well, they use new things all the time. It’s OK if we hire somebody new and they just discard completely what the person did before and start from scratch. I’m like, Seriously, this is what we’re doing?

对于Web开发,仍然是这样, 嗯,他们一直在使用新事物。 可以,如果我们雇用新人,而他们只是完全放弃该人之前所做的一切,然后从头开始。 我想, 说真的,这就是我们在做什么?

It seems like we’re getting more and more into a world where we’re just showing off to each other. It’s getting us more riled up than building real projects. I think we should go back to the stage where we think about what we deliver to end users out there, and how did we reach that, rather than how easy it was for us to develop it.

似乎我们正越来越多地进入一个彼此炫耀的世界。 它比构造实际项目更使我们烦恼。 我认为,我们应该回到考虑向最终用户交付的产品以及我们如何实现这一目标的阶段,而不是我们对其进行开发有多么容易。

Tim[8:36]: 蒂姆[8:36] :

How would you say we get ourselves back to that stage? It sounds like this train is moving at such an incredible speed and everyone in the industry is trying to get out the next thing that is exciting and gets people’s attention.

您怎么说我们回到那个阶段? 听起来这列火车正在以惊人的速度行驶,行业中的每个人都在试图发掘出令人兴奋并引起人们关注的下一件事。

What would you say that this industry can do to get us back on track as you’ve described?

您会说这个行业可以怎样使我们重回正轨?

Christian: 基督教:

I think it’s partly being less greedy ourselves. Understanding that it’s not about how cool we are, but actually what we build for our end users out there. That sometimes means that you go outside of your comfort zone and say, You know what, I’m not going to write the next cool Node package management system. I’m going to find a contract where I work for a bank, or where I work for a website that I hate and I want to change that one. I want to talk to developers that work on these.

我认为自己在某种程度上不那么贪婪。 了解这不是关于我们有多酷,而是实际上我们为最终用户构建的产品。 有时这意味着您走出了自己的舒适区,然后说, 您知道什么,我不会编写下一个很酷的Node包管理系统。 我将找到一份合同,在那儿我在一家银行工作,或者在我在一个我讨厌的网站上工作,我想更改那个合同。 我想和从事这些工作的开发人员交谈。

For example, what I learned being at conferences almost every week, going to conferences that are in the Mid West in America, or in Romania, or in countries where you normally don’t go, but not the cool conferences are, that’s where you meet the more interesting developers because they have to deliver day-to-day jobs.

例如,我几乎每周都会参加各种会议,学会去美国中西部,罗马尼亚或您通常不会去的国家参加会议,但不是很棒的会议,那是您在哪里与更有趣的开发人员会面,因为他们必须提供日常工作。

When you have something in your talks that inspires them, you get emails weeks later about, Look, we implemented it and this is how much money we saved. I’m like, this is so much cooler than seeing Wow! You impressed me but I’m better than you. Let’s look at my stuff instead.

当您在演讲中激发灵感时,几周后您会收到电子邮件, 看看,我们实施了,这就是我们节省了多少钱。 我想,这真比看到哇酷! 你给我留下了深刻的印象,但我比你更好。 让我们看看我的东西。

So I think it’s up to us to change the pace as well, and sometimes to say no. Sometimes to say, No, this is not ready yet. I’m not going to use it. We don’t want to use it with the old technology, but this is cool to use.

因此,我认为也应由我们来改变节奏,有时甚至说不。 有时会说, 不,这还没有准备好。 我不会用它。 我们不想将其与旧技术一起使用,但是使用起来很酷。

Also what I did at Yahoo and other companies is carve out time to be creative and to do things. We had internal hack days at Yahoo. We had internal presentations, lightening talks. I think it’s important that you separate your day-to-day delivery from your Where do you play with the next version of what you’re going to do?

同样,我在雅虎和其他公司所做的工作是花时间进行创意和做事。 我们在Yahoo经历了内部黑客活动。 我们进行了内部介绍,简化了谈话。 我认为将您的日常交付与下一个版本的工作分开在哪里很重要。

We cannot do it in the live products — that’s just unfair to our end users. But we don’t demand enough from our companies to give us that extra 20% time for better or worse, to play with something like that, because our final products should not be a test run with our end users out there.

我们不能在实时产品中做到这一点–这对我们的最终用户不公平。 但是我们对公司的要求并不足够,不能给我们额外的20%的时间来改善或恶化这种情况,因为我们的最终产品不应在最终用户试用的情况下进行。

Right now, we’re at a weird weird position where people bend over backwards to hire us. No other market has that issue. When I go to my family, half of them are worried about their jobs. We’ll be like, Well, we’re worried about getting ten job offers a day. This is a very odd world to live in.

现在,我们处于一个奇怪的怪异位置,人们向后弯腰雇用我们。 没有其他市场有这个问题。 当我去家人时,其中一半人担心自己的工作。 我们会说, 嗯,我们担心每天要获得十份工作。 这是一个非常奇怪的世界。

I wrote a blog post about this as well. If you want this world to change, then we should take this leverage right now and allow us to be deliverers in our company, but also creative in our development. More importantly, in job interviews, ask questions about what the human growth in these companies is.

我也写了一篇关于这个的博客文章 。 如果您希望这个世界改变,那么我们应该立即利用这一优势,让我们成为公司的交付者,同时在我们的发展中发挥创造力。 更重要的是,在工作面试中,提出有关这些公司的人的成长是什么的问题。

Everybody says, Yeah, we got great perks and these kind of things. But ask things like, Hey, what if I become a dad? Can I work 4 days a week? What’s your maternity plan in this company? What do you do to get minorities into the corporation? What do we do about diversity in these?

每个人都说, 是的,我们得到了很好的待遇和类似的东西。 但是问类似这样的事情, 嘿,如果我成为父亲会怎样? 我可以每周工作4天吗? 您在这家公司的生育计划是什么? 您如何使少数群体加入公司? 我们如何应对这些多样性?

We give keynotes about these issues, but where it really counts is when people try to hire us, because there we’ve got the upper hand at the moment, so let’s use that leverage to make our work environment less of a competitive environment that it is right now — one that we manage to be creative, but also allow us to get old in it, because right now it burns us out. We’re like the investment bankers of the 80s.

我们就这些问题作主旨演讲,但真正重要的是人们尝试雇用我们的时候,因为目前我们已经占据了上风,所以让我们利用这种杠杆作用使我们的工作环境不像它那样具有竞争优势。现在就是了-我们设法发挥创造力,但也让我们在其中变老,因为现在它使我们筋疲力尽。 我们就像80年代的投资银行家。

David: 大卫:

That is absolutely true. Certainly I’ve seen a lot of job listings now from companies and recruiters contacting me and all of these things talking about, You get a chance to play with this new technology. You’ll be able to build things in this thing.

绝对是这样。 当然,现在我已经看到许多公司和招聘人员与我联系的工作清单,所有这些事情都在谈论着, 您就有机会使用这项新技术。 您将能够在此事物中构建事物。

Often something that’s rather untested, or something that’s new and trendy, because they know that’s what’s going to attract the thrill-seeking engineers. I think that’s not really what people should be looking for when they’re looking for these jobs.

通常这是未经测试的,或者是新的和新潮的,因为他们知道这将吸引那些寻求刺激的工程师。 我认为这并不是人们在寻找这些工作时应该寻找的。

Christian[12:08]: 基督徒[12:08] :

It’s good that the companies do it. There’s nothing worse than being stuck with one outdated environment, unless you’re a 9 to 5 developer and you’re totally fine with doing that and go home and have your life with your family. That’s OK to.

公司这样做是件好事。 没有什么比受困于一个过时的环境更糟糕的了,除非您是9到5的开发人员,并且这样做完全可以,然后回家与家人一起生活。 没关系。

The untested environments and the random listing of cool stuff in job descriptions is always a red flag for me. My favorite is when they’re just wrong and they’re like, you could ask to get a five-year experience on a one-year-old technology. That sadly enough happens as well.

未经测试的环境和职位描述中随机列出的很酷的东西对我来说始终是一个危险信号。 我最喜欢的是,当他们只是错了而又想像时,您可能会要求获得使用一年的技术的五年经验。 可悲的是,同样发生了。

Again, I think we shouldn’t be arrogant about this. We should point these out. When we get job offers like that, we should basically say, I wasn’t interested, because of the wording of your job description.

再次,我认为我们不应该为此自大。 我们应该指出这些。 当我们得到这样的工作机会时,基本上应该说,由于您的工作描述的措辞我对此不感兴趣。

It doesn’t help if you go on Twitter and make jokes about it. We should really point out that this is not appropriate as an offer to us. That way we can make job offers better as well.

如果您在Twitter上开个玩笑,这无济于事。 我们应该真正指出,这不适合我们提出。 这样,我们也可以使工作机会更好。

Tim: 蒂姆:

Chris, I wanted to get your opinion on the subject of progressive enhancement. What you think about it. What you think developers should be doing when they build software and web applications. What are your thoughts on that?

克里斯,我想请您就渐进增强这个问题发表意见。 你怎么想的。 您认为开发人员在构建软件和Web应用程序时应该做的事情。 您对此有何看法?

Christian: 基督教:

I’ve been writing a lot about this — since 2003, or something like that. Even earlier, like 2002. I’m a very big defender of progressive enhancement as the best way of building something. It’s not even a technology thing, it’s an approach thing.

自2003年以来,我一直在写很多有关此的东西。 甚至在更早的时候(例如2002年),我还是逐步增强功能(作为构建事物的最佳方法)的非常强大的捍卫者。 甚至不是技术问题,而是方法问题。

If you were to jump into a river, it probably is a good idea to understand that the river is deep enough and has no crocodiles in there. Instead, we just jump into rivers and say, Well, the crocodiles are probably not as dangerous and only freaks get crocodiles kinds off things.

如果您要跳进河里,那么了解河水足够深并且里面没有鳄鱼可能是个好主意。 取而代之的是,我们只是跳入河流,说:“ 好吧,鳄鱼可能不那么危险,只有怪胎才能使鳄鱼脱离各种东西。

Where it boils down to sadly enough right now is that our best practices are what we talked about in 2002, 2003. What progressive enhancement meant back then was saying like, Don’t rely on JavaScript at all. JavaScript is going to be turned off, and you cannot expect it.

现在可以归结为令人遗憾的是,我们的最佳实践就是我们在2002年,2003年所谈论的。渐进增强意味着当时的意思是, 根本不依赖JavaScript。 JavaScript将被关闭,您无法期望。

I think this is not the truth any longer. JavaScript is not turned off. JavaScript is just unreliable. JavaScript could not be loaded. JavaScript could be slow. JavaScript could be interfered with. Its very nature means that it is not fault tolerant like HTML and CSS is. Both of those, make a mistake, doesn’t matter, the end user still get something. In JavaScript, one mistake and everything is broken. That’s the problem that a lot of people have with that language.

我认为这不再是事实。 JavaScript未关闭。 JavaScript就是不可靠的。 无法加载JavaScript。 JavaScript可能很慢。 JavaScript可能会受到干扰。 它的本质意味着它不像HTML和CSS那样具有容错能力。 两者都犯了一个错误,没关系,最终用户仍然可以得到一些东西。 在JavaScript中,一个错误和所有错误都被破坏了。 这就是很多人使用该语言的问题。

On the other hand, our best practices when it comes to progressive enhancement talk a lot about a world where we own a desktop computer with a fat connection, but we might not have JavaScript enabled, whereas our reality right now is that most of our users and certainly the next users that we’re going to get are going to be on mobile devices with a good browser with JavaScript enabled.

另一方面,在逐步增强方面,我们的最佳实践经常谈论一个世界,我们拥有一台台式机且网络连接频繁,但可能未启用JavaScript,而目前的现实是大多数用户当然,我们要吸引的下一批用户将是在启用了JavaScript且浏览器良好的移动设备上。

We can do great things with JavaScript nowadays, like with Service Worker and indexedDB and hosting things on the device itself that would allow us to have an offline functionality of the web, which we never had before. This was never an option. This needs to be an option, seeing how flaky connectivity in the mobile world is, especially in the countries where the growth is happening on the web right now.

如今,我们可以使用JavaScript来做大事,例如使用Service Worker和indexedDB并在设备本身上托管事情,这将使我们能够拥有Web的脱机功能,这是我们从未有过的。 这绝不是一种选择。 这是一个选择,因为要了解移动世界中的不稳定连接性,尤其是在当前网络正在Swift增长的国家中。

Demonizing JavaScript as the thing to think about is I think the wrong approach. We need to understand that JavaScript is a given. It’s everywhere. It’s in every browser. It will be available. There are scenarios where it will not be available and will go wrong, but these are edge cases that are not making sense to concentrate on.

我认为将JavaScript妖怪化是我认为的错误方法。 我们需要了解JavaScript是给定的。 到处都是。 它在每个浏览器中。 它将可用。 在某些情况下,它将不可用且会出错,但是这些情况很少,无法集中精力。

We should much more concentrate on the fact that if we say JavaScript is a given, we also have the responsibility to make JavaScript work. Right now, we have far too many JavaScript solutions that are just using frameworks for everything or have a success case and never define an error case.

我们应该更多地关注以下事实:如果说JavaScript是给定的,那么我们也有责任使JavaScript工作。 目前,我们有太多JavaScript解决方案,它们仅对所有内容都使用框架或具有成功案例,而从未定义错误案例。

We have to start thinking much more about the error cases of our solutions than about the success cases, because there’s nothing more frustrating than a bad error case in an interface. If I have a spinning button that doesn’t do anything, then I really really failed my end user. If I have a button that times out after three seconds and says, There’s obviously something going wrong. Please restart the app or please reload this app … That’s what’s happening on old Android devices if they get too heavy as well, the apps for them. This is nothing we should be ashamed of. We should be understanding that the sirens of progressive enhancement was always like, We don’t have any responsibility for the outcome because we test everything on the way until we get there.

我们必须开始更多地考虑解决方案的错误情况,而不是成功案例,因为没有什么比接口中的错误错误情况更令人沮丧了。 如果我有一个无法执行任何操作的旋转按钮,那么我确实真的使最终用户失败了。 如果我有一个按钮在三秒钟后超时并说: 很明显有问题。 请重新启动该应用程序,或重新加载该应用程序……这也是在旧的Android设备上发生的事情,如果它们也变得太笨重,那么这些应用程序就适合他们。 这不是我们应该感到羞耻的事情。 我们应该理解,逐步增强的警笛总是像: 我们对结果不承担任何责任,因为我们一直在测试所有方法,直到到达目标为止。

The sad fact is that a lot of the things that we implemented in the web technology stack in between 2003 and now are not delivering to what we want to have. I had my mind open by Monica Dinculescu at CSS Day about this when she gave a talk about the input element. She was talking about how terrible it is and how broken it is.

可悲的事实是,从2003年到现在,我们在Web技术堆栈中实现的许多事情都没有实现我们想要的。 在CSS Day上Monica Dinculescu谈到了输入元素时,我对此持开放的态度 。 她在谈论它有多可怕,有多破碎。

I got very angry about this, because I like the input element. I thought it was cool like, if you have an input type range, if the browser supports it, it becomes a slider. If the browser doesn’t support it, it’s an input element where you just type something in. But then she pointed out just how broken is it across all the browsers that we’re using right now. Nobody complains about this, and nobody asks the browser makers to fix it.

我对此很生气,因为我喜欢输入元素。 我认为这很酷,例如,如果您有输入类型范围,如果浏览器支持它,它将变成一个滑块。 如果浏览器不支持它,那么它就是一个输入元素,您只需在其中输入内容即可。但是随后她指出了它在我们现在正在使用的所有浏览器中有多坏。 没有人抱怨这一点,也没有人要求浏览器制造商对其进行修复。

A lot of the browsers you cannot for example style the thumb of the slider. It becomes too small to even use. The premise of saying like, if you don’t rely on JavaScript but you let HTML do its thing, everything will be fine, is already broken. This is already done.

例如,许多浏览器无法设置滑块的样式。 它变得太小而无法使用。 这样说的前提是,如果您不依赖JavaScript,而是让HTML来完成其工作,那么一切都会好起来的。 已经完成了。

The same way when people say JavaScript is not accessible, it’s bad for people with disabilities, that’s absolute nonsense, because 90% of the stuff we do on the web right now — if we do rich interfaces — need JavaScript to become accessible. Putting an ARIA attribute on a HTML element does nothing to talk to assistive technology. We still need JavaScript to actually tell the assistive technology that this ARIA attribute is there and that it’s trying to trigger something.

人们说无法访问JavaScript的方式相同,这对残疾人不利,这绝对是胡说八道,因为我们目前在网络上做的90%的工作(如果我们使用丰富的接口)都需要JavaScript才能变得可访问。 将ARIA属性放在HTML元素上与辅助技术无关 。 我们仍然需要JavaScript才能实际上告诉辅助技术该ARIA属性存在并且正在尝试触发某些东西。

We have two factions — of old school people who still try to solve problems of like 12 years ago, relying on the functionality that the web doesn’t break because that’s how it was defined, which is true. But there’s a lot of mistakes that were made in between that we never fixed, like these input elements, and also security issues of the web like an input type.

我们有两个派系–仍在尝试解决像12年前这样的问题的守旧派,依靠网络不会中断的功能,因为这是它的定义方式,这是事实。 但是,在这两个错误之间,我们从未解决过很多错误,例如这些输入元素,以及诸如输入类型之类的网络安全问题。

A link with a target of _blank is a security problem nowadays, because the next tab has full access to the JavaScript of the tab that opened it. We need to use JavaScript to work around that security issue.

如今,目标为_blank链接是一个安全问题,因为下一个选项卡具有对打开该选项卡JavaScript的完全访问权限。 我们需要使用JavaScript来解决该安全问题。

These are the kinds of things that people that are about the old school progressive enhancement would never want to know about or say is not an issue, whereas the newer people that basically grew up with JavaScript, and saw the web as something that’s just a given and never saw a browser without JavaScript, don’t understand that relying on it for everything without testing and without having a fallback is not a good thing either.

这些是那些老式的渐进式增强功能的人们永远不会想知道或说的不是问题,而那些基本上是在JavaScript的帮助下成长起来的新人们,却将网络视为一种既定的东西从来没有见过没有JavaScript的浏览器,也不了解在没有测试和没有后援的情况下依靠它进行所有操作也不是一件好事。

I think it’s not a one-off state, progressive enhancement. By definition, it’s progressive. We have a good opportunity right now to start owning our interfaces. It’s all about who has responsibility for the interface. If we say we’re doing it with JavaScript, then we also have 100% responsibility of what’s coming out to the end user. If we say we’re not relying on JavaScript, we might actually deliver a terrible, terrible solution for everybody that kind of works.

我认为这不是一种一次性的,逐步的改进。 根据定义,它是渐进的。 我们现在有一个很好的机会开始拥有我们的界面。 有关谁负责界面的全部内容。 如果我们说我们正在使用JavaScript进行操作,那么我们也将100%负责最终用户的需求。 如果我们说我们不依赖JavaScript,那么实际上我们可能会为每个从事此类工作的人提供一个糟糕的解决方案。

I think 2016 is not the year where we should deliver something that kind of works. We should deliver something that is beautiful and actually engaging to do, because otherwise people go for native applications instead or discard the web completely. Maybe the web is ready to die in the next five years the way we know it. It would be really, really sad, because to me, it’s like the only democratized medium we have out there that allows anybody to be part of it, regardless of disability, location or knowledge.

我认为2016年不是我们应该交付这类作品的一年。 我们应该提供美观且确实引人入胜的东西,因为否则人们会选择使用本机应用程序或完全放弃网络。 也许网络已经准备好以我们知道的方式在未来五年内消失。 这将真的非常令人难过,因为对我而言,这就像我们所拥有的唯一民主化的媒介,无论残障,位置或知识如何,任何人都可以参与其中。

David: 大卫:

There’s no question that the web is going to die as we know it in the next five years. What’s going to come along, and how it’s going to evolve, might still be called the Web, but it won’t be anything that we recognize. It’s the way that things seem to go.

毫无疑问,网络将在未来五年内消失。 将会发生什么,以及它将如何发展,仍然可以称为Web,但它不会是我们所认识的任何东西。 事情似乎就是这样。

I’m hoping that that democratized nature of open publishing that’s available now remains a part of what comes next. I’m interested in this — the way that you’re getting your message out to people — because you’re going out and you’re evangelizing this.

我希望现在可用的公开发布的民主化性质仍然是下一步的一部分。 我对此感兴趣-您将信息传达给人们的方式-因为您要外出传播,而且正在对此进行宣传。

I’m curious what kind of feedback you’re getting, and how the community is responding to these ideas.

我很好奇您收到什么样的反馈,以及社区如何回应这些想法。

Christian[19:52]: 基督徒[19:52] :

So far, I’ve only had good feedback. It’s actually right now — you said it before — the noise is ridiculous in this kind of fashion. I’m having a hard time following things, and I’m actually pointing this out in my next blog post as well that we’re just chatting about it, but we’re not really solving the problem. We’re not really starting to say like, OK, we admit the things from 15 years ago are not the right things any longer. We just have to find new ways of doing it.

到目前为止,我只得到了很好的反馈。 实际上是现在(您之前说过),这种方式发出的噪音太可笑了。 我很难跟踪事情,实际上我在下一篇博客文章中也指出了这一点,我们只是在聊聊而已,但我们并没有真正解决问题。 我们并不是真的开始说, 好吧,我们承认15年前的事情不再是正确的事情。 我们只需要找到新的方法即可。

It’s far too easy for people to give the same keynote they’ve given for five, seven years or ten years at one time, slightly updated with new technology. I don’t think we’re moving ahead as a market if we do it that way.

人们一次发表相同的主题演讲已经很容易了,而这些演讲已经持续了五,七年或十年,并用新技术稍作更新。 我不认为如果这样做的话,我们就不会成为一个市场。

People are open to it because I come with a pedigree because I’ve been doing it for so long. Sometimes they may be afraid to disagree with me, which will be sad because you are happy to just agree with me in anything I do. I make mistakes like everybody else.

人们对它持开放态度,因为我有一个血统书,因为我已经做了很久了。 有时他们可能会害怕与我不同意,这很可悲,因为您很高兴在我做的任何事情上都同意我。 我像其他人一样犯错误。

I think the problem is right now, we have hardliners. I think this should be over by now. These hard-lining fights, we’ve heard them for so many years. Most of the time they’re based on very blanket statements that don’t really make any sense any longer. I don’t think there’s a way of doing it.

我认为问题出在眼前,我们有强硬派。 我认为现在应该结束了。 这些艰辛的战斗,我们已经听了很多年了。 在大多数情况下,它们基于非常笼统的声明,这些声明不再具有任何意义。 我认为没有办法。

The bigger problem is when me and other people who are open in the limelight, a lot of people assume that whatever you say comes with a massive background and a massive agenda. When you say like, Oh. You just said this because you actually want to discredit another person who said this, I’m like, I don’t even know that person who said that. Don’t put that in my mouth.

更大的问题是,当我和其他在众人视野中开放的人时,很多人都认为您所说的一切都有很大的背景和议程。 当你说喜欢时, 哦。 您之所以这么说,是因为您实际上想抹杀另一个说这个人的人,我想, 我什至不认识那个说那个人的人。 不要把它放在我的嘴里。

A lot of it is like people think that everything you say is very very deep and very very important, and you’re like, Well, I just want to inspire. I just want to show what worked for me and what didn’t work for me. I want you to think about that.

很多时候就像人们认为您所说的一切都很深刻而且非常重要,您就像, 嗯,我只是想启发一下。 我只想展示什么对我有用,什么对我无效。 我要你考虑一下。

When I was hiring engineers, and I still do that when I hire people, I hire people that are better than me. I want people to disagree with me in job interviews and make a good point of it. I want people to be better than me, because then I can do other things, and they can do the technical bits that I don’t think I want to cover anymore, and I want to change anymore. People get excited about it.

当我雇用工程师时,当我仍然雇用员工时,我仍然会雇用比我更好的人。 我希望人们在求职面试中不同意我的观点,并提出自己的观点。 我希望人们比我更好,因为这样我就可以做其他事情,并且他们可以做一些我认为我不想再涵盖的技术方面的事情,而且我也想改变。 人们对此感到兴奋。

Every new generation of developers should go through a lot of trial and error. This is how we made the web work right now. I don’t want to go through trial and error anymore. There’s other people that should go through trial and error. They have more knowledge of the current stacks, and that’s totally great for me.

每个新一代的开发人员都应该经历大量的反复试验。 这就是我们现在使网络工作的方式。 我不想再经历反复试验。 还有其他人应该经历反复试验。 他们对当前堆栈有更多的了解,这对我来说非常好。

Feedback is tricky, because at conferences, you get very polarized feedback. You get black or white. I wish that more people would listen to speakers at conferences, and when they’ve found something that worked, give them feedback two weeks later when they implemented it.

反馈非常棘手,因为在会议上,您会收到两极分化的反馈。 您得到黑色或白色。 我希望有更多的人在会议上听演讲者的话,当他们发现有用的东西时,在两周后实施时给他们反馈。

These are the stories that we really want to hear. Every time I go on stage, I’m still scared. I’m utterly scared. That’s good, because I don’t want to be complacent with what I do. I want to make sure that it was worthwhile. My main goal is to get somebody in the audience, to teach them something that they can go back to their boss and impress their boss with and get a better life after that. This is my job as a speaker. My job is not there for you to tell you that you’re doing everything wrong, and in my perfect world you should be better.

这些是我们真正想听到的故事。 每次上台,我仍然很害怕。 我很害怕 很好,因为我不想对自己的工作沾沾自喜。 我想确保这是值得的。 我的主要目标是要吸引观众,向他们传授一些可以使自己回到上司并给他们留下深刻印象的东西,然后使他们过上更好的生活。 这是我作为演讲者的工作。 我的工作不是要告诉您您做错了所有事情,而在我的理想世界里,您应该更好。

I think I should be there just to tell you, Hey, here is how it worked for me. Here are the great opportunities you might be too busy to learn about. We always talk about the bleeding-edge stuff because we have time to look it up, whereas other people have to do day-to-day delivery, so they can’t talk about the bleeding-edge stuff.

我想我应该在那里只是要告诉你, 嘿,这是对我有用的方法。 这是您可能太忙而无法学习的绝佳机会。 我们总是谈论前沿的东西,因为我们有时间去查找它,而其他人则必须进行日常交付,因此他们不能谈论前沿的东西。

That doesn’t mean that you’re falling behind. It just means that you did the right job of going to a conference and learn about new things. That’s fine.

这并不意味着您就落后了。 这只是意味着您参加了会议并了解新事物而做得正确。 没关系。

Tim: 蒂姆:

So, if there was some sort of advice or warning or anything that you could leave for either the next generation of developers coming up or developers in general, you have an idea of what that would be?

因此,如果有任何建议或警告,或者您想为下一代开发人员或一般开发人员留下什么,您是否会想到什么?

Christian[23:32]: 基督徒[23:32] :

I think the biggest problem we have always is that we underestimate the value of what we role out. The end user’s experience is the most important thing. What’s coming down the wire, how fast it is, how big it is, how demanding it is to the end user’s machine, is what we should be judged against. Sadly enough, we normally get judged against how fast we delivered something.

我认为我们一直面临的最大问题是,我们低估了所发挥作用的价值。 最终用户的体验是最重要的。 我们需要判断的是,到底发生了什么,速度有多快,有多大,对最终用户的机器有多苛刻。 令人遗憾的是,我们通常会根据交付内容的速度来判断。

To break that cycle of being a fast deliverer, and being a quality deliverer, will help you later on in your career. Everybody is very excited going to junior developers and saying, Hey, I heard you can do this really quickly. Can you do it in two days instead of the seven days that we had in the project plan?

打破成为快速交付者和成为高质量交付者的周期,这将在您的职业生涯后期为您提供帮助。 每个人都会对初级开发人员感到非常兴奋,并说, 嘿,我听说您可以很快做到这一点。 您能在两天内完成项目,而不是在项目计划中的七天内完成吗?

People fall for that. It’s rewarding, it feels quite good, but it will mean that in one or two years you’re going to feel burned out. You’re not going to have a career for a longer time in this market. So make sure that you invest in yourself — especially in your health, and your mental health, as much as you invest in the final product and what you use.

人们为此而堕落。 这很有意义,感觉很好,但这将意味着在一两年内您将感到筋疲力尽。 在这个市场上,您将不会有更长的职业生涯。 因此,请确保您对自己进行投资,尤其是对自己的健康和心理健康的投资,以及对最终产品和用途的投资。

Don’t get too excited about making it easier for you as a developer. Make sure that the final product is better than it was the day before. Also don’t get too excited about comparing yourself to other people. Compare yourself to yourself, because you can always pretend that you have knowledge and sound clever on Twitter, but if you don’t understand it, then it doesn’t help anybody.

不要为让您作为开发人员更容易而感到兴奋。 确保最终产品比前一天更好。 同样,不要将自己与其他人进行比较也很兴奋。 将自己与自己进行比较,因为您总是可以假装自己在Twitter上拥有知识和声音,但是如果您不了解它,那么它将对任何人都没有帮助。

I’ve used JavaScript professionally, get paid for it for years. I learned JavaScript when I wrote my first book about it, because then I couldn’t pretend any longer. I had to explain it. Teaching and documenting and describing is probably the best way of learning things. Instead, were just like, Oh, learn it and use it.

I've used JavaScript professionally, get paid for it for years. I learned JavaScript when I wrote my first book about it, because then I couldn't pretend any longer. I had to explain it. Teaching and documenting and describing is probably the best way of learning things. Instead, were just like, Oh, learn it and use it.

Describing what you do to other people means you’ve written something that is very very simple and very good to use. So make sure that you check that skill as well.

Describing what you do to other people means you've written something that is very very simple and very good to use. So make sure that you check that skill as well.

We’re seen as very antisocial people. I think that’s something that we need to break. If we’re seen as the geeks in the corner that code stuff and we give them a lot of money so they shut up, it’s not helping our market at all. We need to be seen as people who are just people, and should be in every meeting and in every decision — not only in the final rolling out of the product.

We're seen as very antisocial people. I think that's something that we need to break. If we're seen as the geeks in the corner that code stuff and we give them a lot of money so they shut up, it's not helping our market at all. We need to be seen as people who are just people, and should be in every meeting and in every decision — not only in the final rolling out of the product.

David: 大卫:

Very sound advice. No wonder everybody looks at you and thinks that you know everything.

Very sound advice. No wonder everybody looks at you and thinks that you know everything.

[Laughter]

[笑声]

How can our listeners find out more about you, and get a chance to see some of the things that you’ve presented, and read some of the stuff that you’re writing?

How can our listeners find out more about you, and get a chance to see some of the things that you've presented, and read some of the stuff that you're writing?

Christian: Christian:

I put everything on my blog, christianheilmann.com. I got my videos on YouTube as well. All my slides are on SlideShare. They’re are also creative commons, so you can reuse them if you want to. I also allow people to download my things and reuse them. That’s basically my main trick. Whatever I gave out, I gave out as creative commons or as open source — so if I get run over by a bus tomorrow, my knowledge lives on. I think that’s a very important thing to do.

I put everything on my blog, christianheilmann.com . I got my videos on YouTube as well. All my slides are on SlideShare . They're are also creative commons, so you can reuse them if you want to. I also allow people to download my things and reuse them. That's basically my main trick. Whatever I gave out, I gave out as creative commons or as open source — so if I get run over by a bus tomorrow, my knowledge lives on. I think that's a very important thing to do.

On Twitter I’m @codepo8 with an 8 at the end. That’s a very simple way to contact me. I will not be able to answer all the time. I’m incredibly busy, so please, if I don’t answer within a few days, I’m not angry at you, I just didn’t find the time because I’m somewhere in a hotel room or an airport or something like that.

On Twitter I'm @codepo8 with an 8 at the end. That's a very simple way to contact me. I will not be able to answer all the time. I'm incredibly busy, so please, if I don't answer within a few days, I'm not angry at you, I just didn't find the time because I'm somewhere in a hotel room or an airport or something like that.

I’m happy to discuss things and to go and help you present as well. A lot of my time right now is coaching people on public speaking, and coaching people on blogging, because I find that there’s an unhealthy competition of going up on stage and showing five hours of live coding that the audience then cannot repeat and didn’t understand but still are impressed with.

I'm happy to discuss things and to go and help you present as well. A lot of my time right now is coaching people on public speaking, and coaching people on blogging, because I find that there's an unhealthy competition of going up on stage and showing five hours of live coding that the audience then cannot repeat and didn't understand but still are impressed with.

I think we need to be better as communicators. I think with my background in radio journalism, and going into this world, I had a good head start that way, because I learned that whatever I say on radio, nobody listens to. It’s like people do it on the side. They drive or they’re ironing or they argue with their dog or something.

I think we need to be better as communicators. I think with my background in radio journalism, and going into this world, I had a good head start that way, because I learned that whatever I say on radio, nobody listens to. It's like people do it on the side. They drive or they're ironing or they argue with their dog or something.

I think we should partly think about the same way when we publish on the web. People are not hanging on every world that we do. Only the trolls do to try to actually quote it out of context. Other people are busy as well. Making your words count is a very important thing.

I think we should partly think about the same way when we publish on the web. People are not hanging on every world that we do. Only the trolls do to try to actually quote it out of context. Other people are busy as well. Making your words count is a very important thing.

David: 大卫:

Excellent advice. Of course, our listeners are hanging on every word here — not to troll us, because they know that we’re really good stuff.

Excellent advice. Of course, our listeners are hanging on every word here — not to troll us, because they know that we're really good stuff.

[Laughter]

[笑声]

Thank you so much for making the time to come and share your knowledge with everybody out here on the Versioning Show.

Thank you so much for making the time to come and share your knowledge with everybody out here on the Versioning Show.

Christian: Christian:

Not to worry. Be nice to each other out there. We are all humans. We all make mistakes. Make sure that you’re not discarding people just because you think they make mistakes.

不要担心。 Be nice to each other out there. We are all humans. 我们都会犯错。 Make sure that you're not discarding people just because you think they make mistakes.

Twitter is a terrible, terrible way to communicate feelings and ideas with each other. It’s a good way to get news out, and get people to try something out, but don’t be terrible to each other. Life’s too short for that.

Twitter is a terrible, terrible way to communicate feelings and ideas with each other. It's a good way to get news out, and get people to try something out, but don't be terrible to each other. Life's too short for that.

David[28:00]: 大卫[28:00] :

Good words to end on. Thank you so much!

Good words to end on. Thank you so much!

Christian: Christian:

You’re welcome.

别客气。

[Musical interlude]

[音乐插曲]

Tim: 蒂姆:

One thing that always inspires me about Christian is how much energy he has. He seems to appear at every sort of event, and every sort of podcast or writing an article here or releasing a new thing there. It’s inspiring. It inspires me because there’s so much to do and so much to work on within this field.

One thing that always inspires me about Christian is how much energy he has. He seems to appear at every sort of event, and every sort of podcast or writing an article here or releasing a new thing there. It's inspiring. It inspires me because there's so much to do and so much to work on within this field.

I really enjoyed getting to sort of understand where he’s coming from, and some of the things that he’s trying to solve right now.

I really enjoyed getting to sort of understand where he's coming from, and some of the things that he's trying to solve right now.

David: 大卫:

I know what you mean. As I was researching him in preparation for this show, I was trying to get an overview of what he’s been talking about, and it is so broad. He goes CSS this and JavaScript that, philosophy of this, employment … He goes in so many different directions.

我知道你的意思。 As I was researching him in preparation for this show, I was trying to get an overview of what he's been talking about, and it is so broad . He goes CSS this and JavaScript that, philosophy of this, employment … He goes in so many different directions.

It’s hard to get a sense of, is there a single focus, or is this just generally the good of the developer community?

It's hard to get a sense of, is there a single focus, or is this just generally the good of the developer community?

Tim: 蒂姆:

Yeah. The range of technical topics are so impressive. There’s a blog post of his that I still don’t understand. It’s condensing radio attributes toggled on or off into binary via specific bitwise operators.

是的 The range of technical topics are so impressive. There's a blog post of his that I still don't understand. It's condensing radio attributes toggled on or off into binary via specific bitwise operators.

I read it once and I was like, Yup, this is the thing. All right, good. Going to just keep that in case I ever need to do this one day in my job. Other than that, this is totally over the head for me.

I read it once and I was like, Yup, this is the thing. All right, good. Going to just keep that in case I ever need to do this one day in my job. Other than that, this is totally over the head for me.

David: 大卫:

I remember having a long conversation with some of my coworkers trying to figure out what is a practical application of bitwise operators in JavaScript. Ultimately I think we came out with calendering as something that could be a convenient use for it.

I remember having a long conversation with some of my coworkers trying to figure out what is a practical application of bitwise operators in JavaScript. Ultimately I think we came out with calendering as something that could be a convenient use for it.

The thing is, most of the JavaScript engines are not optimized for it because nobody uses bitwise operators. It’s mostly a back-end kind of a thing, although nowadays with back-end JavaScript, I’m imagining that’s going to be more of an issue.

The thing is, most of the JavaScript engines are not optimized for it because nobody uses bitwise operators. It's mostly a back-end kind of a thing, although nowadays with back-end JavaScript, I'm imagining that's going to be more of an issue.

Tim: 蒂姆:

Yeah. Right now, most of what I do is back-end JavaScript. There are probably applications for it, but I would probably run the other way if one of them showed up.

是的 Right now, most of what I do is back-end JavaScript. There are probably applications for it, but I would probably run the other way if one of them showed up.

David: 大卫:

We’ve got a whole audience full of listeners out there. Come tell us how you’re using bitwise operators in JavaScript. Impress us!

We've got a whole audience full of listeners out there. Come tell us how you're using bitwise operators in JavaScript. Impress us!

Tim: 蒂姆:

Yeah, and please provide a thorough and detailed explanation so I can maybe learn it.

Yeah, and please provide a thorough and detailed explanation so I can maybe learn it.

David: 大卫:

Take Chris’s advice, and teach what you know. You’ve got this information in your heads, and clearly the two of us don’t have it. We’re not the only ones. There are people out there who will be pleased and impressed if you can share something useful.

Take Chris's advice, and teach what you know. You've got this information in your heads, and clearly the two of us don't have it. We're not the only ones. There are people out there who will be pleased and impressed if you can share something useful.

What I like about that also, it’s something useful about fundamental JavaScript. Not something useful about the latest framework that may or may not be released in the next alpha version in six months. Something useful that applies across the board. It could be a really impressive thing to share with people.

What I like about that also, it's something useful about fundamental JavaScript. Not something useful about the latest framework that may or may not be released in the next alpha version in six months. Something useful that applies across the board. It could be a really impressive thing to share with people.

Tim: 蒂姆:

One thing I really liked when Chris was talking in regards to progressive enhancement was when he mentioned that JavaScript is this thing that we pretty much can depend on; that the whole goal of progressive enhancement is just to provide an experience that’s just not broken.

One thing I really liked when Chris was talking in regards to progressive enhancement was when he mentioned that JavaScript is this thing that we pretty much can depend on; that the whole goal of progressive enhancement is just to provide an experience that's just not broken.

What did you think about progressive enhancement in general, and what he had to say about it?

What did you think about progressive enhancement in general, and what he had to say about it?

David: 大卫:

It’s nice to hear it being given a more comfortable spin than what I’ve always heard. I’ve had the tendency to be a little put off by the people who promote progressive enhancement, because they will tend to promote standards that are kind of out of date, like this whole, If it doesn’t have JavaScript, it should still work and expect that JavaScript will be turned off.

It's nice to hear it being given a more comfortable spin than what I've always heard. I've had the tendency to be a little put off by the people who promote progressive enhancement, because they will tend to promote standards that are kind of out of date, like this whole, If it doesn't have JavaScript, it should still work and expect that JavaScript will be turned off.

I remember when that was true. That is no longer true. I think that today’s version of that is, Expect the network not to be available, or expect connectivity to be poor. Develop your application in such a way that it can accommodate a very slow network, and that it can still provide, if not full functionality, at least something that the user can understand and experience while offline.

I remember when that was true. That is no longer true. I think that today's version of that is, Expect the network not to be available, or expect connectivity to be poor. Develop your application in such a way that it can accommodate a very slow network, and that it can still provide, if not full functionality, at least something that the user can understand and experience while offline.

It’s 2016 right now, and I think that that’s the big challenge people are starting to try to grapple with around progressive enhancement.

It's 2016 right now, and I think that that's the big challenge people are starting to try to grapple with around progressive enhancement.

Tim[32:04]: Tim [32:04] :

My goals towards progressive enhancement … I work in ecommerce. The fundamental goal for any commerce application is that a user can purchase a product, right? My goal was always most applications that deal in ecommerce — when you click the Buy button, an Ajax request is sent with a product ID as a parameter and you get a response back. What I found was, when I initially started at my current company, there’s a very high JavaScript error rate, which meant that it was very likely that a user could not purchase a product in certain scenarios, because that core fundamental experience was powered by an Ajax request.

My goals towards progressive enhancement … I work in ecommerce. The fundamental goal for any commerce application is that a user can purchase a product, right? My goal was always most applications that deal in ecommerce — when you click the Buy button, an Ajax request is sent with a product ID as a parameter and you get a response back. What I found was, when I initially started at my current company, there's a very high JavaScript error rate, which meant that it was very likely that a user could not purchase a product in certain scenarios, because that core fundamental experience was powered by an Ajax request.

The whole fact that it was powered by JavaScript pretty much had nothing to do with progressive enhancement in a sense. I’m not saying that it wasn’t progressive because we used JavaScript to do it. It wasn’t a progressive solution because we didn’t have a fallback. We didn’t have a fix in place in case something broke. Anything could break, right?

The whole fact that it was powered by JavaScript pretty much had nothing to do with progressive enhancement in a sense. I'm not saying that it wasn't progressive because we used JavaScript to do it. It wasn't a progressive solution because we didn't have a fallback. We didn't have a fix in place in case something broke. Anything could break, right?

It could be malformed HTML so you don’t have an href attribute in your link, and then you can’t go to a product page. That’s an entirely JavaScriptless solution, or JavaScriptless issue. The problem that we were noticing was, we had a lot of JavaScript error rates due to maybe a lack of testing or developer error or third-party JavaScripts, or maybe a user downloaded a browser extension that polluted the global space and broke something, which can totally happen.

It could be malformed HTML so you don't have an href attribute in your link, and then you can't go to a product page. That's an entirely JavaScriptless solution, or JavaScriptless issue. The problem that we were noticing was, we had a lot of JavaScript error rates due to maybe a lack of testing or developer error or third-party JavaScripts, or maybe a user downloaded a browser extension that polluted the global space and broke something, which can totally happen.

I think the thing that I tried to get into my head was not to blame any specific technology for this. It was just to code defensively. When I talk about progressive enhancement, that’s the sort of thing that I try to remember. It’s not about, like, Oh, you don’t use this technology. It’s about code defensively. Code in such a way that when you’re working on the most unstable environment of all web development, it’s probably a good idea to have a fallback in some cases.

I think the thing that I tried to get into my head was not to blame any specific technology for this. It was just to code defensively. When I talk about progressive enhancement, that's the sort of thing that I try to remember. It's not about, like, Oh, you don't use this technology. It's about code defensively. Code in such a way that when you're working on the most unstable environment of all web development, it's probably a good idea to have a fallback in some cases.

So for us, where you click the button and it sends off an Ajax request, maybe turn that into a form, and if the Ajax request doesn’t work, a form submits. That has nothing to do with the idea of relying on JavaScript, but everything to do with making your application a little more defensive — in an increasingly volatile environment.

So for us, where you click the button and it sends off an Ajax request, maybe turn that into a form, and if the Ajax request doesn't work, a form submits. That has nothing to do with the idea of relying on JavaScript, but everything to do with making your application a little more defensive — in an increasingly volatile environment.

David: 大卫:

That increasingly volatile environment really is an issue, because right now, you depend on so many layers of technologies when you’re publishing something with the JavaScript. You’ve got the framework, you got the transpiler. You’ve got all of these things that are happening behind the scenes, and whether these things are dynamically generated or not.

That increasingly volatile environment really is an issue, because right now, you depend on so many layers of technologies when you're publishing something with the JavaScript. You've got the framework, you got the transpiler. You've got all of these things that are happening behind the scenes, and whether these things are dynamically generated or not.

These days, you have to know so much about your stack from top to bottom in order to be able to code defensively. That’s a very difficult proposition. I can’t tell you how often I’ve been in a situation … I can think of a couple of situations off the top of my head with some very major publishers with huge high-end products.

These days, you have to know so much about your stack from top to bottom in order to be able to code defensively. That's a very difficult proposition. I can't tell you how often I've been in a situation … I can think of a couple of situations off the top of my head with some very major publishers with huge high-end products.

For example, I was trying to click on a download for a preview for some software for a large company that makes photo manipulation software that shall not be named. The user interface for their site relied on the fact that the buttons were set to disabled. They used the disabled parameter inside of the HTML. I was able to go in and I was able to turn off the disabled parameter and download the preview because they had not checked.

For example, I was trying to click on a download for a preview for some software for a large company that makes photo manipulation software that shall not be named. The user interface for their site relied on the fact that the buttons were set to disabled . They used the disabled parameter inside of the HTML. I was able to go in and I was able to turn off the disabled parameter and download the preview because they had not checked.

That’s probably because they were operating in an environment where something was being generated dynamically for them, and that error checking was happening through a framework that they were using and they just didn’t know to check if somebody went in there and made that change, somebody would be able to get around that.

That's probably because they were operating in an environment where something was being generated dynamically for them, and that error checking was happening through a framework that they were using and they just didn't know to check if somebody went in there and made that change, somebody would be able to get around that.

Tim[35:42]: Tim [35:42] :

Just to nail the point home a little bit more, because I hear a lot form critics — I’m sure you do as well David — that it doesn’t make sense to talk about not writing any JavaScript. I write JavaScript maybe 98% of the time during my day job.

Just to nail the point home a little bit more, because I hear a lot form critics — I'm sure you do as well David — that it doesn't make sense to talk about not writing any JavaScript. I write JavaScript maybe 98% of the time during my day job.

It’s really not an issue of avoiding a specific technology. It has everything to do with checking things, testing really hard. When you make a web app and you pull it up on your phone, open six other tabs and three other apps. Make your CPU busy. See what happens. Try to break it.

It's really not an issue of avoiding a specific technology. It has everything to do with checking things, testing really hard. When you make a web app and you pull it up on your phone, open six other tabs and three other apps. Make your CPU busy. See what happens. Try to break it.

When you do successfully break it — and most of the time for me that’s as soon as I try to test it: first time running the code, it’s broken! As soon as that happens, I ask myself, How can I make this better? How can I make sure that even if I try really hard to cause an error here, how can I make this thing still work?

When you do successfully break it — and most of the time for me that's as soon as I try to test it: first time running the code, it's broken! As soon as that happens, I ask myself, How can I make this better? How can I make sure that even if I try really hard to cause an error here, how can I make this thing still work?

I think that’s the core of what the idea of progressive enhancement is trying to get at.

I think that's the core of what the idea of progressive enhancement is trying to get at.

David: 大卫:

I think you’re absolutely right, because it is about looking at the resiliency of what you’re doing and trying it in different environments. It’s part of what Chris was talking about with these companies that are trying to get coders to turn it around as fast as possible.

I think you're absolutely right, because it is about looking at the resiliency of what you're doing and trying it in different environments. It's part of what Chris was talking about with these companies that are trying to get coders to turn it around as fast as possible.

Yeah, you can turn it around as fast as possible, if you only follow the happy path. You only do the thing that you know works. You never test with the wide variety of variables and inputs and on different devices and in different contexts.

Yeah, you can turn it around as fast as possible, if you only follow the happy path. You only do the thing that you know works. You never test with the wide variety of variables and inputs and on different devices and in different contexts.

The problem is, you get a situation where you end up with something that’s very brittle, and the end user will suffer for that.

The problem is, you get a situation where you end up with something that's very brittle, and the end user will suffer for that.

Tim: 蒂姆:

Yeah, and here’s the thing. The term progressive enhancement would not exist if — and I’m just as guilty here so don’t … Pot calling the kettle black — the term would not exist if for everything that we built, we tested in low network speeds, we tested in different devices and different browsers and we tried to break it for every single time we released something.

Yeah, and here's the thing. The term progressive enhancement would not exist if — and I'm just as guilty here so don't … Pot calling the kettle black — the term would not exist if for everything that we built, we tested in low network speeds, we tested in different devices and different browsers and we tried to break it for every single time we released something.

If we did that, we wouldn’t have this term. This discussion would never occur. We are often plagued by deadlines or trying to impress others, or just getting a few more followers on Twitter … [clears throat]@VersioningShow! [Laughter] That’s why that happens.

If we did that, we wouldn't have this term. This discussion would never occur. We are often plagued by deadlines or trying to impress others, or just getting a few more followers on Twitter … [clears throat]@VersioningShow ! [Laughter] That's why that happens.

If we just tested more and relied less on the idea that, Oh, this came from GitHub and it has a lot of stars so it’s clearly not going to break, then this wouldn’t be a problem.

If we just tested more and relied less on the idea that, Oh, this came from GitHub and it has a lot of stars so it's clearly not going to break, then this wouldn't be a problem.

David: 大卫:

This kind of harkens back to some of the stuff Chris was talking about, about the whole developer community. He even suggested there may be technologies being developed out there so that people will have an excuse to go to conferences and talk about them and look smart.

This kind of harkens back to some of the stuff Chris was talking about, about the whole developer community. He even suggested there may be technologies being developed out there so that people will have an excuse to go to conferences and talk about them and look smart.

I don’t think he actually said that, but it was kind of an implied subtext.

I don't think he actually said that, but it was kind of an implied subtext.

Tim: 蒂姆:

It was implied.

It was implied.

David: 大卫:

Who among us has not been to a talk where something looked really cool and then you went home and it was like, How did that person do that magic? I’m never going to bother with that because it’s too complex or too esoteric or the technologies are not something that you can apply immediately in what you’re doing today.

Who among us has not been to a talk where something looked really cool and then you went home and it was like, How did that person do that magic? I'm never going to bother with that because it's too complex or too esoteric or the technologies are not something that you can apply immediately in what you're doing today.

One of the things that he said that really caught my attention was this issue of being seen as the guru who has to know everything about everything. I’ve found at least once or twice in a situation where I’ve been in, like a job interview, and somebody’s asked me about, What is the Big O notation for this? It’s like, I have no idea what that is. That’s not what I studied. There’s never been a reason for me to apply that in my work, and yet people sometimes expect me to know these things, because there’s so much going on, but you have to know everything.

One of the things that he said that really caught my attention was this issue of being seen as the guru who has to know everything about everything. I've found at least once or twice in a situation where I've been in, like a job interview, and somebody's asked me about, What is the Big O notation for this? It's like, I have no idea what that is. That's not what I studied. There's never been a reason for me to apply that in my work, and yet people sometimes expect me to know these things, because there's so much going on, but you have to know everything.

Tim: 蒂姆:

I really like where Chris touched on the idea of hiring people smarter than you. I have to honest, hearing that it almost sounds like, Oh no. Why would I do that? When you really think about it, of course you want to hire people smarter than you. That’s how you get better. That’s how you learn. That’s what motivates you to try new things and enjoy your job more.

I really like where Chris touched on the idea of hiring people smarter than you. I have to honest, hearing that it almost sounds like, Oh no. Why would I do that? When you really think about it, of course you want to hire people smarter than you. That's how you get better. That's how you learn. That's what motivates you to try new things and enjoy your job more.

David: 大卫:

Yeah. I don’t want to work with people who are dumber than me.

是的 I don't want to work with people who are dumber than me.

Tim: 蒂姆:

Maybe it’d be hard to find people who are dumber than me [chuckles], but you know what, at least in this job I’ve had some of the best experiences working with people who are the most different from me.

Maybe it'd be hard to find people who are dumber than me [chuckles] , but you know what, at least in this job I've had some of the best experiences working with people who are the most different from me.

David: 大卫:

It is all about the people, honestly. It’s nice to get reminded that the community — the network, the people — really is what it all comes down to when your doing this web development. We spend all of our time staring at out computer screens, but honestly, it really is about the people that you work with, and about the interactions and the communication.

It is all about the people, honestly. It's nice to get reminded that the community — the network, the people — really is what it all comes down to when your doing this web development. We spend all of our time staring at out computer screens, but honestly, it really is about the people that you work with, and about the interactions and the communication.

Tim: 蒂姆:

We build the software for the people. I think that’s also another important thing to remember. If accessibility and really caring about who is going to be looking at this thing that we built, I think we would be more inclined to test more. We would be more inclined to make sure stuff doesn’t break under the slightest bit of stress.

We build the software for the people. I think that's also another important thing to remember. If accessibility and really caring about who is going to be looking at this thing that we built, I think we would be more inclined to test more. We would be more inclined to make sure stuff doesn't break under the slightest bit of stress.

David: 大卫:

That is an excellent note to end on. I think this has been a wonderful show. I’m really pleased with Chris. I’m hoping to hear back from the audience about what they thought of this.

That is an excellent note to end on. I think this has been a wonderful show. I'm really pleased with Chris. I'm hoping to hear back from the audience about what they thought of this.



Thank you so much for listening, everybody. We always enjoy talking technology with all of you.

Thank you so much for listening, everybody. We always enjoy talking technology with all of you.

Tim: 蒂姆:

We would also like to thank SitePoint.com, and our producers, Adam Roberts and Ophelie Lechat, with production help from Ralph Mason. Please feel free to send us your comments on Twitter — @versioningshow — and give us a rating on iTunes to let us know how we’re doing.

我们还要感谢SitePoint.com以及我们的制作人Adam Roberts和Ophelie Lechat,以及Ralph Mason的制作帮助。 请随时在Twitter( @versioningshow)上向我们发送您的评论,并在iTunes上给我们评分 ,让我们知道我们的情况。

David: 大卫:

We’ll see you next time, and we hope you enjoyed this version.

下次见,我们希望您喜欢这个版本。

翻译自: https://www.sitepoint.com/versioning-show-episode-15-with-christian-heilmann/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值