Programmers for Scientific Research?
An AC submits: "We have recently had a lot of trouble trying to hire competent programmers for a research project. We are not programmers, so it is somewhat difficult to evaluate the competence of CS graduates. However, it seems that many of them are quite business oriented and that is not what we are looking for. On the other hand, the ones with adequate math skills etc. are often interested only in 'pure' CS. We would desperately need some kind of 'all-around lab hackers' capable of scientific problem solving, and confortable working with all sorts of software and hardware, but have not been able to find such persons. Does the Slashdot audience have any suggestions of how to attract the hackers having 'by programmers for scientists' - attitude?" [Update: 03/24 09:24 AM by michael : Note that although my email address is the only one on this submission, I'm not the one looking for programmers - I work for slashdot (although I used to program for a DOE laboratory, and that's why I found this question interesting and posted it). I've received a bunch of misdirected emails from people who thought this was interesting work, so if the submitter is reading this story, he/she might want to put contact information in a comment below.]
I'm not sure, but I think we're talking about scientists and non-commercial research here. Nobody gets paid what they're worth, and it's always been that way. In this environment, demanding what you're worth is like telling everyone else that they're only worth the pittance they get paid. Just a cultural thing.
-Paul Komarek
I think this is an overbroad generalisation. You can find good software engineers with all sorts of backgrounds, from biology to linguistics. In my experience, there is no correlation between educational background and software development skill. Attitude, experience, and a love of learning are the most highly correlated factors.
The best way to attract good software developers is to offer a reasonable and competitive salary and a great work environment. Until recently, it has been very difficult to compete with commercial employers willing to pay high salaries even to substandard candidates, with the added lure of stock option fantasies. Now, fortunately, people are realising that most startups fail and stock options aren't such a great deal. Salaries for good people are still going to be high, but this doesn't mean you can't afford us.
Creative alternative forms of compensation for research institutions associated with universities include free classes and access to athletic facilities. More general forms of compensation are a low-stress environment, flex time, a private office (with a door and preferably a window), and the option to use resources for personal side-projects. Showing a developer that they will be working in an attractive, pleasant environment, rather than a high-stress cube farm, is worth real dollars.
Above all is the opportunity to learn new things, so if the candidate has a track record of learning quickly and applying new skills on the fly, consider hiring them even if they don't have the specific skill you need. Chances are they'll pick it up very quickly.
While I may be biased (because I am an example of the sort of person I'm suggesting), I'd suggest looking for people who have studied your scientific field and also know how to program. That way you can make sure they understand the problem being solved.
I'd say it's funny, but then if I were trying to hire, I would say it's worrying. This goes back to the Ask \. a week or so ago about how to improve CS programs - the fact is most CS programs these days don't teach ANSI C - usually it's C++ or, more and more often, Java. Try asking them if they can see what's wrong with:
/. have a <pre> or a <code> tag?
void echo() {
char *str;
cin >> str;
cout << str;
}
Somehow, I doubt the results will be too much better, but I'd be really interested to know how how many more people catch the mistake in the C++ version than the C version. If you ever find out, drop me a line.
And why doesn't
-"Zow"
Post to Ask /.! You'll get so many responses from people who are looking for such positions that you're sure to find someone who'll fit the bill.
-"Zow"
You've already found a good way of contacting such people: a lot of them read slashdot.
Were I not still involved with university, I would send you a resume.
-- Out of cheese error! Redo from start.
The kind of programmer you want is probably already fairly interested in science in general, but (as you say) would choose CS or mathematics as their field of study. I believe that what you need to do is to use your own field (whatever it is) as a strength, and offer the applicants the possibility to learn your field from a computational perspective even as they are working for you as programmers. Depending on your field and organization (corporation, university), this might mean things like assigning a mentor or adviser to the applicant, allowing the applicant to co-write papers, having a bit of free time for projects of their own, etc.
The additional upside to this approach (apart from actually finding a qualified employee) is that after a couple of years you will have a highly competent person, conversant both in your own field as well as in all aspects of computation surrounding it -- in house and already familiar with your work. That is the kind of competence that can't be bought.
/Janne
Trust the Computer. The Computer is your friend.
A friend of mine got his PhD in nuclear physics. To do so, he toiled quite a few years writing his own software on SGI boxen.
When he heard from a common friend, who works at a major flight simulator maker, that they needed guys that know the SGI platform very well, he applied (of course).
As you can guess, the fuckenly-clueless-as-usual HR department replied "you're overqualified". Never mind he had 5 years experience programming high-speed graphics on SGI.
But he was fortunate that in the meanwhile, the manager of the department who needed him got to know him personnaly, and was ultimately able to persuade a senior V.P. to overturn the HR department, so he finally got the job.
Of course, you can expect the HR assholes to try to can him at the first occasion, though.
--
You complain that the CS graduates are all business oriented but did your research laboratory donate several million in new computers or provide free software to the college? No-o-o.
Seriously... I think what you're seeing is the trend of the vast majority of Universities to become training grounds for businesses. ``We'll donate X dollars in equipment and software (and take a nice tax write off to boot) if you'll include the following areas in your curriculum.'' Do you think they do this for the advancement of knowledge in the field? Or do you think it's for the benefit of the company -- making it easier to find new and cheaper employees?
I can remember the days when companies actually trained their employees in the processes that they used. Many firms hired new engineers, for example, and had them in an orientation program for the first six months to a year moving from division to division getting first hand experience by working on a variety of projects in the company. After that year or hands-on orientation, you and the people in charge of those divisions made a decision on where you would be able to work best. Nowadays companies expect that the Universities have done this training for them so that their new hires can ``hit the ground running''. Then we wonder where the innovation went. Orientation consists of a short talk by the benefits people and a ten minute lecture about how to fill out your time and expense sheets. IMHO, Universities should be more concerned with training the people who come up with tomorrow's ideas rather than training folks to solve today's problems using today's tools.
--
CUR ALLOC 20195.....5804M
If you are so correct, then you should be able to defend your point of view without having to resort to ad hominem comments. Do you really want to tell me that a CS degree from any institution, let alone all, is some kind of guarantee of _all_ of the necessary skills, abilities, and knowledge? Yes, a 4.0 from an excellent institution can provide some assurances that a person has attained a certain level of understanding of some material, has a certain kind of intelligence, and is willing to at least go through the motions. However, none of these necessarily make a person an excellent programmer. The required skills are often quite different. The kinds of intelligence are often quite different. The level of work is often quite different. Likewise, the volume and the difficulty of the material can exceed that person's abilities. This is not even mentioning other abilities, like the desire to work hard, the desire to learn, a certain level of humility, the ability to work well with others, maturity, etc etc etc. The point is simply that it's not a a guarantee; ask just about any employer. Good programmers are rare. If the degree were this much of a determinant, hiring would be much much easier.
FYI, I am none of your suggested stereotypes. I got a 3.8 from a very respectable 4 year instituion, while working 10-50 hours in a position of considerable responsibility. I was also fortunate to attend private school for most of my life. I can count family, friends, co-workers, and acquaintances at virtually all of the well respected institutions (e.g., Princeton, Harvard, MIT, Penn, Stanford, UW, etc etc). In short, I come from a very privileged background, both economically, academically, and socially. In other words, I am not bitter, I have little reason to be bitter. What I have had is enough experience with most of the highly regarded institutions at a personal and professional level so as to know better than to deify the curriculum, the institutions, or the students.
Yes, I'll give you that such a degree can give _some_ assurances that a person has a certain level of understanding of some material, has a certain kind of intelligence, and is willing to at least go through the motions. However, these few guarantees, to the extent that they can really be called that, aren't enough to make a person good at their job. I have had experiences very different from yours. Yes, some are good but some are also mediocre. Yes, All things being equal I'd hire the person with the better degree, but all things are not always equal. In any event, it's not a guarantee, especially if that person essentially plans on being a professional alum the rest of his or her life.
Shrug. I don't think I'm *that* passionate about it. I just disagree strongly ;) First, I happen to like the truth. When I know I'm right, I'm willing to argue my case. Second, this particular kind of mistake bothers me for a whole bunch of reasons. For instance: I think it's unfair and untrue to those that have less than sterling academic credentials. It's a mistake for an employer to fall too much into that trap. It's a mistake for investors [e.g., "Why can your company do this, when a team from MIT et. al tried and failed?"] It's also unfair to those that really accomplish things later in life, to act as if one can master a field with only 4 years of experience. Who are they kidding? I've also seen normally intelligent and open minded people that clam up in the presense of people that wear their degrees on their sleeves.
I also find some aspects the education in the system less than optimal [I think that approach is somewhat contributory]. e.g., the often crappy public school system. How can we honestly say that we're getting the best and the brightest graduates from the Ivy leagues, or where ever, when the majority of the public is at a considerable disadvantage due to recieving a mediocre education in HS? Likewise, I really don't believe the top universities to be that demanding [baring perhaps the engineering and related programs to some extent]. One need look no further, in my opinion, then the absolute lack of attrition at these schools to determine that, unless they really buy into the SAT as being that accurate of a predictor. Likewise, I'd also point you to grade inflation. Or the reduced course load....
I could go on, but let's just say that I think it's harmful to society on the whole.
It's ironic that you scoff at people that view IT as being a gravy train, yet you clearly view a piece of paper as a gravy train. Mere intelligence and a degree is not enough. In fact, I'd argue that the degree is relatively insignficant compared to _actually_ being willing to work hard (working "hard" in school is almost never quite the same thing) and being willing to _really_ learn (there is learning and then there is learning...). Just as the merely "certified" MSCE is doomed to mediocrity, so to is the merely "certified" CS-degreed grad; all that seperates the two is their personal backgrounds, a piece of paper, attitude, and a relatively insigificant amount of knowledge.
I work in a vertical software industry,
that is scientific programming for industry
customers. The business grew because many of
customers downsized their in-house developement
during 1990s re-engineering because they lacked
the critical mass for respectable software support.
Our problem is the opposite of yours.
We have many candidates who are graduate students
who know scientific programming,
but never learned the other 90% of the software
business cycle. Our best sucesses are domain
experts who've worked for our customers,
yet maintained a strong ability in computers
and want to move into that side. Recent grad
student business skills are too unpredictable.
Pure comp-sci types job hop a lot (until recently)
and not domain savy.
The drawback to this approach is that you have
to pay computer industry standard salaries and
not academic slavery salaries. The former is
about 50% higher.
How exactly could I get such a job, for the last 5 years. I have an advanced degree in physics, and undergrad degree in physics and math, and left the field due to the exceedingly poor career prospects in the field. I have since been very bored (though well paid) programming in the business arena. I have often though my dream job would be programming in a scientific setting, because thats exactly where I learned to program - but have never run across such a job...
To answer these guy's question, look for someone like me. There are plenty of people that bailed out of math and science at the graduate level for a more lucrative career in programming. The only problem is you will probably need a lot of money to entice them back into the fold...
-josh
I am a semi skilled programmer and may even fit there 'requirements'. I studied Electrical Engineering in school and now I have been in the industry as a programmer analyst. I have done Perl, C, C++, Java, JavaScript, HTML, Tcl/Tk, COBOL, Pascal, and Fortran. When in school I programmed a few scientific applications, but nothing fancy. I did not know enough C at the time to do programming for Digital Filters, but now I think that I could and am actually interessted in doing so. I of course may be rare. Most programmers are not interested in scientific programming they are more business oriented.
So where is this job located? I live in SF, CA and am not interested in relocating.
How is this job funded?
I had signal and systems, Microwaves, semiconductor design (really cool class with awesome instructor) and digital filter design. What kind of scientific stuff are they doing???
I don't want a lot, I just want it all!
Flame away, I have a hose!
Only 'flamers' flame!
I'm finishing up a math degree at BYU right now. I'm also a developer and have made my living that way for the last 7 years. I've seen the dichotomy that you're talking about.
One thing you might want to do is scan some professional journals for people who are working on using computers to solve the kinds of problems you're working on. Or even other problems: the important thing is that you'll know that they are interested in applications, not just pure CS. Maybe you're looking for someone not quite so far into their career: that's OK, lots of universities have undergrad research journals now.
Finally, you can email me (uvm@sun.he.net or weston@csoft.net). Depending on the actual project, this would be great. I'm a math student, but a bit tired of living in the abstract or ecommerce world. I'd like to contribute to something solid/real/applied for once.
--
Tweet, tweet.
Why is it that a great software developer who demands rewards commensurate with his talents is necessarily a prima donna? Executives do this all the time and no one blinks. I think the problem is popular conceptions: executives are driven by greed while software developers are driven by love for what they do. In other words, it is out of character for a software developer to raise such base concerns as salary. Well that's ridiculous. If you love what you do, and you are a master of your craft, why not insist on what you are capable of earning? You can be sure that the managers and executives you're negotiating with take exactly the same approach.
I am a Sr. programmer working for an internet consultancy, and came to this job after working as a scientist for 20 years. I have a Ph.D. in Chemical Engineering. I spent a good part of my career working in the lab doing some of the tasks that you describe, however I was a scientist first, and then a programmer.
Speaking now as a programmer, I find the type of job you are describing to be totally uninteresting and perhaps actually dangerous from a career point of view. Programmers live and die by developing skill sets that are in demand in their marketplace. The type of work that is described in this article would result in my skill set (carefully built from years of hard work) failing to be interesting to the vast majority of employers.
The reason that you are having a hard time attracting programmers is that the job market is oriented towards people with certain job histories, and what you are offering is not likely to give a programmer the backgound he needs for that next job.
Try instead recruiting scientists or math majors with an interest in programming, and get them some training.
MOVE 'ZIG'.
I don't know what kind of field you're in, but I'd tend to agree with the idea that you find someone in your field who happens to have the skills you're looking for.
Most techies are inquisitive by nature, and would jump at the chance to get involved in a position like you describe. You've got a whole lot of good things that you're offering: flexible and everchanging job requirements, a sense of ownership, 'status' by being someone who's needed - as opposed to just another coder. Most importantly, you're offering the chance to do something different, by applying coding skills as a tool - it gets really, really old spending your days making the newest widget that no one is ever going to use.
However, the 'code as a tool' concept is defining characteristic of your ideal person - most Computer Science graduates enjoy code for code's sake, not code for your experiment's sake. You need to get outside the CS mindset and find other scientists and engineers who enjoy the research itself, and not just the code. There was an interview with John Carmack (highly respected coder) where he made a great point: most coders are all about instant gratification - code, compile and run. If it doesn't work, tweak, compile and run. Repeat until it does work. The folks you find with a pure programming background might not like the longer lead time that's associated with whatever you're trying to accomplish.
Random thoughts,
J.J.
The point is: look here first. You'll get bright people with some programming experience, maybe some exposure to numerical analysis of real-world data and precious little purism.
--- Hot Shot City is particularly good.
The problem is that str is pointing to whatever miscellaneous address happened to be in the memory allocated to echo()'s stack frame. It points to unallocated memory that quite likely isn't even in the programs address space. Passing around uninitialized pointers is a bad idea; you're crusing for a SIGSEGV or a SIGBUS if you try this on a Unix-oid system.
Tom Swiss | the infamous tms | http://www.infamous.net/
Tom Swiss | the infamous tms | my blog
You cannot wash away blood with blood
I imagine there are tons of these out there. Heck, there's another article on Slashdot today that talks about how computers have beome important to every other aspect of science; maybe it's difficult to find computer talent because of that; it's not that people aren't interested (heck, send me a note i'd love a job like that), it's just that the interested people have had lots of opportunities to find jobs already; you have to find a way to contact them and entice them away from existing jobs.
Posts on Slashdot are probably a great start, just let us know who you are!
I agree that looking for CS grads is a bad idea, but I would take a physical scientist over an engineer. Anyone going through a physical science degree (physics, chemistry, astronomy) these days is guaranteed to have significant programming experience, and it will be experience directly of the kind you are looking for. Moreover, they will be used to the kind of problem solving necessary. I find engineers are very good at applying things but not so good at problem solving.
If I were particularly cynical, I'd recommend finding a local university with a well-respected but very hard physics department with assholes for professors. Then find a 2nd or 3rd-year grad student who is underpaid and miserable, and offer them a well-paying job doing essentially the same thing they've been doing. You and they will probably be happy with the results.
[TMB the happy grad student]
Look for a software engineer with hardware experience; with driver coding, kernel coding experience. Someone with experience bringing new machines up, etc. While not all great engineers fit into this catagory, my experience has been that most engineers who are knowledgeble about the hardware layer are pretty good generalists about all computer science.
Someone you trust is one of us.
There is a flipside to that. I did my MSc and PhD in applied Numerical Analysis, and I am concious of the number of people in the field who have very good skills in modelling and in algorithm design, but are basically self-taught when it comes to implementation. Hence there is a lot of NA code out there which is very fast and solves interesting problems, but is written so badly as to be unmaintanable.
Perhaps you could offer these kind of people a chance to do some more formally structured (and colaborative) software development, including some training in software engineering (which us mathematicians rarely get a chance to study).
"What I look forward to is continued immaturity followed by death."
(2) Even many of those individuals with talent have insufficient knowledge of (and/or, apparently, desire to learn about) the art and science of software engineering and so persist in making the same stupid mistakes that have been well-documented for 30+ years.
(3) As a result, anyone who has had to recruit software developers can tell you how much muck you have to sift through to find the gems.
(4) I can't speak for the relevance of most CS departments; I know that my undergraduate CS program (BSCS, BYU, 1978) helped me tremendously when I went out into the real world. But that may have been an anomoly; I had some brilliant teachers with real-world experience (one had worked at Bell Labs; another went on to co-author and co-found Word Perfect).
(5) After some years in the workforce, many of those with talent and skills find they can double or triple their salary by becoming a consultant. This leads to a talent-flight from organizations.
In short, you're trying to find someone with talent, training, inclination to your topics and circumstances, and a lack of awareness of how much s/he could be making elsewhere. :-)
Best of luck. ..bruce..
Bruce F. Webster (brucefwebster.com)
Where this approach breaks down is when larger-scale projects are being contemplated, where the activity of more than one programmer must be coordinated, or where the software is going to be shipped as a shrink-wrapped software product. Even if is is just in-house software, but it must perform to certain specific standards (such as required by the FDA or other standards groups) you are going to need more. In this case, I have found that experienced software engineers are required. The best way to evaluate them is to look for applicants who have degrees in software engineering or computer science (with a strong software engineering emphasis) and have been involved in at least one succesful group project. Find out how they specified the project (did they use any specific methodologies?) and find out how they collaborated (listen for the use of version control systems, for example) finally, find out how they did their testing (again, they key here is methodology- not just 'it ran fine and we shipped') You do not need to know that much about software engineering- you just want to see that there is strong experience in the people you recruit. Ask for references, and when you check them, ask them about the candidate's programming and software engineering strengths.
I know this all seems pretty basic, but I have found it works pretty well. In my case, I have hired a mix of scientific programmers and software engineers, as well as drawing on the expertise of the scientists outside my department. As long as you keep your eye on the desired end result, you can locate and hire an excellent staff!
Good luck!
Fortune favors the bold. -Virgil
> of how to attract the hackers having 'by
> programmers for scientists' - attitude?"
My suggestion would be to post your appeal in a public forum. Somewhere that caters to hackers. Hmm, can't think of where you might find such a place...
--
Slashdot monitor for your Mozilla sidebar or Active Desktop.
Your best bet may be to ask around in the science and engineering (under)graduate populations of a local university. Ideally you'll get some scientist/engineer type that discovered a love for computers while using them to further their own research...[1] They're guaranteed to have at least a minimal brain wave (at least after the second year ;^) ), and more than likely they need money and/or a place to gain experience in as wide a range of things as possible.
You may also want to consider narrowing exactly what you are looking for. People that are, for example, expert at network administration and coding simulations code and soldering data collection circuits and (...) are rare enough in the tech field without also asking them to be scientists as well. Try segmenting your requirements out into seperate, smaller positions and then be willing to create an environment where learning and cross-training is encouraged.
Last but not least, look for a local uni that offers courses in scientific programming (UT Austin has them in CS, but also in other places like the Math dept, the ChE dept, etc., so you may want to look a little further than pure CS). Ask the professors if you could put up a job flyer in their class.
Anyhow, good luck!
[1] Hey, happened to me at least. :-) (In reality I know several other people that started out in Chemistry and ended up CS or whatnot. Maybe it's becuase the two buildings are across the street from each other on the UT campus?)
--
News for geeks in Austin: www.geekaustin.org
News for Geeks in Austin, TX
I am one of those soon-to-be (ok, well, at least another 2 years) graduates (in IS&T and Biology), and am interested in doing scientific research. I just got offered a undergrad research position at the NRRI analyzing plant population and hydrology data. I see this as my dream job.
As interesting and exciting as this work is, there's a huge difference between acedemic scientific research such as this and the world of business: money. I'm making a little over half of what I would make if I returned to where I interned last summer. My other possibility for this coming summer was to make even more than half of what I'm going to making this summer. I mean, $20/hr is a lot of money to be making in the summer for a college kid, and I am not surprised that many college kids opt for this type of experience (and later job, where the gap can become even larger), being raised to be good capitalist money-grubbers.
So, I suppose I'm saying, if you want to get good CS people for research, start getting them as interns, make them care about what their researching, get them to love it- to those that are worth your time, this would be infinately more important than simply more salary.
Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
it sounds like your postings/ads are not properly written, if you can't get the people you are looking for.
another exacerbating factor is cultural. most of the cs i guys i went to school with couldn't adequately explain basic electronics or code in GL.
assuming you are in the USA, most students don't use their hands to build anything anymore. most assembly/production issues are "overseas" concepts. my university had us writing assembly language and building analog/digital circuits in one class. this class has been phased out of the program now.
we also had to take data sets and write GL code to visualize them in pseudo real time. this class has been phased out, too.
examine the want ad and reword it. also understand that you are working in research and the people you are interviewing are being trained for summing rows in spreadsheets...there is a learning curve, so give the kids a break.
finally, consider something like scilab or matlab for some of your projects. be willing to pop money for training, even if that means setting aside time to develop training materials yourself.
Treatment, not tyranny. End the drug war and free our American POWs.
See my user info for links.
Everyone else has said this a hundred times, but it can't be emphasized enough. First, stop looking only at CS majors. Second, stop trying to one person that can solve all your software need and all your hardware needs. Third, it's very, very hard to evaluate what a programmer is doing, especially if you have no idea exactly what he's doing.
I'm guessing that you're not affiliated with an american university; if you were, you'd have an unending supply of graduate and undergraduate students, and you would have long ago discovered some great computer geeks from the EE department and the Theatre Arts department, and everywhere in between. You'd also have discovered at least one incredibly bright, insanely productuve Journalism School droupout who come to work for you in the mid-70's because you had the tools he needed to work on his motorcycle, and who you simply couldn't imagine how you'd ever get anything done without.
You'd also quickly realize that the few people that you can find who are insanely good at everything they do -- the ones that understand the physics behind your expiraments, and can write diagnostics software, and can build diagnostics hardware, and can get it all done in a time frame you can both agree is reasonable -- still have to specialize. These things are all suprisingly different skills, and for you to expect someone to spend the amount of intellectual capital it takes to keep up with all of them, and still be productive, is unreasonable.
And, of course, when you ask someone to do something you don't understand, there are two very important, and totally unrelated, skills for that person to have. They have to be able to do what you ask, and they have to be able to convince you they're doing what you ask. It's pretty easy to find a person that does one or the other; people who can do both are rare, and make a lot of money. As long as you allow yourself to be unaware of exactly what this person is doing, you're going to disappointed again and again.
Slashdot is jumping the shark. I'm just driving the boat.
A degree from a reputable school with a good computer science department gives some assurance that the holder of the degree has some valuable knowledge and has been trained in relevant ways
Unfortunately, there are only four or five good schools that people intrested in computer science degrees go to. If this guy manages even manages to interview one of the two or three hundred graduates each year who "aren't interested in theoretical computer science", he's going to discover that they're interested in "the business side of things."
If someone manages to graduate with a decent GPA from one of the decent schools, and is interested in going out into the world and programming, don't be suprised when that person doesn't want to work for some imcompetent manager who doesn't want to be bothered to figure out what programmers do for a living. This is especially true when you realize that this guy want one person to do all the hardware and software and understand the physics behind the expiraments, which to me is just a diplomatic way to say "we don't have the budget to hire two or three mediocre people, which means we certainly don't have the budget to hire one outstanding person."
Slashdot is jumping the shark. I'm just driving the boat.
I am one of the poeple you seek, but, unfortunately for you, I'm not for hire!
/prove/ the orthogonality of the Fourier series. Suddenly, lookup tables for Laplace transforms weren't good enough. We had to integrate them directly in complex space using Resuide theory. And that was just my first math class after arriving, and now I can say, with confidence, that I actually really SUCK at math.
I know exactly what your problem is. I actually started out as as a bright computer hacker who could work magic at the keyboard. I thought myself capable of meeting any computing chalenge. I would have jumped at the opportunities you speak of because I considered my self quite talented at math and loved science! But I later was later humbled when I transfered into Applied and Engineering Physics at Cornell University.
What I can tell you now is that there is a big three-way misunderstanding between scientists, CS people, and hackers.
You see, CS people and hackers (me too, before AEP!) have this idea that "good math skills" means you have had core calculus plus differential equations and maybe linear algebra. But scientists have a very different idea of "good math skills." They often want Mathematical Physics too, or maybe group theory, or maybe... one of a hundred other things. When I left my prior university, I had already "taken all of my math requirements." But after getting to Cornell, I found myself suddenly being forced to
Conversely, many scientists think that good computing skills means that you can code in C or Java and make words print out on the screen. They often have no understanding of the art and talent that goes into the marriage between an idea and the machine it gets implemented on. They strugle with "those darn pointers" and stick to basic reference texts they picked up in, "Introduction to Computing for Scientists and Engineers."
Finally, many CS people are confined to the relm of formal computing and analysis. They lack the soft squishy "i talk computereeze" part. On the other hand, hackers often lack the discipline necessary to ensure working code!
How do you find people who have all of the traits rolled into one?
You pray. Then you write a request to places where hackers hang out, but you make it clear that you are looking for someone who has the specific math and science skills you need. But most of all, you ASK SOMEONE who already has the talent you are looking for to name OTHER PEOPLE who fit the bill. Off the top of my head, I can name only two other people who have all of these talents - even after knowing many people in the CS department at Cornell!
You then call them, and ask them, and... ok you get the idea. I know of no other way to find such talent.
Finally you go to places like Cornell and MIT and Caltech. You go to the Applied Physics departments. You go to the Applied Math departments. You go to the places where the MATH is taught, and hunt down the people who also LOVE computers. (Ususally you can just ask any of the students and they will point you in the right direction!)
Anyway, that is my two cents worth.
However, if you're really struggling to meet demand, why not go with some undergrads on a temporary/casual/parttime basis? If the scientists themselves are doing a lot of the overall design and heavy math that provides the foundations, you might find some undergrads are able to pick up the ball and run with it; one fulltimer and a few casuals might do as well as a few fulltimers.
For grunt coding, that may be all you need - a lot of the later stuff in a CS degree tends to be more oriented towards the systems analysis and heavy design issues. With a lot of the coding stuff happening earlier on, and a lot of the coding skills being self taught (probably even before they started their degree), some enthusiastic undergrads at your local college might do the trick.
And after all, if they're just temps/casuals, make sure you make that clear, and there's no problems with scrapping the idea in a couple of months if it isn't working out.
Sort-of example: I'm doing some systems admin work in the Electronics Engineering department of a local university, on a casual basis. Basically, they needed some labour in a hurry so hired some casuals quick and intend to replace us with fulltimers as they arrive (add time for interview process, people giving notice at existing workplaces etc) Now, I certainly don't have what it takes to run the system, however I have a pretty well-defined area of knowledge, and the stuff that falls into it is delegated my way. It takes the load off the full time staff that are there at the moment, and everybody wins.
I myself just recently applied toa simulated annealing algorythm to make a solenoid whose axial magnetic field varied as the square of the distance along the z-axis . . . without any bumps. If you think that's easy, try slapping solenoids together and see how it looks.
Your best bet are physicists in the Nuclear, Plasma and Astrophysics fields, as almost all they do is intensive computer simulations.
You might find some motivated BS to do your fun work for around $35K, but a high end PhD might end up wanting between $65 - $120.
Your ideal target is people with "Masters" in physics, who dropped out of PhD programs because they realized that grad schoool sucks.
You shouldn't have a hard time finding people wanting to do what you need - I find your job offer quite interesting myself, especially in the face of a possible career in academia.
Muerte
ps. what's it pay? :)
All the companies I've worked for were run by management more interested in "beating the competition to the market". They don't allocate time to do things right. They want them done fast. Designing == no real work getting done, in their opinions.
"Make it work now, any way you can. Can you? Is there a way? Mr. Junior Programmer here says he can(*). Why can't you? OK. Then do it. Go back and smooth out the design later. Programmers always want to redesign/rewrite everything."
Of course, "later" never comes. By then, the list of "required features" now has ultimate priority. Bug fixes are high priority too, but IMO wouldn't be so prevalent if the software had been designed correctly from the start. Good design also leaves well defined hooks to make new features easier to add later. Mgmt will hear none of this.
(*) Management also seems to like to play Junior programmers, not yet appreciative of good design, off against Senior Programmers. So us geezers are forced to sacrifice our principles and do dirty, but fast work, to avoid being fired and not being able to support our families. The Junior Programmer, is single and does not carry this responsibility.
No wonder so much software is all fucked up.
Why go with an older hacker? A couple of reasons.
First, if someone in their fourties is still programming, rather than managing projects, then it's either because they are incompetent (which you will obviously have to filter for) or because they really like programming for its own sake.
Second, RMS notwithstanding, it's been my experience that programmers with a lot of years under their belts generally have their egos under better control than than those fresh out of school. As a result, they don't have to be on the bleeding edge to be happy, they just need interesting, challenging work.
How do you attract these aging gems?
Emphasize the constantly changing variety of work and be prepared to offer flexible working conditions, such as full or partial telecommuting, compressed work hours, sabbaticals, etc.
-deane
Gooroos Software: plugging you in to Maya
-deane
There is not much detail in your problem statement, so there's much guesswork going on here, so please bear with me.
A key factor, I suspect, is your statement: "We are not programmers, so it is somewhat difficult to evaluate the competence of CS graduates."
The Problem: It strikes me you are running into the classic problem of not understanding what programming can do easily and what is difficult. More than likely, you've been sold a story from some instrument vendor that the XYZZY 2000 can do lots of wonderful things, and you really need it for what you are trying to do, and the best part is that it has a port that allows data aquisition and control from a computer!
Right. (Sarcasm intended.)
Here's a guess at what your situation is:
I've seen this KIND of problem countless times in my 25 years of experience programming, designing, and testing.Suggestions:
Lastly, it has been my experience that there is a lot of truth in the adages: "The longest distance between two points is a shortcut." and "Good. Fast. Cheap. Pick any two, but you cannot have all three at once." (e.g. if you need it Right Now, and it has to be Bulletproof, it's going to cost you a lot.) I truly wish you well on your efforts and hope that something I've shared here from my own experience has been able to help.
I am also working on using scheme to develop systems for modern algebra, specifically finding SN-forms of matrices over finite fields.
I am a graduate student, so I work for cheap, and working over the internet is not a problem for me. Drop me a line if interested!
(1) Are you willing and able to pay for established professionals? It sounds as though by mentioning "graduates," you are looking to hire entry-level-type folks. Depending how you are funded, this may well make sense -- but if you have the money, I'd suggest getting some folks (at least a minority) with some experience in the field. The habits developed by these folks (if they're good) -- for working on large team-based projects -- are almost impossible to develop in academia (emphasis on almost).
You might be able to attract some of those folks (at a lower price) simply by the science-y aspect. As a scientist, imagine how numbing it must be for folks with minds like yours to be asked to write the same application over and over ("read this out of our database and put it on a screen, or a web page").
(2) I think the way to evaluate candidates is whether, during a one-hour interview, they can pick up some basic understanding of the research that you are doing. This helps you on a few important points:
(a) Do they have any background in the sort of science you are doing, ... does it start coming back to them when you talk to them?
(b) Do they care enough to try to understand what you're doing, or are they looking to be directed every step of the way? (This is an important separator of good programmers from merely adequate ones -- in any problem domain.) Odds are, they had a class in college at least peripherally related to your field
(c) Are they (to put it bluntly) smart enough to understand the application domain?
You give no details about that programmer's tasks, the research project or even your field of study so it's kind of hard to advise you. Why does it matter? Because different tasks require different programmers.
If you have a model of, say, planet rotation, complete with equations and all you need is someone to type it in with the right syntax--get an undergraduate to do it for you. Or a "business programmer".
If you need control and data acquisition, find an embedded programmer.
If you need supercomputer power, find someone with experience in that.
Or do you need someone with whom you can "talk science" without having to dumb it down before he can program it? (If so, contact me at dazed2d@yahoo.com--I might be interested)
It all depends on whether you are looking for specific skills or general knowledge.
--
324006