The third challenge I see in multi-tenant environments is scalability. Imagine running all those customers on your software. The same database, cluster design, transaction management designs (to name a few issues) might not work at the scale of a SaaS service.
If you understand these issues -- and better yet, have solved them in a deployed SaaS application -- you're among the elite. Even if you haven't done it as an SaaS application, the same system and software architecture skills and experiences are the foundation to move into the SaaS environment. If your next generation of applications are Web applications and may include an SaaS component (or will be fully SaaS), now is the time to hone those skills and let others know you have them. It will make you all that much more valuable.
Writing secure code: Every developer writes code, but not every developer writes secure code. This is not a skill that many managers (or others, for that matter) understand, but developers who can not only write secure code but also mentor and teach other developers how to do it can be invaluable.
Writing secure code is more than just worrying about obscure buffer-overflow attacks or race conditions. You've obviously noticed my theme that more and more applications are Web apps, and increasingly those are also becoming SaaS applications. Web attacks are in the forefront of risks where good, secure software-development practices need to be applied. SQL injection, cross-site scripting, magic URLs and hidden forms, data leakage prevention, securing Web services, and bad implementations of SSL are all examples of security issues that software development must consider and accommodate when writing secure code.
If you're looking for some good resources to get you started down the path of creating secure code, I'd recommend two books: 19 Deadly Sins of Software Security by Howard, LeBlanc and Viega, and Web Services Security by O'Neill. QA automation and metrics: If you're a QA person, you've got a special place in my heart. If you're a QA person who lives to automate QA testing, capture metrics and use that data to improve software development and QA practices, then you've got a special place in heaven!
As you can tell, I place a lot of value on high-quality QA skills. I particularly admire those skilled practitioners who not only find all those nasty software bugs before any software gets out the door, but also know how to highly automate testing and use the knowledge gained to improve how software is created in the process.
Software developers might be the lead singers and guitar players in the band, but as any experienced musician knows, it's the drums and bass that make or break the sound. I like to say love developers, and trust QA. (Actually, I love QA people too.)
Want to make yourself indispensable as a QA person? Automate, automate, automate. The best projects I've worked on had tests automated well into the upper 90% range, and tests were run hundreds and hundreds of times before the software shipped. Now, that's what I call regression testing!
New functionality might be tested manually, but tests were always automated before design was done on the next software release. That's about the only way CTOs and VPs of engineering are ever able get any sleep.
Now, take that one step further and provide your peers, technical leaders and management with learnings and insights you're gaining from all that testing and you'll reach nirvana status in my book. The knowledge that's contained in all those test results can take even the best development organizations to new heights.
Certs -- any and all welcome: I like to say that you can never go wrong with certs. That goes for the breath mints as well as technical certifications. Everyone likes to argue about the value of certifications: whether the A+ certification is valued; whether it's better to get an MCTS or go for the full MCSE; whether having a CISSP carries the same weight it once did; and how much managers value any certifications over job experience.
But at the end of the day, it could make the difference between your getting the job over the other final candidate. Getting that certification sure isn't going to hurt!
Certs demonstrate that you have accomplished something that requires some level of skill. They're not necessarily going to qualify you to fly the plane, but you might have a better shot at getting a seat onboard with an IT organization when times are tough.
If you'd like to learn more about Microsoft certifications, visit the learning section of Microsoft's site for certifications. I'd also recommend some certification training books from Microsoft Press, such as Windows Server Administration Training Kit by McLean, Configure Windows Vista Client Training Kit by McLean, and Internet Information Services (IIS) 7.0 Resource Kit by Volodarsky.
This story, "Seven skills for IT fame and fortune" was originally published by Network World.