Nov 3, 2011
How often are you asked what is your job? Most non-IT people will not
be able to understand packaging, dependencies, rpms and whatnot. Hell,
I even had trouble explaining what I do to my ex-schoolmates from
university working in a traditional corporate environments. And they
are software developers.
Was that just my problem? I don't think so. I had an epiphany while on
a vacation few months back. I am almost sure the idea was not mine and
it was just my subconsciousness that stole it from someone else. So
what is my revelation? As you might have guessed from the title:
I am a software chef. I create recipes and prepare them.
I work in a restaurant, that we call Linux distribution. There are
many restaurants, each having their own recipes, rules and so
on. Some restaurants form "chains" where they share most of their
recipes. In these cases there is usually one restaurant that
creates most recipes (Debian is such a restaurant in its Linux ecosystem).
Each restaurant usually has hundreds of chefs, some of them
specialize in few recipes (build scripts), some are more
flexible. In my case I specialize in a type of recipes dealing
with coffee (i.e. Java).
Every recipe starts with customer (user) ordering some meal they have
heard about. I look up ingredients (upstream projects) the food is made of and start
recreating recipe for our restaurant. Quite often the food is made
of more recipes (dependencies) and I have to create those
first. Sometimes these recipes are already being prepared by other
chefs, so I just use their work for my final meal. However our
ingredients can be slightly bit different from the original. For
example we have cow milk, but no goat milk that was in original
recipe. So I have to find a way to fix the recipe using spices
(patches).
Creating recipes is only part of my job though. I also work with
our suppliers of ingredients (upstream developers). Sometimes the
ingredients are bad, or I have found a way to improve the
ingredient so I contact the suppliers and we work together.
Third part of my job is improving cooking process (simplifying
packaging). So sometimes I move some furniture around so that
other chefs don't have so much between the fridge and other places.
Or I create a new mixer (tools) that speeds up mixing of ingredients.
Final part of my job is to work in a VIP part of the restaurant
(RHEL). Only some customers can go there, most meals are usually
very similar to normal restaurant, but each meal is tasted
(tested) before we give it to customers and if they don't like it
they can complain and we bring them improved recipe.
I find this metaphor kind of works for most things to a
surprising degree. For the record:
- Package maintainers - chefs
- QE/QA - tasters
- Security - bouncers
- Release engineering - waiters (sorry guys)
Awesome analogy! I never thought of it like that but its certainly well suited. +1
nice one :) You just forgot one critical member of the restaurant/project the fire extinguisher
Hey, can I use that as a job description? Cos we need more people who love to work as linux chefs! :-)
Ladislav: And who would that be in a typical Software world? (I don't burn stuff so I don't need no stinking extinguishers)
Radek: Feel free. Though I'd be careful not to attract the wrong people :-)