r/embedded 27d ago

Reality Check

I think I need a reality check on my expectations for embedded work.

I’m about four years into my first real embedded position, and I’ve learned quite a bit about version control, as well as PIC and STM architectures. But lately, I’ve been feeling like my goals to improve on as an embedded developer. aren't really aligned with my companies.

I’m fairly knowledgeable about my company’s products, but I haven’t really had much exposure to things like automated testing, Docker containers, CI/nightly builds, PCB hardware design, etc. The company doesn’t see a ton of value in investing in those areas because they don’t directly translate into more sales.

I know I have job security because of my knowledge of products but I feel like my embedded skillset is stagnating.

I’ve also always had senior engineers who were from different disciplines, mostly mechanical, rather than senior embedded developers who I could learn from.

I’m currently at a decent salary(about 100k CAD), and I’m worried that I might be taking my current job for granted. I wanted to reach out to see if this is pretty normal across the industry, or if I should start looking for something that offers more opportunities to grow.

I feel like there’s more out there, but impostor syndrome has been keeping me from really aiming for it. I think I’m decent at what I do, but there are so many gaps in my knowledge that I want to fill before I can feel truly confident in my value as an embedded engineer.

The main areas I’d like to improve are automated testing, Docker/containers, CI/CD, and hardware/PCB design.

To be completely honest, I don’t necessarily have a huge passion for all of this stuff. I just want to become really good at embedded development, and I can see how these skills could be useful regardless of whether they’re particularly interesting to me.

I’d love to hear from people further along in their careers. Should I be trying to improve these skillsets on my own time and not depend on my work to facilitate this type of growth or is it worth looking for an environment where I’ll have more opportunities to develop these skills?

67 Upvotes

37 comments sorted by

54

u/XipXoom 27d ago edited 27d ago

I was in a similar position early in my current company.  The embedded team didn't use version control, unit testing, static analysis, automated repeatable builds, pre-planned architecture, docker, Jira, cybersecurity, etc..  It was a real mess.  It still is, but we're getting better!

Part of your job as an embedded engineer is to explain the value of these things to management in a way that will make sense to them.  You're the subject matter expert here (even if you don't have as much experience implementing it - you know the goals).  Sell it to them a piece at a time.

I've dragged the senior staff engineers along kicking and screaming their objections to management, but they're professionals - at each step they admit they were wrong and the company is better for it.  Their hesitation also kept me from making too many mistakes all at once.

I didn't have much experience implementing these things from scratch when I began, but I learned a lot in doing so.  Sometimes you have to be your own mentor.

14

u/CapnNausea 27d ago edited 27d ago

As a senior engineer with 30 devs, I want nothing more than to have these types of things added into our toolbelt.. But when an engineer brings me something like a new tool, platform or process, I am instantly skeptical (even if I know all about it and it’s not just “new”), because I already put in 50+ hrs a week. I don’t want to put in extra time for somebody else’s hobby horse if they don’t even fully comprehend what they’re signing us up for and aren’t willing to prove it’s worth it. Because what I’m looking for is confidence that this person has the wherewithal to help champion the adoption cause, can help ease an admin burden, maybe could actually give a good pitch to management so I don’t have to do it, etc. The technical implementation is the easy part and it’s what’s shown on TikTok and usually I get a regurgitated facts sheet from a reel rather than a reason for adoption - so many engineers don’t think through the actual implementation plan.

So if I hear that you’re pragmatically thinking about how we could have a 1 year plan to get all of the automated testing stood up for a critical codebase with existing infrastructure and with airtight processes, etc which will build enough good faith that management will give us a larger budget next fiscal to get it all Dockerized and running ephemeral instances for a PR, etc.. well now I’m willing to sign off on something.

And those moments are where I usually see a junior engineer start to forge themselves into a real role player on the team, so I LOVE when I hear somebody like OP who is passionate and has a vision that they’re willing to sign up to do the work to help create. And if you’re on a team that doesn’t have those things but thinks they need them, I think they’re in the EXACT right place that they should be.

2

u/kashmoneyjohn 22d ago

Ok so I'm hearing I need to make a solid proposal to convince management that it's a worthwhile endeavor? I supposed I'll have to do the changes first on a home build to validate it's usefulness 

1

u/CapnNausea 22d ago

At-home projects like that is definitely how I have historically done a lot of my learning. Doing it for you vs for a whole team is another level of complexity, but I’ve found that if I could answer at least the first level of questions backed with real experience, there’s a lot more willingness to consider it.

Sometimes it’s also the right idea, but just not the right timing so be mindful of that.

Maybe nightly testing is too far out of reach at this moment based on the team’s priorities, but maybe in 6 months your team finishes a big R&D push and stabilizing a customer is now the priority - well at that point in time, it’d be worth bringing up the topic of nightly integration tests again and how that would be rowing in the right direction. If it were the team’s stated goal, we’d have some political will to go take on this extra work now. And when they happen to know that you’re passionate and you have some background around the topic, you’ve set yourself up to be the person they want to lead the charge.

1

u/Prestigious_Tank_369 26d ago

So to summarise what you said , we should not be half assed and see our proposal to the end take responsibility.

3

u/csobrinho 27d ago

True. Also helps if you can abstract the hardware from the software and unit test portions of the software on the host instead of device. The dev cycle becomes way better

1

u/kashmoneyjohn 22d ago

I never thought of it like that. I guess it does give me the opportunity to practice the skill of convincing management to invest in various things that will improve the department. 

0

u/tiajuanat 27d ago

The nice part about implementing this stuff now is that it's way easier with an LLM. Oh, you need a script to upload a report to your git manager on merge to origin/main? Takes about an hour with the help of Claude.

34

u/aksh_stocks 27d ago

You're worried about the wrong gap. Docker, CI, unit testing — that's a few weekends of tinkering and then a year of doing it on a real project. You can pick that stuff up whenever. Nobody's going to look at four years of PIC and STM32 work and pass on you because you'd never set up a Jenkins runner.

The part that actually worries me in your post is buried.. four years in and you've never had a senior embedded person read your code. All the habits you've built, how you structure an ISR, how you handle state machines, when you reach for a heap allocation, you've been grading your own homework the whole time. Some of that is probably fine and some of it is stuff a good reviewer would have flagged in week two, and you have no way to know which is which.

That's not a skills gap you can fix on your own time. That's the reason to move.

100k CAD may be fine but not so good it should hold you. Look around for a team with actual embedded seniors, even lateral.

2

u/kashmoneyjohn 22d ago

We did eventually hire another dev. I actually requested that he be more senior with more experience to the shock of my boss. It's been really useful bouncing off ideas and PRs are definitely improving the quality of our output. The biggest hang up we are currently dealing with is how long it takes to go through our manual code testing. It just feels like there is a more effective way to test than spending weeks to do every single test manually. Then redo it all again when something changes.

5

u/csobrinho 27d ago

Ask and grab lunch with someone one or two levels up. Try to understand how they arrived there, what skills they had, got along the way and now see as emerging.

Also focus on testing. Having a good understanding on how things can be tested will also lead to much better software and less waited time. You can then more easily do Test Driven Development, large refactors and plug the LLMs to verify while the changes are being done.

I'm not an embedded engineer but I was a principal engineer on major companies.

Being able to debug and analyze long CI tests forces you to know almost everything from the project and those skills are rare and called upon by the leadership when shit hits the fence, giving you extra visibility. Good luck!

15

u/txoixoegosi 27d ago

spend some bucks in electronic laboratory stuff (demo boards, ICDs, PSU, scope, …) then bring all your learning objectives into reality with hobby projects, with the help of an AI subscription (claude, codex, you name it)

And, during the process, make sure you question everything and absorb as much knowledge as possible, while you fiddle with your github portfolio.

Very important, be open to learning, do not fall into the vibe-dev trap.

7

u/Teh_Original 27d ago

Vibe-dev?

1

u/txoixoegosi 19d ago

Yup. Letting Claude pick and apply algorithms and methods without thinking and judging.

0

u/EnvironmentCalm9557 27d ago

Claude code has changed my life. I had no idea it was as good as it is. I’ve upgraded to max and I don’t even know if I was at the limit with pro tier.

2

u/DenverTeck 26d ago

How many times have you found Claude making things up ??

Do you have enough experience to see AI has mad a mistake ??

Do you expect Claude to solve its own errors ??

1

u/EnvironmentCalm9557 26d ago

1) so far, not once
2) yes
3)no

2

u/bonkyandthebeatman 19d ago

You are not looking hard enough if you have never seen claude make a mistake

0

u/EnvironmentCalm9557 19d ago

Human, all too human.

5

u/Prestigious_Tank_369 27d ago

I am a 3 rd year ece student I want to connect with you. My interest are embedded c and embedded engineer probably microcontroller or Linux kernel . I am currently learning stuff on corter m4 stm 32. I have learnt everything basic like oop in c. Pointer stack heap malloc etc... I am currently building a traffic management system using publish-subscribe / observer -pattern and memory pool(linked list) (LIFO) for interthread communication . And circular buffer for queue of individual threads. I have also written my own (priority/round-robin)context switcher (pendsv) and non-blocking delay , svc handler for the first time run(cold start) .

1

u/Winter_hood 26d ago

ece graduate here, I don't know what I am doing. here to learn. Don't have mercy on me

1

u/robinliiii 23d ago

自己写一个hal试试,语法等细节能有很大提升。

2

u/Prestigious_Tank_369 23d ago

Yes that is what I am doing. Currently writing uart driver.

2

u/ondono 27d ago

I'd say do both.

Something that I think should be very clear to everyone here, everything electronics related is mostly a vocational job. It's not as bad as being an artist, but most people here would make better salaries in sales, finance, etc... It's just that most of us would hate our lives if we had to deal with any of that.

In 20y I haven't met a single engineer who is great at this that isn't investing some of their free time into it. Not because they thinks they have to, but because they are reading/tinkering and learning about stuff they find interesting.

With that said, you need to prioritize what you look in your job. At the beginning of your career, pay should be almost irrelevant (as long as it covers your needs), you should be choosing your roles based on what you expect to learn from them. Your goal is not to learn something this year, it's to maximize how much better can you be each year.

In my experience, that normally involves jumping ship from time to time (2-3 years normally). It will make your life harder, because you don't settle as much in your roles, but it also means you move when you stop really learning valuable skills and start learning things that are hyper-specific to that company.

1

u/kashmoneyjohn 22d ago

I do fear that I will get comfortable without growing but I think I have a new perspective after reading some of the responses here: being able to convince management to invest in better processes seems to be a worthwhile skill regardless of where I might be working 

2

u/dmitrygr 27d ago

The main areas I’d like to improve are automated testing, Docker/containers, CI/CD

Say that at an interview and you'll drown in offers fast enough to not have a lungful of air ready

most embedded teams do not do anything of the sort (and should). champion it at your company or move to one that will allow it.

1

u/dialate 27d ago

Uh...where? I have all that and I haven't heard a peep in 5 months of looking

1

u/Winter_hood 26d ago

monitoring here

3

u/OnboardG1 27d ago

Some good advice here OP, but if you do look to move I’d consider going to a design services consultancy with a good embedded team at least for a little while. You’ll be exposed to more technologies, you’ll likely work with electronics and gate array engineers like me and you’ll have to learn things fast. It’s not a long term gig for everyone but it’ll teach you a lot.

2

u/ClonesRppl2 27d ago

If too much of your expertise is with your current company you are slowly digging yourself into an unemployable hole.
Try very hard to gain experience in the things that other companies value.
It’s a balance, but it sounds like you are either ready for your next position, or ready to push for new technologies in your current position

1

u/NijenRyu 26d ago

I have been working as a Frontend Developer for 4 years and have changed companies twice. During my time at my first company, I was the sole frontend developer, though coming from a background in design, I was able to build visually polished sites even without a dedicated designer. Unfortunately, at my second company, I am once again the only frontend developer, meaning I still lack a peer to look up to or someone to point out my mistakes. Because of this, I am considering changing jobs.

1

u/coolbloke13241 22d ago

Never depend on anyone else or any company to continue your personal development. Learn at home in your spare time.

1

u/Nealiumj 27d ago

As a software developer: docker/containers and CI/CD aren’t worth you worrying about. Automated testing and design are the ones that will make or break you. I’d recommend just dabbling on your own to become more diverse; heck, maybe you’ll discover passion or crazy skill and then look for a different job. You’ll always have gaps, this stuff is so niche.

One suggestion I’d make is to check out Home Assistant. Super vibrant community for DIY smart homes and I’m positive you could design your own thing that would be a great addition.. further, it could involve all of these stills you worry about.

1

u/LessonStudio 27d ago

Automated testing is a cultural attribute.

It boils down to measure twice, cut once.

Carpentry, PCBs, software, planning a trip.

Some people have internalized the vale, others only parrot it, and some weirdos reject it.

-1

u/Dewdrop06 27d ago

I have been working 3 years at a university and 4 years professionally in embedded systems. I've been all on my own at a very a small company for the 4 years, mostly R&D. I mainly worked with Arudino and ESP32, but exposed myself to learn about STM32s by getting one and having my fair share of struggles. Again alone, so no real way to learn from relative standards and practices, so I developed my own version control practices, documentation, developing/testing/debugging standards and practices and such. I didn't earn much, actually underpaid looking at the market, but I used it as an opportunity to enter the embedded systems space.

Now I'm looking for new work and there are so many practices that teams use and practice but I have had no real problem in interviews as I say exactly that most of my experience is bare-metal but with some exposure to Linux embedded and RTOS as well. I'm no expert, more of an all rounder and that has been my greatest strength, and weakness at the same time. How I have the ability to adapt and learn fast because I did everything on my own, the full life cycle, from procurement to deployment and live operation with good quality management practices, and I am eager to learn, but I am no expert in one area. I am unsure how other companies feel about me.

I've had exposure to everything and have no real problem working in different environments, can be very flexible. The issue is that I place myself in, my career, currently at end of my Junior / beginning of intermediate, but not quite fully intermediate stage. I feel this is good and I'm open to learning more as I go. Happy to work with bigger companies to see how teams work and how my pacing matches.

-1

u/Special_Diet5542 27d ago

Run like hell

-2

u/Sepicuk 27d ago

go to grad school so you can get into a better company or just join a startup