Hire engineers and teach them to program? Or the other way around?

I was looking back through an archive of quotes I’ve collected over the years and came across the following bit from Zed Shaw, author of Learn Python The Hard Way.

People who can code in the world of technology companies are a dime a dozen and get no respect. People who can code in biology, medicine, government, sociology, physics, history, and mathematics are respected and can do amazing things to advance those disciplines. [From the essay: Advice From An Old Programmer]

While I have not traversed much of the professional computing world, from my limited viewpoint in the structural engineering software development community, I think Shaw’s point is well-made.

Our field is faced with a fascinating dilemma: Hire computer scientists and teach them structural mechanics? Or hire structural engineers and teach them to program?

Ultimately a successful developer in this domain will need both. Without appreciation for sound structural design principles, a computer scientist could make a dangerous omission. Without a computer science background, the code produced can be inefficient or untenable.

I couldn’t honestly tell you which discipline is more easily learned first academically vs. later on the job.

But those with enough foresight and discipline to acquire both are valuable and rare.

Related reading: Software Exoskeletons by John D. Cook