|
Should You Outsource Your LabVIEW
Project?
Tom Peters, an influential business consultant, and author of
In Search of Excellence and Thriving on Chaos made
the following bold statement:
"Do you look outside first, rather than inside, when thinking
about the resources (people) you need to launch or execute a
project? If not, why not? (Are you so arrogant as to imagine
that the best and brightest at everything are already working in
your building?)"
In his books, he cited numerous examples of outsourcing success.
I will highlight just two for the purposes of this article:
IBM:
In a three year period of the early 1990's, IBM's Austin, Texas,
personal computer operation, considered a thoroughly modern
operation by The Economist, did the following:
Cut average manufacturing cycle time from 7.5 to 1.5 days
Cut new product development time from 24 to 8 months
Increased its product portfolio from 19 to 85
Reduced payroll from 1,100 to 423 people
Nintendo:
In 1992, Nintendo achieved an amazing outsourcing success
With only 892 employees
$5.5 billion in sales
-
3rd in profits of all Japanese companies
Those two examples are from IBM and Nintendo, and there are
many, many more out there. But every company has different
needs. While Nintendo outsourced a tremendous amount of tasks,
they still retained 892 employees, working on core competencies.
So, the recurring question you need to ask yourself is whether
LabVIEW expertise needs to be a core competency of your company.
As you think about that question, let us consider the various
alternatives you have when implementing a project for Automated
Test Equipment software or laboratory automation.
The following six ideas come from our experience working with
and consulting for hundreds of companies. Some of these are
great ideas, some not so great. But all six are options for you.
Hire a full-time test software engineer
Borrow an engineer from another department
Use a technician to manually test
Train a technician to write software
Hire an intern to write software
Outsource your test software requirements
Now, let's explore the pros and cons of each of our six
alternatives.
Option 1: Hire a full-time test engineer
If you have a lot of testing to do, and you think the time to
design and develop the software is going to take over two man
years or more, then hiring someone full-time is a good
alternative to consider.
Cost: The typical cost for a senior-level test engineer
will be between $80-$120K
per year in salary (depending on experience level). Benefits and
overhead costs
(including 401K, medical, payroll taxes, vacation and sick time,
etc.) are typically about 50% of the salary. You should also
include the associated company costs of hiring the individual.
(These costs include such things as recruiting, interviewing,
training, office equipment and software, etc.) As a general rule
of thumb, many companies use a figure between $200,000 and
$250,000 when estimating the total costs of a single software
engineer. Although this figure sounds high to many, it is used
by most Fortune 500 companies as a realistic estimate
Pros: If you can find the right person and there are a
several man-years of tasks to automate, this route can be very
cost-effective. The engineer is available to assist at all
times.
Cons: Test engineering is usually not the kind of
activity that gets an engineer excited. Because of this, many
engineers want to move out of the test department as soon as
they can. Every company has a core competency, and most
engineers want to be involved in the design of the products
related to the core competency. For this reason, it is often
hard to keep the best engineers in the test department. It is
very common for an engineer to be promoted out of the test
department at the point when their training is just starting to
pay off. This means that many test departments are filled with a
hodge-podge of partially written software modules, in which some
pieces of code are well-written but many parts are spaghetti
code.
NOTE: Another key issue is the recruiting process. Be
sure that the person doing the interviewing knows enough about
LabVIEW development to adequately interview the candidate. We
get resumes from people all the time who have taken a few
classes and claim to be experts, and then we discover in the
interview that they don't know much more than the basics.
Option 2: Borrow an engineer from another department
Often, there is an engineer inside your company who could be a
tremendous help on your project. If you have a small project
that only needs a few hours of work per week (or maybe just a
couple days of total development), then this option may be right
for you.
Cost: In this case, you are working with another
department and a current employee, so the cost is probably not
something that you'll think about. However, if you want to
benchmark the cost, you should use the same calculation in the
above scenario of a full- time employee, and then pro-rate based
on the length of the project.
Pros: If your project is not big, and you can find the
right person inside the company, then this is an excellent
option.
Cons: Often it is difficult to get the borrowed
engineer's full focus on your project, and there may be
political issues involved in getting the engineer. Also, if the
project is expected to take more than a couple of days, or if it
involves technology that the borrowed engineer is not an expert
with, then this is not a good option. Finally, keep in mind the
maintenance needs. Will the borrowed engineer be available to
assist you in debugging the software or upgrading it when
additional features are needed?
Option 3: Use a technician to manually test
Sometimes your tests just are not that complicated, and/or you
don't need to test very often. Perhaps you already have a
well-trained technician who could do the testing for you. If
this describes your situation, then using a technician to
manually test might be your best alternative.
Cost: In this case, as before with a borrowed employee,
you are working with someone already in-house, so the cost may
not be something that you will think about. However, if you want
to benchmark the cost, you should use the same calculation from
Alternative #1 of a full-time employee, and then pro-rate based
on the length of the project. Include the cost of your time to
train the technician and consider the contingency plan for when
the technician is out sick or on vacation.
Pros: If the test doesn't take a long time to run
manually, and you don't have to do it often, then this is an
excellent option.
Cons: If the test is really this easy, then it is
probably very easy to automate. Typically this scenario is the
type that LabVIEWexpert.com could automate for less than $5,000.
If the costs associated with the technician are higher than
this, then outsourcing may be an even better alternative than
using the technician.
Option 4: Train a technician to write software
This alternative is probably the worst idea of the six, but it
is mentioned because many companies try it. In all of the
companies where we have worked, this solution has never given
the results that management had hoped. There are several simple
reasons why.
Cost: In this case, you are working with a current
employee. The cost may not be evident, nor something that you
will think about. However, if you want to benchmark the cost,
the same calculation from Option #1 of a full-time employee
still applies. Include in the cost the time to train the
technician and the time that the technician spends writing code.
(Realistically, you should also expect that 95% of all code
written will not be reusable. You should consider the cost of
having to rewrite code.)
Pros: This seems like a cheap solution. Unfortunately,
this is a perfect example of "you get what you pay for".
Cons: It is difficult to create well-written software.
That is why professional software engineers commonly spend four
years or more in college and several more years working on real
projects before their code is well-written. After you spend the
money to train the technician, and once he or she writes the
software, the result will often be spaghetti code which is not
scalable. It is almost guaranteed that you will spend more time
and money on this solution than you would if you had outsourced;
particularly to the right contractors with the right people.
Option 5: Hire an intern to write software
This alternative, at best, is only slightly better than having a
technician write software. Once again we mention it here because
we have seen companies try it, and observed the disappointment
that they frequently encounter.
Unfortunately for those companies, this option has a
double-whammy. It rarely results in quality software that is
usable in the long term, AND most interns don't return to the
company after the internship, leaving a maintenance headache.
Murphy's Law holds true in that the moment you need to enhance
the code for new features, the intern has just left the company.
Cost: You are hiring a college student, so the costs seem
to be a bargain. You may be paying anywhere between $12 and $25
per hour. The hidden costs are in the supervisory time and the
high probability that this student may not work for your company
after the internship. When you include in the cost the time to
train the intern and all of the time spent by other employees
supervising or mentoring someone whom you may never see again,
the cost is not the hourly wage at all. (Realistically, you
should also expect that 70+% of all code written will NOT be
reusable. You should include the cost of having to rewrite
code.)
Pros: If you can find the right person, this solution
could work.
Cons: Most often, the software written will be badly
structured code, which is not scalable. If the intern doesn't
come back to work for your company, someone else will have to
maintain the code. If the intern does come back, he or she will
often work in a different department, meaning that any future
improvements to the test software will be made by someone else.
In either case, the most likely scenario is that the code will
not be reusable and scalable, and you'll spend even more money
rewriting the software.
Option 6: Outsource your test software developments
The final alternative is to bring in an expert from the outside.
You get to benefit from the experience of the consultant,
without paying the costs to have him/her on staff full-time and
without having to spend valuable time on training and
supervision. When the project is done, you no longer have to pay
the consultant; however, you have the benefit of being able to
use him/her for maintenance or upgrades in the future.
Cost: If you are hiring an expert, expect to pay between
$75 and $200 per hour. Depending on the contract, you will
either pay a fixed price for the whole project or pay hourly.
The consultant should give you a detailed proposal with
approximate costs. (NOTE: The price per hour does not always
indicate the quality of the consultant, but it can be a good
indicator. This is especially true when it is evident that the
apparently more expensive consultant is clearly in demand from
others.)
Pros: If you can find the right company to use for
outsourcing, this solution is very often the best solution. You
only pay for the project expense, and don't have the liabilities
of a full-time person. You get maintenance, proper
documentation, and expert advice.
Cons: The hardest part of outsourcing is choosing the
right company. Many outsourced projects don't work out (the
result of either picking the wrong outsourcing partner or not
managing the outsourcing partner well). Please read our website
section "How it Began" for a further discussion of the pros and
cons of different outsourcing options.
A Note on Creative Work
Study after study has shown that the best software engineers
perform 10 times more efficiently than average software
engineers. This is due to the fact that software engineering is
both a rigorous discipline requiring many years of training, and
it is a creative endeavor, requiring imagination and abstract
thinking. If you believe the studies, and the idea of "10 times
more efficient", then let us explore the implications.
Imagine that you have an assembly line, and you have ten workers
on the line. Your best worker may be 25% more efficient than
your worst. Perhaps he or she is as high as 50% more efficient;
rarely will there be a higher difference than this.
Now imagine that you have two software engineers. One is
excellent and is ten times (1000%) more efficient than the other
engineer. When you consider their salaries, the difference may
be 25% or even as high as 50%. Never will the excellent engineer
make 1000% more than the average engineer.
Keeping this in mind, the biggest benefit of outsourcing is that
when you find the right company, you will be working with
engineers that are 1000% more efficient than your other
alternatives. The good news is that you won't pay 1000% more.
You might even pay less.
A Final Word on Outsourcing LabVIEW projects
At LabVIEWexpert.com, we have worked with over 200 companies in
San Diego County. We have seen outsourcing work wonders, and we
have heard customer stories of outsourcing failures. When all is
said and done, the reasons for outsourcing success are the same
as those for employee success: great people who are
professionals committed to their work. We at LabVIEWexpert.com
are proud to say that we have never had a customer who was not
satisfied at the end of a project. We pride ourselves on our
list of references, and that we can refer a prospective customer
to 100% of our previous customers.
The mission of LabVIEWexpert.com is to create low-risk solutions
for your software development needs. We will not have the
cheapest rate per hour; however, the total cost of using us will
often be less than all other alternatives.

Email:
Patrick@LabVIEWexpert.com
Copyright 2007 LabVIEWexpert.com. All rights reserved.
Product and company names listed are trademarks or trade names
of their respective companies. |