Engineering Product vs Process

How software engineering encompasses not just the solution to the problem but how it is implemented as well.

Scroll down...




Assembly Line Engineering

You've now seen how we would apply the engineering thought process to solving three different real-world (ish) problems. If it still seems too general, we'll be getting more and more specific as we progress through the next few lessons. One thing you may have noticed is that we're often dealing with two different (though related) concepts -- the Product and the Process.

Engineering the Product

The Product is what we're actually building. What's our solution to the problem at hand? Half of engineering is making sure you're building the right product and have the ability to actually build it. For software engineers, that means coming up with a software solution and being able to code it up properly.

People typically think of advances in engineering almost entirely from this Product perspective -- what new programming languages have been created? What new frameworks are making things more efficient? What new gadgets can we use to solve our problems??? Let's face it... technology is sexy.

sexy robot

Engineering the Process

The hidden side of engineering is the Process, which means how we're actually building our product. Products don't just result from a single all-night coding session -- we need to make sure we're following a process that lets us create that Product in the most efficient and effective way possible. That means coming up with a process that is robust enough to get shit done in an imperfect world but also highly responsive to change (which is inevitable).

This is where the real world comes in. You're going to build products as a member (or leader) of a team which is responsible for delivering your solution on time and on budget. These are not inconsequential things! If you'll recall from our history lesson, the inability to do that was termed the "software crisis" in the 1960's. Enormous projects have crashed and burned due to an inability to properly manage the process of creating and shipping software. Thus implementing a successful Process for producing software is a core requirement of software engineering.

Luckily for you, engineers have thought a lot about the process of managing software projects. In fact, significant progress in software engineering has also come in the form of building better processes so we can be more responsive to the real world and get more stuff done.

Wrapping Up

Even if the distinction between these two things isn't crystal clear right now, you'll see it over the coming two sections. In the next section, we'll talk about how Agile Development provides us with a great process for building our products. In the final section, you'll get back into the product side of things by applying fundamental principles of engineering to solving tactical and systems-level problems.

Sign up to track your progress for free

There are ( ) additional resources for this lesson. Check them out!

There are no additional resources for this lesson just yet!

Sorry, comments aren't active just yet!

Next Lesson: What is Agile Development?