The hype is over: Adoption of cloud applications and software as a service (SAAS) is for real, and this means jobs for now and the future. Despite the need for stronger security and the preference for private clouds in the enterprise, the cost-reduction benefits make these technologies very attractive to companies and IT departments.
What are the predominant skills necessary to work in and with SAAS systems? There are essentially four areas of skills to comprehend and master: concurrent programming, building for Web scale, employing high-availability software infrastructure and performance-based architecture, according to Apprenda CEO Sinclair Schuller, a Clifton Park, N.Y.-based SAAS infrastructure provider to the software industry with more than 800 end users of its SAAS Grid Express offering.
"Another way to look at SAAS skill sets is to group them in two buckets: industrial and academic," said Schuller to eWEEK. "Industrial skills are those that you can to some degree learn on the job but employ knowledge of programming languages, of the framework du jour and understanding how to correct bugs. Academic skill sets are higher-level skills with knowledge of how to design systems for high availability and scale, many of which came out of technology research communities, and have experience in areas like memory management systems, thread scheduling and many skills aligned with operating systems."
In terms of concurrent programming, Schuller considers it a major developer skill because of the ability to write for parallelism and handle the millions of instances of the software accessing the service at the same time. The Web-scale demands are incredibly large and complex.
Some of these development skills require working experience with agile development methods with a rigorous discipline in testing, and in building working architectures from the outset. Also, these architectures have to be built for cost attractiveness and security, said Schuller.
"The majority of the discussion on skill sets for SAAS focuses on the IT engineer and architect, which are obviously important," said Schuller. "Yet, the software developer has to some degree been ignored. There is pressure on software developers to have to transform their thinking from a packaged software world to that of a service provider. ... There is a paradigm shift going on here."
That shift means understanding multitenancy and efficient distribution at the data level. It also means knowing how to design systems that weight performance mechanics against cost and how to optimize for speed and service-level requirements.
"The software is so closely tied to the revenue model in SAAS and cloud applications that developers and architects need to understand the products have to validate and prove themselves to the customer all the time," said Schuller. "Customers will decide very quickly if the product does not work for them."
Not working is not really an option. If the scale, architecture and performance are off, you will be affecting the bottom line of your customers. It also means designing security mechanisms so customers can't see other customers' data and having secure programming and recovery plans and processes in place.
What do most companies not understand about software in the cloud?
"Well, most of it," joked Schuller. "But seriously, many do not comprehend the risks in magnitude of scale and that there cannot be any 'We will get to that issue later' and roll out an offering before it is ready."
Schuller brought up the example of Sage Software and its foray into Sage Live, which was a disaster and shut down after two weeks when customers' passwords were showing up on URLs. Risk management is paramount, and critical failures will bite and bite hard.
When asked if certifications are important in the employees he hires for Apprenda, Schuller said they are not necessary but are a very good thing.
"I would never hire exclusively based on certifications, but it helps if they are there," Schuller told eWEEK. "The industry does need a standards body, and those standards need to be rigorous, deep and define competency levels."