As an Embedded Engineer, You Should Either Learn or Earn at Every Job. Both are best. Here's How:
There are two things you need to fill up as an embedded engineer: One is your brain, and two is your wallet. Because full brain means ability to work on stuff you like, and full wallet means stability to keep working on stuff you like. And I'll show you how to do both. Read more.
I'll repeat again:
- Filling up your brain 👉 Increased ability to do any interesting tasks
- Filling up your wallet 👉 Increased stability of your financial (so you can do #1 with no worries)
Because let's admit it, without proper embedded knowledge and skills, you will be stuck with boring and tedious tasks.
And dry wallet means you will be constantly worrying about everything: you worry for being laid off (which I had experienced once), you worry about taking career risks (e.g. deciding to work at a far more interesting startup company), you worry about your family (which prevents you from doing great work you supposed to do anyway).
In this article I'll show you my personal system to learn more and earn more.
How to Learn More
Let's use me as an example.
I used to work on tedious tasks: assembling hundreds of PCBs, fixing soldering mistakes, testing hardware one by one, writing basic firmware for prototyping, adding features only when asked, fixing bugs only if there's a complaint, etc.
And because I didn't have full brain back then, my work is just like that: boring, uninspiring. I was just trying to get through the day so I could do it again tomorrow.
But when I filled up my brain, things were changing. My company asked me to let go of the tedious tasks, and gave me a harder firmware development project, which was way interesting.
I got to work on advanced firmware development (e.g. building USB-based device), I wrote USB driver, testing new firmware for our next-gen product.
For the record, I didn't learn new topics at work. I learned new topics in my dorm room. I spent every evening tinkering with new firmware concepts, building a prototype, and sharing my progress with my boss.
At first my boss was just like "yeah yeah, good job. Now f* off, I have something else to do". But I kept learning and sharing, until suddenly my boss was like "Oh hey Ross, your work is good. Interested to make the prototype become a product here? You've laid some groundwork, so I believe you can just continue, right?"
So yeah, I've proved that filling up my brain did indeed increase my ability, thus allowing me to work on better, more interesting tasks.
Here's the system I use to learn more. There are two concepts to note here: Principles (which is more philosophical) and Steps (which is more practical).
To learn more as an embedded engineer, I followed these 4 principles:
- Learn at home, not at work.
- Follow your curiosity, not hype.
- Heavy on hands-on, not just consuming.
- Share your learning, not in silos.
Remember, if you unlock the secret of learning how to learn more, you'll get to work on more interesting problems, which leads to a more satisfied career, which leads to a more satisfied life.
Now, let's dive into each point.
1. Learn at home, not at work
This is a bit controversial. Some renowned engineers like Embedded Artistry's founder Johnston said he doesn't have side projects, he learns at work, and he works at work.
But for me, if you're really obsessed with something, can you actually not think about that thing even outside work? I personally can't. That's why I keep learning at home. Because I'm obsessed.
Yes, we learn a bit at work, but it's limited to our tasks. You can't just learn deeper and deeper at work, while neglecting the firmware you should be writing.
Company is like an F1 team, and work is the race.
Does Lewis Hamilton, the legendary F1 driver, learn how to corner well at practice sessions or in a race?
The same goes for our race as embedded engineers. My principle: work is to perform, home is to practice (you can practice at work when there are zero tasks, though. Like I did).
At home, your learning is unrestricted.
You want to practice writing CMake for your side projects? You can.
You want to test how to overclock Teensy 4.1 to 1GHz? You can.
You want to setup MQTT Broker using Docker? You can.
I don't know about you, but I can't do those things at work. I have many other things to do. And waiting for my boss to give permission to setup MQTT broker is like waiting for a snail to cross a mountain.
You're not required to buy hardware.
While doing experiment at home, you don't necessarily have to use hardware though. If you're an embedded software engineer, your ultimate goal is to write robust and maintainable software. So practice at home things like:
- Modularity design
- Interface system
- Writing testable modules
Which my guide is covering much deeper here.
If you want to focus on hardware, that's also doable, and you're still not required to buy expensive hardware. You might ask, "what if I want to use expensive equipment like oscilloscope, signal generator, signal analyzer, etc?"
My answer: You can borrow, you can rent, or you can buy the cheaper variants. I would rather buy a cheap oscilloscope (which I did) to support my experiments, because I will use it my entire career. So, I would save my money and buy a $300 oscilloscope.
That being said, I work as an embedded freelancer (click here if you're interested in becoming one), so borrowing company's equipment to finish my freelance projects sounds weird to me.
Now, the question is: do you really need expensive equipment? Because if you just work with low-frequency signals, you can get a hobbyist variant of everything you need (which I did).
2. Follow your curiosity, not hype
I never understand hype.
You do something because everybody else is doing it? Doesn't each person have different interests and are facing different problem in their life?
You shouldn't be tinkering with LLM (Large Language Model) because everybody else is doing it.
You shouldn't be buying Jetson Nano because everybody has experimented with image recognition.
You should be doing all of those because you see them as a piece of puzzle to complete your embedded engineering journey.
I honestly haven't even tried to deploy AI model on embedded device, even once. Because why would I? I will do it whenever I see it fit my puzzle.
I've never setup Kubernetes cluster, because why would I? Yes it's interesting, but it doesn't fit my bill. I keep my options open but not necessarily jump into hype train.
Do you know what I've learned? Here:
- Writing interpreter for Brainfuck (an esoteric programming language)
- How to build firmware as plug-and-play as possible
- Writing JVM for running J2ME games (my childhood memory. Still ongoing)
- Practicing to share my embedded systems brain on LinkedIn
All the above are nothing like hype. But they really fit into my career puzzle. Because when you focus on your own puzzle, you will solve more relevant problems in your life and be satisfied with what you do.
3. Heavy on hands-on, not just consuming
This is the biggest mistake many beginner embedded students/engineers make.
They consumed everything:
- Embedded systems books
- Embedded courses
- Embedded webinars
- Embedded podcasts
- Reading application notes
- Downloading brochures
- Buying Udemy courses
But they haven't even touched the grass hardware. It's procrastination in disguise.
Embedded engineering industry is heavy with hands-on. You don't really know XYZ until you've built XYZ. Reading, watching, listening, and buying stuff won't automatically install the new insights directly in your brain.
For me, learning material is just like a treasure map. It's important to set the destination. But without actually moving to the goal, you will never get your treasure.
So, build your way into mastery.
If you're not sure about what project to build, and how, here are two things to help you:
4. Share Your Learning, not in Silos
The worst attitude when you're learning is to keep it for yourself.
Not only it will prevent others from learning what you've found, but learning in silos means the material you've learned won't stick that long.
By sharing your learning, you'll learn more, faster.
Because there's something called feedback-loop which will make you learn even more.
For example, you share about your trick to get make compiling embedded Linux kernel faster. Then interested people will engage and give some follow-up comments:
"Hey, that trick is old! For newer version, use this blablablabla"
"Hey, does it work with Buildroot? Or just Yocto?"
"Hey, does enabling Yocto's {insert a random option here} will make it even faster?"
You noticed those comments, and because you don't know the answer. You explore more, and you find more, and you share more.
Repeat.
I just mentioned ONE good thing only. In reality, there are dozens of other good things waiting if you share your brain online. Here's what happened to me:
- Recruiters are interested in your work. They will invite you to interview
- Project owners are interested in your skill. They want to offer you their projects
- Experts are intrigued by your consistency. They want to offer their help
- Beginners are hooked by your content. They're begging you to launch a digital product.
That's how you can earn more. Which brings me to the next point: how to earn more as an embedded engineer.
How to Earn More
Next thing is filling up your wallet.
More money equals more options.
And more options means more freedom.
Freedom means you get to do something because you love to do it, not because you have to do it.
Again, I'll share you my 4 principles on how to make more money as an embedded engineer:
- Focus on learning not earning
- Expensive problems require expensive skills
- Diversify your income
- Increase your luck surface area
These are the principles I breath every single day, and each one of them are directly extracted from lessons I learned in my career (sometimes in the hard way).
Let's peel each point like we peel a shallot layer by layer.
1. Focus on Learning not Earning
The first principle to make more money is by not making more money.
Yeah I know, it's counterintuitive sometimes.
I used to focus on earning, because why wouldn't I? I will make more money, I will get higher status, I will be respected, etc. I can learn as I make more money later. At least I thought I will get that.
And guess what, focusing on earning, and taking shortcut to get there, is actually the longer road to more money.
Here's my thinking process back then:
- I want more money
- Therefore I need a job with higher salary
- I apply for high-salary job and cram interview questions
- Bullshitting my way so I can get offer
- If I'm accepted, that's good. More money, more freedom.
- If I'm rejected, I'll just apply to another high-salary job
- Repeat
I thought that was a solid plan. My ego says I deserve high-salary job, but my skills say I don't deserve it.
In fact, I always stuck at Step 3 infinitely. I've wasted so much energy to prep interview and apply jobs.
Naturally I got sick of it, and decided to work on my hobby projects instead.
2. Expensive Problems Require Expensive Skills
If you want to make more money, you should acquire new, more expensive skills.
I thought it's super obvious, it should be engrained into your brain already. But here I am, saying it again:
If you want to make more money as an embedded engineer, you need to acquire new embedded skills.
For example:
Cheap skill: Blinking an LED with a random Arduino board. Every embedded student can do it.
Expensive skill: Finding out why the firmware of a USB-based ethernet adapter makes the throughput slower than a sleeping snail. You have to master USB, ethernet, firmware development, and debugging.
Here's another example.
Cheap skill: writing firmware for a GPS tracker. A junior engineer can do it in a month.
Expensive skill: writing firmware for a GPS tracker that withstands strong EMI, running on battery 24/7 for the next 6 months without recharge. Not many engineers I personally know can do it.
Okay, one last example.
Cheap skill: Developing a prototype in 1 month.
Expensive skill: Developing the same prototype in 2 days, while maintaing quality.
From those 3 examples above, you can acquire expensive skills by:
- Understanding the project better (make it more robust, more reliable, etc.)
- Knowing the concepts way deeper (e.g. knowing USB protocol, knowing ethernet protocol, knowing low-level debugging)
- or doing the same task way faster (2 days vs 1 month)
And here's a secret: you can't acquire those skills by just reading books, or watching 100-hour courses, or bookmarking my posts on LinkedIn.
For me, books, courses, or LinkedIn posts are like a treasure map. They are important to give you direction, but without hands-on, you'll never arrive at the destination.
3. Diversify Your Income
The worst thing that can happen to an embedded engineer is they have insane amount of valuable knowledge, and yet they just work a regular 9-5 job, and just go home. When they are laid off (which can happen anytime) they're scrambling to get another job.
Here I want to present another reality. Instead of that way, what if your income is so strong even a layoff will only make you think "do I really need a new job now? Why not backpacking to europe first for 2 months?"
To make that happen, you can just rely on a single stream of income. You need multiple. This is where diversifying your income can help you make a better decision.
To diversify your income, you need to unlock some other, unorthodox way of making money. As an embedded engineer, here's what you can do:
- Handling freelance projects in embedded systems industry
- Consulting for an IoT company to help their product direction (and mentoring their engineers)
- Coaching content creator in embedded systems space
- Selling digital products in embedded systems niche
Which all need only your brain.
4. Increase Your Luck Surface Area
Well to earn more money as an embedded engineer, you need to be lucky. That's it.
Fortunately, we can manufacture luck by understanding the concept of surface area of luck.
You see, luck happens when competence meets opportunity. That's the formula:
Luck = competence + opportunity.
If an opportunity comes, but you don't have the required competence/skills. You're out of luck, sorry.
But if you have the skills but never get opportunity, you're also out of luck, sorry.
We can learn and increase our competence by following a structured learning path or learning material. This is where video courses, webinar, books, technical seminars can help you. You consume, you practice, you upskill yourself.
But opportunity is different than competence, because the nature of opportunity is probabilistics, you can't guarantee you'll get 10 opportunities per day every day, but you can make more opportunities come to you month by month.
And just like any probabilistic problems, you can increase total number of something happen (event number) by simply increasing the trials/attempts.
For example, if the chance of something X happen is 1 in 1000. You can expect X happen 100 if you attempt 100,000 times. Not to be scientifically accurate but the point is, the more you try, the more X can happen.
From there, you should understand that to attract more opportunities, you need more attempts. In this case, sharing your knowledge, just the Principle #4 in learning more (share your learning, not in silos).
So, you will be luckier by simply upskilling + increasing your opportunity surface area.
Practical Steps to Learn and Earn More
Okay, I just gave you the 4+4 principles of learning more and earning more as an embedded engineer. Now, to make thing more applicable, I'll give you 4-Step framework so you can follow and act today:
- Step 1: Focus on one topic first, and obsess it like a berserk.
- Step 2: Practice on that topic A LOT, build tons of project, tons of variations, tons of use cases, again like a berserk.
- Step 3: Share your finding, learning, mistakes, lessons, discovery, invention. Do it online, host the project on GitHub, talk about it on LinkedIn. Do it as often as possible.
- Step 4: Back to Step 1 with another topic.
Whenever you're ready, there are 2 ways I can help you:
1. Becoming Embedded Freelancer Book. Learn how to earn more money (even more than your main job) working on freelance projects using a proven path explained from an embedded engineer's point-of-view.
2. Firmware Development Workflow Guide. Upgrade your workflow to achieve efficient development, consistent code quality, robust firmware, and skyrocketed your productivity as an embedded engineer.