I've done a lot of optimizing process flows for e-commerce sites and let me tell you... without a good programmer, you are always going to be lagging.
Even *with* a fulfillment company doing your shipping, you still have to get them the info.. A site that I did some work for in the winter was spending half a day each day to do their orders (labels, printing, packaging etc). I developed some components to tie their site's back-end to Canada Post (their shipper) so they just had to select the orders, and print the labels. Without having to manually type in the orders, automatically generating the packing slip, and generating her manifests etc, she was able to get her orders done in an hour.
With the extra time, they started really advertising a lot more. Within a couple months, they needed a fulfillment company. So, I had to develop a couple more components to allow them to dynamically generate a CSV file so they can send it over to the fulfilment house each morning. Their orders are triple what they were doing when it took them half a day, and their total processing time with the fulfilment house, and my components, is less than 10 minutes.
Again, they are growing still... The fulfilment house is now even suggesting I develop an area where they can go in themselves and pull orders to package. They might add a night shift, so they want to grab orders at night instead of waiting for morning when everyone rushes to post their fulfilment files.
I guess the point is, order fulfillment can *really* tie you up if you arent constantly trying to improve it.