Also, says Kanies, manageability matters, "The most important part of an application's lifetime is when it's running in production, yet developers don't spend nearly enough time thinking about how to maintain the application while it runs. For example, is there debugging or performance instrumentation? If it's running slowly, can you tell why? If there are failures, can you trace the failure without the service being down? Can you hide failures from the user but still pass the debugging information on to the sysadmin and developers? Can you tune the application, or deploy more copies, without bringing it down?"
And, finally, some short sundries
Walter Gillett, a developer at software consultancy Twenty Geese Software, suggests:
Distributed computing technologies like Hadoop for seriously scalable cloud computing
"Big data" -- analytical capabilities to deal with the flood of web and scientific data, e.g., clickstreams from a gazillion users of a large-scale web site.
Senior software engineer Amy Unruh adds, "it is useful for today's developers to understand issues in realtime search, and techniques for pipelining data analysis and for managing 'activity streams.' And you should able to exploit the 'small pieces loosely joined' model, including use of microformats, and understand how to consume APIs from other services and support relevant APIs for your service, by building on RESTful computing principles."
What new skills have you found you've had to learn -- or are planning on learning?