Are specific programming skills and experience important in a job candidate?

This view belongs to the Generalist specialist , who I know that Both are the correct answer, but I come to him from a different direction. I am interviewing new candidates for software development, and currently we are largely evaluating specific language skills and knowledge and studying specific language experience as one of the criteria for hiring. We are also looking for a candidate to be well-rounded generalizing, but it is secondary for them to be an excellent specialist. This is all good and good, and we have hired a number of really awesome programmers and do no harm to hiring anyone else.

But I thought. If two candidates introduce me, the first of which will be a specialist in our language, but with very little other experience (poor generalist), and the other candidate will be a fantastic generalist with only knowledge in our language (but specialization in other languages ​​with similar characteristics), while everything else is equal, what would be better to hire?

We have no plans for switching languages, so other language skills are not directly applicable. Actually, I tend to be a specialist because they have less to study, but I wonder if a fantastic generalist (with other specialties) can be a good, if not the best choice.

My thinking is in the skills necessary to complete the task:

  • Database Experience
  • Language Experience
  • General software development skills.
  • General software debugging skills.
  • Good design skills.
  • Domain knowledge (or target industry)
  • Understanding an Existing Code Base

Those at the top of the list are much better documented (thus easier and faster to learn) than those at the end of the list. Moreover, I would say that the generalist who stands out in # 3, No. 4 and No. 5 will be much more valuable than anyone, only with skills in # 1 and # 2 (even if these are very deep skills), since they are easily detected through reference documentation. Of course, it is unlikely that anyone would have good skills in # 1 and # 2 without some of # 3, 4, and 5.

C # 7 and # 6 are the most difficult to obtain, which makes existing employees more valuable than new employees, no matter how good their skills are in the first few areas.

At my previous job, they hired me partially for my specific language experience, but soon after they hired me, they got a new manager who decided that he liked the new brilliant Microsoft language, so we started to rewrite everything. My specific language skills were no longer relevant, but I still found myself advanced to lead a developer over other developers with more specific du jour language skills.

All things that are equal in generalization, when there is a certain language in use, it makes sense to hire a developer who has specialization, as one who does not.

Question:

It is enough to explain my position. I am curious what consensus is about. Is it more important to hire for language skills? Should language skills even be a criterion for hiring? Is it better for developers to focus on developing in one language after hiring them, or to move between different projects (in the same domain) that use different languages? If you have a project in a different language, but the same domain, and it is canceled, should developers be fired or retrained in another project that uses a completely different language in which they have no skills?

Thanks!

+6
programming-languages
source share
14 answers

It depends too much on technology and other aspects of the candidates. In no case would I hire a fantastic C # specialist if I needed a tough C ++ core. I also have not hired anyone with a lot of Java , Perl , Ruby and database skills.

You can learn a lot about a particular language from someone who is smart enough to learn fast, but who is “smart enough to learn fast” who weighs more than knowing a particular thing.

+3
source share

In general, a fantastic generalizer is likely to quickly acquire specific domain knowledge and change better, becoming an expert in the field than a niche developer becomes a fantastic general. In addition, the point is not that the generalist will think better outside the box, but that the field in which the generalist reflects is much larger than that of the specialist. The generalist brings more opportunities to the team. However, I agree that these two types are complementary.

+7
source share

I have always been with a fantastic general. If I had both, I would, but only one, I would take a fantastic general.

You want flexibility, explicit thinking, the ability to see problems from multiple perspectives and experience in various software environments.

That I take as a minimum.


Knowledge of languages ​​should be important if the store is dedicated to one language / platform. If this platform changes, developers should at least be given the opportunity to switch to this platform and adopt a learning curve. Do not forget that they have experience in your particular business. If they just don’t want to go with the new platform, they can make this decision themselves, otherwise you can view them in a few months.

+6
source share

Skills with specific languages ​​or technologies do not matter, as recruiters and human drones seem to think what they are doing.

I literally had a conversation with a recruiter, which went something like this:

He: I see you have 8 years of Java experience. Do you have any J2 S E experience?
Me: J2SE, not J2EE?
He: That's right.
Me: Uh ... 8 years.

Speaking of which, skills and experience also do not matter. The fact is that technology is constantly changing, and programmers are likely to always be required to pick up new skills at work. It was like as long as there were computers around.

Regarding your question about technology change, keep a team if they are not worthless, what could be so. If the new version replaces an old or new project, even in the same industry, the domain knowledge embedded in this team is huge and far surpasses any language or technological gaps.

I saw a successful recipe used earlier when contractors were involved to basically transfer skills to an existing team (I was one of the contractors). There were no more than 1 out of 8 contractors, and it really worked very well.

Throwing away extensive domain knowledge over a small thing, such as knowing Java, not C #, is sheer madness.

+4
source share

A qualified programmer is an agnostic of the language. For example, if I were looking for a Ruby programmer, I would prefer a talented person who knew C, Python, and Java , but not Ruby, over a 'OK' developer who knew Ruby.

+3
source share

I would go with a fantastic general. I will pay him twice as much.

I am skeptical that anyone who is "a specialist in [one] language, but very little else," actually writes really high-quality code in that language. I do not think that experience in one language is enough to develop the breadth and depth of problem-solving skills necessary for honestly fantastic work.

+2
source share

I would like to say "go with the generalist", but I have this hidden problem in this solution. Sorry that I went against the general grain of this topic ...

Language proficiency is the most valuable asset in any form of communication. This is a means to clearly convey ideas to the audience / user. I would not use the generality as a dedicated coder, since I would not use a big thinker as a speech writer. I would use generalization as my ideas / prototypes, but I would be looking for someone who could pass ideas through exceptional code as my final product. Language is the art of communication after all.

Faced with this decision, I would ask - this is a specialist who can accept the idea and implement it in exceptional code. What use is generalized if they cannot convey their ideas in a "common" language? If they struggle to convey their ideas in their chosen language, value is lost. Just like in colloquial language, a good blacksmith is a person who is responsible for transmitting a message.

+2
source share

I will also go for a fantastic general. I think that if a person is smart, after a month or so he or she can speed up on the language and platform, but if the person writes a messy or dirty code, he or she can introduce errors that take several hours to find, and to someone else you may need to fix it for him or her.

Also, this can be a problem if he or she cannot adapt to other needs (for example, you need to write JavaScript or jQuery , doing PHP ).

+1
source share

I read somewhere ( Code Complete , I think), it usually takes a person about two years to master a programming language. I was once hired to work in a company that used the .NET platform ( C # ), and I had only Java and C ++ background - in my first week I took the ASP.NET class (which was pretty good), and after a while I delivered as much as my other developers, although I made some mistakes specific to newcomers to the new language / platform.

But, in any case, I would hire a universal specialist, but it will work MORE if your company already has people who know the language / platform that you use, and if you have a code review / training process that is effective and will help the new person to rise quickly with the team. I think that specialists will fight with everything new - a new development paradigm, a new version control repository, a new library repository, a new way to access databases, etc.

As Jeff Atwood pointed out once on his blog, there are no experts.

+1
source share

I would think that a team needs both generalists and specialists, but not in equal dimensions, so what you choose depends on what the current balance of generals is for specialists in this particular team.

The specialist will be able to go directly to your code base with less mentoring and training, which makes it excellent. Return on investment, because they are immediately productive.

A generalization may require a bit more coaching, but the generator will most likely have a much better round experience and may be in another aspect of the problem as a result of its experience in other languages ​​/ environments that programmers who use only your main language may miss.

As with any team, you need a combination of different personalities to get the best out of people. However, you don’t want to train every new rental in a new language, as it takes time for other developers who could be productive otherwise, so I think it’s very important to have both specialists and specialists, but in the right proportion.

There is probably the most effective proportion, but it can be assumed, for example, that hiring 70% of specialists and 30% of generalists will give you enough experience from outside experience to be useful, but without spending too much time training the generals.

+1
source share

I would think how senior is the position you are hiring. If this is a junior position, then language-specific skills may not cost as much as you would expect a person to not be as famous as a person who has been developing for many years. On the other hand, in leadership positions, you might want someone with deep language skills, as problems with code optimization can be solved quickly.

Regarding the developer switch, it depends a bit on how wide the domain can be. For example, in my web world I am ASP Classic in VBScript , ASP.NET in C # / .NET or VB.NET , JavaScript, CSS, HTML and XML, which, I believe, have some knowledge in each of them, but then I I’ve been developing for many years now so that it makes sense to learn most of them from the Microsoft stack.

Regarding the last question, my suggestion would be that it comes down to a compromise in that retraining is more expensive than restructuring a development team that is slightly dependent on external factors, as if the company was going to create its own language, then it may not have it makes sense to postpone developers, since no one has the skills to use the new language.

+1
source share

If you want a person to crash into the ground (work), then hired a specialist. You will get value for money from day one.

0
source share

Speaking as a fantastic generalist (I want: P), I can tell you that in practice these are specialists who are hired. Wine tests. Blame the recruiters.

Someone who understands what they are doing is looking for a good programmer, and a good programmer thinks that meta languages ​​are not relevant. All things being equal, a good programmer who also has experience working with your set of tools will, of course, be hired to a good one without experience, but, in my experience, hiring most often happens with ticking boxes and allows you to spend probation periods.

0
source share

I would like to put this in the future because it is a really bad way for this industry to think. 100% completely not .

Who else can make a living Borland C ++ 5.0 / 6.0 with OWL 4.5 more ... anyone?

OK, moreover, as a .NET developer 1.x 2.x ... who still does this ... are they still experts? Now we have 3.0, 3.5, 4.0 and Silverlight, or something else will be the next "big" version. Is this still a specialist?

I could understand this question if we could all “work” in one language / library for more than 10 years. But these products do not have such a lifespan. And those of us who have understood this for so long understand this.

When you move on to this, many development products are really similar in concept and function.

Just vocabulary and mechanics are different. Hell, you can only get confused between different codes, even if the tools are exactly the same. There are some strange things that many stores are really proud of ... I have seen it MANY times, and as a high-ranking “consultant,” I have to sit there and “agree,” or crush the dream gently.

And so it is ... Exclusive specialists are noobs or chumps. But, as a rule, they are cheap. Get 20 years of coding experience, and then call me if you want to claim it. I promise that there is no argument, because no developer will become a specialist in 20 years ... COBOL and JCL are excluded.

In addition, managers who only look to get specialists for employees are usually not the right “grades” of people to work on. They do not want growth or expansion ... of their people. Just enter the code and leave me alone. Work cheaply, don't make me think, don't innovate, don't do anything better - just code these boxes. Until I outsource you. No, experts will not have a future.

Not,

But if you become a specialist ... It is better to choose wisely. Do not select the wrong tool. If and when it disappears after 5, 10 or 15 years, you will not become a specialist and will not be hired. Set Borland , Business Objects, Clipper , and dBase III Developers . You do not want to be a specialist at all.

Remember, this is your life, not your managers. "And your responsibility is to preserve the skills and work skills. Be an eyebrow, make a great product, do it fast and make it accurate.

0
source share

All Articles