Visualisation of the difference between a too naive imagination and the reality

if somebody starts to learn to program for arduino it happens quite often
that there is a pretty big difference between what the imagination of how much work it is and how much work it really is.

I had this idea to create a description that uses easy to understand pictures to explain it.
So if somebody has just started from zero to write programs her / his knowledge might be like this


After a short time some very basic things work. But this is not yet the final thing.
The final thing shall have more funcionality than the very simple lego-car shown above.

And simply from not knowing it because somebody has no experience yet her / his imagination how much work it will be to realise this wanted functionality is similar to this

A lego-car like this cool shaped and the wheels are able to rotate. It takes about 10 to 20 minutes to build it.

This newcomer might think "just show me in which spare-part-box will I find this cool shaped bricks and just quickly show me where to plug them in.

In reality the wanted functionity looks like this

Oh ! Yes I see. Ok even an experienced user needs some hours to build such a car

It might be that experienced users have build cars that look like this
image

Surely a car with steerable frontwheels and suspension but pretty different parts.
To modify the red car to look like the black car is doable but requires

  • taking different parts (different hardware)
  • still a lot of work to modify it

The user that has build the red car can give advice how to build the parts:
the frontwheel section is build like this

But as a newcomer you should build your final thing with steps inbetween that are easier tasks like these


of course this will take additional time. But after learning these steps inbetween
you will become independent of the advice of experienced users ´

  • next plug this brick
  • next plug this brick
  • next plug this brick...
    ....
    ....
    it might turn out that on the way to build the final functionality it is nescessary to change from this kind of suspension

    to something like this

    still a suspension but different parts (= different code) but still the same basic functionality suspension

and on the way to learn this more advanced way it might be useful to do an exercise like this

All newcomers that show own effort in learning can be sure that they will get helping support. Very detailed, good tailored support that really helps.

My observation how most users react is
Egoistic users that are calling for "ready to use code" will receive either no answer at all or very short very generalised hints to tutorials where they can learn themself.
Which of course is the opposite what they called for.

best regards Stefan

4 Likes

Of course such pictures have their limits.
But I think for giving a rough estimation it is useful.
Again:You - the newcomer - might have thought you will finish the project pretty quick.
mostly not that fast. But it will be a fun journey to reach the target.

and a third one just to keep them together

and maybe a fourth one

Your visual description is also of an accomplished programmer beginning to write a new program for a new project they have no knowledge of. It is how we learn! I have advised many programmers when they ask for help, to just toss the current program and start over. I have done it and I suspect others have also. The closer your program gets to the guts of the computer or microcontroller, the more often this will need to be done.
I also had an experience where a project manager bailed out when he discovered he could not conceive of solutions to the project design, let alone program design. I was left with the project and was able to start over and get it done.
So, please expand on your visualization to include the rest of our world!

1 Like

I like your visual analogy, and how the different instances correspond to "complete rewrite", and the components correspond to "functions" or an API.

One can spend an awful lot of time trying to swap bricks in a incremental approach to changing the design towards an endpoint.

And a cool thing about software is that you can often copy one of several highly developed endpoints to accomplish much of what you want, without repeating the entire development process. Block-wise, if a design is well built, you could disconnect the suspension assembly from different designs and adapt it into your build.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.