Some "Meta" questions for how to learn Arduinos

Hi Everyone!

I am a brand new user to Arduinos in general and I am hoping that some knowledgeable people, like yourselves, could help answer some questions before I dive into learning all there is to know.
Before you direct me to the Leaning and Getting Started section on this website, I am aware of this section and I will definitely be using that primarily and I hope that the responses to this post will help aid what is already posted.

Before we get started, just to give you an idea of my experience level, I am a college student with basic/intermediate knowledge of computer programming and electronics (I have taken physics and C++ classes) so I have an understanding of some topics.

Ok here goes, Feel free to answer as terse or as detailed as you’d like, anything and everything helps!

-What are the biggest mistakes you see in teaching of PLCs?

-What are the hardest parts of PLC coding/setup?

-What are reasons that others have failed or have had trouble learning concepts/code/setup?

-What are the 20% of code fundamentals that will allow for me to understand 80% of code?

-Does anyone have any recommendations for a sequence on how to begin learning and progress into more difficult and complex things?

-What are some things that are not critically important?

-At the expert level, what mistakes are most common?

-What are some key principles for better code/setup/etc. ?

First lesson : Arduino no PLC is

What are the biggest mistakes you see in teaching of PLCs
people not doing their requirements and design first

What are reasons that others have failed or have had trouble learning concepts/code/setup?
accuracy (lack of)

What are the 20% of code fundamentals that will allow for me to understand 80% of code?
assignment, iteration, condition, function, datatypes,

At the expert level, what mistakes are most common?
stupid ones

What are some things that are not critically important?
you must read Dilbert more

What are some key principles for better code/setup/etc. ?
Dont use magic numbers, write for maintainability and readability, use good variable names, do not use comments that are in conflict with the code or do not explain the why of the code. Review other persons code a lot (for every line written you should review at least one)
Do not miss a meal, your sleep and take time to relax.

-Does anyone have any recommendations for a sequence on how to begin learning and progress into more difficult and complex things?
yes, sounds good

best way of learning to code is start doing it and make mistakes (zillions.

At the expert level, what mistakes are most common?
stupid ones!

Oh yes!

Does anyone have any recommendations

Read other peoples' code and figure out how it is working. First, just enough to make minor changes, but don't stop there. If you can take an Arduino AVR program and move it to an mBed ARM, you're probably employable!

Beautiful user interfaces, efficient low level pin twiddling, testing, customer support, and teaching, are all SEPARATE SKILLS. "Computer Science", "Computer Engineering", "Data Processing", and "System administration" are different PROFESSIONS.

Lots of code is written by people who understand the problem they are trying to solve better than they understand programming. (Or Documentation!) It's not entirely obvious whether this is worse than code written by skilled programmers who don't understand the problem.

Undocumented C is a write only program. Especially if you try to put a whole function into one line of code.

Weedpharma

robtillaart:
First lesson : Arduino no PLC is

What are the biggest mistakes you see in teaching of PLCs
people not doing their requirements and design first

robtillaart:
First lesson : Arduino no PLC is

What are reasons that others have failed or have had trouble learning concepts/code/setup?
accuracy (lack of)

Can you expand on these? What do you mean by "requirements" and "accuracy"?

Requirements are the list of things the system must do e.g.

  • if I press button A led B will go on for PI seconds.
  • if the temperature is above 42Celsius the fan will start to blow on a speed depending on the temperature.

Requirement 1 is good (nothing unclear)
Requirement 2 is not clear as it does not describe the relation of the fanspeed and temperature.

Accuracy: What I mean is that programming is very exact, every detail counts. There is a big difference between e.g i< j and i <= j Writing error free code (esp on semantic level) is very very hard.

Awesome, thanks!