Before Voci, I have worked in 3 types of work environment, academic institute, industrial research lab and startups (such as Speechworks and Scanscout). There is one common thread, all environments require strong development background. My role has always been a craftsman, under supervision of scientists, researchers, principal investigators or company owners to produce software and achieve a certain goal. Of course, my specialty is on ASR which is always my dearest topic.
There are many things you can say about software engineering in each environment. But in my view, producing quality software in academia is probably the toughest situation. I am not alone. See this post "Producing Good Software From Academia" from Prof. John Regehr. My observations, is very similar to what Regehr suggests: career professors are very unlikely to have time to maintain a good software package. Most Professors either take hire research programmers (guys like me) or assign these coding tasks to graduate students.
What I want to add here is both paths are difficult. Research staffs, for example, have high mobility. The stories go, who is who who maintain and develop a certain project source code decides to join Google/Amazon/IBM or startups. That obviously makes sense. Commercial companies paid way more than academic institutions. Research staffs, just like other human being, were driven by economic laws and seek for better employment. (Or for me, more fun.)
If you assigned the tasks to student, on the other hand, you face the problem of how to balance the load for all students. My observation on my couple of bosses is that it is a very hard problem. It usually results in either
- certain privilege student become the "golden boy/girl" in the group who doesn't need to do any grunge work.
- the group become more a company than a research group: for most of the time, research was on the sideline to make the whole group survive.
One version I heard was that if you work on academic research, only have around one-forth of your time would remain as "research time". It is sad but it's brutally true.
Another deeper issue is the merit system: maintaining codebase for the community is not rewarded and sometimes just unappreciated. On the other hand, writing papers earn you accolade. This is a misfortune of our era: software maintenance is a very important discipline. People who are willing to spend this effort should be rewarded fairly and equally for researchers.