> We need passionate people who are creative and want to learn to DESIGN software in addition to coding. We also need good workers who can scrape together the code to pipe data from one application to another. We need sociologists and detectives who can construct SQL queries. We need scientists and economists who can cobble something together in R. We need physicists and engineers who know their way around MATLAB or…
I've worked with a lot of smart people in data-gathering fields (researchers, journalists, analysts)...the amount of human-hours wasted on cleaning up data that was compiled by someone who didn't understand delimiting, normalization, or how operations can be repeated when we have a pattern (kind of like map-reduce) is near tragic. Think if you worked at a publishing house in which you had a fantastic story-teller who…
2. Professional programmers create awful messes too. They do it less often, but with greater consequences. Just like the contractors building a bridge are less likely to screw up than some goofball installing a new water heater at home, but a bad bridge is much more dangerous. Give people more training when the potential consequences of bad work are more severe, and less training when it's just not needed.
3. The value of someone with both domain knowledge and programming knowledge is usually immense. You can either teach a programmer about the domain, or you can teach a domain expert how to program. If you have a programmer with a bit of domain knowledge, then they know what kind of questions to ask the domain experts. If you have a domain expert with a bit of programming knowledge, then they know how to communicate technical requirements to a professional programmer.
Let's take your analogy with the publishing house. If the fantastic storyteller can write but has major problems with grammar and continuity, then a good editor can clean things up.