I've heard it said that EJBs and maybe even regular JavaBeans were Sun's attempt to be a
Java form of ActiveX. However, they are useful in their own right, as they componentise logic. That's very important in software engineering, where the often-sought/seldom-realized goal is to have plug-in, well-documented, well-defined, pre-debugged technology.
EJBs can be a lot of overhead, especially when used unintelligently. However with a large complex system where processing may be distributed and transaction intergrity may be critical, they begin to prove their worth, since these high-overhead features are presupplied with EJBs - there's no need to invent and debug your own.
You can, and often should, avoid EJBs for small projects or special performance situations where nothing but a custom solution will do, but there is definitely a place in the toolbox for them.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.