But then the thought struck me. What if, with all of the applications Latitude 40 has built over the years, I did have some ideas I could impart to the general interweb as it were. I mean, the reason why I got into custom software development – and built a business around it – in the first place, was because I saw and experienced the severe limitations of forcing businesses within an industry to run on the same packaged software and therefore the same processes as well. Businesses need to at least have the option of working on their internal processes as that is one of the best ways to outdo your competition. Now granted, there are some circumstances where packaged applications make complete sense; word processing is one example. But even in that instance, it could be argued that organizations could deploy many open source and custom developed word processing applications that better fit a particular industry or use case.
But I digress…
Here in the Denver area, we have a burgeoning custom software development community and I regularly attend and participate in developer forums and conferences so that I can keep up to date on some of the latest and greatest that’s out there and what my developer colleagues are working on within some of the most well-known brands. One such architecture is Command Query Responsibility Segregation (CQRS). Now for those of you in the business community, you may have no idea what that means – but you can absolutely benefit from it. My developer colleagues will say, “but that’s been around for a while now… what’s so new about that?”
To start, let me give a quick rundown of what CQRS is and then put it into context. The main purpose of CQRS is to assist in building high performance, scalable systems potentially with large amounts of data. The pattern states there should be complete separation between "commands" that perform actions and "queries" that read data. Traditionally, all of these functions are built into a single set of components utilizing a single data store. CQRS has you build those commands and queries out into completely separate architectures so you never have one side bottlenecking the other.
So what does this mean to a business person? Well, simply put, this concept is solving traditional software problems in a new way that can help provide higher transactional volume and greater performance with lower infrastructure costs. Let’s take an online merchant as an example. As we know, the customer does many different things when deciding what (and when) to make a purchase. They may browse inventory, put items into their online shopping cart, take other items out, set up multiple shipping addresses and payment methods, etc. These are mainly actions, but the user requires sophisticated pages presenting all the information they need (by querying) to decide how to act. By keeping the queries needed to generate these user-friendly pages segregated, it’s easy to optimize them for ultimate performance without having to fit action requirements into the same models. As you can probably imagine, all of these “queries” and “commands” put a lot of strain on the system. By segregating these types of actions, not only can the online merchant improve the overall customer experience, they can also optimize the infrastructure for each by adding/removing cloud resources, as needed, for the queries and commands separately as transactional volume increases/decreases.
Another idea which I find fascinating is the strengthening of task-based user interfaces (UI). Let’s go back to the example of the order. A tasked-based UI is more about capturing the “intent” of the user. Those events – changes to shipping addresses, added/dropped shopping cart items and so on – can be recorded and saved in a way that can be analyzed to better understand the customer and their intentions.
These types of analysis certainly sound like business intelligence of old. Does this mean that business intelligence is back? It certainly is but from a more interesting perspective. As we know, BI is an amazing concept and data mining tools are now extremely prolific. In terms of actually implementing it, things have fallen really short or have only been available to the largest of companies because of its complexity and cost. Also, these mining tools are great, but are only as valuable as the data available to mine. By storing all of these events as a historical representation of state, you gain the ability to recreate the entire history of that aforementioned order at will, allowing you to analyze it at every single state it’s ever been in, not just its current state. This gives us the ability to ask questions in the future that we might not even be thinking about asking now. Utilizing these techniques, what was super expensive and difficult just a decade ago is now possible for most businesses of many sizes.
I really enjoy looking at these types of business challenges with technology – custom application development at that. Custom application development is happening now at some of the largest online merchant organizations, one’s that sponsor Thanksgiving Day Parades and others that had their start in selling shoes. The great thing for businesses that may not have a multi-million dollar development budget is that they can take advantage of these types of solutions now as well. What I always tell people who are looking to solve these types of business challenges with technology is to partner with someone who will be your trusted advisor for the long term and someone who can see the bigger picture, rather than a one-off development project.
I’m interested to hear what you think about where custom software could take businesses and organizations. Email me or comment below