Oh I love mindstorms. We used it years ago as part of my CS program at university. Our assignment was to figure out how to route trains around a network in haskell (given a track layout and some goals). Some students and I worked to connect the haskell API to real trains through lego RCX bricks. It was super fun, and it (for the first time) gave me the sense that I can make anything.
But mindstorms, PoweredUp, Boost and the whole lego ecosystem at the moment is a mess. The point of lego bricks is that they're inherently compatible - any brick can connect to any other brick, going back for decades. But strangely, lego's software doesn't follow this at all. Despite all running through bluetooth, Mindstorms and PoweredUp work through entirely different (and as far as I can tell, incompatible) software and protocols. Mindstorms programs (which can run on either a mindstorms brick or a PC) should be able to, through bluetooth, connect to and drive any number of mindstorms/poweredup/boost controllers and use them to connect to additional sensors and motors. Then you could use the mindstorms software to program poweredup robots, use mindstorms bricks as the brain for large robots with poweredup hubs, use train controllers as inputs into mindstorms programs, and so on. But you can't. Its all strangely siloed by "theme". Despite using the same plug, you can't even use all of the poweredup / train / mindstorms sensors and motors interchangeably with all of lego's microcontrollers.
On the software side lego maintains two separate & mutually incompatible scratch style programming languages, driven through different apps, to talk to physical hardware that is fundamentally, technically deeply compatible. From any other company I would understand. But this is LEGO. The whole point of lego is that it all connects together. If you have a voice at lego, please help the software teams understand and uphold the same mandate for fundamental interconnectedness in code.
But mindstorms, PoweredUp, Boost and the whole lego ecosystem at the moment is a mess. The point of lego bricks is that they're inherently compatible - any brick can connect to any other brick, going back for decades. But strangely, lego's software doesn't follow this at all. Despite all running through bluetooth, Mindstorms and PoweredUp work through entirely different (and as far as I can tell, incompatible) software and protocols. Mindstorms programs (which can run on either a mindstorms brick or a PC) should be able to, through bluetooth, connect to and drive any number of mindstorms/poweredup/boost controllers and use them to connect to additional sensors and motors. Then you could use the mindstorms software to program poweredup robots, use mindstorms bricks as the brain for large robots with poweredup hubs, use train controllers as inputs into mindstorms programs, and so on. But you can't. Its all strangely siloed by "theme". Despite using the same plug, you can't even use all of the poweredup / train / mindstorms sensors and motors interchangeably with all of lego's microcontrollers.
On the software side lego maintains two separate & mutually incompatible scratch style programming languages, driven through different apps, to talk to physical hardware that is fundamentally, technically deeply compatible. From any other company I would understand. But this is LEGO. The whole point of lego is that it all connects together. If you have a voice at lego, please help the software teams understand and uphold the same mandate for fundamental interconnectedness in code.