This answer assumes you are writing about those who write absolute gems of software such as a single function that is over two thousand lines long and whose extended cyclomatic complexity is close to one hundred. On the other hand, others in that same class of people consistently write well-structured, testable software. So what to call these people?
First off, there's an inherent problem with your term "scientists and engineers." The problem is computer scientists, computer engineers, software engineers, and also those who have received formal education in the newly-emerging field of computational science/scientific computing. Better perhaps is to describe them by what they do, which I'll call "technical programming" (as opposed to business programming, game programming, web site development, etc.).
Next we need to distinguish between various people who do technical programming as a key part of their job. Consider the following people (with obviously fictitious names):
John Doe, who majored in chemistry and minored in computer science as an undergraduate, and then went on to get a PhD in biochemistry. John is currently leading a team that is developing a high fidelity and high quality software model of drug interactions in people.
Jane Doe, who majored in computer science and minored in chemical engineering as an undergraduate. After graduating, Jane found a job in the petrochemical industry that takes advantage of both skill sets.
James Smith, who majored in mechanical engineering and took the introductory computer science course (but only because he had to) as an undergraduate. James is now writing execrably bad software for the automotive industry; fortunately his software has not killed anyone (yet).
Susan Smith, who has a PhD in astronomy and whose sole computer science class was a one credit MATLAB course. She is now writing a galactic simulation that by all appearances is of very high quality.
The distinction between the two Does and the two Smiths is the amount of formal education they have received in the area of programming. One possible label for the two Smiths is "uneducated technical programmer" (or perhaps "untrained technical programmer"), but that is rather denigrating and also incorrect. They are educated, just not in how to program a computer. My suggestion:
Ad hoc technical programmer - Someone with very little, if any, formal training in the computer sciences who has been thrust into the world of developing computer programs for some technical field.