Why Should I consider Embedded Software Outsourcing for my project?
There are many reasons to use embedded software outsourcing for your next project.
Many of our embedded software outsourcing clients find that they do not have an available embedded developer, embedded software engineer, or embedded system engineer on staff that can handle the work. This situation could be because they are busy working on other embedded system design tasks, or they don't have the expertise needed for the project. For example, maybe they have experience with rtos work in general, and are a competent embedded developer, but don't have experience with vxworks, linux device drivers and linux driver development, windows drivers, arm processors, or some other specific expertise needed for the project. In either of these cases, it will be less costly and faster for you to hire an embedded software oursourcing firm or embedded software consultant to complete the project.
Outsource embedded system design projects when you have a temporary need for an embedded developer.
If you hire a full time embedded system engineer, you have to spend a significant effort to find the right engineer. Plus there are the attendant risks of making a bad hire, the additional costs related to having another embedded software engineer on staff, including payroll taxes, vacation and sick time, health insurance costs, retirement plan benefits, regulatory requirements, and the like. On the other hand, it may be more cost effective for you to hire a company such as Lextel on a temporary basis to complete a specific project. An outsourcing company will provide a qualified embedded developer, embedded hardware engineer, embedded software engineer / consultant, or embedded system engineer suited to your needs, for just the time you need them.
Many embedded software outsourcing clients are not in the business of embedded system design.
In this case, perhaps the firm's core competency is in product design, product marketing, or some other specialty. Rather than attempt to develop an in-house expertise base in an embedded area such as rtos work, vxworks, linux device drivers, embedded system design, or embedded hardware design, these firms choose to leave that part of their work to an outside expert or consultant. Most companies realize that in today's world of specialization, it is better to focus your efforts solely on your core competency where you have the most added value, and 'farm out' the rest. Most smaller technology product firms would not think of trying to have, for example, a dedicated CPA on staff, since it is clear that filling out tax forms and being in compliance with tax rules and regulations is not going to differentiate them from their competition, in fact, just the opposite – dedicating a full time in house resource on such a task would divert them from their core competency. For many firms, it is just the same with embedded software development and embedded system design. Better to outsource to an expert embedded software engineer or consultant than use up internal resources and end up doing a poor job of it.
Retention of product expertise is an important consideration.
Often a potential client will be concerned that if they hire an outside embedded system design firm to develop their product, they will not have in-house expertise to support, modify, and maintain the product going forward. In fact we have found this situation to be the reverse. Typically, an embedded software engineer, embedded developer, embedded hardware design engineer, or other embedded system engineer will stay in a job for 3 to 5 years, then move on to greener pastures. It is particularly difficult for smaller technology manufacturers and marketers to retain talented embedded system engineers on a long term basis. Most of the talented engineers are continuously on the hunt for new projects to work on, and loathe the idea of maintenance, upgrades, etc. to an existing product. Unless your firm can provide talented in-house engineers with a continuous stream of interesting new embedded system development projects, you will lose them quickly. In one recent case, Lextel developed a significant amount of embedded software and user interface control software for a local defense subcontractor. Unfortunately, internal company issues resulted in a wholesale exit of a large part of the firm's embedded engineering team. Shortly after that, the firm found that it had actually misplaced the source code of the embedded software Lextel had developed. Lucky for them, we were able to provide them with the software and help them with continued support and maintenance. Keep in mind that embedded software outsourcing firms are always in need of new work, including maintenance and support on work they may have done for you previously. Typically the embedded system design engineers and principals at the consulting company have a vested interest in supporting you which is actually much stronger than the interest your full time employees have in your success.
Consider level of expertise when deciding to hire full time embedded system engineers vs. embedded software consultants.
Unless you are willing and able to pay very high salaries, and provide significant opportunities for professional and career advancement to full time embedded software engineers, linux driver development engineers, embedded hardware design engineers, or any other embedded developer you may need, then you will only be able to hire junior or entry level engineers, or at the least, engineers with limited real world experience and limited breadth of knowledge. On the other hand, by choosing the route of embedded software outsourcing, you have a chance to retain the services of very senior, experienced, experts for your project. Ultimately, it is in fact less costly from an overall perspective, to have a very experienced engineer / consultant on your project, even if it may seem to cost a little more in terms of raw hourly rate. The cost of missed deadlines, faulty and buggy software, customer dissatisfaction, vacation time, sick time, internal management time, office space, and the like that you incur when hiring an embedded developer with limited experience and skill, will really hurt your bottom line. On the other hand, a very skillful, experienced embedded software engineering consultant can make your project a success.
What should I look for in an embedded software engineer, embedded software consultant, and embedded software consulting firm?
Hiring an embedded developer, embedded software engineer, embedded software consultant, or outside embedded system design firm requires careful scrutiny. Some of the more important issues are:
How much experience does the embedded software engineer have?
We suggest you hire embedded software engineers, embedded hardware engineers, or embedded software consultants with a minimum of 15 – 20 years experience if possible. It takes a long time and many, many embedded software and system design projects for an engineer to become truly skilled and knowledgeable. A less experienced embedded software engineer, embedded hardware engineer, or other embedded consultant may be able to recite back definitions of industry buzzwords, or answer some stock interview questions, but that will be no substitute for decades of real world experience.
Does the embedded software consultant or embedded system design engineer have experience with embedded hardware design?
Many embedded software engineers and consultants have only a software background. Sometimes it is focused on C++ and object oriented programming. These are valuable skill sets, but for a truly successful solution to an embedded system design project, an embedded hardware design background is a significant benefit. Many good embedded systems engineers started out as hardware designers and migrated into diagnostics, device drivers, and rtos based embedded software projects. This background provides the necessary knowledge and skill to develop embedded software that performs well, uses less memory, and does not fail.
Does the embedded software engineer or embedded software consultant have experience with RTOS development, such as vxWorks, embedded Linux, or QNX?
The use of an RTOS ( Real Time Operating System) in an embedded system design project will increase your project's reliability, performance, maintainability, and reduce time to market and embedded development costs. Make sure your chosen embedded software engineer or embedded system design consulting firm has significant experience using an RTOS.
Is the embedded system developer you are considering a good communicator?
Although many embedded software engineers may be more comfortable 'speaking' with a computer than they are with a person, to complete your project on time, to get what you want, and to have it fit the needs of your organization, the embedded software consultant, or at least your contact points at the embedded system design firm must be good communicators. At a minimum you need to see excellent, concise, and useful written specifications and development plans. You really need to have excellent verbal communications with the embedded development firm also.
Does the embedded developer or embedded software engineer or consultant have experience with the right embedded development tools?
Embedded development requires use of tools not usually used in application software development. This includes logic analyzers, oscilloscopes, embedded real time debuggers, in circuit emulators, and bus protocol analyzers. Sometimes the embedded software engineer will have to create or customize needed tools, or make the needed tools run on your system. While it is possible to complete your embedded system design project without these tools, it will take significantly longer. Some tricky situations and embedded design problems cannot be solved without use of the proper tool.
Does the embedded developer, embedded software consultant, or embedded system design firm provide a clear project specification and development plan?
When hiring an outside embedded system design firm or embedded software engineer, it is important that the embedded developer provides specifications for the project being completed. The embedded system specification should provide a clear statement of the expected deliverable and time frame for delivery. The embedded software or embedded hardware being developed may be part of a larger embedded project at your firm, and it is vital to be clear about the interface between the internal work and the outsourced work. It is also vital to be clear about what is part of the deliverable and what isn't.
Does the embedded software consultant or embedded development firm address and assess project risks?
All embedded systems design projects entail risk. This could include technical risks if the embedded system design contains elements that are 'pushing the edge' of the technologies in use. Or risk could include schedule risk due to embedded developer manpower loading or invalid time estimates. The embedded system engineer working on your project should address project risks up front with you. If possible, design and development should begin with the risky technical issues, because if a problem is found it may alter the course of the entire project. Do not wait until the end to find out a critical technology will not work.
Does the embedded engineer, consultant, or developer provide acceptance critera?
Embedded software projects in particular usually suffer from 'feature creep'. Make sure the embedded system design firm works with you up front to develop an acceptance criteria, so both you and the embedded system design firm agree on what constitutes the project being 'done'