Writing about enterprise software these days makes you easily forget how software is created - a developer typing lines of code into a programming environment, better following a good specification or sprint manifest, testing it, hopefully documenting it, releasing it and maintaining it.
For most enterprise software vendors, that decision has been made long time ago, for SAP it's ABAP, for Oracle it's PL/SQL, for salesforce it's APEX etc. (yes they all will argue that it's Java code they are writing right now, too). For those vendor's customers it usually means that at some point in the life cycle of owning these enterprise platforms, they need to become proficient in these languages - either through hiring specialists or bringing their IT team up to speed.
But then - a lot of software is written on a day by day basis, that is not running on any of the enterprise vendor platforms. Here are some of the spark plugs for this sort of software creation:
- End user programming - An employee gets tired of a certain problem, thinks there needs to be a better way, remembers what programming languages he / she learnt in college and goes to work. Often Excel and then a variety of programming languages depending on the employee age and the college curriculum are the tools of choice. Younger employees will use Java, Ruby, Phyton, older ones PHP, even older ones Pascal (ok in Europe), Fortran and Cobol (yes Microfocus still sells a PC compiler).
- Departmental projects - We all have seen these, a department head gets tired of something not working, and ask in his staff meeting who can program... an initially timid staffer will raise his / her hand and spend some nighttime and weekend hours creating a software solution to the problem. The staffer will become the hero of the department if all goes well. The tool of choice is mostly Microsoft Excel. If projects and schedules are involved - basecamp is often a popular choice.
- Plug in projects - From time to time enterprises embark into consulting projects that need to be realized in software. Examples are advertising management, shift planning, delivery routing etc. We are also seeing that virtually every analytic project (of the real analytics, the one that predict / recommend something) - need a software plug in to collect data, and return their analytic results.
- Enterprise stop gap / innovation / differentiation projects - Despite the enterprise using a standard enterprise software package, executives have decided they cannot wait for some automation to materialize on the vendor's road map, and don't think there are feasible / viable smaller vendors out there to fulfill that need. Projects may also start because the enterprise feels that it does need to differentiate vis-a-vis the competition. Examples are to mobilize an application to smartphones / tablets, creating / enabling employee self services, and other enterprise automation needs.
In the two latter examples - the choice of platform is not so obvious. Excel can't solve this anymore and the classic programming environments are a daunting endeavor to embark on. So how can you make enterprises be made more efficient while addressing such automation needs? There will be some parameters you will need to execute along:
- Abstraction - You will need to abstract significantly on lower level programming needs, in order to make the developer of this platform more productive.
- Modelling - You will need to achieve a much higher level modelling approach than the general purpose programming platforms.
- Automation - You will want to automate many of the programming needs through automation, that avoids needing to code for most of the engineering needs.
- Packaging - You will want to make the move from coding to run time as easy and pain free as possible.
- Cross platform- You will want to provide rich cross platform support (databases, languages, browsers, mobile, social) to protect code and be able to re-use the code beyond a temporary delivery form.
- Cloud support - Though this is really a combination of automation and packaging, the ability to deploy the new automation to the cloud is a significant parameter to support.
All those design guidelines will have to become real in a model, that will allow a developer of the system to be highly productive.
Enter Mendix
Enter Mendix
Mendix was founded in 2005 in Rotterdam with the idea to simplify the creation of business applications. The company has grown and moved its headquarters to Boston, and so has the platform which you can label as a PaaS, aPaaS or “cloud application platform”. But Mendix goes beyond generic PaaS as it takes care of the software creation process in a more unique way.
Integrated Feedback Loop
In general the software industry has made it hard for users to provide feedback on using applications. Yes, there are user conferences and forums, more recently Facebook pages, but an Oracle or SAP user would never dream to provide feedback to the vendor. For packaged applications the feedback cycle may be even considered fundamentally broken, but it does not seem to faze the industry too much. But if you build custom applications, the a working feedback loop between the application users and its developers is more vital - as all players know each other, or at least can easily reach it other as they work in the same enterprise.
But instead of relying on traditional ways of communicating feedback, Mendix allows the user to directly capture feedback to an application on a very granular level, right at the screen to which the feedback is associated to.
The feedback then gets into a queue that developers can access, answer and even more importantly can slot them for future sprints of future releases. The feedback queue is combined with a company and project team wide discussion threads labelled as buzz and operates similar to the popular feeds found on the web, but also allows to aggregate and manage projects, documents and ideas. Polls can be started to validate feedback and collect more broader user community feedback.
Visual Programming
In order to stay true to the RAD DNA, Mendix offers a visual logic flow, which allows for composing business applications instead of writing low level code constructs.
Mendix provides complete flexibility to design any database domain model you need. Moreover the Mendix application model gets exposed on a very granular level, allowing to add and change attributes, modify validations, change the UI layouts etc.
Like with every visual tool, potential concerns arise when having to model very extensive, complex flows, but as you can embed flows into each other, Mendix offers the standard industry solution for complexity reduction. And if the functionality needs should exceed the capability of the model on the side of functional capability, then Mendix allows for Java extensions. This adds complexity to the deployment, but is a key outlet needed for a model based platform and with Java Mendix chose the right technical implementation to address this challenge.
Support for Agile Programming
While developers have been coding since a long time, the common understanding of best practices to create code nowadays is to support agile techniques, as postulated in the Agile Manifesto. And Mendix supports agile methodologies, with the administration of sprints, sharing the sprint objectives and tracking to sprint deliverables:
Enterprise integration
In order to provide value for their customer's existing enterprise applications, Mendix has realized, that integration with the existing enterprise landscape is key - so Mendix offers integration with SAP, Oracle, Microsoft Dynamics, salesforce and more. Mendix also ties in existing application integration platforms with out of the box support for Tibco and Sharepoint.
As everyone ever having successfully built an integration to other enterprise application, this effort requires a lot of proprietary knowledge acquisition - Mendix offers the advantage, that the integration is exposed in the platform. This means that the developer using Mendix does not need to learn these integration intricacies - but can stay in the realms of the Mendix App Platform:
Ideally Mendix will also be able to shield Mendix applications from changes in the integration architecture of the underlying applications and technologies - which is a further advantage of model based development.
App Store
Another key element of a successful application PaaS platform is the availability of rich App Store, that helps developers of the PaaS system to embed large functional code segments, without mastering the details of the inner working. Very similar to the integration options to the enterprise applications, the app store entries help developers to provide rich, functional applications in very little time.
Cloud Deployment
Once an application is modelled with Mendix, deployment is easy, with the famous 1 click, the application will run in a public (Mendix managed) cloud, private cloud or on premise. The use of the Mendix cloud takes out the complexity of deployment, as it is seamlessly available to the developer as part of the platform without any set-up or configuration work. However, also offering the private cloud and on-premise deployment option is a key competitive differentiator and advantage for organizations not ready to make the move to the cloud.
On the flipside, you can only deploy Mendix applications into a Mendix operated or Mendix aware cloud, the Mendix stack needs to be resident in the cloud option of choice as a requirement to run the application.
All the above capabilities make Mendix an ideal partner for organizations that are in the custom application business. Primarily this maybe the well known SIs, who need a tool to address gaps in the functionality on an enterprise landscape, or IT outsourcers that need to satisfy customer service levels, but want to keep code creation and operating costs at a minimum. Last but not least Mendix is also an attractive option for companies, that need custom applications to bring their offerings to life, like analytics, BI, data enrichment and deduplication vendors, as e.g. the recent addition of Mendix as the application tool the FICO analytic cloud shows.
How does Mendix do?
If you scroll up and look at the 6 key features a RAD tool will need, Mendix overall does very well. It scores very well in terms of abstraction, a user literally does not see anything of typical coding, its modelling capability is very good. Equally it automates the application delivery down to the famous one click and packaging is something completely in existing in the perception of the user. The cross platform support with the capability to deploy for mobile is solid. Room for improvement exists on the cloud deployment side - where support for a larger variety of different clouds will surely be welcome in the Mendix target market.
MyPOV
Mendix offers an elegant and powerful option to rapid application creation and delivery needs, with little training required to become dangerous (in a positive way) on the platform. As with any RAD / model based tool, users trade off some flexibility for the cost of efficiency, so customers need to be aware of that trade off. Mendix has done a very good job moving to a richer PaaS offering and should be the tool of choice for many custom application needs.
Going forward it will be good to see Mendix widening support for other cloud deployments, ideally starting with the option to deploy a Mendix application into the leading public cloud, Amazon's AWS.