工程师需要具备的能力包括什么