views:

422

answers:

10

Say I find a Windows developer with 10+ years of experience, great skills in C/C++ and excellent references as a versatile coder who gets things done. Can I hire him for development on the Linux platform and expect him to be efficient in production within a couple of weeks? Or is the threshold too high when speaking in terms of development environment and all the common tools used in daily work? What are the main obstacles for this person to overcome?

Note, this is a general question, where I basically assume typical Windows and Linux environments (Visual Studio vs. Eclipse or EMACS, Add/Remove programs vs. apt-get, dialog wizards vs. commandline, and so on)

+4  A: 

It really depends on a lot of factors.

A really good developer will be able to learn everything they need to know fairly quickly. The main language is the same.

However, depending on what you're developing on Linux, there may be some major learning curves to overcome.

A couple of examples:

  • The entire operating system APIs are different.
  • If you're using any large libraries, there will be a learning curve to the library.
  • If you're using more traditional unix build systems, there will (possibly) be a learning curve to using those vs. the normal "Windows way" of working in an IDE like Visual Studio.

I think expecting to have a perfect dev. in 2 weeks is probably a bit ambitious - but if they're good, they'll get productive quickly.

Reed Copsey
+3  A: 

I've attempted to switch to Linux/Unix many times. I can basically find my way around the box and do development [if I've got Mono]. Now, I can be equally as efficient in terms of basic user requirements on just about any box in a short amount of time, but if you expect me to be able to figure out all the installation, configuration and all the other stuff that comes with system maintenance in that short a period of time, I daresay I'd pull all my hair out before the two weeks was up. Invariably, someone will ask me to do something I have no idea to do in Linux/Unix and will end up switcing back to Windows because I can easily do it in a short time.

I'd say if they have other people to ask questions, sure, it's a piece of cake. If you expect them to kind of hit the ground running as a self starter, it's doubtful.

BenAlabaster
This is very important. A good dev will be able to produce code, however the sysadmin aspects of the env will be a slowing factor initially.
Preet Sangha
@Preet in addition, sysadmin aspects usually come part and parcel of development too. IIS to Apache; SQL Server to MySQL; ASP.NET config to PHP config; Visual Studio to Vi/Vim/Emacs/Whatever. So you've gotta basically relearn most of your toolset too, which doesn't help things.
BenAlabaster
Coding is coding, that's similar across platforms, it's hindered by the platform differences immensely to start with.
BenAlabaster
+2  A: 

Great developers will be great on any platform. It may take him a little while, but if he is the "gets things done" sort, he should be able to get up to speed and make positive contributions to the project.

Michael
+4  A: 

I was exactly such a developer not long ago (but I did have some *nix experience way back).

For me personally, I found the initial transition very easy. There are adequate tools for everything you need to do to at least get coding. The second phase was very difficult - finding exactly the right tools for what I was doing, and how to use those tools. I was dropped into this particular project alone, so I had no one but Google to ask, and it did take a long time to learn the keyboard shortcuts and whatnot of the new IDEs and compiler switches.

I felt, at the time, that if I had had someone to ask questions of, the whole thing would have taken a lot less time.

So long answer short: I think any good programmer won't have trouble with the easy stuff, but make sure the new dev is told frequently and in a friendly manner that everyone else is there to help answer questions.

Mike
+1  A: 

Well if he really is a guru, I would say yes. Many studies show that a good programmer produces more that 10 times as much useful work in a day as an average programmer. A real guru probably produces 100 times as much.

So given a choice between a WIndows guru and an average Linux guy, I'd ttake the guru any day.

JonnyBoats
+2  A: 

I think yes, but you might need to be patient for a longer ramp-up time. An idea: give him a Windows box with a Linux virtual machine running inside (or vice-versa), so if he runs into something he can't do quickly in Linux, he can switch over to Windows for that particular task until he becomes more proficient on the Linux side. This may mitigate some of the "separation anxiety" some windows users have when switching to Linux. Think of it as "Linux with training wheels."

Good programmers is good programmers, and they're hard to find. You can make it work if you want to.

redmoskito
+1  A: 

Why can't you hire a Linux guru instead?

That's funny how many people have come to declare "Yes sure he can".

Why nobody asks whether he would want to?

User
If he doesn't want to, he won't apply for the job, or he'll refuse the offer.
mjfgates
I would be lucky to find gurus at all I think, and this question is about if I can make use of the "guruism" regardless of workstation related experience.
sharkin
I've always thought that gurus don't apply for a job, they are rather hunted down by employers. So the question of whether he wants it stands.
User
+1  A: 

There is no doubt that Windows guru (if that is true) can handle the Linux stuff.

The only thing you should ask yourself is how much time do you have 4 the project, as you can't expect somebody that was never developing in Linux to be as fast as someone else who does that for some time.

If you can afford to let the man have some time to take a running stance, you should give him a go.

majkinetor
A: 

If I can remember back into the Bronze Age, when I learned programming on Unix, the technique I used was to learn things as close to one at a time as I could. I didn't learn vi until I was already reasonably comfortable with C. Then I learned make, and then studied the Unix API. Eventually, it got to the point where I was just learning what I needed to know when I needed to know it, but it took months.

At least the guy you're talking about is proficient in C and C++. Get him a halfway decent IDE if he doesn't want to tackle vi or Emacs and make. The big question then is the APIs in use; they may take some time to internalize. And make sure you've got somebody to answer the simple little questions and do some of the smaller but potentially confusing things for a while.

David Thornley
+1  A: 

I think it depends. If you take away a man's Visual Studio, you are halving his productivity right there. If you are doing everything in emacs with commandline compilers, you've probably just lopped off another half of his productivity. Now, some of this will creep up over time as he becomes more familiar, but you can pretty much bet that this guru will never be as productive on Linux without the IDE.

Steve
I call shenanigans on this. No "guru" relies on an IDE for 3/4 of his productivity.
Derrick Turk