A software engineer designs and creates engineering specifications for software programs based on a broad knowledge of information systems. They typically work with QA and hardware engineers to develop testing plans. Software engineers might also determine what development methodology to use after documenting software requirements. Systems engineers do some of the same work as software engineers, also developing software components; however, systems engineering involves specifying, maintaining, and supporting technical infrastructure. Systems engineers also perform high-level root cause analysis for service interruptions and help ensure that the services and system get back online after the problem is resolved.