Pitfalls of Embedded Systems
High Costs
Learning embedded systems can be quite expensive, which can be daunting for many. I started with DSP, and I can truly understand that embedded systems is a field where you invest a lot of money to learn.
During my learning journey, many of my peers shifted to the CS industry, focusing on pure software development, such as web development, mobile applications, databases, etc. They could manage with just a connected computer, which is why I also considered pursuing pure software development. At that time, my teacher wanted us to buy development boards, but I couldn’t afford it.
In the CS industry, some seasoned professionals only need to buy a server to get started.
However, in embedded systems, you need to buy development boards, modules, and integrate hardware and software. As you progress, you might even consider designing your own boards and purchasing chips, leading you deeper into this financial pit. When you look back at the path you’ve taken, you realize you’ve built a fortress around yourself. Switching careers becomes difficult after spending so much money; if you want to continue, you have to keep spending.
My first development board was a C51 board, which I bought many years ago for 168 yuan. Back then, as a freshman, my monthly living expenses were only 1000 yuan, so I had to save up to buy it. I used that board until my sophomore year, but I found it quite boring. Later, I met my teacher and entered the DSP field. At that time, I saw that a decent F2812 board cost around six to seven hundred yuan, and I also needed to buy a debugger, which was extremely expensive, totaling over a thousand.
Eventually, I decided to take advantage of my teacher’s presence and used the school’s DSP experimental box, which reportedly cost 4000 yuan. When my teacher wasn’t around, I would read books. The pressure was high, but the motivation to learn was strong. Gradually, I started taking on projects, earning some money, reinvesting it, and collecting second-hand boards. Now I have a large collection, including STM32, MSP430, DSP C5000, C6000, and even Arduino kits for kids. I bought an oscilloscope, various tools, soldering irons, and multimeters. Later, I started working with circuit boards, and printing PCBs became expensive, as did buying chips. The main reason I invested so much is that I have a genuine interest; while others might gamble their money away, I prefer to accumulate equipment and explore various projects, which I find quite enjoyable.
You can’t just read books; you must code and debug. Programming is 20% coding and 80% debugging, and for that, you need the hardware. If you’re not interested, every expense feels painful, but if you are, you can manage to save while pursuing your passion. Perhaps that’s the charm of interest. But regardless of interest, money must be spent.
A Wealth of Necessary Theory
I once wanted to follow the trend and learn Java, but after three months, I gave up. I even planned my learning path, starting with Java, then moving on to the three major frameworks like Spring, which I now forget. Later, I found it lacked challenge and was too easy to get into; it wasn’t that I was particularly skilled. Nowadays, in Java, web development, and Android, most people with a bit of interest and ambition can do quite well. The competition is not very differentiated.
Learning theory in embedded systems is much more extensive. It’s a large branch where you can learn as an expert or as an engineer.
The amount of software knowledge required is comparable to that of Java or C++ programming, and if you deal with lower-level systems, you need to learn even more deeply, making it more challenging. You must understand algorithms and data structures.
On the hardware side, there is even more to learn. Basic knowledge of the electronics industry, such as capacitors and resistors, is essential. You need to be proficient in analog and digital electronics, learn PCB design, layout, various sizes, power integrity, and signal integrity. While you don’t need to be an expert, you must grasp and understand various chips and their documentation. Experience accumulation is also crucial. This is just the tip of the iceberg; for DSP work, algorithm simulation, mathematical theories, and various specialized knowledge must be intertwined with programming, considering hardware devices and the circuit structure of some chips, including capacitor sizes. And it doesn’t stop there. For debugging, we need external devices; hardware and software are inseparable, and you must understand oscilloscopes and frequency spectra. It’s quite a lot to learn. Sometimes I feel that learning all this is useless, but one should strive to learn well. However, the reality is that when you need to apply what you’ve learned, you often regret not having learned more! The volume of learning is a test. In EE engineering, one must learn continuously throughout their life, constantly practicing, developing, and accumulating knowledge. It’s very challenging, and that’s a significant pitfall.
Starting Salaries and Differences from Pure Software
After learning so much, I always expect a return on my investment, but that’s not the case. The internet is currently a hot topic, and many industries are short on talent. In the job market, CS roles are easier to find and pay better. Many of my classmates have attended training and joined software companies; they have upgraded from low-end phones to iPhones, and their lives have improved. Occasionally, they complain about overtime on social media, but they still enjoy life.
Compared to CS, embedded systems require patience and perseverance. Related articles: Is there really no future in the embedded industry?
CS has always established the image of programmers in the information industry; when people think of programmers, they inevitably associate them with software development. This shows the vastness of the CS community. However, embedded systems also have their advantages, which I will discuss later.
Embedded Systems VS Pure Software
1. More Learning, More Strength
The embedded industry offers many flexible pathways. If embedded software is not thriving, I can switch to hardware; if hardware is not doing well, I can delve into algorithms. Before entering embedded systems, we build a solid foundation. If the wind is unfavorable, we can choose to build in another direction. Even if the entire embedded industry collapses, transitioning from embedded engineering to CS is relatively easy, giving us a significant advantage. In contrast, CS professionals often have only one path to follow, and those who are unwilling to write code forever may aim for product management or operations, but there are still risks involved.
2. Accumulating Experience
The embedded industry is a process of accumulating experience over time; no one can make a sudden leap. You can’t achieve perfection; you can only strive to improve. What I mean is that five years of experience is not as valuable as ten years, and ten years is not as valuable as twenty years. Young people have the advantage of flexible thinking and quick acceptance of new things, so they often enter the field through software. After a few years, they start accumulating hardware knowledge, pursuing excellence from the ground up. Hardware requires patience; experience is often more accurate than textbook knowledge, and some things can’t be written in books; you have to understand them through experience. Therefore, everyone must climb the ladder. Related articles: How can embedded engineers transition to avoid the competitive rat race?
However, CS professionals find themselves in a very awkward position. After a few years, they face competition from peers and newcomers, creating a bottleneck. This is what an old software engineer in our company said; although he was boasting while drinking, you could see he was genuinely worried: ten years of experience yields the same results as five years, meaning it’s easy to reach a ‘max level.’
3. Pure Software Becomes Simpler to Develop
Have you noticed that developing software has become increasingly simpler? Encapsulation, modularization, and process optimization are approaching perfection. We owe this to the many predecessors who entered the CS field. While this convenience has made things easier, it has also closed off many paths in CS. As development becomes easier, fewer people are needed. A large influx of people into the field may lead to a wave of layoffs when the tide turns, which has a lagging effect that isn’t immediately visible. You can be sure this trend will last for ten years, but can you guarantee it will last for twenty? The more accumulated knowledge, the more daunting the future may become.
4. Embedded Systems are Steady as a Rock
To be fair, in the world of top talent, many in the internet industry earn millions in salary, but there are very few top-tier professionals in embedded systems. Those who are in the trenches may earn more coding, but the mainstay of the industry remains stable in embedded systems. One should look at the long term and position themselves well. Many people may aspire to reach the top of the internet industry, but many more fail along the way. In embedded systems, you can work steadily and most can make a decent living.
Choosing embedded systems, I believe that when you reach 40, you will be grateful for your choice and your hard work. Hard work will always yield rewards. After all, the universe rewards diligence. One should not only focus on the present.
Anonymous Expert
https://www.zhihu.com/question/28111300/answer/137176051