LEGO Mindstorm Struggles
I love building LEGO Technic sets according to their in-box instructions, it's a great joy to see small mechanisms add up to impressive machinery. I've wanted to use those same parts to turn my ideas into reality, but I've struggled to do so. Some of my frustration were about the mechanical limits of LEGO pieces, but there was an electronic component as well: LEGO Mindstorms.
Before the era of cheap and plentiful Arduino IDE compatible microcontrollers from online marketplaces, hobby roboticists options were significantly more expensive. The only options I could realistically afford were Parallax BASIC Stamps. I remember filling out a paper order form and mailing it, along with a check worth a significant fraction of my checking account, to order my own. In this environment, the LEGO Mindstorm line held tremendous promise: a full soup-to-nuts package from software development environment to runtime hardware to mechanical construction via LEGO Technic bricks.
But the target market for LEGO Mindstorm is just a bit off from where I was. Intended to be easy for beginners, I chafed at the limitations imposed by multiple layers of abstraction. I didn't want to deal with drag-and-drop graphical UI when I was familiar with lower-level programming languages like C. And I especially didn't appreciate times when the drag-and-drop UI didn't let me express something I could see clearly in C in my head. (Years later, I would learn about ways to run C code directly on Mindstorm NXT bricks, but by then I had already moved on.)
On the hardware side, the LEGO Mindstorm line managed to be simultaneously too much and not enough. One specific example is the tremendously capable LEGO Mindstorm NXT Motor. Not merely a plastic shell around an electric motor, there were also reduction gear to make the rotation motion easily usable plus rotary encoder for closed-loop feedback operation. This meant each motor can act as either a position-based servo or a rotation-based gearmotor depending on software. It's fantastic but that complexity also meant it was expensive and rare. Each NXT base kit had only three of these capable motors, severely constraining the degrees of freedom our Mindstorm creations can make. Almost every nontrivial NXT project I've seen required buying multiple sets just to get enough motors.
The same story repeats for many aspects of NXT ecosystem: sensors, runtime hardware bricks, etc. A basic kit can get us started with a "Hello World" equivalent, a line-following robot or something. But building anything nontrivial requires using multiple sets working together. After constantly bumping walls with my first Mindstorm NXT set, I bought a second set when NXT 2.0 was released. Having two sets were helpful but not nearly as helpful as I thought it would be. This is quite a deep hole to throw money into. By the time Mindstorm EV3 was released, I decided I had better options elsewhere.