The first group is people. One of the most important parts of an engineering environment is to have the right people. If a project starts with the wrong people, then nothing else really matters.
Given a small project with a small number of really good people, little else is required. Good people will make things happen despite unforeseen difficulties. Unfortunately, having the right people does not scale for larger projects. As projects grow in people size, communication and coordination between people becomes the dominant controlling item.