I think software development won't be done by machines any time soon. The reason is that the work done by programmers is almost always unique, tailored to the specifics of the situation. All but the crappiest programmers can automate repetitive tasks. Therefore, programmers - by definition - always make something new or slightly different. If it was repetitive, they would automate it.