What is Software Engineering? An explanation making Pizza

02:20

It is a common question that many students of Computer Science could ask. Although, to be honest, anyone with some sort of curiosity about technology or software systems could also ask this question. In this post, I am going to try to define this concept using an alternative approach: by analogy.

I’m from Peru and of course, I love Peruvian food. In my opinion Peruvian cuisine is one of the best in the world, although I may have some kind of bias about it. Now I’m living in the UK in a beautiful city: Birmingham. I started my PhD studies in January and some days ago I tried to cook a Peruvian dish; but when I was looking for the ingredients in the Bull Ring indoor market I discovered that not all of them were available. So I decided to prepare something a little more international: a Pizza!

Actually, I never was a good cook, I was always better at tasting than at cooking. But living alone and in a different country is allowing me to experiment or at least try to discover new hidden skills.

Definitely when I cook I prefer to be guided by my instinct, without any measuring and I really enjoy sprinkling a little bit of salt, pepper or cumin on my dishes; and when I feel it is not enough I simply add more.

Well, let’s start with the Pizza. I knew I had almost all of the ingredients, only I didn’t have the yeast (yes! I learn to say ‘levadura’ in English) and I bought it. I applied my ‘famous’ approach: by instinct and quickly checking a video in youtube, I also found a recipe on the web and followed the general guidelines: I started mixing the yeast, salt, olive oil, water, and flour.

Then I started to prepare the complements, where the tomatoes and the cheese were the star ingredients. Finally I put the complements on the pizza dough and after about 15 minutes in the oven I got the following final result. 

For the first time, it was not so bad: the taste was good although I need to improve the appearance. I was motivated with the first result and prepared another pizza following the steps I remembered, but this time the taste was not so good and I burnt it a little. This experience allowed me to learn that with my approach sometimes I can get good results, but other times, not so much. So what can I do?

Now I’m applying a different approach: now I am using metrics.  For example, using a teaspoon, a small scale and some well-known steps to cook a dish are helping me to prepare better dishes and more importantly, in a sustainable way.  It is not perfect but at least now the Pizza that I prepare one day, can be as good as the one I prepare any other day.

But, how is Software Engineering related to this?  Software Engineering is related to my second approach for cooking, it is a set of sound principles, methods, metrics and even structures (the structure of a software is the software architecture) that allow us to develop software with quality; that is, when a software system is:
  • Economically feasible (I'm a student and I wanted to eat Pizza, but I don't have a lot of money to spend on it, so I decided to prepare it!)
  • Within a predefined time and budget scopes (I was a little 'hungry', thus I had my own deadline: no more than 45 minutes to prepare my first Pizza!)
  • and Working efficiently. In other words,  reaching all the expectations (requirements) for which it was made (Hopefully, I was 'my own client' and my main concern was the taste rather than the appearance, but when I invite friends, I'm sure will change my expectations)
Using software engineering is the only way that we can guarantee that all our software developments will have a standard quality, of course, a better quality, at least better than when I tried to prepare my Pizza.

Additional information:
Editors:  Luis Garcia & Emily Waibel
Spanish version: ¿Qué es Ingeniería de Software? Una explicación haciendo Pizza

You Might Also Like

1 comments

Popular Posts

Like us on Facebook

Flickr Images