- Fast and easy to learn - It lets average developers learn and be productive with short ramp up time. It has a combination of tools and documentation that lets my whole team start using it quickly.
- Built on standards - Because its easier for me to find developers with "standard" development skills - not skills proprietary to a vendor's platform. Also, because let's face it, many platforms die and if I need to migrate, I want the coding to be largely portable.
- Has an open, extendable architecture -That's a bit open ended, so here's what I mean. My vendor can't do everything! Sometimes the platform needs to be extended for proprietary needs. Also, the platform doesn't live in its own ecosystem - it probably needs to be integrated with other services, applications, and data sources. Does it have a published API that's easy to understand and leverage? Can it be deployed to cloud or virtual environments?
- Well defined performance / scalability - Because no one wants a platform that requires lots of servers for low levels of activity. "Well defined" means that the platform's architects have documented, benchmarked and, delivered tools to help developers know the performance / scalability boundaries of the platform. It should have defined approaches to monitor capacity.
- Is "easy" to install, configure, and administer - I'd like the Ops team to own the Production environments and developers need to be hands-off them. Agile platforms need the basic tools for administrators to do the basics easily and quickly.
- It must support big data - If it's easy to learn, then a development team should be able to prototype applications fairly easily. But if it can't scale to handle larger volumes of data, then these prototype applications may be no more than "tinkerware" - nice applications that can't be deployed to customers.
- Diagnostics and troubleshooting should be easy - If the development or operations team need to call the platform's Technical Support, then that's a big red flag. Good error messages, diagnostic tools, and useful logfiles are all minimal requirements.
- Well defined security model - Security capabilities often need to be evaluated prior to any prototyping, so the model and capabilities need to be well defined and easy to leverage.
- Strong development community - I certainly don't want my team to be the only ones working on this platform! Can I find a strong community? Are they happy, or bickering? Can my team turn to them if they have a question or issue? Is the best information organized into a FAQ or other knowledge tool?
- Produced "AMAZING" business results - This is really the most important attribute. Strong development teams can do quite a bit with basic commodity stacks whether it be LAMP, .Net/SQL, Java/Oracle or other similar combination. So if a new platform is being added to a portfolio, it truly must provide significant "amazing" business value. When the platform is used in applications, will it give the business a competitive edge? Will it make business teams hype efficient? Will it make the organization smarter?
Top Ten Attributes of Agile Platforms
In my last post, I stated that technology teams could achieve a 2X speed to market by leveraging agile platforms. Here are my top ten attributes of agile platforms: