Over the course of my career I have always been a fan of hiring R&D staff. Many people feel that the true value of a Tech company is it’s people. There is allot of truth to that statement, but it does mean that companies have to be careful to staff up when they have sales to support the growth. This means that some projects have to be passed up in order to focus the limited resources your core development.
My own experience with contract resources has been one where the people I hired were not as good as the people I already had on staff. It seemed to me that the only people who contracted were the ones who could not find full time employment. Now that I am a contractor, I have discovered that there are organizations that build teams of people that are used to working together. These people are constantly shifting from project to project and have a better understanding of design tools that companies use then the employees that work there.
So what if you are a company that wants to address an opportunity but you can’t justify staffing up to do it. Well the responsible thing to do would be to sign up a temporary team. Everyone wins with this approach because the people involved don’t expect a long term commitment and have a support team working for them lining up their next opportunity.
Some of the people who work at contract companies work there because of the challenge. I can say from first hand experience that the pace of development is as fast, if not faster, than any development team I have worked on. The knowledge of the team is deep and their ability to work with customers is exceptionally good. I have no doubt that the team will finish the development on time if not before.
This experience has made me wonder what would happen if engineering resources banded together to form professional associations. If Engineers were like doctors and worked for themselves, they would sign up companies like patients until they had all they could handle. Customers would be free to change engineers and engineers would be free take on new customers when they needed them.
OK so that probably won’t happen any time soon, but I do recommend that every software designer and engineer spend some time as a contractor. It’s like spending some time as a short order cook before becoming a chef at a five star restaurant. Until you have spent some time exercising the full breadth of your skills, surrounding with people who do it every day, you are missing out.