With the economic downturn on everyone's mind, assumptions about job security come under
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
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
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.
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.
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.
Virtualization leverage: I was just talking the other day with some colleagues about the financial drivers behind virtualization.
Want to score points with the business? Make big strides in hardware,
Virtualization isn't just for the data center. As an application developer, plan in
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
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
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
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
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
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
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:
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