I understand many people here are either from an engineering background or (like me) from a computer science background. In a lot of discussions people claim that engineering is a better background to have when it comes to problem solving.
I was wondering what are some good resources for computer scientists (or anyone) to learn the principles of engineering?
I have a computer eng undergrad degree from a solid canadian school. I cant say we were explicitly taught "engineering principles", I wish we were. We learned mostly domain-specific principles, but there are some deeper cross-domain principles that are worth learning (like the link above includes).
I would add to the above, a very central concept is the "engineering trade-off" -- there is no free lunch, etc.
Another smaller one I like is "visibility", seeing clearly into your system and its state is critical to debugging/design and clear thinking.
There are also things you kind of learn by osmosis from doing projects and in the workforce. Like, dont overestimate how hard it is to do some custom work to create something new (a good FPGA programmer or C programmer can do amazing things in a week). And also, dont underestimate how hard it is to maintain said custom work (most university projects dont give a sense of maintenance cost, the overriding cost in the real world).