Design Fundamentals
Design is a process to learn about possibilities, experiment with combinations, make choices, and analyze the results.
Design is similar for most any discipline. A building architect gains experience over time with available materials, how a structure withstands environmental conditions such as gravity, and how a space can serve for various purposes. A software designer learns how to decompose a problem into small cohesive pieces that are easy to understand, build, validate, evolve and reuse.
Object Oriented Design is a process explicitly devised for a software designer to create a good software design. Agile is a development approach for how a problem can be partially designed, implemented, evolve and be validated incrementally over time. Open source is an approach to make software available for public examination to be used as a learning experience.
There are many good books and courses on software design. A new software engineer needs to take one or more courses and read books on Object Oriented Design and Agile.
A system designer needs a broad background and the ability to choose and work at an appropriate level of abstraction. A mind must be taught how to think. An in depth course of study in an area such as Mathematics teaches about models, abstractions and how to reason. Some familiarity is needed with Physics, Chemistry, Mathematics, Electronics, Computer Hardware, and Computer Software.
The Parento Principal known as the 80/20 rule applies to much of the world. A system designer can create a good design 80% of the time while only knowing 20% of the above suggested background. However, a good understanding of electronics is needed to fully and properly evaluate the software mechanisms used to build a system.
Recommended Reading
Platt, Charles. "Make: Electroincs, Second Edition". ISBN 987-1-680-45026-2.
Monk, Simon. "Programming Arduino, Next Steps". ISBN 987-0-07-183025-8.
Hawking, Stephen. "GOD Created the Integers". ISBN 987-9-7624-3004-8.
Osborne, Adam. "An Introduction to Microcomputers". ISBN 0-931988-34-9.
Wikipedia article on "Microprocessor".