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.

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

closed as primarily opinion-based by Ixrec, durron597, gnat, GlenH7, Snowman Jul 5 at 16:07

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

2 Answers 2

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 '14 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 '14 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 '14 at 14:56
@DocBrown "The algorithm people come up with the "concept", and don't write any code except for research purposes." To me, writing code in Matlab sounds a lot like it could be "writing code for research purposes". –  Patrick M Dec 15 '14 at 21:11
problem is the scientists I know generally write shitty code. I don't blame them, lots of their frameworks inherit junk. Poorly named things, dense quadruple-layered loops make the translation step hard at best. –  FlavorScape Apr 7 at 17:26

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

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