NOTE: Following content was initially edited and published in Elektor 10/2018.
Every engineer at some point in career wonder about taking everything in her/his own hands and starting work as an independent freelancer or consultant. When that thought got to me the first time I was working for a big international corporation and I was naive enough to think that I can organize things much better. Sadly there are not many sources where you can read how to start and navigate through the first year or so. It is hard to not mention here embedded systems guru Jack Ganssle and his classical Guide to Being an Embedded Consultant, which was motivation to me and must-read for anyone thinking about change.
In the following article I describe my path to building Embedded System Consulting company and problems I faced when building an organization.
I silently assume you have decent experience in embedded systems or related field and considering a change in your career. Below consideration is rather for engineers starting solo who would like to know how to start and how the everyday operation may look like.
Reality is usually much different than our expectations. That’s why I recommend trying things before making the move. Before I made the decision of leaving the corporate world I worked for over 6 months part-time as a freelancer through various popular websites. Thanks to that experience I faced all critical parts of the business that can be new to engineers from embedded systems field:
- Customer relationship - explaining technical things in a non-technical way is crucial, helping understand what can and cannot be done
- Project planning and estimation - impossible to learn in theory, requires a lot of practice
- Pipeline filling - no new customers means no paycheck next month
- Legal, accounting, marketing
Of course key engineering work have to be done on time despite all problems that enumerated areas may bring. Overall consultant or freelancer get rid of corporate processes, but have to build their own to make things stable for a time longer than a couple of months.
Initially, I thought that it would be possible to avoid processes, but building business requires solid structures which cannot be destroyed by minor change on market. It is important to understand Embedded Systems Consulting may bring a lot of unexpected issues, but if you can navigate and stabilize that kind of a business reward can be worth the effort.
From Dream to Action
There are still tons of questions to answer, but most important at this point is to start work for yourself, what means either paid project from some customer or project that will help you promote your profile. Key questions that should build a framework are:
- How much time I can spend on side projects during week/month?
- Does my contract allow working for other people/companies?
- What are the technology areas that are most interesting to me?
The first point you should consult with your family and friends. Amount of time and hours you working should be clearly defined (e.g. Mon-Fri: 9am-5pm - regular work, 8pm-midnight - side project). Please note that working 8h in a regular job and then additional couple hours on side projects, can be exhaustive, so you should remember about healthy style basics and be reasonable about pushing the limits. Time management is very important, so make sure you loose as less as possible in traffic, the ability to work remotely can really help here. If you work over hours for your current employer you should spend this time on your side projects.
You should consult your contract with a lawyer, in some states employers cannot forbid additional professional activity. Some contracts obligate you to ask the employer for permission, please note that you can be rejected and to proceed you will have to change your job. Rethinking your tactics twice before talking with a manager is very important. In any case, you have to avoid conflict of interest.
There are tons of technologies used in the embedded systems area, so you have to choose something. My initial idea was to understand all development kits I had on shelves. It may be worth to look at the market and see which projects are high value without much attention from freelancers. Also, you can’t be wrong with Arduino and Raspberry Pi, but please note that market for those boards is huge and rates are very low - unless you do something exceptional. To summarize please choose technologies that you could work on without being paid for and start work and document your effort.
I think one of the first things, in our digitized reality with hundreds of social media channels, is building your own profile. There are tons of books about personal branding and building your Internet presence. Typically at the beginning we don’t have an idea of the brand and we stick with our own name around which we building a reputation.
What is important to realize is that there are limits to the size of the project that a single person can handle, depending on your business experience you may decide to address that problem at the beginning or wait to cross that bridge when get there.
What you need to build a good profile?
Profile overview - some introduction that would be read by a potential customer and give feeling what kind of work she/he may expect from you.
Sample projects - key rule should be “always document your work” since you never know when it can help you gain traction. Pictures and a short description of the project with used technologies is something that can drive customers. Please note that project documentation is your key marketing material - better you can create, better customers you will attract.
Visibility - it should be easy to find you, make you are available through freelancing websites, professional profile website as well as Stack Overflow and forums related to your expertise.
A profile containing the above characteristics should be consistent across various social media and can build a good ground for a personal website. It is good to consider writing a blog and being active in social media since those are reasonably inexpensive marketing methods.
Let’s assume you followed above advices and you prepared your profile and published it on most important freelance websites. What now?
There are 2 main strategies, either you bid everything that falls in your area of expertise, either you wait for being invited. You have to master interaction through given freelancing service and understand all its pros and cons. It is important to have some badges that prove your skillset as well as earning a reputation through activity. I was lucky enough to have got most of my project through direct invitation. Personally, I never bid projects that I was not 100% sure I can finish below the budget and on time - those projects were typically things that I accomplished many times and I already had everything solved in my head.
Sooner or later you should get your first customer. Without going deep in project management field we can distinguish 3 main project phases: on-boarding, execution and closing.
On-boarding is the phase where engineers made the most mistakes. Incorrectly handled relation, lack of process, over-optimistic pricing and delivery dates, all that give terrible results. That is why I operate using the following rules:
- Always have an introductory call with a new customer - if a customer does not have time to talk about the project it is a bad sign.
- Never perform complex project estimates without being paid - typically embedded systems projects are complex and analysis take a significant amount of time, because of that estimates preparation is project in itself which prove the basic concept and feasibility of further activities. I believe this point itself could easily take the whole article, but we don’t have space to dive deep into it.
- Never provide estimates without having the hardware (or at least development board on which target hardware was based) on your desk - we all know-how embedded systems development can be surprising: buggy designs, insufficient documentation or lack of vendor support, we faced that before. Adding one more possible point of failure by committing to a hardware platform that we have no hands-on experience is way too much and may easily destroy our brand.
- Be honest about the project idea and what is reasonable with provided resources, do not forget to write down limitations - it is easy to enter not well defined project, but closing that project without failure and financial consequences may be impossible.
Above rules should help in the onboarding process, but then we have the execution phase. This stage requires correct communication adjusted to customer needs. Communication is something that most engineers may have a problem with it: requires patience, understanding and clear mind to address all issues without causing more problems. Soft-skills is something we may have a problem with that’s why we should train a lot, always look for solutions, ask more experienced friends and never give up.
The execution phase is the time when we use our key technical skills. We should remember that good engineers always take notes and prepare documentation. If we are serious about our Embedded Systems Consultant career we should never ignore problems, any limitation should be provided to the customer and clearly explained. Documentation of operational technology (e.g. how to get, build and deploy embedded software) for the customer may be even more important, then correct functions description in header files. We should always improve our execution by using modern development techniques and efficient tools.
Finally, we have to close the project. If previous phases were addressed correctly we should have nicely packaged result of our work, that can be utilized by the consumer without much hassle. I never saw an embedded software project finished without limitations or things that could be improved. Delivery of release package is very important because this is a key factor based on which customer will rate your service. Based on customer rate you may get free marketing and/or new projects. 3mdeb reports typically contain initial project scope document, release notes mentioning all features implemented and limitations, user documentation defining the easiest possible way to utilize project results, other deliverables like source code or binaries.
The non-engineering, business side of consulting can seem daunting. But it doesn’t have to be. Here are a few simple tips to keep in mind as you start your own consulting business:
Be an engineer. Remember that you are first and foremost an engineer/programmer, not an accountant, lawyer, or bookkeeper. Focus on your strengths, and don’t be afraid to find accounting, bookkeeping, legal, and business support early on that is, as soon as you start your consulting business. There are plenty of resources online to help you get started. And talking one-on-one with a business professional in the early stages of your endeavor will make starting and running your consulting business easier than trying to troubleshoot problems later down the road while you’re working on actual engineering-related projects. Freelancing portals typically handle most of those problems for you, of course you have to agree to their rates at the beginning.
If you work without third party between you and customer, then use contracts. It’s important to use written contracts and the Scope of Work/Statement of Work (SOW) statements clearly define project or services you will perform. Creating the correct project charter is the art in itself and there are online courses that can help you do that correctly. In short, make sure both you and customers agree upon project/service:
- Scope and out of scope activities
- Your and customer responsibilities
- Requirements - ideally defined using RFC 2119 terminology
- Execution procedure
In addition, you may add assumptions and constraints that you know of as well as risks related to various project requirements.
In the above article I just scratched the surface of the real-life of Embedded Systems Consultant. It is very hard to digest 4 years of experience in one article, so in some places, you may see simplification and shortcuts. Overall I covered how your dream may differ from reality, what are the key things to remember when making move, timing, mechanics and approaches for the transition between regular engineering position and independent consulting.
Overall I think we should understand why we make a move and what difference we want to bring to the world. If our only motivation is money, then IMO it is not good enough since we can lose fuel when we will have enough.
In 3mdeb our mission is to make firmware world more open and accessible to everyone. We believe that a world with an open ecosystem for embedded firmware development would be better.
Think about your motivation before making a move.
If you think we can help you in building your business by any means. Or you
simply looking for a good partner that can provide embedded firmware for your
solution, feel free to book a call with us or drop us email to
contact<at>3mdeb<dot>com. If you are interested in similar content feel free
to sign up to our newsletter