SOS – Save Our Software
Projects run over budget and schedule for a variety of reasons; however, if you can avoid these sticky situations from the beginning, your project may just meet your intended deliverables.
Situation 1 – Working with a One-Stop Shop
A firm offering a variety of services under one roof will often claim to be experienced in multiple engineering disciplines. As convenient as this may sound, the one-stop shop can lead to many development issues. Organizations claiming to do it all will often specialize in one type of engineering practice (i.e. software, electric, mechanical, and industrial), but fall short in the rest. Many times, these companies will elect to supplement their skill-set with contractors on an as-needed basis instead of hiring full-time employees. This practice can put your project’s deadline at risk when a contractor is pulled into another job, and your project is tossed “over-the-fence” to another engineer, unfamiliar with your project.
Situation 2 – Off-Shore Vendors & Independent Consultants
The cost of developing an embedded device can be steep; however, carefully consider the true cost of the various quotes you receive. Whether you are pursuing an off-shore partner or independent consultant, take a moment to truly evaluate what is needed of your project. Will the code be engineered by an expert? Will this engineer work on my code exclusively, full-time? Is my intellectual property protected?
Closely review your contract with off-shore vendors. If your intellectual property is not protected, or if you do not own the source code once your project is complete, your product may be in jeopardy.
An individual consultant will not carry the same overhead as a fully-staffed engineering firm, therefore offering a lower hourly rate. The downside of this lower rate is the likelihood that the project will not be completed in time due to lack of focus on your project. This independent consultant may have a full-time job and will only work on your project during their spare time (nights + weekends). If you are concerned about launching your product on-time, ensure your software and firmware engineering vendor has the appropriate bandwidth to properly support your project.
Situation 3 – Lack of Industry & Regulatory Expertise
Prior to settling on the appropriate partner for your project, confirm that the vendors you are evaluating have experience in your industry. If you are developing a product that must adhere to and meet specific regulatory requirements, it is equally important that your vendor be experienced in this area. Ask yourself, at the end of this project will the final code set satisfy the appropriate regulatory requirements? Your partner should have proven experience delivering projects to such standards, whether that be a medical device to FDA requirements, military system to MIL-SPEC standards, or an industrial control system for a nuclear power plant that absolutely cannot fail.
Situation 4 – A True Software Engineer?
Beware of false software engineers. Electrical and mechanical engineers by trade have been known to dabble in software engineering. Although their intentions may seem pure, their expertise in developing complex embedded software systems will likely be substandard. Lacking the proper training to complete a complex project, this choice of vendor will likely result in a “whack-a-mole” situation where fixing one problem opens another issue in a different area of the system. Chasing these issues can push the schedule out and risk ever achieving 100% completion of the project. Secure a software engineering partner that is trained and skilled in this engineering practice to guarantee your project’s success.
Situation 5 – No Design or Standards
Have you noticed that your software engineering partner continually misses deadlines and the software is only 80-90% done? This is typically indicative of a lack of design from the start. After settling on the product’s requirements to ensure your product will be developed with the correct features, each stakeholder should understand the end goal. Next comes the design phase. Designing your system from the start will mitigate risk, allowing the engineer and other project stakeholders to think about the issues that may arise during implementation, therefore minimizing unnecessary rework. A proper design is advantageous when maintaining the system and/or updating the system, therefore eliminating the need to re-design the system in the future.
In addition to proper design processes, your software engineering partner should follow a set of engineering standards. This alleviates the pressure from you as a paying client, to determine which standards need to be followed. A software engineering firm that does not have their own set of standards should be a red flag as this may indicate they are not continuously improving their processes and standards after each completed project. Firms with their own set of standards prove that they have experience in your particular industry and have done such work in the past.
Getting it Right the First Time
The cost of choosing the wrong partner can be detrimental to your project; therefore, finding the right partner from the start is critical. Many times, the situations above occur after a project has commenced and leave you frantically searching for a second partner to come in and save your software. Visit your partner face-to-face, ask the tough questions, and obtain proof of past performance through testimonials and recommendations. If you have questions about the way in which your critical embedded system should be properly engineered, please contact Precision Systems, Inc. We would be thrilled to share our nearly 40 years of experience in this industry building successful embedded systems that cannot fail.
Contact our experienced software engineers to help save your software.
No Comment
You can post first response comment.