多专业化好还是单专业化好?
我注意到很多发布的职位要求申请人了解多种语言或技术。尤其是我在网络开发中发现了这一点。我真的不喜欢这样,因为你越专注于几件事,你对每一件事的实际了解就越少。我认识到,当你可以付钱给一个人做很多事情时,这对底线是有好处的,但是对于劣质服务(这并不是他们的错)来说值得吗?一本好的读物是像 这个。
它表明,你同时处理多项任务的次数越多,你所做的工作质量就越差。
这是我的问题。我真的很想只专注于几件事,因为我喜欢擅长我所做的事情,当我告诉别人我可以做他们想做的事情时,我不想撒谎。如果我在许多技术领域工作,那么在某些事情上更加专业会让我更难找到工作吗?
第二点。我的父亲是一名 DBA,他告诉我,我会感到震惊的是,有多少人只学到了足以欺骗雇主的东西,他们知道这些东西,然后在被雇用后才学习。然后他告诉我,也许如果我需要的话,我也应该这样做。我不喜欢它,只想申请我自信知道该怎么做的工作。我认为这是正确的事情,但我很难找到工作,而撒谎的人却更容易找到工作。这是我总是要面对的事情吗?从长远来看,更多地专注于某些事情对我来说会更好吗?
我想有趣的事情,只是想从经验丰富的开发人员那里了解。我今年 21 岁,专攻 html/css、javascript 和 python。我也知道一些 lisp 的东西,但只是涉猎。
谢谢大家
I've noticed a lot about jobs being posted that require the applicant to know several languages or technologies. Especially I find this with web development. I don't really like this considering the point that the more you specialize in several things the less you actually know about each one. I recognize that this is good for the bottom line when you can pay one person to do many things, but is it worth it for inferior service which isn't really their fault? A good read is research like this.
It shows that the more you multitask the worse quality work you do significantly.
Here's my question. I would really like to only specialize in a few things, because I like to be good at what I do and I don't want to lie when I tell someone I can do what they want. Will being more specialized in a few things make it harder for me to find a job then if I worked in many technologies?
A second point. My father is a DBA, he tells me that I would be shocked at the number of people who only learn enough of something to trick the employer they know it and then learn it after being hired. He then told me maybe if I needed to I should do the same. I don't like it and only want to apply at jobs I confidently know how to do. I see this as the right thing, yet I have trouble finding jobs while people who lie find them easier. Is this something I'm always going to have to deal with, will specializing more in a few things be better for me in the long run?
Interesting things I guess, just wanted to know from experienced developers. I'm 21 and specialize in html/css, javascript, and python. I also know some lisp stuff but just dabbling.
Thanks guys
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
不幸的是,科技行业有很多人确实试图袖手旁观。他们中的许多人会尽最大努力学习足够的知识来通过认证考试,以填补他们认为可以轻松赚钱的职位。有很多 DBA 符合这种描述,因为大多数经理并不真正了解 DBA 的期望或要求。
就发展而言,原则才是最重要的。一旦您理解了 OOP 和其他范式的概念,用这些理解来填补一个职位,您就可以与竞争同一职位的 80% 的市场竞争者处于同一水平。有很多专家不了解开发的基本原理,只是在某个职位上工作了足够长的时间来声称拥有专业知识,或者他们参加了一些课程或认证计划。大多数时候,一个优秀的通才能够像那些专家一样表现和交付。
当然,这是基于我自己的经验和全面的概括。大多数时候,这就是向无知的管理层和人力资源人员推销自己,他们会寻找流行语、认证和学位。通常直到第二次面试或内部评估时,您才能找到能够真正评估某人的历史和对开发工作的理解的技术人员。
那么,你应该专业化吗?嗯,您需要这样做才能实际了解开发的一般原则。所以,你最终会专注于某件事。但更重要的是,当您学习专业化的更深层次部分时,了解一般原则。如果没有真正理解这些概念,那么专业化会让你处于与大型机时代的 COBOL 和 RPG 程序员相同的境地。你选择进入一个变化非常快的领域,而为了专业而专业会让你在一家无聊的大公司里陷入一个没有出路的工作。您的思维能力越敏捷,对开发范例的理解越深刻,您就越能自由地随时随地工作。
Unfortunately, there are a lot of people in the tech industry that do try to just skate by. Many of them will go as far as learn enough to pass a certification exam to fill the roll they think will get them easy money. There are a lot of DBAs that fit that description, because most managers don't really know what is expected or required of a DBA.
As far as development goes, the principles are what are really important. Once you understand the concepts of OOP and other paradigms, filling a role with those understandings puts you at the same level as 80% of the market competing for the same position. There are a lot of specialists out there that do not understand the basic principles of development, and have simply filled a role long enough to claim expertise, or they took some course or accreditation program. Most times, a good generalist will be able to perform and deliver just as well as those specialists.
Granted this is based on my own experiences, and on sweeping generalizations. Most of the time it comes down to selling yourself to the ignorant management and HR people, which will be looking for the buzzwords, certifications, and degrees. It's usually not until a second interview or internal evaluation do you get to the technical individual that can truly evaluate someone's history and understanding when it comes to development work.
So, should you specialize? Well, you're going to need to in order to have practical understand of the general principles for development. So, you'll end up specializing in something. But it is more important that while you're studying the deeper parts of a specialization, to understand the general principles. Specializing, without a true understanding of the concepts will put you in the same position as the COBOL and RPG programmers of the mainframe days. You're choosing to move into a field that changes very quickly, and specialization for specialization sake will get you stuck in a dead-end job at a big boring company. The more agile your mental capabilities and understand of the development paradigms is, the more freedom you'll have to work where and when you want.
您误用了“多任务”这个词。多任务处理是指尝试同时做多件事情,而不是使用多种语言。
我绝不会雇用自称是任何语言“专家”的人。对我来说,这个词的意思就是“拥有极其有限的专业知识”。编程语言并不是拥有无限专业知识的领域,专业化会让你比其他任何人都更好。
我也不想听到任何语言的焦点,因为学习一门语言并不是专业程序员的成就;而是学习语言。这是例行公事。流利地理解 JavaScript 及其浏览器 API 需要几天的工作——如果有人夸大其词,好像这是几个月艰苦训练的结果,那就告诉我他们可能缺乏经验。
You're misapplying the word "multitask". Multitasking is trying to do multiple things at once, not using multiple languages.
I'd never hire someone that called himself a "specialist" at any language. To me, the word means nothing but "having a fatally limited range of expertise". Programming languages aren't fields with boundless levels of expertise, where a specialization will make you better than anyone else.
I also don't want to hear about a focus in any language, because learning a language isn't an accomplishment for a professional programmer; it's routine. A fluent understanding of JavaScript and its browser APIs is a few days of work--if someone overstates it, as if it's the result of hard months of training, that tells me it they're probably inexperienced.
关于 Web 开发:Web 开发人员的一般定义是(至少)了解 HTML、JS、可能是 JS 框架(如 jQuery)、CSS、服务器端语言(在您的情况下是 Python)并且可能至少了解的人一个服务器端框架(Django?我不使用 Python 进行任何 Web 开发)。那里有四五种语言。
也就是说,您在单一语言中学到的 99% 都适用于另一种语言。我的大部分工作都是用 Java 和 PHP 完成的,但本周我开始学习 C++ 课程,两天之内我就编写了小型 OO 应用程序。这主要是因为 PHP 和 Java 所做的许多事情都是从 C++ 借鉴而来的,但同样的事情也适用于大多数现代语言。我的应用程序的生产质量好吗?当然不是,我仍然需要练习,但不要认为仅仅因为某人精通五六种语言,他们就会自动编码得更糟糕;事实上,我认为事实可能恰恰相反;您将学会在使用不同语言时以不同的方式看待事物,从而全面改进您的代码。
With regards to web development: the general definition of Web Developer is someone who knows (at least) HTML, JS, probably a JS framework (like jQuery), CSS, a server side language (in your case, Python) and probably at least one server side framework (Django? I don't do any web develoment in Python). That's four or five languages right there.
That said, 99% of what you learn in a single language is applicable to another language. I do most of my work in Java and PHP, but I started learning C++ for a class this week, and within two days I was writing small OO applications. This was primarily because many of the things that PHP and Java do, they took from C++, but the same can really go for most modern languages. Were my apps production quality? Of course not, I've still got practice to do, but don't assume that just because someone is proficient in five or six languages that they'll automatically code more poorly; in fact I'd argue the opposite is probably true; you'll learn to look at things differently when using different languages, and as a result improve your code all-around.
显然,雇主希望员工掌握多种语言,越多越好,这样开发人员的任务就可以更加灵活。在我看来,精通几种语言是一个明确的优势(如果通常需要这些语言),但了解多种语言也是如此。
如果您专门研究 Python,那么了解 OOP PHP、C# 或 Java(或其他典型的 Web 语言)意味着您可以在需要该语言时轻松适应。如果您不了解这些语言,那么当需要这些技术时,学习曲线将会变得更加困难。作为 Web 开发人员,无论服务器端语言如何,HTML/CSS/JavaScript 都很重要。
流行的服务器端语言通常非常相似。如果您阅读一些有关其他语言的书籍,您将对它们的语法和做事方式有所了解,并且在需要时能够相当快地掌握该语言。
It's obvious that employers would like employees with knowledge of multiple languages, the more the better, so the developers can be more flexible in their assignments. In my opinion, specialization in a few languages is a definite plus (if these languages are typically needed), but so is knowledge of multiple languages.
If you're specialized in python, having knowledge of OOP PHP, C# or Java (or other typical web languages) means you can easily adapt if the language is needed. If you have no knowledge of these languages, the learning curve will be substantially harder if those technologies are needed. As a web developer HTML/CSS/JavaScript is important regardless of server-side language.
The popular server-side languages are often fairly similar. If you read a few books on other languages, you will get a feel for their syntax and way of doing things, and will be able to pick up the language fairly quickly if needed.
即使在 Web 开发中(特别是在 Python 世界中),也有一些项目试图将单一语言用于所有目的,例如 Pyjamas。它基于 Google 在 Java 中实现的相同理念,GWT。所以肯定存在一些从开发中摆脱混合的倾向。
至于找到这样的工作,通常取决于你说服别人的能力,而不是实际的知识。例如,您肯定可以找到愿意使用 Pyjamas/GWT 进行 Web 开发的人。
Even in web development (and in python world in particular) there are projects which try to utilize single language for all purposes, like Pyjamas. It is based on same idea implemented in Java by Google, GWT. So there are definitely some tendencies to get rid of the mix from development.
As for finding such job, usually it depends on your ability to persuade people rather than actual knowledge. You definitely could find someone willing to use Pyjamas/GWT for the web development, for example.
你确实意识到有多少东西可以堆叠在一起,但有些人只是认为它们都是一件事,对吗?例如,在我的 Web 开发世界中,后端可能有一些 MS-SQL 服务器,一些 C# 中间层内容,一些前端 ASP.Net 也在 C# 中,XSLT 用于 Sitecore 使用的一些页面渲染环、页面的 HTML/CSS 以及一些 Javascript 和 jQuery,所有这些都组合在一起成为一个网页,有些人可能看不到所有这些技能组合在一起。虽然可能有一些 Web 开发人员可以坚持使用单一堆栈,但我不确定其中有多少人真正适应周围的环境以及雇主可能希望他们使用的内容。
其次,您确实意识到大多数地方可能都有您可能不立即了解的编码标准和实践,对吗?当您弄清楚什么在该环境中有效、什么无效时,可能需要一段时间的调整。虽然有些做法可以很容易地转变,但知道变化几乎总是即将到来并不一定是一个坏观点。
你总是要面对世界上一定数量的谎言和废话。我能看到的唯一异常现象是,如果您在学术界或微软或谷歌的某个研究部门工作,那么您在某种意义上并没有经历过现实世界中发生的事情。有人可能会说他们想要一个执行 X 功能的应用程序,而您将其交付给以下响应:“嗯,你知道,我真的也希望 Y 和 Z 也在那里。当我发送请求时,您不知道这一点吗?”
最重要的是,知道什么对你最有效。是结构、特定工具、特定实践还是其他什么?只有您才能知道什么适合您,并且可能需要数年时间才能找到能够欣赏这一点的地方。
You do realize how many things can be stacked together yet some people just think it is all one thing, right? For example, in my web development world there can be some MS-SQL servers in the back-end, some C# middle-tier stuff, some front-end ASP.Net also in C#, XSLT for some of the page renderrings used by Sitecore, the HTML/CSS of the pages along with some Javascript and jQuery that all comes together to be a web page that some may not see all of those skills coming together. While there may be some web developers that can stick to a single stack, I'm not sure how many of those there are really as many people just adapt to what is around them and to what employers may want them to use.
Secondly, you do realize that most places may have coding standards and practices you may not know right off the bat, right? There can be a period of adjustment while you figure out what works and doesn't work in that environment. While some practices can transition pretty easily, knowing that change is almost always right around the corner isn't necessarily a bad view to have.
You will always have to deal with a certain amount of lies and BS in the world. The only anomaly I can see would be if you worked in either academia or some research branch of Microsoft or Google where you don't experience what goes on in the real world in a sense. Someone may say they want an application that does X and you deliver that to a response of, "Well, ya know, I really wanted Y and Z in there too. Didn't you know that when I sent in the request?"
Bottom line, know what works well for you. Is it structure, specific tools, specific practices, or something else? Only you can know what works for you and it may take years to find the place that can appreciate this.