I started reading a corporate help wanted ad for a cloud developer and kept reading and reading and, well, the requirements list was crazy long. I scanned to the top again. Yep, the job was for just one person, not a team. I sent the ad to Cameron McKenzie, Java developer and editor of TheServerSide.com, who replied: "Sounds like it's from Mars."
But what seems like it's from Mars one minute can quickly become a reality the next. I'm a witness. While hardly any regular people had computers when I started covering IT, now almost everyone walks around holding one to an ear. Likewise, the skills required for software developers even months ago were much simpler than ones we're seeing in job descriptions today.
Looks like becoming an obsolescent software developer can happen faster than the demise of Betamax video players.
Application developers face a conundrum as new technologies evolve at a faster pace than ever before, particularly in the areas of cloud computing, extended Web development, mobile computing and social media. Cloud development, in particular, calls for business, operations, tools and integration skills that were once outside of the development silo.
The responsibilities listed in that "cloud developer wanted" ad include project manager, software tools and subsystems designer, and subject matter expert on architecture for development teams working on multiple application projects. This developer will also manage data storage with an existent data warehouse system.
"Aha," thinks I. The job title is a bit understated. This looks more like the job of a project or development manager.
Going back to the ad, I checked out what this cloud developer is expected to bring on day one: security clearance, obviously; Java Standard Edition (latest version); Hadoop certification for specific products; and experience with specific government-off-the-shelf (GOTS); data cloud; databases (NoSQL, MongoDB, ApacheCouch DB, others); data ingest; mapping data into the cloud; ontology; data cataloging; specific Web technologies (REST, Grails, more); and languages other than Java.
Whew! Versalitists wanted! No one-trick ponies need apply. Looks like becoming an obsolescent software developer can happen faster than the demise of Betamax video players, of which I was a proud early adopter. (Maybe that's why I waited so long to get a smartphone.)
While I was first surprised by this ad's requirements list, I found that I could easily identify other areas about which a cloud development manager should be knowledgeable. Obviously, experience with cloud development ecosystems -- Google, Amazon, Microsoft, etc. -- and specific or Software- as-a-Service platforms could be added. So could operations -- think DevOps -- and business requirements know-how are needed, not to mention a track record with the big A, Agile development. After all, increased use of Agile development practices add to the skills challenge, because Agile teamwork frequently calls for developers with multi-disciplinary skills.
Searching for a basic list of must-have cloud development skills, McKenzie and I scanned cloud developer job listings and talked to some developers. SOFT9000.com software consultant Ronald Nagy told us: "The economic realities of our time are clearly favoring software developers who are capable of doing more than writing code." Then, he and others gave us long lists, longer than the list in the cloud developer ad that spurred this quest.
Recognizing that the task was impossible, we made this list of good-to-have skills and experience areas for cloud development job seekers anyway.
Standard development skills:
- .NET, particularly Microsoft Azure and/or Java: Java and J2EE have the edge, and don't forget Spring;
- Some combination of Python, Perl and PHP;
- Web services and APIs as in RESTful and SOAP;
- Agile practices;
- Design patterns, UML of course;
- Object-oriented programming, a basic for coders;
- Hibernate and MYBATIS in corporate settings for handling database schema in source code.
(Relatively) new development skills:
- Alternative languages, particularly Ruby on Rails and Scala;
- Hadoop for handling big data, as well as complementary Hadoop technologies such as HBase, Hive and Hadoop Distributed File System (HDFS);
- Continuous integration skills for real-time testing and diagnostics, because unit testing is not enough in the cloud, said Nagy. Know Moles, PEX, Delegate and system-style integration interfaces and testing strategies;
- Platform as a Service, where Saleforce's Force.com is the market leader;
- Service-oriented application development, because service-oriented architecture (SOA) is the middleware backbone of cloud;
- Infrastructure-as-a-Service platforms (Amazon Web Services, Rackspace, AWS, HP, Citrix, Eucalyptus or VMware, etc.);
- DevOps technologies (Cfengine, Zookeeper, Capistrano or Chef, etc.) gives multi-disciplinary cachet;
- Virtual infrastructure configuration; and,
- Yes, more skills related to particular vertical applications.
This list shows that, on the one hand, software professionals seeking jobs in cloud development certainly have to be versatile. On the other, these skills requirements are not uncommon in general Web development today, so working on enough of those projects can put developers on the path to more lucrative and future-friendly cloud positions.
Which cloud developer skills are missing from this list? Which ones don't belong on the list? Let us know.
Follow us on Twitter at @CloudAppsTT.