With the economic downturn on everyone’s mind, assumptions about job security come under question, and everyone starts re-examining their skills. There are lots and lots of valuable jobs performed in IT, but some skills are valued even more highly than others. With all the upheaval we’re experiencing in IT, many new skills are in high demand or rapidly increasing in value.
Here are my Top 7 skills that could help you not only keep that job, but secure an even better new job, positioning you to work on the next breed of IT applications and software products in the era of Web-delivered online applications.
1. Web application design
I have a passion for great product design and people who know how to do this really well. Designing a great Web application is very different from designing a great Web site.
They couldn’t be more different in my book. Most UI designers need to be able to work under challenging circumstances – most people around them won’t understand what they do, how they do it, when they should be brought in, what information and resources they need, and how much work it takes to create not only a usable UI design but a useful one, too.
You’ve got to be a resourceful person, someone who can insert themselves into the conversations between architects, developers, users, QA, test, product management and everyone else out there who thinks they can design a better UI mousetrap. UI design is like NFL football: Everyone can recognize a good game when they see it, but very few can actually play the game. And we all have a opinion about it.
One of the best criticisms I received from a customer looking at my product was, “This user interface looks like a developer designed it.” That pretty much said it all about what they thought about the ease of use of that application.
Now, if you are a developer who thinks you might have an eye for UI design, that could be a pretty insulting statement from a customer. Maybe you are a developer who’s a good, decent or adequate UI designer, but you’re by far the rare exception. If you think UI design is easy and don’t understand what all the fuss is about, you definitely need help from a UI designer.
If you’d like to grow your skills as a UI designer, seek out user groups in information design, build up some human-factors skills, learn how to plan and perform user interviews, develop user personas, and execute well-designed product-testing sessions with users.
Most important is to start by knowing who the users are for the software you’re building. It’s amazing how often very little is known about the true user of a product or IT system.
2. Web app development
If you write applications that rely on a heavy or installed client, I’ve got to believe you’re probably not in the forefront of where application development is headed. Web applications are where software is headed, with a dash of SaaS and PaaS (platform-as-a-service) to boot.
Delivering applications via the Web browser is where the most interesting application development is happening, whether that be with ASP.NET applications, Sharepoint portal applications, LAMP (Linux Apache MySQL PHP), Java, or Ruby on Rails. Add to that capabilities offered by PaaS providers, such as Amazon, Salesforce/Force.com and Google, and things get pretty interesting.
Web interfaces in applications can be a funny thing. Is the Web UI something that’s plopped on top of a well-designed application? Does the Web UI design drive the rest of the application design? What’s designed first, the back-end or the front-end UI? Well, it’s probably a mixture of both, with one very significant driving factor.
7 Habits productivity guru Steven Covey says, “Start with the end in mind.” Kind of the idea that you can’t get lost if you don’t know where you’re going.
I’ve adapted Covey’s saying: Start with the end user in mind. Creating that effective balance of front-end and back-end design in a Web application is an artful skill to be treasured by those Web app developers who’ve discovered not only how to find that balance, but also help others on the team see, appreciate and value it.
The number of Web apps we’ll be creating in the months and years to come are only going to increase. Teams and technical leaders who can do this well are worth their weight in gold. Do this well and you’ll have your choice of projects and companies to work with.
3. Virtualization leverage
I was just talking the other day with some colleagues about the financial drivers behind virtualization. There are a couple of ways I like to demonstrate this, and the first thing I would say is: Virtualization is a CFO’s best friend (I talked about this on my podcast a while back.)
The second thing I say is: There are three types of CFOs: those asking IT how virtualization can save money, those who have been shown by IT how virtualization can save money, and lastly, those looking for their next head of IT.
Want to score points with the business? Make big strides in hardware, data center, software and facilities savings by leveraging virtualization everywhere you can.
It’s not always free, particularly to get the management capabilities you’ll need to deploy virtualization at any scale, but the hard cost-savings over just the normal hardware purchases should easily justify the software costs on a consolidation ROI.
Now take that the next level, and demonstrate how you can get load balancing, failover, disaster recovery and other capabilities through virtualization, and your CFO will make you an honorary Holder of the Golden Spreadsheet at the next Green Visor accounting convention.
Virtualization isn’t just for the data center. As an application developer, plan in how you can leverage virtualization in your application architecture, deployment options, unit testing and QA testing. Virtualization makes for a great sandbox when testing design ideas, simulating network and server configurations, and loading up large numbers of simulated end-user machines.
The QA benefits alone make just as compelling an argument for virtualization’s cost-savings as it does in the data center. If your QA and lab environments are getting bigger instead of smaller, you’re doing something wrong.
If you’re looking for a place to start sinking your teeth into virtualization, go download the free versions for Hyper-V, Xen, and VMware. You’ll quickly see the need for added management capabilities but the free stuff s great to start with.
4. SaaS multi-tenant and scalability
SaaS is where it’s at, whether you’re talking about enterprise on-demand applications or Web-delivered products and services. It’s one of the hottest areas of our industry right now. But SaaS brings some new challenges not previously faced, leading to some skill shortages in new areas.
Probably the most ominous is what’s referred to as multi-tenant: the ability to fully support multiple customers (companies) within one hosted online application.
What’s the big deal, you say? We already support complex organizational structures in our applications? Well, remember that you likely do this within one enterprise, or SME/SBM. Now, imagine accommodating the complex requirements of hundreds or thousands of companies.
Or, if your service is sold to individuals, it’s about handling those requirements for thousands of small customers. Multi-tenant also means that all configuration options are changeable by the user. There’s no system defaults that work for all users because we’re not all one big happy corporate family. Many more configuration options will have to be exposed for users to be able to customize to meet their own individual or organizational needs.
The third challenge I see in multi-tenant environments is scalability. Imaging you 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 few. Even if you haven’t done it as a SaaS application, the same system and software architecture skills and experiences are the foundation to build from to move into the SaaS environment.
If your next generation of applications are Web applications and may include a SaaS component (or will be fully SaaS), now’s the time to hone those skills and let others know you have them. It will make you all that much more valuable.
5. Writing secure code
Every developer writes code, but not every developer writes secure code. While it’s not a skill many managers understand (or others, for that matter), developers who can not only write secure code but also mentor and teach other developers how to create secure code can be an invaluable team member.
Writing secure code is more than just worrying about obscure buffer-overflow attacks or race conditions. You’ve obviously seen by now my theme that more and more applications are Web apps, and increasingly those are also becoming SaaS applications in many cases.
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.
6. 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, particularly 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 band. 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%s, 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.
7. CERTS, any and all welcome
I like to say; 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; if it’s worth getting an MCTS vs. going for the full MCSE; if having a CISSPs 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 you getting the job over the other final candidate. Getting that certification sure isn’t going to hurt!
CERTS demonstrate you’ve accomplish something that shows you have some level of skill, and it’s been demonstrated by meeting the qualifications of the certification. They’re not necessarily going to let you fly the plane, but you might have a better shot at getting a seat onboard with an IT organization. You’d always rather be too valuable to lose than expendable when the economic 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.