Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Programming IT Technology

Programmers for Scientific Research? 213

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.]
This discussion has been archived. No new comments can be posted.

Programmers for Scientific Research?

Comments Filter:
  • by Anonymous Coward
    Current CS courses include a lot of generic college-degree rubbish, like CMA (Cost and Management Accounting), and Information System Budget Planning (Accounting etc etc). Unfortunately, for advanced research, these kind of subjects don't help. This is compounded by the fact that most CS students are learning C and Java in their courses - without touching languages used by Real Programmers of old - Forth, Fortran and Assembly. (Fortran and Forth are the reason we got to the Moon. I'm not kidding about that).
  • by Anonymous Coward
    Looking for serious Linux programmers...check out Mojolin (http://mojolin.com [mojolin.com])
  • I recently worked as a team lead for a software group at a very large government funded physics lab. I have graduate degrees in both CS and Physics. All of the advice to "get scientists who can pick up some hacking" are to me, misguided. I had several folks on my team with Ph.D.s in Physics who simply could not handle complicated coding tasks. Sure, they could write code, they could even use (often too much) all the cool wiz bang features of a language. But they did not understand true CS design, and their code was invariably slow, unmaintainable, and unmanageable. Some did fine. More often, my CS folks with strong math skills picked up the physics. Don't expect someone to be able to just "pick up a language, hey just read a book" and code, anymore than one could expect a CS grad to pick up Nuclear Physics "hey, it's just some E&M and a bit of Quantum". Look for someone who knows both (it is hard, but they are out there) in a formal sense -- a computational program (as mentioned at the beginning) or a science department (but students who have taken real CS courses on design, SW Engineering, and Algorithm Analysis) is the place to look. You know the science -- they don't need to know it all -- explain what they need to know and let them do the design and coding work. One side note. Once you have them, don't treat their efforts as somehow less important than the efforts of the core scientists. I eventually decided that since I was "marked" among the other physicists since I didn't do only pure physics (I respected CS as a legit academic discipline and studied it as such, as well as studying physics), I had to choose, and the $$$ of CS won in the end. I left for indsustry and have not looked back. Make sure that you respect these people and don't treat them as lesser contributors to the scientific effort or you WILL lose them to higher paying industry jobs.
  • 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
  • Hire a Seasoned Programming Manager It's one thing to hack together a couple of small little programs to do some ad hoc tasks. It's quite another thing to develop code

    I can't even begin to agree with this poster enough.

    In science, there is a (usually quite healthy) avoidence of ``management'' in any sense. And for small enough projects, that's ok.

    But if you are going to be doing any serious amount of computational work and you don't have any in-house computational experience, you will be setting yourself up for disaster. (Can you imagine trying to start a large experimental project without any in-house experimental experience?) There will be a guaranteed disconnect between you and your programming staff (who will almost certainly be inexperienced if they are to be affordable). And there's no good outcome possible here. Even if they are the most talented coders in the world, if you two can't speak a common language, you can't possibly expect things to work well.

    Hire someone experienced in scientific computing -- it could be a graduate of the field who does computational work now, or it could be someone from the more CS side of things -- to be in charge of computational work. If it's a small enough project, they can spend some time doing coding, too; but likely you'll have a young coder or two, too.

    Please trust me on this; I've seen projects fail or do very poorly because of exactly this problem.

  • I'm a little shocked at this question actually, because for me the correct answer is SO absolutely obvious.

    Of the gang of friends that I had in high school and into university, lots of them were studying a field of science or engineering - about 5 out of 10 that spring to mind. Of those 5, I can only think of 1 who didn't turn away from science and get into computers/programming/networking/ sysadmining/webstuff when we hit the job market. That was where the job opportunities were, and we were all computer literate and generally smart enough to transition into one or more of those rapidly growing fields. None of the fields that any of us we were studying offered nearly comparable opportunity.

    My background was in Nuclear Power Engineering and I got so angry and depressed after completing 3 years of university - considering the unimaginably crummy (and in my case locally unpredictable) job market, that I chucked it all and went into the job market with no degree. I'm one of the 4 (of the 5) now earning a good living as a computer guy. I do programming and system administration in the technical computing field - Computer-Aided Manufacturing (CAM) specifically.

    My point is actually very simple: There is an abundance of people who can do the job for you. But you have to get the resume points the right-way round. They are the ones schooled in science, but with work experience with computers. NOT the ones schooled in computers, but with work experience in science.

    ELIMINATE CS degrees from consideration. Look for scientific schooling, then job experience in programming. There are lots of us who fell into our jobs, many would like to do something more scientific, and some would jump at the kind of position which you describe.
  • You might look up some older EE types. They all have decent math backgrounds. I know a couple that are retired that work in university labs for free, just for the fun of it.
    Good judgement comes from experience, and experience comes from bad judgement.
  • Some CS programs have "tracks" for "focuses" that allow students to take their CS majors in specific directions. For instance, where I went to school (Taylor University [tayloru.edu]), students could focus on business, graphics, etc. I focused on "Scientific Programming", and also got a degree in Mathematics, which is probably exactly the kind of thing you are looking for!

    You could always contact Taylor or other schools specifically asking about "Scientific Programming" tracks.

  • 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.
  • Comment removed based on user account deletion
  • What you need someone with a forceful personality and a good deal of experience. You're probably not going to get either hiring new grads.

    You need someone with a forceful personality because they're going to need to shout and yell to get the scientists to sit down and write actual specs for the programs they want to be written. A couple of post-its with some scribbled bits on them do not count as a proper spec. And a passive introvert is most likey going to try to figure out the post its, get it wrong, and then nobody is happy.

    Unless they did their undergrad study at Hogwarts, no programmer has taken any magic courses. They do not know how to pull rabbits out of hats, nor do they know how to read minds. Chances are, if someone goes off to write a program and comes back with something that nobody wants, it's not because the programmer isn't good, it's because that programmer was given an incomplete or (most often) non-exsistant spec.

    So if you want in-house development, you're either going to need to find a progammer that's willing to argue in meetings, or you need to find a manager for those programmers capable of doing the same. You can't just assume that because someone knows how to program that they'll be able to write software in a vacuum that satisfies anybody.
  • 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:

    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 /. have a <pre> or a <code> tag?

    -"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"

  • On a similar vein - look for postdocs from science subjects. Many researchers go into computing after doing their PhD because (like me) computing was the best bit of their research. If their research involved a lot of computing then they understand both programming and research. One word of warning - their programming skills may not be that good (a CS education is some use ;-). So if you can find someone who's also had a few years experience in industry, you might find that they are better programmers. Anyway, to find postdocs, advertise with the local university careers service.
  • PS What (and where) is the job? I might be interested ;-) CV at http://www.andrewcooke.free-online.co.uk/andrew/in dex.html
  • 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.
  • 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

  • If I read your description of who you are looking for without the words [Computer Science | CS] I first think of engineers, not Computer Science majors... What you want is a problem solver with a broad range of interests (maybe more so than broad experience).

    Most computer science majors I know fall into one of two categories -- slackers who think they will be the next great game designer, and couldn't think their way out of a wet paper bag; or the kind I would *hire*, who have a great deal of intellectual curiosity, know their way around a Unix like system, and can solve any problem if they know where to look for documentation. But to have someone who readily straddles the hardware/software divide (despite the fact that they are the same thing..) and better fits your description, you want perhaps a Mechanical or Chemical engineer that is less than gung-ho about Mech/Chem engineering. I know because I am one...

    I'm currently working as a Mechanical/Manufacturing Engineer, mostly for the broad range of problems I get to deal with -- but unlike ANY of the folks I graduated with in MechEng, I love programming, setting up systems that work, interfacing hardware and software and PEOPLE (you know, the important part of the system) and generally doing the things you describe -- but I never would have *dreamed* of majoring in computer science; I didn't fit that profile I guess. I had a scholarship for a pre-med program, and an academic scholarship for Engineering, which is what i ended up majoring in.

    The broad-based thinking one acquires from engineering is FAR more valuable to me than the stuff I would have learned in Comp Sci (though I did minor in CS at the last minute because it was so easy). So, when you post for jobs, don't limit it to CS, invite all Engineers and free thinkers with relevant interests to apply and I think you'll get more applicants like the ones you are looking for. Another clever idea is to request interviews with people who meet certain Meyers-Briggs types. Either INTP or ENTP is probably what you are looking for.


  • Are you one of the clueless morons who emailed Michael? Try reading all of the words, in order!
  • Ha! Companies are reluctant to hire scientists...

    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.



    --

  • 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.
  • by FallLine ( 12211 ) on Saturday March 24, 2001 @08:07AM (#343167)
    CS degreed geeks are certified geeks! CS degreed geeks are assumed to have intimate knowledge of computers at every level of detail; down to where the Physicists and Material Scientists take over.
    Oh please. I've known CS grads from tons of schools, "certified" or not, they vary from mediocre, to ok, to excellent, to merely acceptable. To put it simply, the skills, abilities, and knowledge that are "tested" in CS (same can be said for engineering and many ohters) programs are often quite different from what is required to excel in industry or even academia. Now this is not to say that a degree can't be an immense help, but it's certainly not a guarantee of knowledge, skill, or ability by any stretch of the imagination. If you think that mere performance in school is going to assure you a place in this world, you're simply kidding yourself.

    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
  • of course, there are those CS schooled (myself) that would *LOVE* to do exactly what they're describing, and would be quite capable of it.

    for years i've been saying to myself that i need to break out of this terribly boring business mold and go toward the scientific or manufacturing side of the spectrum. (the problem is that in the city i live, these are quite rare)

    i had lots of math, physics, chemistry, biology, materials sciences, etc. i want to use those skills again. it's a shame to have those diluted by typical business problem-solving :(

    Peter
  • I think he needs to shift from CS to CE. Computer Engineering. Most computer engineers are now required to learn C programming and Calc I-III and Diff Equ.

    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!

  • . 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

    Geez, go to any university campus in the western world. WE've been trying to hire a decent programmer for about six months now, but the simple fact is no one with any experience has been willing to work for the kind of salaries that a public university pays (we can offer 50k or so, for someone who would expect 100k in the private sector).

    I know I could double my salary in the private sector (or at least could, before the dot-bomb) but getting two months off every year and having a fascinating job is worth more to me right now than making SUV or toilet paper ads for Madison Avenue...

    ---------------------------------------------
  • well, considering the kind of thing you mention is right down my alley, and that i am a poor grad student trying to stay alive while i finish my thesis, all u need to do is offer me a respectable looking monthly bribe, and not be based in UTAH.

    :)
  • 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.

    --
  • by geophile ( 16995 ) <jao@NOspAM.geophile.com> on Saturday March 24, 2001 @07:51AM (#343175) Homepage
    From your article: Others become prima donnas, demanding large salaries and extreme benefits.

    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've seen a lot of discussion here about hiring people with CS, Math, Theoretical Physics degrees, etc... If you are insistant on a 4-year degree, maybe an Applied Physics degree would be good, but if you are really looking for an "all around lab hacker" and none of you want to do it, maybe it's not a job for a scientist. If what you really want is someone who can get your lab equipment to talk to each other and automate some of your research, look for someone with maybe a two-year Technology degree and a process control type background. Try searching for keywords such as "Wonderware", "Lab View" or "Instrumentation". You may find just the person you are looking for in a 28 year-old Technician at a refinery who is tired of climbing a cracking tower at 2 AM on a winter morning to re-calibrate a temperature transmitter. This person also likely has over 5 years experience networking the types of equipment found in a typical lab. This would include several different serial standards (RS-232, RS-485) and protocols (Modbus, Data Highway+)and probably some scripts (I use perl myself) to get these things to talk nice to each other. A place to look for people like this would be the ISA [isa.org] web site.

  • Have the most technically skilled individual who is most like who you want to have working for you and have them tell you how to hire someone good. Also don't worry about a degree worry about the individual. Throw everything you think you know about hiring people out the window because it will not work for CS/hacker types at all. Remember always your best CS/hacker types do a lot of hacking and may not dress perfectly or have the best communication skills but they may be able to program everything you need better than anyone.
  • 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'm an engineer, but I couldn't code.
    I wrote some programs to do analysis and so did some of my peers. We could never get the computer to do exactly what we wanted quickly and easily. It was hard (The internet was in its infancy so as a reference we had to use books which we had very few of....)

    I went back to school to get a MS degree in CS. I look back at some of the old programs I wrote. They were awfull. I think the CS background helps you understand things that a pure scientist would not:
    -. What you options are (language wise)
    -. How to design a program
    -. Data structures
    -. Database design

    A lot of my EE friends in school jumped right in to programming after graduation. You can learn all this stuff at work.

    Now I have the opposite problem, finding scientific programming positions is hard.
  • Amen.

    I'm have a engineering and a computer science degree. I think the broad background helps alot.

  • Isn't this what grad students were invented for ?
    get grad or even undergards in the field you want the work done. they can learn the computing part by themselves
  • my particular bias is life science it will show with the following URLS: bioperl.org [bioperl.org], biojava.org [biojava.org], biopython.org [biopython.org]. Find projects like these in whatever dicipline you are interested and you will find lots of science-capable programmers either actively contributing or participating in discussion. Don't spam the mailing lists with job listings of course - be a bit more subtle and find out things like what school programs are producing these folks, what conferences & events they attend etc. etc.
  • I am at UNH right now studying for a degree in Integrated Mathematics: Computer Science. I know many other schools (BU, RPI, for example) offer similar programs. In this field, i get a lot more math experience, and i learn more about the basics of CS (i.e.- Assembly, FORTRAN, etc.). perhaps you should look towards graduates with a degree in this field?
  • 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 [gamers.com] 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.
  • ... and Physics and Math. At NASA, most of the good programmers seem to have Electrical Engineering or Physics degrees. For scientific programming, it is important to understand the science. CS majors are less likely to have the background and interest, and are often not very hardware oriented. It may also help to get people with experience rather than entry-level types.
  • I have worked on similar projects before..

    http://www.mindspring.com/~anuta/volodya/resume.pd f [mindspring.com]

  • by mav[LAG] ( 31387 ) on Saturday March 24, 2001 @03:53AM (#343187)
    Don't look in Computer Science - too many of the types you don't want. Rather see if you can't find second or third-year engineers with some programming experience. At the varsity I was at, a goodly proportion of engineers realised that the field wasn't for them halfway through the course. They were engineering-minded certainly, but some were already seduced by the ease of software development vs. hardware development, others just didn't want to pursue it full time.

    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.

  • As a researcher in computational chemistry, I am quite familiar with this problem. Only a minority of chemists and physicists are interested in (or any good at) programming, while CS students/grads usually haven't taken much of the physics that they need for our research.

    The biggest problem in attracting well-qualified candidates is salary (or stipend). In my field, the going rate is about $18k for grad students and $25k for postdoctoral researchers. Not at all competitive with what industry can offer a talented programmer.

    The only reason we can attract anyone at all with these stipends is that we're not hiring employees, we're training students and researchers. They're here for the education, not for the earnings. Or at least they should be.

    It's unrealistic to expect someone who already has all the skills I need to be interested in working in my lab for peanuts.

    By the way -- if anyone is interested, I'm currently looking for a postdoctoral researcher to work on a comp. chem. project involving object-oriented parallel processing in F90. Email me or see web page below for details.

    -Steve Stuart
    http://radar.ces.clemson.edu [clemson.edu]

  • So, what is the problem with that?

    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/

  • I have a B.S. in physics but for the last 4 years I've made my living coding. Research-oriented coding would be an interesting change. I happen to have my resume up at sourceforge [sourceforge.net] and I live in Baltimore, MD.

    Wow, job trawling on slashdot, I feel so dirty.

    --
  • Ok, first off, I'll admit that looking for people who have left a PhD program will seriously cut down on the already small pool of programmer types.

    Everyone in my CS PhD program who dropped out (meaning took a job in the industry) were all strong scientifically and mathmaticaly but just didn't want to deal with the way out there the theory needed to complete a thesis. That kind of person sounds perfect for you.

    Bright enough to do research, but not spacey enough to give up programming for the rest of their lives in order to get papers published.

  • Might be me... I have an MSc in biochemistry, really was into computers, so I landed a job as a computer consultant. But after a few years I really got bored by all the bussiness applications I had to deal with, i wanted back to science/research. I looked everywhere for a job as described here, but couldn't find one. Eventually I became a PhD student in computer science. I love the scientific programming, but I really hate the research part. I am still dragging it on, but for a job like this I'll readily drop out... So, if there's anything biochemical in the job, drop me a line...
  • Physics undergrads develop general problem solving skills that are applicable to a wide variety of topics. All you need are a few who happen to be adept with computers--that's hardly uncommon these days.
  • With the recent slaughters in the automotive industry there is probably a flood of experienced engineer programmers. If you're willing to pay for exoerience and proven track record you should have no problem.
  • Does anyone remember dreamjobs.com? Back before HotWired destroyed it, that is. They used to post all sorts of jobs that were CS crossed with something else. One of the ones I remember applying for was a job out in Berkely where someone wanted a person with a computer background to anlyze some data about protein interactions. They specifically wanted someone who didn't know anything about biochem, so they could have a fresh view of the data.

    I imagine there are tons of these out there. Heck, there's another article on Slashdot today [slashdot.org] 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!

  • If you want a talented person to work in your lab and you expect them to be flexible and able to problem solve, you should consider paying more, or at least advertising that you will pay more. The reason is that the person you are looking for might have already taken a higher paying job.

    This is not to say that it is just money, but if you advertise a higher base pay, you will get a larger pool of applicants to pick from.

    I would LOVE to program in a lab environment. I love science (I have a BS in Physics and in CompSci, with a Masters in CompEng) However I am not freshly out of school willing to burn many hours coding to solve the latest emergency.

    At this time I consult for a living. To be honest I can choose from a lot of different job opportunities, but I generally choose jobs that pay well. (I have a wife and two kids to think about) I would bet that many people out there with family responsibilities work in a similar manner. It is not for a lack of wanting to work hard for a company like yours; it is a matter of making ends meet.

    Good skills cost money, plain and simple!

    ~Sean
  • 1. fscking is not an adjective it's a verb - it has to do with checking your file systems for errors. File systems are something that computers have not human beings. I know you find Europeans strange and all but we are still human!

    While 'fscking' may not be a true adjective, it can be either the progressive form of the verb 'fsck,' or a verbal: a gerund, that acts as a noun, or a particple, which can act as an adjective or an adverb. His use of fscking as an adjective is correct, grammatically, even though its original meaning may not fit in the sentence.
    ---------------
  • Sounds like a dream job to me, I know all sorts of people looking for and getting into that sort of thing.
    Try finding someone in YOUR field with the skills, snagging an undergraduate at a local school early is probaly a good way to try before you buy.
    I personally love goofing off in labs, lottsa toys, interesting problems, a true hackers paradise.
    But again I'm a Mechanical Engineer, not a CS guy.
  • 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]
  • I am in the same situation: I'm a SciComp'er (M.Sc. in applied mathematics) and I cannot find any fun jobs. The people/companies I have contacted range from universities and engineering comps to consultancy, but they all say: "Gee, that IS exiting, but, we do not have that kind of interest". My old professors never told me, that this could be a problem =/

    I have now taken this initiative: I am founding Danish Scicomp Association, which is to be a portal for those who are interested in sharing scicomp ressources: Universities, employers and employees. Check out www.scicomp.dk in a few weeks =) There will be job ads, CVs/resumes and university contacts. I have a lot of potential contacts already, but if YOU can help me, don't hesitate to contact me!

    My hope is to make this world a better place =) by creating a place for frustrated employers and employees to turn in order to meat each other. I have missed such a place for a long time ...
  • 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.
  • Unfortunately, most recruiters can't tell the difference between muck and gems. Or rather, they can't tell the difference between gems (that which looks good) and good software developers.

    Excellent article, by the way. It pertains to most skills, not just software.
    I've still kept it even though all my old BYTE mags are long gone.
  • 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).

  • I have BS degrees both in Chemical Engineering and CS. I worked as an engineer for several years, fell into programming and liked it so much I got another degree in CS. I am working mostly on business apps at the present time, but I find it a little boring. I would love to work in a scientific context and solve scientific problems. I have experience in FORTRAN, Perl, and C++.

    Calaf
  • "How to know if they are qualified?&quot

    • College Dropouts: Successful college dropouts that find work in the industry tend to have skills and determination that overcome the stigma of being a dropout, but without the salary potential.
    • Corporate Dropouts: People who leave established positions to work independently tend to be self-starters who are tired of working without tangible goals; they tend to move to an environment with shorter term closure. They will want discrete problems to solve and move on.
    • On-Site Experience: Programmer types who have worked in the crucible of the customer site, tend to be much more results oriented than the ivory tower style developer.
    • Troubleshooting Experience: Ask potential candidates about their experience debugging other peoples projects. Saying that they had to rewrite it completely may be a bad sign; this to often indicates a 'Not-Invented-Here' attitude that simply does not work on teams. Saying that they used off-the-shelf tools, hardware investigation to solve the problem is the making of a good sign. Hearing that they worked to diagnose and prove the problem before they started fixing it is very important.
    • Development Standards: As software development is probably not your primary goal, make sure that your new hire is knows and has used some sort of methodology in their projects. These standards provide a sort of checklist to make sure that the right kinds of questions are asked of the right people.
    • Project Management: Some project management experience is a must for a small shop. All software development has a life-cycle. Managing that life-cycle, predicting the times in the cycle, and producing good answers to the Quality-Expense-Features equation are essential to producing good and timely software.
    • Team Development: Communication skills are often undervalued for small shops and small projects. But, the person you hire has a responsibility to communicate their activity to other members of the project, developers within his team, future members of the team, and the person that inherits the project in the future. Look for developers with well-documented code samples, examples of requirements documents, experience with revision control and team development tools.

    "How do I find candidates?"

    I believe that you have done it. So many of us in this industry are sick and tired of the constant travel, the irresponsible deadlines, repetitive problems, and lack of a worthwhile goals. I for one would be very interested in putting my brain to use solving good problems with good goals, that I would be willing to take a pay cut to do it.

  • The kind of person you're looking for will be very hard to find. A person who is adaptable and also knows software engineering. I like to believe that I'm a person like that. Actually I'm pretty sure I am the kind of person you are looking for, so I know the job hunt habbits of the type of person you're looking for.

    1. You have to be lucky, and find a person who isn't happy with their jobs. The good thing is, is that most large companies still don't understand that Computer Scientists & Engineers, and 'real' software engineers have different needs then your typical factory worker. You might be able to find a high powered, adaptable scientist from one of these larger companies.

    2. Most of the people you're looking for don't post their resume to the internet, or to headhunters, so going through those channels you might not find them. They also don't look in the newspaper want ads. They talk to their friends, and their friends ususually know of a job from a friend of a friend of a friend. The last time I got fed up with my company I wrote an email to a friend, got a responce back and basically got a 40% raise a month later at a different job. I didn't post to the internet, and didn't talk to a headhunter.

    3. You have to snag their interest. The only way you're going to get the type of people you seem to want is to snag their interest. A lot of the adaptable scientists are like the hippies of the 60s, they want to change the world. If you offer them a chance they might hop onto it.

    4. With the economy of today everyone is skitish about switching jobs. You'll have to offer rock stable stability (not California or Washington rock, they have a habbit of shaking and knocking down buildings). While it is true that the 'real' engineers (not web developers) are still high in demands, they're still nervous about switching jobs because of the economy, if you offer alot but not stability you won't get them.

    Still the most important thing is who you know that knows the type of person you're looking for. And getting a reference from someone you know also gives you a better chance at finding a jewel in the rough.
  • I'm about to graduate and I feel like some kind of alien because I'm looking for jobs in science. I don't really want to work making websites for tennis shoes or making products for corporate america.

    I've been looking for jobs at astronomy labs and physics labs and they're really hard to find. There aren't really a lot of resources dedicated to finding these jobs. Do you guys know where to look for this kind of thing?

    Although there are some good points discussed here, such as the value of having your skillset up to date. But I don't see why you can't apply current techniques like web development, xml, sql, blah blah blah to scientific development? I'm sure scientists can benefit greatly from using the latest technologies, they just need a kick ass programmer to inform them about what they CAN do. Of course my other concern is that scientific institutions won't have the same budget as big software/deign houses, but there's always a price to pay for doing something you care about.

    anyway, feel free to contact me. See my flash website to get my email address. (spam sucks)


    http://www.hyperpoem.net
  • This really rings a bell with me because I am in that situation, except that I am benefitting from it. I am currently doing research in chemistry at Stony Brook but my research doesn't involve any real chemistry - I just help design algorithims to "solve" the packing problem. It's funny because I am really a philosophy major with a strong science background (i'm pre-med). The person who I do research under was telling me about this problem. There isn't enough money to attract good CS students into research type stuff. The one guy who does no CS has so many perks - can come in late, leave early, long lunches, always needed. Its more than just the average "my printer won't print" stuff too. In my case I get an A because otherwise the problem is screwed until they find someone else.

  • You shouldn't be considered, because Computer Science is largely an overview of tools and technologies to make programming easier and has little to do with making a product work properly.

    It's not enough for a product to "look good enough", it has to be engineered.
  • The person you are looking for might have a computer or electrical engineering degree. I am working on my computer engineering degree and can attest for the rigorus mathematical education the curriculum affords. The candidates for these degrees often work on designing and constructing scientific computing systems because they often employ the most pure and bleeding edge ideas in computer science.

    WARNING: blatent cheerleading

    check http://ece.www.ecn.purdue.edu/ECE/Research/Areas/C ompEngr
    to see one school's description of the major
  • Actually, Ohio State has a similar program... Electrical/Computer Engineering (ECE). It's an EE degree, except you turn down the analog quantity and add a bunch of software engineering courses instead.

    I graduated last December with an ECE degree from OSU, and am now working in a human factors research laboratory attached to a defense contractor. Business programming is mind-numbingly un-inspiring. My work is really cool - one-shot programs to solve individual problems. Unfortunately, we lost out on the contract re-compete, so I'll have to see if I can transfer to another research arm of our company, or I'll have to a) work in the business arm (still defense related, but not as cool) or b) find a new job.

    Cheers,
    Brian

  • So, your deparment teaches mathematic? What's a mathematic? Just because you can't properly use english grammar doesn't mean that anyone else shouldn't.

    Also: pluralise - Standard spelling in UK english
    pluralize - Standard spelling in US english (and incidentally, Canadian english)
  • You misunderstand my all-too-succinct statement; unfortunately, my op-ed piece in BYTE had to be 600 words or less, so I didn't have much room for exceptions or nuances.

    Heavens, no, there is nothing "base" about salary. My second job out of college (working on the Space Shuttle flight simulators at NASA/JSC), I turned down the first offer I received because I thought it was too low. I have always negotiated firmly on my salary and other benefits.

    There is nothing inherently 'prima donna'-esqe about asking top dollar for demonstrably rare talent, as long as you recognize that (a) you may not get it, and (b) you may be the first to go in an economic downturn.

    When I wrote that one line in the article, I was thinking in particular of two developers I had interviewed in the 1990-1991 time frame who were asking 6-figure salaries, signing bonuses, _and_ company-provided sports cars...and this was for joining a startup. They flattered themselves tremendously, and their requests were way out of line with both their talents and the then-current market situation.

    Ironically, I went into computers some 27 years ago not because I thought it would pay well (starting salaries in the 1974 time frame were around $12-15K per year), but because I was (and am) a geek. It has been a pleasant surprise to find what I have been paid first as a consultant and now as an IT expert witness. My youngest daughter wants to go into IT; I tell her it's a lifetime employement guarantee. On the other hand, I have been laid off or had consulting/contract engagements end abruptly several times. A lot of developers (good and bad) are finding that the high-tech job market has suddenly cooled--and it's likely to be cool for some time.

    In the other direction, it is very possible to be a prima donna without having an outrageous salary--you just have to be arrogant, self-centered, obnoxious, and vastly more concerned about yourself than about your team members or the success of the company that pays your salary. I'd rather have modestly-talented but professional developers working for me than highly talented primadonnas. And developers "who love what [they] do" and are "master[s] of [their] craft" are, in my experience, rarely primadonnas. ..bruce..

  • The best programmers are generally more interested in having "cool" work than in maximizing their incomes. As long as you pay them enough and keep them interested and happy, you'll keep them. But you'll lose them when the work becomes boring/tedious, if they have an opportunity to work on an even cooler project, or if you piss them off in some way.

    Yes, yes, and yes.

    Also, you'll lose them if you fail to give them a chance to learn the latest technologies. I have been amazed and dumbfounded for many, many years at the short-sightededness of organizations that refuse to spend money to let their developers learn new things "because we're afraid they'll leave and get a better job elsewhere." In my experience, one of the major reasons developers (especially the good ones) leave our current jobs is to go learn new technologies. We worry more than anything else about becoming obsolete or irrelevant. ..bruce..

  • Don't put absolute faith in having degrees or certain types of degrees. Many CS degree programs haven't been around more than fifteen maybe twenty years. Note, that of some the very best engineers/consultants may have never finished their degrees.

    Again, I agree. The single best software engineer/architect I ever hired was a 24-year-old high-school dropout (he did get his GED). But this was someone who kept up on leading-edge issues and technologies and was doing leading-edge development on his own at home. I believe he's now retired, having won the 'geek lottery' at a subsequent startup.

    On the other hand, there's a lot of folks who mistake knowledge for skill and skill for talent. You really want all three. ..bruce..

  • Brilliantly concise: irrelevance, ignorance, illiteracy, and vulgarity all tucked into a mere six words. My hat is off to you. ;-) ..bruce..
  • by bfwebster ( 90513 ) on Saturday March 24, 2001 @05:09AM (#343217) Homepage
    (1) Your quest is constrained in large part by the fact that only a small fraction of the population has any actual talent in software development and engineering [byte.com].

    (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 [pwcglobal.com] 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) [byu.edu] 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..

  • You say you're involved in a research project and are looking for people with a "by programmers for scientists" attitude. I concur with the other suggestions of looking for someone with the appropriate scientific background who can also program; what surprises me is the implication that such individuals don't exist in your particular field of interest.

    You see, I started programming while studying for a physics degree in the late 1960s, at a time when CS was a rare academic discipline even at the postgraduate level, and like many acquaintances in the math/ physical sciences/ engineering fields I went into the IT business because it paid us well for work that we found easy and even (at that time) fun. And my impression is that since that time, knowing how to use computers as a tool has become a standard part of the curriculum in just about any university-level scientific discipline.

    It sounds to me as though there's a mismatch between your field and what you're wanting done, and it's difficult to suggest useful approaches without knowing more about both.

  • because he's got enough karma? duh?
  • I'm not sure how the Cs system works in the States, but here in Canada the program you would be looking to hire from would be University grads from either Computer Engineering. College grads here aren't the same as in the States, as they are mostly technicians and don't learn anything theoretical.

    The Cs program at my university revolves moslty around the pure theory of writing software. (ie : why use a stack over a deque in certain applications, Big O notation for every last function in every last application, optimisation). The program doesn't involve much practical applications, or much math or physics either.

    The Software engineering program here (to be accredited at the end of the year) is just like Cs, but with a tiny bit of hardware background, and more practical applications in their course load like kernel design (using Linux as a basis) and a lot of business classes. Again no maths of physics.

    The Electrical Engineering program revolves around everything that touches hardware, from DSP to microwave tech and microprocessor design. The program is very math and physics intensive, but contains almost no software courses.

    The Computer Engineering program is almost the same as the electrical engineering program, with a software load added. We take physics (the dreaded electromagnetics), a lot of Math, and no business courses. We still learn DSP, uW, and microprocessor design and such, but added to the program are software courses dealing with everything from theoretical (data structures, optimisation, AI) to applied (OS design, kernel design, driver design).

    Again I can't speak for the US system because I know there are a multitude of differences (like engineering being accredited for colleges), but from the description of your needs it seems like CE grads from a Canadian University would do the trick for you.

    I am Dyslexic of Borg
    Resemblance is fertile
    Your ass will be laminated

  • It's also been my experience that talented programmers are few and far between.

    Talented anything is rare, simply because that's what shapes the definition of talented.

  • I run the bioinformatics department for a biotech company in Cambridge, MA, and I face this problem every day. I have found that the specific type of programmer you need really depends on the application. Learning to program is not all that difficult- pretty much anyone can learn a programming language with just a sort period of study, at least to write simple scripts in something like perl or python. If all you are doing is 'all around lab hacking' it might be enough to look for ex-scientists which have gotten interested in programming. About half the resumes we get are from this type of individual, and they have the benefit of knowing quite a bit about science and the laboratory activity.

    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!

  • I've been trying for rather a while to get into the research arena.....
    please contact me on gazZ@silverhand.eidosnet.co.uk
    Current CV is at http://angelschool.cjb.com/cv.doc
  • yeah.....morons have a tendancy to prefer it
  • > Does the Slashdot audience have any suggestions
    > 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...
    --

  • 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 [geekaustin.org]
  • I am one of those soon-to-be (ok, well, at least another 2 years) graduates (in IS&T [umn.edu] and Biology [umn.edu]), and am interested in doing scientific research. I just got offered a undergrad research position at the NRRI [umn.edu] 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 [progressive.com]. 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.

  • 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.

  • 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.

    As a mid-thirties geek, I'd say that reality isn't quite as bleak as that. My salary has doubled over the last couple of years, and I could probably make more, but I'd gladly take a pay cut to do work I found interesting. I think the same is true for a lot of the top-notch people I've worked with.

    The best programmers are generally more interested in having "cool" work than in maximizing their incomes. As long as you pay them enough and keep them interested and happy, you'll keep them. But you'll lose them when the work becomes boring/tedious, if they have an opportunity to work on an even cooler project, or if you piss them off in some way. Good people generally know that they're good people, so they expect to be treated well.

    The difference between talented programmers and untalented programmers is truly staggering, and it's not easy even for knowledgeable people to tell the difference during the recruiting process. You really have to work with someone for a few weeks to figure out if they know what they're doing. But it is fairly easy to judge the results: if their programs work, and they're enthusiastic about improving them, then they're good people. If their programs suck, and they get defensive when that fact is pointed out, then they should be let go.

  • 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.
  • 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."
  • &gtWere you a 4.0 student? I doubt it by your comment.

    Were you modded to +4 Karma? Doesn't look like it.

    The truth is, the grandparent to this post was correct. Not all 4.0 students are worth more to an employer than say a 3.0 student. In fact, I was damn near a 4.0 student when I graduated from college the first time arround, but was I better than my one of my friends with a 3.0 GPA? In all honesty, no I wasn't.

    From my humble experience, 3.7 students (just to pick a number) actually perform better than 4.0 students because the 4.0's spend too much time on all the little details. The 3.7's seem to know what corners to cut, and can almost earn the same grades in just a fraction of the time. (law of diminishing returns). Now don't get me wrong, some students (especially computer folks) that devote their lives to their careers skew my observations because of an amazing ability to learn with little or no effort. I'm ignoring those folks for this discussion.

    From your comment, I sense that you probably are a 4.0 student, but resent the fact that others that don't work as hard as you can say stuff like that. I know it sucks, but working_hard != sucess either. Just like having a 4.0 GPA helps, it's no guarantee. Lighten up with your judgement of others, try to stay open minded, and you will likely encounter success as well. Best of luck to you my friend.

    Don't you just love having Karma to burn?
  • I am one of the poeple you seek, but, unfortunately for you, I'm not for hire!

    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 /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.

    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.
  • Of course, I'm still an undergraduate (in the second year of my CompSci degree), so by the sounds of things you wouldn't want me.

    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.

  • Ever think of hiring physics grad students? At my university, all physics majors were required to take a computational simulation type class, and at the graduate level pretty much _everyone_ I know has a great deal of experience and talent in writing scientific code.

    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? :)

  • Or into what you Brits call a "skip", I think.

    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.

  • You might try looking for middle-aged (i.e. 30-50) programmers who have a background in math, engineering or sciences.

    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

  • by martyb ( 196687 ) on Saturday March 24, 2001 @06:26AM (#343285)

    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:

    You've got a feel for the conceptual side of what you want to accomplish in the big picture, and the programming aspect is some vague, nebulous, "black box" where some programmer is supposed to come in and make it all work? But, things take MUCH longer than expected, and does not do what you want it to, and when the programmers try to explain what their difficulties are, it's so arcane (to you) that it sounds like they are just trying to evade their assigned responsibilities.
    I've seen this KIND of problem countless times in my 25 years of experience programming, designing, and testing.

    Suggestions:

    • Learn Programming! A couple courses in Algorithms, Data Structures, and Numerical Computing, I think, would give YOU tremendous insight into the very real challenges of programming. Then, you can BEGIN to fairly assess and understand what you are trying to do.
    • Hire a Seasoned Programming Manager It's one thing to hack together a couple of small little programs to do some ad hoc tasks. It's quite another thing to develop code that has solid error checking, has consistent user interface design, and that is also maintainable, reusable, and extensible. Hire someone who knows the difference and who can act as an interface between what you [think you] WANTt and the realities of what you really NEED.
    • Design, Design, Design! Planning is Key! Step-wise refinement is Your Friend. This is a classic problem I've encountered where the thought is "We need this ASAP! We don't have time to plan it all out... can't you just do blah, blah, blah for now and we'll get to the rest, later?" Build a SOLID foundation in your design, and CLEARLY IDENTIFY the difficulties. If things are well-understood, the programming is effortless. Continual change requests and edge-case surprises will cost you far more time and energy in the long run than it would take to try and do it right the first time. (This IS difficult; human nature seems to want to look at the things we can do, and to avoid the things that are problematic.) In short, if it's hard to design, it's gonna be hard to code until you DO design it. Recognize and understand that truth and you'll have come a long ways!
    • Hold Design and Code Reviews! Get involved, be open-minded, learn! Granted, the coding stuff may look like so much gibberish to you at first. I imagine calculus or particle physics did once, too. If you can learn THAT, you can learn some of this, too, if you want to and understand the need for it. Reviews provide a forum for a "meeting of the minds", an opportunity to openly share what challenges have been faced and the efforts employed to manage them. The abstract becomes concrete and there is a gradual growth of mutual understanding of the scientific challenges (so the developers better understand WHAT you are trying to accomplish - what is important and what is not) as well as an understanding of the programming challenges (NP-complete problems, inconsistent data formats, dirty/inconsistent data, bugs in the instrument's programming interface, etc.) Again, a seasoned programming manager should understand these issues and can help guide things along (but, from experience, DO NOT have the programming manager attend the code reviews! Really closes down communications when the guy/gal who has responsibility for hiring, firing, reviews, and promotions is sitting across the table -- problems just go unmentioned for fear of reprisal!)

    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 a graduate student in Mathematics. I have worked on projects in C involving emergency egress simulations, simulated annealing applied to elevator scheduling, and am currently working on Bandwidth problems with applications in multichannel communications (i.e. streaming media over TCP).

    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!

  • There are two main questions to ask here:

    (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,
    (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 ... does it start coming back to them when you talk to them?
    (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.
    --

"Engineering without management is art." -- Jeff Johnson

Working...