A mechanical engineer knows about the properties
of the metals, plastics, etc. he uses. A
civil engineer knows about strengths of
steel I-beams, etc. An electrical engineer
knows about capacities of cables, switches,
etc. So, these engineers can do real
engineering and have transmissions run,
electric power networks provide the power,
and tall buildings and long bridges stand.
A software engineer knows about the capacity
of a server? With what I/O rate, TCP/IP data rate,
memory locality of reference, independent
threads, memory that can be effectively cached,
the memory usage, errors and their consequences?
E.g., one of the problems of doing optimization
of assigning programs to servers in a server farm is
knowing what (1) the servers can do, also considering
other programs the server is running, and (2) what
resources the software needs, and it's too
tough to know either and, then, in a significantly
large and complex server farm, fully to exploit
this data for full optimization.
Software engineers are working with at best rubber
specs on both the resources they have and
the resources they will be using.
So, can't really do engineering on the
work, e.g., really can guarantee next to
nothing. Or, would you want to bet
the life of your wife or daughter on
some software doing its work without errors
and on time? Neither would I!
A software engineer knows about the capacity of a server? With what I/O rate, TCP/IP data rate, memory locality of reference, independent threads, memory that can be effectively cached, the memory usage, errors and their consequences?
E.g., one of the problems of doing optimization of assigning programs to servers in a server farm is knowing what (1) the servers can do, also considering other programs the server is running, and (2) what resources the software needs, and it's too tough to know either and, then, in a significantly large and complex server farm, fully to exploit this data for full optimization.
Software engineers are working with at best rubber specs on both the resources they have and the resources they will be using. So, can't really do engineering on the work, e.g., really can guarantee next to nothing. Or, would you want to bet the life of your wife or daughter on some software doing its work without errors and on time? Neither would I!