Вы можете создать грубую модель, а вот программист хороший, затем по этой модели на программирует именно хороший софт. И ему не нужны будут знания вами перечисленные.  Максимум  первое время ему понадобится освоить лексику вами используемую. В поинципе, если вы составите хорошую схему и требования, то программисту и этого будет достаточно, он еще сможет подсказать как и где и что оптимизировать. Ну это если программист, а не человек знающий язык программирования. Поэтому в научной сфере программисты требуются чаще мастера  изначально или  с хорошо зарекомендованы  себя опытом и постоянно самообучающийся.Программируя  все вы, по сути тратите излишнее время на изобретения велосипеда, когда как мастер помог бы создать самолет.