Mohamed, your point is well taken. Programmers should not have to think about infrastructure, reliability, or security.
Unfortunately, they do have to, given the state of today's technology.
For a small departmental application, the consequence is minimal. For an application on which a large business depends, that is accessible to the Internet, the risk is high, and assurance matters. Much more effort is required to reach that assurance.
It is also the case that even if one has the most secure infrastructure, any application module can subvert that infrastructure. That is why programmers must think about security. There have been some very widely publicized security failures recently in which a small change made by a single application developer compromised the security of the entire application. The same is true with regard to reliability. That is why one must build applications in such a way that logic errors cannot do
alot of damage. These are architectural considerations that are precisely what my book covers.
- Cliff