Engineering, almost by definition, has a penchant for providing extremely concrete tools without specifying any required circumstances for how these tools might be applied. An exact solution provided for inexact problems. Just as this is true to the other engineering disciplines, so is it for computer engineering.
Computer engineering can be loosely thought of as the bastardized combination of electrical engineering and computer science. While a more shallow depth of knowledge is required in both circuits and programming in the general sense, the exception is the higher degree of understanding of low level programming.
Low level programming has a wide swath of uses that allow for less flashy, however far more efficient applications. To illustrate this, a computer science major might program a calculator using Java (a high level programming language), whereas a computer engineer could (with a higher degree of difficulty and at greater cost) create the same calculator using an FPGA (field-programmable gate array) for noticeably faster calculations. In some situations however, the added efficiency and reliability are unnecessary. (For example, the calculator on an iPhone satisfies the speed and usability needed for the majority of daily mathematical calculations.).
Within the computer engineering world there exist a myriad of internal divisional tasks. Firmware allows electrical devices to function in raw capacities, drivers that allow these devices to communicate in an interpretable manner and communication regulation for networks. Although the principles of design and language will likely be consistent through these sub-fields, the tasks of these three engineering roles (Firmware Engineer, Computer Engineer, and Systems Engineer) will vary dramatically. Yet, as a nod to the diverse applicability of engineering, the end application of a Firmware Engineer and Systems Engineer could have dramatically more in common than two Firmware Engineers. (Should the two firmware engineers be working in vastly different fields, while the other two engineers work in a similar field.). This adaptability reflects that the true work of engineering is defined by problems identified, and without this contingency the skills of engineering are devoid of purpose.
Fortunately the purpose of these skills is gifted by everyday problems — yielding those, ‘oh of course!’ moments after seeing a better means of doing something that you had never before thought to improve until seeing the answer. Smartphones, automated passport control and self-check out in stores are only a few of a large number of recent developments that have been culpable for these too-late-epiphanies. Informing these problem solving principles with problems from the outside world allow engineers to instead be the parties responsible for making these moments, rather than being subject to them. Applying these principles to the outside world can help us to reduce traffic using new methods of street separators, improve the safety of bikers by integrating modern technology with safety apparel, or by integrating the use of drones for delivery services.