My Journey Update
A reflection on my career growth since my first software engineering job
My Early Career
My first professional software engineering position was at an industrial automation startup in 2021. It was fast paced, challenging, and very impactful in my development as an engineer.
Valuable Outcomes
It was my first time being able to apply the mathematics I learned in school (such as linear algebra) in a real world setting. This forced me to touch up on basic physics, unit conversion, data and error analysis, and other math topics to understand the mathematics being used.
The projects were exciting to work on. We were implementing lidar point cloud processing algorithms on data being acquired from various sensors. This data was then used to automate industrial machinery and presented to the user through a graphical user interface.
My knowledge of modern C++, build systems, and software architecture grew substantially here. Prior to this job, I had very basic knowledge of the features of the language, very little CMake experience, and had not built large enough programs to wrestle with complex software architectures yet.
The Layoff
Early 2024 I was laid off due to an unstable economy and a company reorganization. Looking back, I took the layoff really well. I saw it as an opportunity to push and prove to myself that I could land another job.
This felt like a capability test. Was I capable of getting another software engineering job or was I just lucky this past time?
Of course I had doubts and imagined the worst scenarios but I didn’t let up. I added new daily tasks in order to improve my chances of landing another job.
- I solved Leetcode problems daily,
- Self studied data structures and algorithms topics,
- Spam applied on LinkedIn and Indeed, and interacted with various recruiters.
And within a month, a few final interviews, I landed another job.
The Start Of My Embedded Journey
This time, I landed a more embedded-focused role, working on updating Board Support Packages and writing test applications for hardware drivers.
This was a slight shift for me as I had to refer back to C style syntax instead of the usual C++ that I was so used to. Both languages are very similar to each other so I was able to pick it up quickly.
Valuable Outcomes
- The knowledge of CMake files and the build system from my previous role really helped me shine here.
- I was able to speed up build processes and separate components in an organized modular fashion.
- Understanding new concepts in the embedded world. Knowing the differences between higher application level and lower embedded level software.
- Learned about toolchain files when cross compiling code for specific target architectures.
- Gained greater confidence in my ability to adapt and survive in a new work environment. Figuring out how to learn new things quickly and present my work in an easy to understand fashion.
The Vibes
But…
- The day to day was way too slow for my liking. Coming from a fast-paced startup this was a huge difference. There were tons of hardware delays and a very slow project development cycle.
- The company was unstable as layoffs were happening a few months into my position and tension in the building rose amongst employees. Creating a hostile work environment.
- I didn’t see growth at the rate at which I would’ve been happy with here. I felt as if I wasn’t being utilized as an engineer to develop into an even better engineer.
So… I decided to jump ship after about 10 months at the end of 2024.
This proved to be one of the best decisions of my career.
A Fresh Start
At the start of 2025 I received the opportunity to work for a new company, much closer to home with a promising leader. I took on a new embedded software role working on measurement devices and process automation.
This is now my third job since graduating. I believe I have passed my self imposed capability test! Haha
Valuable Outcomes So Far
- Great work environment and group of people to work with, along with exciting projects to work on.
- Solid opportunities for career growth and mentors.
- Not updating or sustaining legacy code but building new innovative applications which I love.
- I feel a lot more confident in my programming abilities, algorithmic thinking, and ability to develop solutions and solve problems on my own. These days I’d consider myself Junior headed to Senior level real soon.
- I serve as a mentor to a newer developer which has contributed greatly to my development as a leader.
- Developing a better understanding of embedded systems and the tools used for aiding in embbeded development. (Even though I’ve merely scratched the surface)
- Developing drivers for i2c and uart communication.
- Debuggers, Logic Analyzers, Power Supplies, GPIOs, JFlash, schematics, etc.
- Writing space-optimal and time-restrictive code due to limited constraints.
- Using newer features of the standard has been a huge plus for me. The codebase suports features up to C++20!
- Growing my software architecture skills
- Developing a test framework for hardware-in-the-loop (HIL) testing.
- Working on Continuous Integration pipelines
Looking Ahead
My career feels like its only starting off but I get excited thinking about how far I’ve come in the past 4 years.
In the future, I’m thinking about learning Rust so I can equip myself with a larger set of tools needed in the embedded realm. Rust seems to be gaining a lot of traction lately and the demand for Rust developers is starting to grow more than ever.
I’m excited to see what my future looks like here and am grateful for the growth thats accumulated through each one of my experiences.
Cheers!