Recently, a colleague posted an analysis about how much time is needed to build a bare-bones Spree Commerce site, which can be found here. As a result, many potential Spree users are very excited: for less than two days of development time, someone can go from nothing to making money. That’s great!
But wait, there’s less!
This is comparable to looking for a perfect house and deciding to shop around for homes that are already built. While an existing house is “ready to go”, the options are limited to what the existing home has made available. If you want a different color of paint, you’ll have to pay extra. If you want different carpet, you’ll have to pay extra. If you want this house but with a bigger kitchen, then be prepared for bigger costs, and it might not even be feasible.
The changes Jaime made to the ‘minimal’ Spree site are comparable to paint, carpet, and replacing the appliances in an existing home. She changed the color scheme (CSS and icons), added some commonly-used Spree gems for features that many people want, and chose a payment gateway that has good Spree support.
This is not unique to Spree, but is common across every web framework, from Drupal to WordPress, and everything in between. If a user wants to make changes within the parameters set by the framework, then those changes are often straightforward (with WordPress, for example, it’s very common to purchase pre-built themes, to change the look and feel of the website).
If changes are desired outside of those parameters, then the cost quickly grows. Just as with a house, changing structural features, even if “simple”, may require a disproportionate amount of work. “I just want 4 more square feet in my bathroom” may seem simple, and the user may want to pay for those 4 square feet at the same rate as the overall house, but every contractor knows that carving out those 4 square feet can require significant work, and perhaps even be unrealistic. If the buyer is not willing to lose those 4 square feet from some other room, then at least one exterior wall will need to change, and any rooms between those 4 feet and the outside will need to be modified — and the buyer may not be happy with the new home layout.
Going back to Jaime’s example, if a client came along and said “I want to integrate with the payment gateway provided by my bank”, then if the bank has a well-supported interface, and someone else has already “built the bridge” between Spree and the bank, then the cost of doing payments through the bank are minimal (and that’s one of the great benefits of using an Open Source solution).
But if no one has built that interface, then there may be significant development costs, and it may not even be possible. Just because a payment gateway exists, does not mean that it’s transaction model, security systems, and interfaces will match up with what a given system needs.
Good developers and designers (and building contractors) understand what can easily be changed and what cannot. They can help guide clients to understand the realistic costs that will be incurred in the features and changes that a client wants.
But what if a client doesn’t know exactly what is desired? Well, that’s the subject of another blog.