4 ms·
I've always gone for the ones who really knew one language inside and out. The reason is actually very simple, they have demonstrated exceptional skill to dive
by weixiyen 12y ago
I've always gone for the ones who really knew one language inside and out. The reason is actually very simple, they have demonstrated exceptional skill to dive deep into one language, so they should be able to do the same in another language.
The jack-of-all-trades people usually are much riskier hires as they don't always understand how deep they can go in any particular language, thus are unable to fully assess what they don't know, and require much more guidance as a result.
- seanwilson 12y agoSo my reasoning is that if you know some Java you can pick up C# easily, if you know some JavaScript you can pick up Python easily etc. If you've stuck to a single language, it's going to take you much longer as you're having to learn new concepts and it's also rare I work on projects where only a single language is being used. Everyone should aim to learn enough languages that they have at least some experience of OOP, functional programming, dynamic types, strong types and SQL in my opinion.
- iopq 12y agoDo you REALLY care if someone knows how to make the PHP interpreter segfault? How to create garbage collection cycles in the JS interpretter? etc. What does knowing a language inside and out really gain? "Oh yeah, Java totally does covariance in generics by default, but not contravariance" Is this really useful knowledge?
- drcomputer 12y agoI don't agree with that. If you understand the mathematics and computational foundations, then you already have the depth of programming languages in an abstract form. You might choose to pick up new languages because you want to learn how others elegantly can solve the same problem on a different level of the machine. Then you can apply similar techniques in whatever language paradigm you have to work in, while also understanding the pros and cons of such a thing (are you just mimicking the paradigm or on what gradient is the implementation correct? What can you assume now from tweaking the language?) A programming language is not really a separate thing from the machine. It's useful to think about them in this way because it makes the knowledge simple and easier to make fast assumptions given some 'correct usage' of the language with regard to the specification and design of it. It's just different stuff that each programmer has to pick up as they go. Everyone who is building anything has to do some thinking while they are building and do some remembering while they are building. I find when you reduce all technology to this level, it becomes very hard to determine what proficiency is. Every bit of knowledge and piece of experience is potentially valuable at the same level.
- autokad 12y agoIn my experience, although not very large, people who only know one language do so because they stick to things in their comfort level. they are also disadvantaged in environments where projects vary quite a deal. certain environments have different communities supporting them, making them better for certain tasks. an example, a ASP/ASP.NET developer (only thing) of 10+ years couldn't do something over 6 months that I did in a week. That something involved web pages, polling data through a restful interface, projecting coordinates, tweeting, and a few other moving parts.
- seanwilson 12y agoThat's why I prefer a so called jack of all trades to a one tricky pony. I've worked on mobile projects where I've had to switch between Java, Objective-C, JavaScript, Bash, SQL and Python in a single day to add new features. Knowing, for example, obscure details about Java you rarely need and could Google for anyway isn't as useful as being flexible.
- vinceguidry 12y agoThat's how I find myself conducting my own personal development. The deeper I dive into Ruby, the more I find myself able to hold my own in conversation with my friend the graybeard C++ guy whose been doing it longer than I've been alive. He'll describe something he's trying to do and I'll be able to immediately find an analogue in Ruby. I'll get a sense for how Ruby exists in the general evolution of programming languages and what it tries to solve. The experience makes me more aware of the problems that Ruby tries to solve so that I can use it better. I see a lot of people who know three or four languages, but don't understand any of them really well or the underlying concepts. Or they'll focus over-heavily on the algorithmic side of the craft and neglect maintainability and readability. I see a lot of Ruby that looks like C. When I finally do start branching out and learning new languages, it will be on a totally different level. I'll be diving into the entire ecosystem of the language and not just struggling at the surface. But before that, I want to learn how Rails really works. I think I understand the difference between a library and an application, now I want to understand what a framework is and how one is built and maintained.
- barrkel 12y agonow I want to understand what a framework is I'll short-circuit that one for you right now: you call a library, a framework calls you - it figures out how by some combination of convention and configuration. Libraries put you in control, frameworks make you cede control. You can usually mix and match libraries, whereas you can only use one framework at a time comfortably.
- vinceguidry 12y agoSo is jQuery a library or a framework? I've seen it called, and used, both ways. It's not a hard and fast definition, and that's what I mean by "really understanding" something. I want the things I build to be able to be used in any way that it would be useful. It's the fractal landscape at the boundary between the definitions that I'm interested in. I find myself refactoring code a lot, pulling pieces out and putting them elsewhere. Sometimes I think, "this piece would be better as a gem", or that "this gem needs to be its own application. When I think about the overall thrust of what I'm doing, I get the sense that I'm building a framework. I need to be able to work web applications into the framework, and the only framework worth really using in this fashion is Rails. But Rails isn't intended to be included as you would a library. I need to understand it better if I'm going to be able to work it into my own framework.