What is the best way to hire an embedded hardware/software consultant? - Page 1
Forum section: electronics / general

author: PDP-1
author_rank: Contributor
timestamp: August 14, 2024, 06:47:19 pm
content: I've been working on a project based around the STM32H745 micro on a custom PCB for the last year or so, pretty much as a solo developer. The hardware prototype is pretty much done, the software is maybe 30% done and I can sketch out a roadmap for the rest. Unfortunately I am not going to be able to complete this project as I have just gotten a different job in another country. I have very much liked working for my current employer (a research group at our local university) and I want to help them find and hire a consultant to finish the code.I've never had to look for an embedded software consultant before, maybe some of you have done so or are consultants yourselves and can comment on a few questions:1) Where do you go to find people/companies who can do this type of work? I suppose posting in the jobs sub-forum here would be one way to start, are there any other online communities that we should try to advertise in?2) What would such a consultant expect from my group to get started? I'd guess they would need a copy of the prototype hardware with schematics, the code base as far as it has been written today, and a write-up of what we would like it to do when complete. Am I missing anything that would help them out?3) The project consists of making the micro read from an external ADC input, do some light signal processing, and then write to an external DAC output, while responding to commands issued over Ethernet. Ideally we would like to be able to push firmware updates over Ethernet too. Where does something like that fall on the easy-to-hard scale for an average consultant?4) Are there any other considerations that I am missing? I have to leave for the new job in a few weeks and will likely not meet with whatever consultant ends up with the job, so I want to make sure I leave them with as good of a package as possible to get started with.

author: mikeselectricstuff
author_rank: Super Contributor
timestamp: August 14, 2024, 07:02:53 pm
content: Some manufacturers ( e.g. Microchip) have registered consultant programs ( Think MCT call them "Design Partners") these days, and their website provides some info on specialisms etc.https://www.microchip.com/en-us/support/design-help/design-partner-ecosystem/design-partner-programThese can be useful even if you're not using that company's parts

author: radiolistener
author_rank: Super Contributor
timestamp: August 14, 2024, 07:37:07 pm
content: Quote from: PDP-1 on August 14, 2024, 06:47:19 pmthis is pretty disputed value when original developer is unable to finish it and it needs to be finished by other developer, because this value may appears to actual 0% in some cases. So, there is possible some kind of risk like when original developer get money for some time of development, but unable to get some result due to not enough experience and looking for another developer who can write project from scratch for the rest of project budget. And it may appears that hardware is not properly developed and needs to be redesigned at the same budget. At least I would be wary of such a combination of circumstances.So if your project really has some progress, I would suggest to add some info that can help to make sure that existing code is properly written and this is not a kind of project when a new developer will need to get obligations to write all things from scratch for 30% less price than average price on the market.This will help to avoid scaring off candidates with strange circumstances of the current state of the project.

author: westfw
author_rank: Super Contributor
timestamp: August 15, 2024, 08:08:12 am
content: QuoteThat is SOOO "open-ended" and could range from "read these raw ethernet packets that we already have an app to send" to "implement a secure web server with forms for us to put the data in, using latest draft spec from RFCmumble for data formatting and fast transfer update. With IPv6 multicast."I hope there is a better spec!QuoteWouldn't they normally look for a grad student or Senior in a related department, search of a project/thesis? Cheap labor! (were YOU that student?)That puts the hiring issues into perspective, too - do they want someone from their research area who "understands the problem", or do they want a coder wiz-kid who drip STM32H code out their fingers at a furious rate?The best consultants would probably do a good job of explaining what's wrong with your current code and spec, and come up with at least two paths - one reusing as much of the existing code as possible, and the other starting from near scratch.Would there be additional projects or a full-time job possibility if things go well? Some consultants are looking for stability, others for variety.Make sure the consultant is budgeted to teach their follow-on how it works, or to provide really good documentation.

author: ebastler
author_rank: Super Contributor
timestamp: August 15, 2024, 08:42:58 am
content: I don't know about the "best way" to find a consultant, but this certainly does not look like the "best time" in the project to do so...It seems to me that there is a high likelihood that the new guy will end up starting over -- certainly on the software side, maybe on the hardware too. Given that you have worked on this on your own, is there good technical documentation, so someone new to the project can grasp what was designed and why? Especially given the fact that there will be no personal hand-over between you and the new consultant.I would suggest that you let the university group find a new person to take over (or start over). That way it will be their responsibility to find a person who is capable and who they like to work with -- so they won't blame you for leaving them with an unfinished projectandsetting them up with the wrong guy...

author: Ice-Tea
author_rank: Super Contributor
timestamp: August 15, 2024, 08:51:23 am
content: Well, firstly I'd look for someone who calls himself a freelancer rather than a consultant.At least in my perception, a freelancer is there to help with the workload. A consultant is there to tell you how you should do things.And in my experience, best way to is to draw from your own pool of people you know...

author: AndyC_772
author_rank: Super Contributor
timestamp: August 15, 2024, 04:03:05 pm
content: Self employed engineer here, and this is the sort of project I'd normally be happy to work on - though I'm afraid I'm too busy right now to take on any new customers, sorry.Job title? I've called myself a consultant, freelancer, nerd for hire, man-with-a-scope, whatever. It makes zero difference.There are basically two kinds of people who do this kind of work:- people who can't get a job working for someone else, and- people who don't need a job working for someone else.If you're on a tight budget, then go for the former. You may or may not get a usable result, but at least they should be cheap. There are plenty of 'find a freelancer' sites where you should be able to find one, but IMHO they're a race to the bottom in terms of price and quality.If you care about the quality of the end result, you need the latter, plus a realistic budget and time scale. Good people are usually booked up some time ahead, and they do of course charge an hourly rate commensurate with their skill, experience and available resources.Given the project as you've described it, I'd expect a good consultant to rewrite the software, but use what already exists to guide parts of the implementation. For example, I already have a code template that I always use for this type of project (initialisation, hardware drivers, main loop, command parsing, common library functions etc). If I were doing the job, it would be best for both of us if my software adhered to this template, but the application specific parts (eg. the actual signal processing) might be copied & pasted from the existing code.How to find someone capable? Ask around, word of mouth is how I get most of my referrals.

author: nctnico
author_rank: Super Contributor
timestamp: August 15, 2024, 07:44:30 pm
content: The most important thing from the list is missing: is there somebody at the research group who can manage the project and determine whether the freelancer has delivered what was promised?Also, with a good set of requirements you can get fixed price quotes for the projects which is good as budgets are typically not infinite. Letting people develop something with a blank cheque is never a good idea.

author: PDP-1
author_rank: Contributor
timestamp: August 16, 2024, 02:53:02 pm
content: Hi all, thanks for the comments. It sounds like I should spend a good percentage of the rest of my time here documenting the project as best I can.For the hardware this is relatively straightforward - the prototypes circuits are built along with schematics, I just need to write a few pages of explainer text explaining how it was all meant to work together. There is another engineer here who worked on the analog side of the project and we’ve already been working together to get him up to speed on details of the digital design.For the firmware, it sounds like we should expect any new consultant/freelancer/etc. to likely start over from scratch. I’ll leave my existing code for them of course in case it is useful, but it seems like the more valuable thing would be to work on writing up a clear and detailed specification of how I was planning on implementing everything with the understanding that the next person to work on it may decide to use a different architecture entirely.Quote from: mikeselectricstuff on August 14, 2024, 07:02:53 pmThanks, that's good to know about. I couldn't immediately find an equivalent list for STM32 but as you mentioned it's likely that many of those companies can work on multiple types of processor.Quote from: Ice-Tea on August 15, 2024, 08:51:23 amQuote from: AndyC_772 on August 15, 2024, 04:03:05 pmThis is the difficult part for us as we really don't know anyone else who does this stuff. I'm mostly self-taught as far as microcontrollers go and that's been good enough in the past. Now that I'm leaving we are realizing that it's a skill set for which we have no second person to take over.Quote from: nctnico on August 15, 2024, 07:44:30 pmMy current supervisor would likely be the person in charge of managing a freelancer relationship, she manages the rest of the project and people working on it. We have worked with plenty of contractors/freelancers on other subjects, but have never been down the path of hiring for firmware development.Quote from: westfw on August 15, 2024, 08:08:12 amThere is a more detailed spec! I just didn't think the particulars would be of much interest to the thread.I could see this becoming a full-time job if the person had skills in addition to 'just' programming, like circuit design and PCB layout. They would be taking over for me after I leave if that were the case. We might find it harder to justify hiring someone with programming-only skills.

author: pardo-bsso
author_rank: Frequent Contributor
timestamp: August 16, 2024, 03:33:56 pm
content: I second what Mike and IceTea said.Some of us are also in Toptal but not always with that exact title.I assume the job board here isn't enough ?Also, what is your expected budget range and timescale?

author: bson
author_rank: Unknown
timestamp: August 17, 2024, 09:03:24 pm
content: Start by spelling out what specifically they need some competence with:EthernetSTM32STM32 MAC and whatever PHY is usedGeneral concepts like ADC, DAC, and DMA/buffering vs latencyST HAL probablyLwIP or comparableworking knowledge of gitC (C++?) real-time software developmentInline assembly?OpenOCD? Or something else?Clear code factoring and some sense of zen between over-normalization and copy-pastaAn ability to understand a problem and outlining a solution before writing a single line of code, other than small experiments to understand the problem - as neededWill they be supervised? If not, they need some project experience and ability to report and show demos/meet deliverable milestones. Assuming this matters in an academical environment. But it sounds like there's already a design and it just needs implementing, so a pretty basic project.etcSome general personality traits: self-starter, persistent, committed - these are not as easily verified but an experienced interviewer can surface themIt should all be specific enough that they're easy to ascertain in an interview setting, to verify they have working experience. For example show them a piece of code with a 'volatile' bug that causes problems when enabling higher levels of optimization and have them point out why this fails without mentioning 'volatile' at all. It doesn't have to terribly obfuscated or complicated; it should be obvious, and either they understand the problem and they can point it out in five seconds, or they don't. Follow up with 'why?' and let them explain even if they give an incorrect answer; this is often revealing. Then circle back and try again.The purpose of a resume should be to suggest they could conceivably meet your requrements.Ask for code examples on github (or gitlab) under their names, or projects they've contributed to and check their commits. Including their comments, whether they squash, etc.If they point you to some code they wrote, ask about it and let them talk. This can be especially useful as an icebreaker since most people enter interviews at least somewhat nervous and guarded.Oh, and few people would directly meet every single requirements, so figuring out for example LwIP or comparable might be perfectly fine, especially if they have experience with similar work, or networking stacks in general. But if they need to learn every single skill... it's going to be a month before they start making real progress, and if they punt on studying up they may paint themselves into a corner and require significant backtracking later

author: Doctorandus_P
author_rank: Super Contributor
timestamp: August 18, 2024, 02:36:25 am
content: There are lots of websites for freelance computer related jobs. They generally do every PC related job that can be done remotely, from proof reading and data entry to PCB and software design. Apparently a lot of such jobs are out sourced to low wage countries so you would have to compete with that. But even if you don't get much money for it, it may be worth it just to gain some varied experience.

author: ustaad
author_rank: Contributor
timestamp: September 01, 2024, 01:15:01 pm
content: Hi,I have around 9 years experience with design and development of Embedded systems including AVR, STM32, ESP32 and Embedded Linux/Python.If you are interested we can have a chat in DM

author: Georgy.Moshkin
author_rank: Frequent Contributor
timestamp: September 01, 2024, 04:16:21 pm
content: So, how the story ended? I think that the best way if research group will post a message here. With some numbers, like approximate budget, ADC and DAC sampling rates, computation load or what is it, frequency shifting, phase control, audio neural network. Maybe someone already has a solution. For example, I have a great H7B0/H750 code for radar signal processing with ADC at 40MHz over DCMI, waveform debug output using W5500, DAC for vco control, maybe it can be repurposed. Or maybe not..

author: tellurium
author_rank: Frequent Contributor
timestamp: September 01, 2024, 04:38:31 pm
content: Likewise - i work forhttps://mongoose.ws, and we have a ready-to-go solution for Ethernet / HTTP / TLS / MQTT. Here:https://mongoose.ws/wizard/#/output?board=h743&ide=GCC+make&rtos=baremetal&file=README.mdYou can choose make+GCC or Cube, baremetal or FreeRTOS, or Zephyr. Generated project works off the bat.If you use GCC+make, you can even build and flash from a browser directly to your development board.Mongoose is free for free / open projects, and paid for commercial projects.So if your research group keeps software open source, Mongoose would be free for them.

author: peter-h
author_rank: Super Contributor
timestamp: September 03, 2024, 08:45:28 pm
content: Having been doing a roughly similar thing, I'd say the #1 thing is to find somebody who has done it before.Otherwise you will spent tens of thousands and eventually probably scrap it, because this stuff is really complex, with a lot of potential for bugs which take ages to surface.If I was freelancing I might be interestedIf you PM me what this thing is supposed to do (functionally, not necessarily the actual end product) I might be able to give you some tips, or mention somebody here who I might think can do it.EDIT: the "upload to internet" thing could be as an HTTPS client, uploading to something like Loggly. That is what most "fashionable people" will be doing with data logging. So, LWIP, MbedTLS, yeah, putting a lot of bread on the table at home for somebody, unless they have done the exact thing before. My box does this so I know how much there is. I also wonder why choose such a high end CPU; 480MHz. You don't need that. The 16 bit ADC will be probably 13 bits plus 3 bits of noisehence an external ADC.

author: pardo-bsso
author_rank: Frequent Contributor
timestamp: September 04, 2024, 03:44:36 pm
content: I can also vow for the folks at ITTIA (https://ittia.com).They have a very nice solution with ready-to use embedded libs for sending and analyzing data from devices to the cloud

author: peter-h
author_rank: Super Contributor
timestamp: September 04, 2024, 03:55:27 pm
content: This project is basically "straightforward embedded stuff" and no need for even an RTOS.But the data uplink is 10x more work, literally. Firmware updates are more work because you need some security on them, obviously. Various previous threads here on OTA updates and necessary measures. I've done all this too... and you will need an RTOS because LWIP etc without an RTOS is going to be huge pain."Cloud" means many thingsIt could be MQTT too - fashionable right now.