The problem of people who want to start an online store, in my experience, is to find companies that want to sell them products they do not need. It is very common to see a man who only sells a couple of products that has a super mega-expensive hosting, and he thinks it is the usual, simply because nobody told him any alternative. Before beginning the online shop, you must ask for advice, which is free, to at least 10 different companies / freelancers.
People who will start an online store are like these:
Although I can simplify it more: People with basic computer skills and people who do not have these skills. If a person has no computer skills, or does not have time to deal with the online store, then he needs to delegate all on a company specialized in online stores. I don not like this kind of companies, they are often quite expensive relative to what they offer, and many of these companies sell obsolete software, but as customers that do not know anything about computers, no one will going to complain. Also when a customer realizes what they are doing, and he wants to quit, they put all sort of obstacles to give him his data.
As a programmer, there are two kind of online stores, the ones than can be done with a CMS, and the ones that must be developed with custom programming. When to use one or another? All depends on the shop scheme that the client requires.
CMS like Prestashop, Magento, etc ... are used in these cases:
The CMS advantage is that initially with a few hours of development, the store is finished and ready to run; the problems may come later, if the client, once the store is running, wants to add new features to the store that are not easily achievable with a CMS.
There are many cases where it is impossible to use a CMS to give the client all the features he wants. Therefore it is very important that the customer make a scheme / briefing of all the features of the store before contacting any company / freelance for development. You will need a custom programming if...:
Resuming, any scheme that goes beyond the typical used by a CMS.
The problem is that custom programming will be more expensive and will have to define every feature accurately.
The customer can't say that he wants "everything that comes with Magento". In custom programming, you'll have exactly what you want in terms of design and programming, but you need to define and pay every feature.
Resuming, for make an online store the first thing is to write everything about it in a document, and then ask ask ask, not stay with the first company / freelance you contact, find economic proposals, and try to escape whenever possible of "companies that are specialized in online shops where you will get everything done" because you will probably be paying a monthly fee for a generic shop solution they give to you, not the one you wanted.