Re:Some Insights from a Julia Developer
by ChrisRackauckas on Saturday October 14, 2017 @12:34PM
(#15472918)
Thanks for bringing this up. It may be more of a domain-specific use of the terms. In science and math, most of the people who are "programming" are not really that deep into programming. Most people go to a workshop on "here's how to use R to do some regressions", and they will know a small portion of the language and usually rely on some libraries to handle most of the heavy lifting. For example, the size of the community that actually develops code for analysis in bioinformatics pales in comparison to the size of the community that is doing "bench" biology and performing the analyses. There is a clear distinction because in many cases the training is very different (CS and math backgrounds, vs more science backgrounds) and the "average day" and research focus are different. You can swap out biology with pretty much any other field and see the same split and this is the "package user" vs "package developer" split in technical computing.
I've been pushing a notion like this when people think about (especially) languages used in scientific computing. There's something close to three types of users:
1. Developers. People interested in software development that just happens to be scientific in use. Basically anyone whose considered writing a package.
2. "The Fuzzy Middle Category". People who are pretty good at a language, know some software development concepts (testing, etc.) but whose primary focus isn't developing packages as much as it is answering questions, usually with a number of packages glued together with some interstitial code.
3. Users. "The steps I use to read a .csv file into R and then run a logistic regression are..."
They are, essentially, invoking software commands, rather than programming.
Now clearly, these three classes are blurry and people can move between them.
Yes, I think most folks do. He's making a distinction between programmers that are consumers of APIs vs. developers that create and maintain APIs.
Could someone please explain the difference between the two terms? I've always used them synonymously.