栈溢出 栈内存溢出
This article is part of a web development series from Microsoft. Thank you for supporting the partners who make SitePoint possible.
本文是Microsoft的Web开发系列的一部分。 感谢您支持使SitePoint成为可能的合作伙伴。
In a few talks and interviews I lamented about a phenomenon in our market that’s always been around, but seems to be rampant by now: the one of the Full Stack Overflow developer. Prompted by Stephen Hay on Twitter, I shall now talk a bit about what this means.
在一些谈话和访谈中,我为我们市场上一直存在但现在似乎很猖ramp的一种现象感叹: Full Stack Overflow开发人员之一 。 由斯蒂芬·海伊(Stephen Hay)在Twitter上提出的建议 ,我现在要谈一谈这意味着什么。
Full Stack Overflow developers work almost entirely by copying and pasting code from Stack Overflow instead of understanding what they are doing. Instead of researching a topic, they go there first to ask a question hoping people will just give them the result.
完整的Stack Overflow开发人员几乎完全通过复制和粘贴来自Stack Overflow的代码来工作,而不是了解他们在做什么。 他们没有去研究主题,而是去那里提出一个问题,希望人们能给他们结果。
In many cases, this works out. It is amazing what you can achieve by pasting things you don’t understand, that people who know what they are doing put out there.
在许多情况下,这是可行的。 通过将不了解的内容粘贴到知道自己在做什么的人那里,您可以实现惊人的结果。
I am not having a go at Stack Overflow here. It is an incredible resource and it is hard to create a community like this and not drown in spam and mediocrity (trust me, I am an admin on several technical Facebook groups).
我在这里没有Stack Overflow的机会。 这是一种令人难以置信的资源,很难创建这样的社区,并且不会淹没在垃圾邮件和平庸的环境中(相信我,我是Facebook几个技术组的管理员)。
We had that problem for a long time. I challenge anyone learning PHP to not simply copy the code examples in the notes. For years, code reference sites have given us answers we wanted, but didn’t need. Heck, even Matt’s Script Archive is probably the source for many a spam mailer as people used formmail.pl without knowing what it does.
我们有这个问题很久了 。 我挑战学习PHP的任何人,而不是简单地复制注释中的代码示例。 多年以来,代码参考站点已经为我们提供了我们想要但不是必需的答案。 哎呀,甚至Matt的脚本档案馆也可能是许多垃圾邮件发件人的来源,因为人们在使用formmail.pl时却不知道它的作用。
I am, however, worried about how rampant this behaviour is today. Of course, it is understandable:
但是,我担心今天这种行为猖ramp。 当然,这是可以理解的:
We, as a community, are partly to blame for breeding this kind of developer:
我们作为一个社区,部分地应归咎于培育此类开发人员:
Of course, you can call me a grumpy old so-and-so now and tell me that the concept of learning the basics in software is an outdated concept. The complexity of today’s products makes it almost impossible to know everything and in other, highly successful environments using lots of packages and libraries is par for the course. Fine, although we seem to be understanding that software as a whole might be more broken than we care to admit, and this might be one of the causes.
当然,您现在可以这样称呼我为脾气暴躁,并且告诉我,学习软件基础知识的概念已经过时了。 当今产品的复杂性使得几乎不可能一无所知,而在其他非常成功的环境中,使用许多软件包和库则是本课程不可或缺的部分。 很好,尽管我们似乎了解到 软件整体可能比我们所承认的更坏 ,这可能是原因之一。
There are several problems with Full Stack Overflow development:
Full Stack Overflow开发存在几个问题:
It perpetuates the fondness we have for terseness over writing understandable code. The smallest solution – however unreadable – is always the one that wins the thread. As people copy and paste them without understanding, that’s fine by them. For debugging and maintenance, however, it is the worst solution. A great example for this is the use of || for default parameters. Short isn’t better, it is just less work.
它使我们对编写简洁易懂的代码的简洁性情有独钟。 最小的解决方案(尽管难以理解)始终是赢得线程的解决方案。 当人们在不了解的情况下复制和粘贴它们时,这很好。 但是,对于调试和维护,这是最糟糕的解决方案。 一个很好的例子是使用||。 用于默认参数 。 短不是更好,只是更少的工作。
The biggest problem, however, is that it is bad for the developers themselves.
但是,最大的问题是对开发人员本身不利。
Going on the web, finding a solution and copying and pasting it is easy – too easy. There is no effort in it, and it is not your work – it is someone else’s. Instead of being proud of what you achieved, you are more likely to stress out as you don’t want to be found out as a phoney who uses other people’s work and sells it as your own.
上网查找解决方案并将其复制和粘贴很容易-太容易了。 无需付出任何努力,这不是您的工作,而是别人的工作。 与其为自己所取得的成就感到骄傲,不如说自己不想被别人当作别人使用自己的作品并出售给他人而成为别人的话,那么您更有可能感到压力。
Repetition is anathema to a lot of developers. Don’t repeat yourself (DRY) is a good concept in code, but for learning and working it is a terribly idea. We need repetition, to build up muscle memory. The more you repeat a task, the easier it gets and your body does it without you having to think about it.
对于许多开发人员而言,重复是令人厌恶的。 不要重复自己(DRY)在代码中是一个好概念,但是对于学习和工作来说,这是一个非常糟糕的想法。 我们需要重复,以建立肌肉记忆。 重复执行的任务越多,任务就越容易完成,而您的身体无需考虑即可。
When you started driving a car, you probably sat down on the seat and got utterly overwhelmed by all the gears, levers, pedals and things to pay attention to. After a while, you don’t even think about what you are doing any longer, and even switching from right- to left-hand drive is not an issue. Failing and learning from it is something we retain much better than simply using something. We put more effort in, it feels more worthy.
当您开始开车时,您可能坐在座位上,完全被所有齿轮,杠杆,踏板和要注意的东西所淹没。 过了一会儿,您甚至不再考虑自己在做什么,甚至从右驱动切换到左驱动也不成问题。 失败和从中学习是我们保留的东西,远比单纯使用它要好得多。 我们付出了更多的努力,感觉更值得。
Dan Ariely’s TED Talk “What makes us feel good about our work” has some incredibly good points about that topic:
丹·阿里利(Dan Ariely)的TED演讲“什么使我们对工作感到满意”对这个话题有一些难以置信的好处:
Recognition is what we crave as humans. And we can’t get recognition if we don’t own what we do. You can totally get by copying and pasting and using solution after solution and abstraction upon abstraction. But, sooner or later, you will feel that you are not achieving or creating anything. Many developers who worked like that burned out quickly and stopped developing, stopped caring. And that is a big loss as you might be the person to come up with the next great idea that changes things for a lot of us. That’s an option you shouldn’t rob yourself of. Don’t be a Full Stack Overflow developer. You deserve to be better.
认可是我们作为人类所渴望的。 如果我们不拥有自己的工作,就无法获得认可。 通过在解决方案和抽象后的抽象之间进行复制,粘贴和使用解决方案,您将完全可以得到。 但是,迟早您会感到自己没有实现或创造任何东西。 许多这样工作的开发人员很快就精疲力尽,停止开发,停止关心。 这是一个巨大的损失,因为您可能是想出一个改变我们很多人的好主意的人。 这是您不应该抢夺自己的选择。 不要成为全栈溢出开发人员。 你应该变得更好。
This article is part of the web development series from Microsoft tech evangelists on practical JavaScript learning, open source projects, and interoperability best practices including Microsoft Edge browser and the new EdgeHTML rendering engine.
本文是Microsoft技术传播者开发的Web开发系列文章的一部分,内容涉及实用JavaScript学习,开源项目以及互操作性最佳实践,包括Microsoft Edge浏览器和新的EdgeHTML呈现引擎 。
We encourage you to test across browsers and devices including Microsoft Edge – the default browser for Windows 10 – with free tools on dev.modern.IE:
我们鼓励您使用dev.modern.IE上的免费工具跨浏览器和设备进行测试,包括Microsoft Edge(Windows 10的默认浏览器):
Scan your site for out-of-date libraries, layout issues, and accessibility
扫描您的站点以查找过期的库,布局问题和可访问性
Use virtual machines for Mac, Linux, and Windows
在Mac,Linux和Windows上使用虚拟机
Remotely test for Microsoft Edge on your own device
在您自己的设备上远程测试Microsoft Edge
Coding Lab on GitHub: Cross-browser testing and best practices
GitHub上的编码实验室:跨浏览器测试和最佳实践
In-depth tech learning on Microsoft Edge and the Web Platform from our engineers and evangelists:
我们的工程师和宣传人员在Microsoft Edge和Web平台上进行了深入的技术学习:
Microsoft Edge Web Summit 2015 (what to expect with the new browser, new supported web platform standards, and guest speakers from the JavaScript community)
Microsoft Edge Web Summit 2015 (新浏览器,新支持的网络平台标准以及来自JavaScript社区的嘉宾演讲者会期待什么)
Woah, I can test Edge & IE on a Mac & Linux! (from Rey Bango)
哇,我可以在Mac和Linux上测试Edge和IE! (来自Rey Bango)
Advancing JavaScript without Breaking the Web (from Christian Heilmann)
在不中断网络的情况下推进JavaScript (来自Christian Heilmann)
The Edge Rendering Engine that makes the Web just work (from Jacob Rossi)
使Web正常工作的Edge渲染引擎 (来自Jacob Rossi)
http://dev.modern.ie/tools/vms/windows/?utm_source=SitePoint&utm_medium=article50&utm_campaign=SitePoint
http://dev.modern.ie/tools/vms/windows/?utm_source=SitePoint&utm_medium=article50&utm_campaign=SitePoint
Unleash 3D rendering with WebGL (from David Catuhe including the vorlon.JS and babylonJS projects)
使用WebGL释放3D渲染 (来自David Catuhe,包括vorlon.JS和babylonJS项目)
Hosted web apps and web platform innovations (from Kevin Hill and Kiril Seksenov including the manifold.JS project)
托管的Web应用程序和Web平台创新 (来自Kevin Hill和Kiril Seksenov,包括歧管 .JS项目)
More free cross-platform tools & resources for the Web Platform:
Web平台的更多免费跨平台工具和资源:
Visual Studio Code for Linux, MacOS, and Windows
适用于Linux,MacOS和Windows的Visual Studio代码
Code with node.JS and free trial on Azure
使用node.JS进行代码和Azure上的免费试用
翻译自: https://www.sitepoint.com/full-stack-overflow-developer/
栈溢出 栈内存溢出