A couple of months ago, I wrote a blog about the lessons I have learned setting up my own engineering business. This original blog covered 10 points which address the initial considerations to think about when setting up your own company. The list includes experience level, cashflow, tooling, insurances, budgeting etc.
In this blog, we are going to look at five more elements which I think are critical for enabling you to deliver projects and grow your company once established.
Strategy and Company Objectives – These should be created when you start your company and reviewed at least once, if not multiple times a year. The key is to define the mission, vision, and values for your company. For example, Adiuvo’s mission is “We enable our customers and partners to realize their embedded system visions” and our vision is “ To be acknowledged as the world’s foremost experts in developing FPGA based systems.” Once you have your mission, vision, and values (Excellence, Trusted, Sustainable, and Cutting-Edge) defined, you are able to determine your aspirations like where you see the company in five years’ time and what it will take to achieve that growth (e.g., investment or organic growth). You should also evaluate the company’s strengths, weaknesses, opportunities, and threats in addition to the strategic choices that need to be made. Pinpoint where the company focuses and where it doesn’t and why. Defining and revisiting the strategy before undertaking significant developments or projects can also act as a sanity check to the proposed development.
Process - To be able to deliver to your clients on time, with quality, and on cost, you’re going to need to identify an engineering process which defines how to get from the initial inquiry to the final delivery. While it is tempting to just jump in and start writing HDL, embedded software or designing schematics, this approach will inevitably lead to disaster. This is where you need to generate and define an engineering process. This process will define elements like how you initiate and plan a project, where design elements are saved, what is documented and how, and what reviews take place and to what standard. Generating processes is quite comprehensive and can evolve as your company grows but there are some basics that must be determined at the beginning, at the very least. These include how you plan and manage a project, track your hours, the change control system you use, and where documentation is stored. Ideally you should also define a common directory structure which is used with your change control system. This really helps brings a structured approach to your projects and ensures easier on boarding of engineers as the team grows. You can see our engineering process in the file share section.
Estimating - Along with defining the process to undertake a project, we also need to be able to estimate the duration, costs, and identify any technical and programmatic risks. This is actually one of the trickiest elements of running a project. Yes, you could charge by the hour, but clients tend to want a firm fixed price for larger projects. Of course, this means you could be working many more hours than you estimated if you get your estimate wrong. This is why it is critical to track the hours you spend on a project. We have tracked the hours we’ve spent on projects over the years and reflected these into estimation spreadsheet which then enables us to define the modules in the FPGA along with the level of process applied, reuse, and complexity of each module. This generates a total number of hours for the development and this can then be costed with the risk, additional expenses etc. This sheet can be used to develop a firm fixed price with minimum risk to your project.
Have we finished yet? Often even when you are handed a complete development, you are still one part of an overall larger development. This could mean you develop the FPGA while the client develops the board. In this case, you need to be very clear about what constitutes the completion of your development process. If you are not clear about the final deliverable, you can end up spending much longer than anticipated working on the integration of the project. Given the example above, if there is an issue with a communications interface or memory, how do you know if the issue is related to the FPGA design (your design) or board design (clients design). There is no easy answer to this challenge. You could suggest that the functionality be demonstrated on a representative development board and then propose a limited number of hours of integration etc. Think carefully when you are writing your quotes and estimates and clearly define what you consider your deliverables to be. Ideally, the client will agree to them or you will be able to negotiate and agree on a mutually acceptable deliverable.
Products or Project? When you first set up your company, you will most likely be providing engineering services (e.g., developing projects for clients). These projects may be small or multi-year commitments. However, there are a set number of hours which can be sold for each engineer per year. The more engineers you employ you can, of course, deliver more products but then you need more projects to keep them gainfully employed. Products, however, sell continually and enable you to recover your return on investment over a defined time frame once they are developed. These products may be IP cores, circuit boards, or training etc. One of the key elements in defining your product is to clearly define a strategy for the company and identify areas where you have the right to play as you have knowledge and experience along with areas which you know little about. For example, Adiuvo will soon be releasing a range of IP cores, on demand training courses, and a Spartan 7 FPGA and RPI2040-based development board.
As I said in the first blog, running your own company can be immensely rewarding and hopefully these five points will help you successfully deliver and grow your company once established.
Workshops and Webinars
If you enjoyed the blog why not take a look at the free webinars, workshops and training courses we have created over the years. Highlights include
Professional PYNQ Learn how to use PYNQ in your developments
Introduction to Vivado learn how to use AMD Vivado
Ultra96, MiniZed & ZU1 three day course looking at HW, SW and Petalinux
Arty Z7-20 Class looking at HW, SW and Petalinux
Mastering MicroBlaze learn how to create MicroBlaze solutions
HLS Hero Workshop learn how to create High Level Synthesis based solutions
Perfecting Petalinux learn how to create and work with petalinux OS
Embedded System Book Do you want to know more about designing embedded systems from scratch? Check out our book on creating embedded systems. This book will walk you through all the stages of requirements, architecture, component selection, schematics, layout, and FPGA / software design. We designed and manufactured the board at the heart of the book! The schematics and layout are available in Altium here Learn more about the board (see previous blogs on Bring up, DDR validation, USB, Sensors) and view the schematics here.
Sponsored by AMD