6 ms·
I was at conference recently talking to a group of "developers" and one finally asked, so what kind of language requirements do you have of the people you hire.
by necro 15y ago
I was at conference recently talking to a group of "developers" and one finally asked, so what kind of language requirements do you have of the people you hire. I answered that I don't really have any requirements of the specific language. They all looked at each other and nodded, oh, so you must not be too advanced as you are not looking for people with experience in new advanced languages. I was a little surprised because I was thinking the EXACT opposite. I work with _developers_. I don't really give a shit what syntax they prefer of are used to. If you can create your own framework error handling, message queues, custom db libs, etc then that is useful. A real dev can pick up a new language and syntax in a week, so just because you can write hello world in 10 languages or use some rails ORM to output some stuff does not make you a developer.
It's all starting to take me back to my youth watching Robotech and remembering the Zentradi, an advanced race with awesome technology and tools that were developed for them generations ago, but none of the understood how any of it worked or how to fix it, they could only use it. If it broke, they just start over with a new copy instead of debugging it. I hope that the our new generation wont end up like that.
I recently interviewed a recent CS grad that had no idea of the correlation of array of characters and pointers to those characters. You know that it's all just addresses to memory, right?
Anyway, of course there are those who truly dissect and get all the languages and their benefits but are few and between.
Give me a dev that "gets it" in one language any day, instead of someone who thinks remembering the function call or some syntax in 10 languages is of value.
If I hire someone here is how I rank them...
1. 5 years experience in C
2. 5 years experience in PHP
3. 5 years experience in Rails
4. 5 years experience in Rails, Python, erlang, java, php, c, other languages dujour.
Ok, there are people that are just picking up PHP and don't know squat, but at least they know they are beginners and are teachable.
- dhx 15y agoYou don't need 5 years of experience in any single language to have a solid understanding of the fundamentals of computing and programming. I'd rather hire someone that can give you an approximate assembly of a C function (as executed by a CPU), understand how XML documents are stored in memory for efficient querying and parsing, know how to avoid cross-domain browser security problems, have an understanding of multithreading (locks, semaphores, race conditions, etc) and an application of recursion in some other language. I wouldn't care what the knowledge is, as long as it is well rounded and demonstrates that the candidate is capable of pulling apart complex systems to gain a deep understanding in a short period of time. The ability to reason (with passion and authority) about which language or pattern is best suited to a given scenario is also vital. Time is a terrible measure, partly because it fails to recognise that 5 years of bad/shallow/incorrect experience is worse than 2 weeks of gaining a deep understanding of a new language/pattern.
- tef____ 15y agoTo echo your sentiment, It's a bit like measuring writers not by the books they have written, but how long they've sat in front of a keyboard. Anecdotally, Not only is time a a poor measure of ability, those who use it as such demonstrate a lack of accomplishment. Compare those who write "N years of Language X" vs "Wrote A,B,C in Z using ...". I find "I've used X for N years" to mean "I've done one year of X over and over and over" :-)
- necro 15y agoI think we're getting at the same thing. The time example is used as a comparative generalization that there is a need to focus and understand the fundamentals. The point being that given some period of time, if an average individual chooses to learn 10 languages at once, they probably wont master the fundamentals, compared to mastering those in one language. Of course there is the side case that comparing different languages and their patterns will actually be even more valuable in overall understanding, I would have to side that one first needs a deep enough understanding for that to be an advantage.
- nxn 15y ago> A real dev can pick up a new language and syntax in a week ... So am I not a real developer because it took me longer than a week to get a hang of Haskell? Hell, it even took me many months before I understood JavaScript well enough to find the right mix of patterns and practices to write solid code in it.
- benmathes 15y agoThere's a definite difference between "pick up the syntax" of a language that doesn't have (m)any new concepts to wrap your head around versus learning new concepts embedded in a language. Javascript has closures and functions-as-first-class-objects. Haskell has monads and all that jazz (I haven't used it yet). I'm guessing you didn't take months to learn the syntax of javascript, but to think in javascript. It's similar to the difference between being functional in a natural language versus being fluent in said language.
- nxn 15y agonecro said pick up the language and syntax -- I took "the language" part to mean the concepts of the language outside of the explicitly mentioned syntax. With that said, I felt addressing his comment was necessary since writing idiomatic code is not something that should be expected from a weeks worth of experience in a language. In essence, I'm agreeing with everything you said, just wanted to clarify the reason for my post.
- flomo 15y ago"Pick up the syntax in a week" is a huge black flag in my book because it indicates the developer doesn't really understand why his paycheck shows up every 2 weeks. Expertise is learning an environment's vernacular, gotchas, and detailed ins-and-outs of the frameworks/apis. It has nothing to do with passing a Programming Language 101 class.
- cmiles74 15y agoIt took me months to feel like I wasn't doing something dumb every time I coded in Clojure. There are exceptions to every rule!
- dam5s 15y agoDidn't know Rails was a language... interesting. I'll take someone that writes down ruby on their resume over the same rails experience any time!
- regularfry 15y agoBy the same token, someone who writes "ruby" with only Rails experience is not off to a good start.
- necro 15y agoThat is the scary part isn't it. I'm sure only ruby users exist and that's awesome, but I would wager that most ruby users in the web field are rails users, and many blur where one starts and the other begins.
- Peaker 15y ago"A real dev can pick up a new language and syntax in a week," This sentiment is true for many languages, as the difference between them is not conceptual, merely syntax and some details. Learning a programming language that uses different concepts and not just different syntax (e.g: Haskell, Ocaml) will take significantly longer (and IMO will be worth it).
- masklinn 15y ago> This sentiment is true for many languages, as the difference between them is not conceptual, merely syntax and some details. Even when the core conceptual difference is small and looks like "merely syntax and some details", different languages use different idioms, different standard tools and different methods, usually with reasons (stated or not) behind that. It's the idea behind PJE's (fairly old by now) "Python is not Java": going from Java to Python, the differences look superficial. You declare classes differently, names don't have types and methods are preceded by `def`. Yet if you just translate your Java code into Python 1:1, you usually end up with an unmaintainable and slow morass, and although the core abstractions are the same Python and Java offer different toolsets to deal with actual problems.
- masklinn 15y ago> A real dev can pick up a new language and syntax in a week No, that's complete bull. A real dev can pick up syntax in a week (or a day), but integrating concepts and techniques he's never seen so far and building up new instincts which correctly fit the new language, that does not happen in a week unless the guy is in the "genius" category. What you really have after a week is a guy who writes $previous_language code in a new syntax. In the way "Real Programmers" can write Fortran in any language.
- regularfry 15y agoIt does depend which other languages they've previously been exposed to. I'd argue that once you've seen Haskell, common lisp, APL and Forth, there aren't many new concepts that any language is going to throw at you that you can't relate back to something you've seen before. It doesn't take a genius to get that much exposure, just curiosity, patience and time.
- masklinn 15y agoI'd say the APL experience alone also requires a significant bit of masochism. And while you'll be able to relate to things you've seen before, concepts alone are not sufficient to be proficient in the language, as I noted: > concepts and techniques he's never seen so far and building up new instincts "techniques" and "instincts" have to do with the language's idioms, tools and ecosystems. The tools (libraries) and part of the ecosystem may be similar to ones you knew, but you'll still need to learn the new ones. The idioms may very well be brand new. To use a real-world example, while they're fundamentally based on the same concepts (class-based OO, dynamic single dispatch) Python is not Java [http://dirtsimple.org/2004/12/python-is-not-java.html http://dirtsimple.org/2004/12/python-is-not-java.html]. And acquiring Python "instincts" after a significant time of Java is not easy. It's not hard either, but it's not the "5 days to complete proficiency" necro asserts. And those are ultimately very similar languages.
- mechanical_fish 15y agoSo far in my limited experience the rule still holds: If you drop a Haskell programmer into Blub they may well try to write Haskell-flavored Blub for a while. I've seen it happen. I think you're misapprehending the problem. It's not that Haskell programmers can't understand the structure of Blub. Gods, no. It's that it takes time and tolerance to be able to immerse oneself in the Blub culture. Blub has its way of doing things, much of which is more accidental than logical, and alas, much of what passes for colloquial Blub is probably stuff that Haskell was specifically designed to avoid like the plague. There's an initial tendency to either run around waving one's arms like Jeremiah, trying to convert the Blub programmers to the side of Light, or to take to drink in despair at the sheer Rabelaisian sloppiness of the Blub universe. To work through this takes time, and possibly therapy. It's like anthropology. It's one thing to be a linguist and work your way through library books about the syntactic structure of a family of languages from New Guinea, but it's another thing to be airdropped into New Guinea itself, insinuate yourself into a local village, pray you don't die of any tropical diseases, learn which compliments in your native language are actually mortal insults in your new host culture, try to laugh along with the natives when they convince you to lean against a tree filled with stinging ants, and simulate exquisite happiness when your host offers up a delicious sample of the local insects. It's a cultural problem. Not everyone is up for that experience. One may have to work through a certain amount of shock.
- einhverfr 15y agoIt;s funny. I get asked what language requirements people should have about hiring LedgerSMB developers. And I say this: 1) If you can, find someone with good, demonstrable SQL and PL/PGSQL experience. 2) If you can't find that, get someone who is competent in developing on Oracle. "What?" comes the reply, "Don't they need to know Perl?" I tell them that the use of Perl we have is getting more minimalistic and simpler, and that we are trying to make it so any competent developer can pick it up quickly. The same would go if I was writing something similar in PHP. The issue is what sorts of fundamentally different technologies you can address, and the extent to which you feel comfortable working in both declarative, set-oriented worlds and object oriented approaches. The syntax on top of that is really less of an issue.
- rhizome 15y agoWell yeah, if you're moving all of your business logic into the database you're going to want DB-centered people. EDIT: login -> logic
- einhverfr 15y agoWe don't move all logic into the database. Presentation logic, for example, is certainly not there. Also there are things like sales tax which cannot reasonably be put there. The thing though is that one can always get a consultant to do sales tax logic. The big thing is if you know SQL and HTML the rest can come easily enough.
- gbog 15y agoSo you are on the side of those relativist who think that all languages are equals or have their own fields of use where they are better than others, and that syntax doesn't matter, that indented or bracketed blocks are just a matter of taste, that cleanliness and homogeneity of syntax and grammar is subjective? I dare to differ. Hiring a dev for things web, I could ask what language they prefer and why. Someone saying he prefers PHP because it is clean and well organised would get a downvote. If he says it is because it is fast, and that the dirtiness can be avoid by proper training, that would be better. To someone who'd say Ruby, I'd ask what he dislikes about it, or is there any pitfalls. If he knows of no pitfalls, I would have a downvote. Someone saying he don't care at all, would have a double downvote. A good answer would probably be "I'm happy to work with any language but if I have to build something new and can choose the technology I would consider python because I like this tool very much and I'm quite seasoned with it". Same with code editor: Engineers, developers are using tools and if they have a little bit of a love affair with their job, which is necessary if one want to work hard creating a nice product, they probably have some strong feelings about these tools, which are not all made equal before God.
- wwweston 15y agoI regret I have but one upvote to give to your comment. :) Instead I'll add this: "Whenever I interview a candidate I always work in some variation of a very simple question: 'How would you change your favorite programming language to make it better?' "I don’t really care what the answer is (that is, I don’t mind if we disagree). However, I care very much that people think critically about the tools that they use and love." http://blog.fogus.me/2011/04/26/my-favorite-interview-question/ http://blog.fogus.me/2011/04/26/my-favorite-interview-questi...