"we haven't quite figured out how to get the artist-programmers and the engineer-programmers working together"
Pair programming.
Alternatively, I would say that we actually have. I believe that the Artist-programmer is most concerned with the expressiveness of the code, wheras the engineer-programmer is concerned with the efficiency and stability (of course there is overlap/cross-pollination.) The artist-programmers work at the problem domain level, and the engineer-programmers work at the systems/implementation level. Apache/MySQL/Sphinx written by engineer-programmers, Sinatra apps written by artist-programmers.
Pair programming.
Alternatively, I would say that we actually have. I believe that the Artist-programmer is most concerned with the expressiveness of the code, wheras the engineer-programmer is concerned with the efficiency and stability (of course there is overlap/cross-pollination.) The artist-programmers work at the problem domain level, and the engineer-programmers work at the systems/implementation level. Apache/MySQL/Sphinx written by engineer-programmers, Sinatra apps written by artist-programmers.