It seems only yesterday that Bradly Sharpe and I cleared our desks, said goodbye to our colleagues, and launched ourselves into the unknown…
The seven weeks since then have been a whirlwind. We’ve built and launched our website. We've chatted to business owners about how we can use IT to help them become more efficient. We've developed systems and processes that we hope will enable us to provide value to our clients. We've talked to our potential vendors about how we can work together. And more, lots more. So now we’re ready to take on the world!
Today, I'm writing about our new venture - Fluent Development. Fluent is our avenue to create quality software. Software that makes the complex seem simple, and which is a pleasure to learn and use. Web and mobile apps, enterprise data integration, and specialist solutions.
The software world is changing. It's clear to us that the days of heavyweight enterprise application packages are numbered. The new kid on the block - web-based, online “cloud” software services - is the future. And so, we're structuring our business model and offerings to be relevant within the new software world.
The traditional enterprise application model is to have a single application that meets all your business needs. Enterprise applications are big, complex packages which are adaptable to the specific client environment. But these packages come with many downsides. Their size and complexity mean that they are extremely expensive. Specific customisations for your client environment make this even more so. This makes them out of reach for all but the biggest businesses.
Even for those who can afford them, they're usually clunky and unintuitive to use. They're often very picky about the software required on the client device. They also aren't easily adaptable to new technologies - like smartphones or smart watches.
The new order of enterprise software is a major shift from this traditional model. It's made up of numerous small, standards-compliant, web-based online applications and software services. They are small software packages that are designed for one specific purpose. Application developers need not make their application adaptable to purposes it wasn’t designed for. The massive amount of time that was previously needed to do this can be invested in better ways. Developers can focus on making their application more intuitive and easy to use. They can make it customisable (within their chosen purpose). They can develop better processes of small, regular updates to their application. And finally, they invest their time in making their application be able to communicate to other applications.
Communication is how these software services are able to replace the traditional enterprise application. When several small applications talk to one another, the same, or better, outcomes are achieved. But there are numerous other upsides (besides being more intuitive and better-designed applications). They’re a lot cheaper. They don’t lock you into a single way of operating. It’s a much easier process to switch applications.
One of the most important elements of a good cloud service is a thorough Application Programming Interface (API). APIs are interfaces which enable external applications to talk to the service. A well-designed API provides the ability for programs to perform all the tasks a user might normally do. Adding, listing, querying, retrieving, updating and deleting data. A good API will also provide “web hook” triggers - which alert us when something has changed. These two elements allow us to integrate a cloud service into a bigger system.
APIs enable developers (like us!) to write program code to automate tasks that would otherwise need to be done by a person. We can extract data and load it into another system. We can add and update data when events occur in other systems. We can automate time-consuming manual tasks. We can build custom mobile apps. We can trigger off custom actions when users add or change data. Well-designed APIs allow an almost unlimited level of flexibility and interactivity with other applications.
I'm talking about online software tools like Xero, Asana, Kayako, Toggl. There are many, many more. Each of these tools addresses but one problem, and provides a simple but powerful solution. They don't attempt to do everything for everyone. Instead, the application developer focuses efforts on building intuitive user interfaces. On providing regular, small, backwards-compatible updates. On adding new functionality incrementally. On building a powerful API. So that customers and external developers can build programs which connect securely; and add, modify and delete data from outside the application.
As an example, your business' sales team could be using a dedicated Customer Relationship Management (CRM) application to track customer contacts. Accelo or SalesForce are good examples. But your finance team uses Xero, and your product support team Kayako. When the sales team make a sale, they mark it off in the CRM. The customer and product details are automatically pushed out to Xero for invoicing. Additionally, a customer support account is created in Kayako. Then, the finance team sees items which need to be invoiced in Xero. The customer receives an email advising them of their new support account. They immediately log log an issue about their order. Kayako notifies the product support team as soon as it's logged.
Additionally, your product support team can track any time spent resolving the support issue using Toggl or Harvest. When the issue was logged, a job was created in the time tracking system. The support staff member can simply select this job and click "Start" to track the time they spend on the job. This information can then be fed back to the customer service system for reporting, and the finance system for invoicing the hours spent on the job. Data from each system can flow into a GSuite spreadsheet or into Power BI for management reporting.
Being a long-time UNIX and Linux aficionado, I like to relate this new software methodology to a UNIX concept. I like to think the original UNIX philosophy is taking over the mainstream enterprise software world.
Let me explain.
In the UNIX software world, there has always been a focus on building small, modular software tools. Tools that do one job or have one purpose, and do it really, really well. Tools that are then able to pass information off to other tools for further processing. This methodology results in a diverse software "ecosystem"; which gives a great deal of power and flexibility to its users.
The downside to the way that this is done in the UNIX world is the steep learning curve. Being command-line tools, they can’t have intuitive point-and-click interfaces. While many follow conventions in their usage, there is no real standard and so tools are often inconsistent.
But the in the cloud service software model, we're seeing the application of a very similar methodology. And it's through intuitive, well designed, and easy-to-use online applications. Each application vendor can focus on providing a service that does their part of the job well. And on providing a powerful API to enable integration with external applications. Then, integration tools such as Zapier and if-this-then-that allow easy data flow between applications.
This creates a kind of "software ecosystem", in which developers can focus on building software that solves one problem. They don't need to spend time and money building highly-customisable user interfaces. They provide a more flexible customisation system via a well-designed API. Instead, development efforts focus on building a flexible and intuitive solution. Into making their software a joy to use. Stuff that traditional enterprise software's one-size-fits-all approach has never managed to get quite right.
So it's this new world of online, integratable, cloud software that we, as Fluent Development, are entering. We believe that good integration is the future of this new world of quality enterprise apps. That's why we're offering our software and development skills to help our clients navigate this new world of online software. To streamline processes and ensure business platform and toolset works in an integrated way. Minimising their time and effort, whilst maximising efficiency and exposure to potential customers.
So if you're unhappy with your current business platform, please get in contact. We'd love to look at how we may be able to help you - whether through integrating cloud and desktop software packages, or building custom mobile and web apps that talk to your business platform. Or even just advising on the most suitable product for your specific purpose. Give us a call or email today!