The economic downturn has presented tremendous challenges to the embedded software industry, which has seen companies fold or get acquired, jobs lost and projects cancelled. For the best companies, this adversity spells Darwinian opportunity. Green Hills Software knows a bit about how to succeed in difficult economic climates, including three major recessions.
During each recession, Green Hills has invested in research and development while competitors were shedding staff, customers and projects. There are five key elements to Green Hills' success and these principles can be applied to embedded software companies, software suppliers and end product designers alike. Open Many embedded developers work on families of products, for example a line of printers with varying features and price points. It is common for a product line to use microprocessors and software from different suppliers. Parts availability, cost competition and a range of other factors may necessitate a switch between vendors from project to project, year to year. From the software supplier perspective, a key value proposition is to provide solutions that work across a range of microprocessors. Software vendors must work closely with hardware vendors, exchanging product roadmap secrets and feedback, in order to guarantee that software will be available when first adopters are ready. As an example, Green Hills works closely with ARM, Freescale, Intel and others to ensure its operating systems, hypervisors and development tools support the latest processor features before they come to market. These relationships work best when hardware and software are codeveloped to ensure the best cooperative feature set and support ecosystem. Another example of the need to be open is in the promulgation of open standards. For example, Green Hills' INTEGRITY supports POSIX: the standard operating system API. Conformance to standards enables users to build portable, reusable software. Green Hills is advancing standards in networking, virtualisation, trusted computing and numerous other emerging areas. Innovate and integrate The software world is divided into two major categories – those who integrate and those who innovate. Innovators push the limits of technology, showing what is possible. Integrators combine existing components, often adding customised support and other services. While Green Hills is known as an innovator, the company has a long history of providing customer tailored solutions. Customers expect a comprehensive solution, not just pieces and parts, and that means combining innovative technology with customised support and well integrated components from other leading vendors. Users won't settle for freeware with a pretty wrapper. For example, while anyone can download Linux, Green Hills enables any flavor of Linux to be deployed alongside real time and/or security critical applications using state of the art virtualisation technology. Innovation and integration enables customers to reduce cost and time to market over what they can cobble together themselves. Software designers must resist the temptation to work on features for the sake of 'coolness'. Software must solve the customer's problem, not the developer's problem or the developer's misconstrued concept of it. Software which makes customers successful – by reducing costs, increasing profits and lowering power consumption – sells. The rest is shelfware. Reliability Software complexity is out of control. Mobile phones contain half a dozen microprocessors, run sophisticated desktop operating systems and offer a dizzying array of connectivity choices. An automobile can have more than 100 microprocessors. A digital radiography machine runs millions of lines of code. Meanwhile, electronics are increasingly connected to the internet, exposed to increasingly sophisticated hackers and malware. Consequently, reliability and security will increasingly command a premium in software products. The ability to rapidly develop highly reliable software will separate the winners from the losers in our digital economy. Reliable products fetch a higher price, remain in market longer and reduce maintenance costs. While Green Hills is well known for its high reliability operating systems and safety and security certifications, what many may not realise is that its customers recognise them for helping to create their own safe and secure software applications. Tools and methodology for high reliability software development is the 'secret sauce' that developers of electronic products must have. One of the key mistakes most software houses make is to prioritise features over reliability. Engineers love coding, but hate to test and document software. The best software suppliers are willing to cut a feature if there is significant risk the feature could cause even a minor loss in compatibility or reliability. Customers will forgive the lack of a convenience, but bugs that halt development can destroy a supplier's reputation. Vendors who meet safety and security certification schedules win against the supplier whose promises are frequent but delivery anything but. Customer Centric Customer centric development must pervade the organisation. As developers create increasingly sophisticated products, they require hands on technical support from experts – accomplished developers in their own right, not hired guns in an overseas call centre. Green Hills has attracted many customers from its competitors by providing direct access to engineering experts – people who know how to solve the difficult problems, how best to use a multicore device, how best to debug sophisticated software, how best to code for reliability and security. Software suppliers can no longer throw a DVD in the mail and collect revenue. Software comes hand in hand with services that enable developers to maximise their investment. Training, consulting and on site technical support are just a few of the expected capabilities that successful software vendors must perform well. Many software developers have little or no exposure to the end users of their products. A single day visit with users to see how they use the product, their complaints and desires, will surely change the way a software developer works forever. On site visits must be a regular event for any successful software developer. If the developer is a 'super nerd' who breaks out in hives at the prospect of leaving the comfort of their cubicle (we have some people like that), don't fret – just pair the developer up with a field engineer and let the developer quietly observe. The user's actions will speak volumes. Talent Most of the preceding goals cannot be met with the average engineering staff. Successful software companies must find a formula for attracting and retaining the most productive engineers in their industry. In this economy, software suppliers can afford to be picky. And engineers must obtain skills that will prevent their function from being outsourced. Many of the keys to corporate success also translate into developer value. If a developer becomes a leading expert in open standards, developing secure software, and is highly appreciated and respected by your customers, this employee will make your company soar. You must keep these engineers challenged and motivated. It is my belief that a top software developer can be ten times more productive than the average. Top performers are a bargain because you don't need to pay them ten times more, yet they routinely perform feats that can't be reproduced by others. Make sure you get a lot more of the best engineers than your competition.