Electrical and Electronic engineering is the place to be if you want to understand what and electronic circuit is, how it functions, how to power it, how to create it, how to make it function (i.e. programming its own behavior). A constant war is going on between engineers in the computer realm to determine if a different exists between a programmer and a developper. Here, by defining who the programmer is, we will lay the first foundation of the answer. Programming the material is knonw as low level programming, not because the programming is less complex, but because of the architecture of any computing system. This low level is the foundation of the system. A programmer, computer engineer, electronic engineer or Mechatronic engineer, is the one that talks to the circuitry parts of a computer and gives a set of order to follow, so it can perform well at executing taks on which the developper will stand to make his/her software run well. Sometimes, the programmer can create his/her own software so that the computer can start running on its own. So in the the hardware village of the computer engineering country, building more powerful circuitry, building the circuits mind (how the circuits functions), power them efficiently and appropriately, is the non-exhaustive lists of what programmers do. They must be good at mathematics, electrical and electronic engineering, programming in Assembler, C, verilog, etc... to name the few.