Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

In my job as an algorithms developer, I am responsible not only for developing algorithms, but also for implementing them, all the way down to writing the code that goes into production.

I've heard that there are companies where there is a separation between algorithms development and implementation. The algorithm people come up with the "concept", and don't write any code except for research purposes. Then there are programmers in charge of implementing the algorithms.

At my company there are thoughts recently of hiring designated algorithm developers who will not write code, as described above. I am intuitively opposed to that idea, but I've never worked in such a place before, so I may be biased. Is this a viable model for software development?

share|improve this question
add comment

2 Answers

up vote 4 down vote accepted

Yes, when the work is highly specialized. I once worked for a software company that had a team of PhDs who did the science, primarily using MatLab to crunch numbers and test algorithms. Then there was a hybrid guy who understood much of the science and rebuilt the algorithms in C++, working with the scientists to confirm that the code behaved the same way as their models. Lastly, there were teams who took that C++ engine and used it to build products the company could sell, sometimes wrapping the engine up for use in other environments (e.g., C#).

The concept worked well, except when it didn't. There were entire classes of customer problems that the product teams were unable to resolve, because the root cause traced back across the science-to-code boundary. The science team was always focused on advancing the science, not repairing problems, so many of those were just filed away to be fixed by the next generation of the algorithms.

Offhand, I wouldn't recommend this model of software development, but it worked for this particular company, and it solved the problem of needing multiple skill sets (e.g., good coding and strong science).

share|improve this answer
    
"primarily using MatLab to crunch numbers and test algorithms" - so at least the coded in MatLab and did not just algorithm development with pencil and paper. So your answer is not really "Yes" (nevertheless I think its a very good answer). –  Doc Brown Feb 15 at 18:41
    
MatLab is a tool, just like a mass spectrometer or an atomic force microscope. The focus is on the science, in this case, the mathematical manipulations of the data. You could do the same thing with pencil and paper, but then you'd be as much of a luddite as the chemist with a balance or the physicist with an optical microscope. But thanks for the "good answer" :-) –  Ross Patterson Feb 16 at 14:07
    
I see the difference between MatLab and pencil&paper in the fact that the former allows to verify and test algorithms, the latter does not. IMHO developing algorithms without ever testing them leads often to unusable nonsense. And the OP was talking about algorithm design without implementation, thus without testing. –  Doc Brown Feb 16 at 14:56
add comment

Yes, there is a place for just an Algorithm developer. In my previous company the product manager used to come with signal/image processing algorithms for requested features.

He used to use tools like MatLab/Mathamatica to design algorithms, these concepts would be picked and developed by team. We had very talented developers who could convert these concept into reality.

I personally think that it is quite difficult for an average developer/non-academic (like me) to design an algorithm and code it too.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.