Embedded systems as entry into full stack
Why I recommend starting with embedded systems instead of full-stack
I cringe whenever I here someone say they are learning full-stack development. Because the way full-stack is taught is just plain wrong. Everyone seems to start with a DBMS. All the user data is stored centrally and accessed through a web server. You have a lot of overhead. Many of the popular open-source systems even use this architecture. But most systems do not need a separate database or three-tier system architecture.
On top of the poor architecture design, full-stack classes start with woefully inadequate security concepts. Junior full-stack develops have so much relearning to do once they get into the real-world.
As a startup CTO, I found the standard architecture to be extremely expensive. Our first system design used a central cloud datastore. We wanted good offline usage, so we select a system that had offline data sync, but it didn’t really work. For the second iteration, I switched to a progressive micro-services structure. However, several of our support systems used the 3-tier architecture resulting in a large overhead for even a small number of users.
I would like to see more full-stack courses teaching micro-services architecture first. This is why one reason I prefer to start from the embedded system point of view.
Embedded Systems Market
One of the reasons people want to start with full-stack is that they are told they will have a larger market to work in. However, the embedded systems market is much larger. Embedded systems are so ubiquitous that they are often overlooked, but just looking around the room and out the window I quickly see well over 10 embedded systems. Even when I go out into the Amazon jungle, I find embedded system used far from the nearest mobile phone network.
With home, urban, agricultural, and environmental automation going this market going to grow far faster than the full-stack development market.
Embedded Systems as Full-stack
My experience with early home computing, automation, and global systems architecture led me to focus on a micro-services and edge computing architecture that is far more robust and scalable. This architecture grows very well from the embedded system architecture.
In my embedded system platform, we have end-devices that need to work offline and collect and do some data processing locally. We can connect over Bluetooth or Wi-fi from a web or mobile application. All of this can work offline. The devices as well as the mobile application can connect back to central cloud-based services to submit data for further analysis and monitoring. All of these technologies are used in full-stack development. However, the architecture one learns is far more robust.
Embedded Systems Startup Costs
Working in communities with very few resources I look for ways people can start with a minimum of equipment. When I was living on my parents farm in rural Missouri a couple of years ago, I was developing RootLo. Even with my years of building development environments and internet architecture, I still often had to run into town to get an internet connection.
I find it much easier to take my embedded systems development environment offline. Even when I am working on the back-end services and web-app, those are still much easier to host on my PC. I am even starting to look at doing some of the Arduino and Raspberry Pi Pico development from my smartphone. You can start with a low-cost system.
Once you have downloaded the development environment and libraries. You can build a fully functioning device that is completely useable without ever going online again. This is perfect for learning basic computer programming concepts. Once a person can build an embedded system, the same concepts can be used for building a micro-service or edge service.
A kid in a remote village can easily build a functioning automated watering system, rain guard or many other types of sensors or automated tools with only a few hundred dollars worth of equipment and parts. Also parts can often be “harvested” from old equipment.
Summary
The embedded systems architecture is better
The embedded systems market is far bigger
You can do so much more with embedded systems
The development startup cost is less for embedded systems