{"id":11485,"date":"2009-01-07T00:58:03","date_gmt":"2009-01-06T22:58:03","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=11485"},"modified":"2009-01-07T00:58:03","modified_gmt":"2009-01-06T22:58:03","slug":"software-engineering-is-like-cooking","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/","title":{"rendered":"Software engineering is like cooking"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p>During the last few month I&#8217;ve been explaining software engineering to management types quite a bit.\u00a0 Most of the &#8220;bosses&#8221; that I talked to weren&#8217;t technical at all, so I was trying to stay away from famous concepts, examples, and terminology as much as I could.\u00a0 Of course, that required some sort of substitute for concepts, examples, and terminology.\u00a0 I&#8217;ve tried analogies from different unrelated areas, and was surprised as how good cooking was fitting the purpose.<\/p>\n<p>Before I go any further, I have to say that I am not a cook and that I don&#8217;t know much about cooking.\u00a0 But.\u00a0 I know just about the same as any other average human being.\u00a0 Which, sort of, moves me into the same category with my targets, or &#8220;bosses&#8221;, as I called them before.<\/p>\n<p>Here are a few examples that worked well.<\/p>\n<p><!--more--><\/p>\n<p><strong>On the need for maintenance<\/strong><\/p>\n<p>Once a project, or part of a project, or a feature, or a bug fix has been done in an &#8220;urgent&#8221; mode, switching back to &#8220;standard&#8221; mode gets tough and tricky.\u00a0 &#8220;Bosses&#8221; that tasted fast development often want the team to stay in that mode for as long as possible.\u00a0 Dead lines get shorter, pressure and stress build up, and nobody &#8220;up&#8221; wants to hear about that.\u00a0 All they want is more, more, and then some more.\u00a0 Saying something about re-factoring or maintenance period is dangerous in heretical kind of way.<\/p>\n<p>But here comes the analogy from the cooking world.\u00a0 No matter how much we cooked and how many guests we fed, there comes the time to wash the dishes.\u00a0\u00a0 It&#8217;s hard to argue with that.\u00a0 Even when using disposable dishes, there still comes the time to put them all in a large black garbage bag and take them away.\u00a0 Otherwise the kitchen slows down because of all the mess, smells start to evaporate, and that on its own attracts unwanted insects and animals.\u00a0 Nobody wants that.\u00a0 Not in their kitchen, not in their software.<\/p>\n<p><strong>On the need for time planning<\/strong><\/p>\n<p>More than once I had to explain that four times by one week is not quite the same as one month.\u00a0 And that&#8217;s a tough one to get through without analogies.\u00a0 When I ask a month for a project or a feature to be implemented properly, I hear back something along the lines of &#8220;we don&#8217;t have that much time, so do whatever you can in one week&#8221;.\u00a0 And I do.\u00a0 Once the week is gone, the result is not satisfying of course.\u00a0 So I hear &#8220;OK, get another week and finish this thing&#8221;.\u00a0 If arguing still doesn&#8217;t help, we work hard again, and end up with unsatisfactory result a week later.\u00a0 Then it repeats for another two times, after which I hear &#8220;you asked for a month and now you&#8217;ve worked for a month, but result is not as good as it should be&#8221;.\u00a0 To which I have to stand the point of four times a week is not the same as one month.<\/p>\n<p>The analogy I use is with time constraints put on cooking a dish.\u00a0 Ask a chief to cook you something in 5 minutes and you&#8217;ll get an omlette.\u00a0 Give him another 5 minutes to cook you something else and you&#8217;ll probably get a salad.\u00a0 Give him another 5 minutes and he&#8217;ll make you a sandwich.\u00a0 5 minutes more and he&#8217;ll hate you a bit, as well as that ugly burger.\u00a0 Now if you tell the chief from the start that he has 20 minutes &#8211; how different do you think the food will be?<\/p>\n<p>Of course, this is more of an excuse rather than an education analogy, but sometimes it works after the second or third attempt.\u00a0 Which saves quite a bit of time and effort, as well as helps to improve the final result.<\/p>\n<p>And as an extra thought &#8211; some things take time, no matter what you do.\u00a0 Cooking meat usually involves time.\u00a0 Growing a seed into a tree usually involves time.\u00a0 Travelling distances between points A and B usually involves time.\u00a0 Things can be done to reduce the time, but it is impossible to still perform these actions without using up some amount of time.\u00a0 For each of those actions, there is a minimum.<\/p>\n<p>Another example as a side note, and a very famous one.\u00a0 It goes something like this: it takes 9 month for a pregnant woman to deliver a baby.\u00a0 If you take 9 women and get them all pregnant, you won&#8217;t get a baby in 1 month.\u00a0 You&#8217;ll get 9 babies.\u00a0 But they all will take 9 month to deliver.\u00a0 (yes, yes, I am aware of certain circumstances that could vary the 9 month, but let&#8217;s just try to keep it simple, OK?).<\/p>\n<p><strong>On the need for good people<\/strong><\/p>\n<p>&#8220;Bosses&#8221; often look at things in terms of costs.\u00a0 And good people often cost more than bad people (I mean professionally good and bad, not personally).\u00a0 Costs are very measurable.\u00a0 However, the difference between a good software engineer and a bad software engineer is not always that measurable for the &#8220;bosses&#8221;.\u00a0 They just don&#8217;t see the difference often.\u00a0 Especially, if there is a team of people.\u00a0 Especially if this team is abstracted from the &#8220;bosses&#8221; by a team leader or an IT manager.\u00a0 That would often end up with a conversation of why do we need this guy and how can we replace this expensive guy with that cheap guy.<\/p>\n<p>Again, cooking t the rescue.\u00a0 Have you tried a dish cooked by a person who knows what he is doing?\u00a0 It was delicious, wasn&#8217;t it?\u00a0 Now, have you ever tried a dish cooked by a drunk bachelor?\u00a0 For himself?\u00a0 That probably involved spaghetti at best.\u00a0 What&#8217;s the difference between these two types of cooks?\u00a0 You&#8217;d pretty much always prefer the food cooked by a professional.\u00a0 It&#8217;ll cost you more, yes.\u00a0 But you&#8217;ll know for sure that it&#8217;s safe to eat, and that more than that, you&#8217;d enjoy it too.<\/p>\n<p>Can you replace a pro cook in the kitchen with a drunk bachelor, so that nobody who eats notices the difference?\u00a0 Better even, can you replace one pro cook with a few drunk bachelors without anybody noticing it?\u00a0 Chances are that you&#8217;ll probably get even worse results with a few bachelors than with one.\u00a0 But in either case,\u00a0 the change of cooks will be obvoius.<\/p>\n<p><strong>On the need for detailed specifications<\/strong><\/p>\n<p>&#8220;Bosses&#8221; often oversimplify things.\u00a0 For them, &#8220;build a web site&#8221; or &#8220;make this thing work&#8221; is often a clear enough job description.\u00a0 Explaining that more details and information is needed is often tough.\u00a0 Burring them in questions even doesn&#8217;t always work.\u00a0 At that stage, even prototypes are a bit of an unreachable target.<\/p>\n<p>Here comes a cooking analogy.\u00a0 If you order a &#8220;piece of meat&#8221;, you&#8217;ll probably get one.\u00a0 However, it&#8217;s about as much as you know about the dish that you will get.\u00a0 It can vary a lot from barbeque to steak to roast.\u00a0 Tempreture, size, sauce, serving, timing, etc, etc, etc.\u00a0 There are just too many ways of understanding a &#8220;piece of meat&#8221; order.\u00a0 And then there are so many ways of cooking one that results are most likely to be unpredictable, and most often not satisfying.\u00a0 &#8220;I wanted it with barbeque sauce and a little mashed potato on the side of a plate!&#8221;<\/p>\n<p>The more you can tell a chief (or a waiter for that matter) about the food that you want to eat and the way you prefer it to be cooked and served, the more likely you are to get what you want.\u00a0 Of course, that means that you need to think a bit about what you really want, and then try to communicate it to another person.\u00a0 However, the result is often worth the effort.\u00a0 Especially, if you are somewhere you&#8217;ve never eaten before.<\/p>\n<p><strong>On the need for the tools and methods to match the team<\/strong><\/p>\n<p>&#8220;Bosses&#8221; are often targeted by marketing departments of vendors, big and small.\u00a0 &#8220;Buy this tool for your IT department and it will be 20% more productive&#8221;.\u00a0 &#8220;Implement this approach and you will have lower TCO&#8221;. &#8220;Do this and you&#8217;ll get that&#8221;.\u00a0 Arguing back is tough.\u00a0 Marketing people speak &#8220;bosses&#8221; dialect much better than technical people do.<\/p>\n<p>So, cooking analogy comes in place.\u00a0 Who should decide which knife to use?\u00a0 Who should decide which groceries to get?\u00a0 Who should decide on the temperature and timing?\u00a0 Is it the person who orders the food, or the cook?\u00a0 Every cook knows what tools he needs to cook a dish.\u00a0\u00a0 You can choose the tools for him, yes.\u00a0 But then it very much depends on how good you are at cooking yourself and how close are your methods to methods of your cook. Best cooks, of course, will manage anyway.\u00a0 But why would you want to get yourself into that risky situation?\u00a0 Get yourself a cook, ask him what he needs to do the job, get it for him.\u00a0 If hiring more than one cook &#8211; you can try to make them use the same tools.\u00a0 Sometimes it works (most of them will use knives), sometimes it doesn&#8217;t (cooking desserts is different from cooking sushi).\u00a0 Let them decide.<\/p>\n<p>These are just some of those that I use.\u00a0 And sometimes I vary the above ones too.\u00a0 They are here just to illustrate.\u00a0 YMMV.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>During the last few month I&#8217;ve been explaining software engineering to management types quite a bit.\u00a0 Most of the &#8220;bosses&#8221; that I talked to weren&#8217;t technical at all, so I was trying to stay away from famous concepts, examples, and terminology as much as I could.\u00a0 Of course, that required some sort of substitute for &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Software engineering is like cooking<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[1,18,1334],"tags":[1968,90,259,141,1673],"keyring_services":[],"class_list":["post-11485","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","category-web-work","tag-business","tag-communications","tag-cooking","tag-food","tag-software-engineering"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"During the last few month I&#039;ve been explaining software engineering to management types quite a bit. Most of the &quot;bosses&quot; that I talked to weren&#039;t technical at all, so I was trying to stay away from famous concepts, examples, and terminology as much as I could. Of course, that required some sort of substitute for\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Leonid Mamchenkov\"\/>\n\t<meta name=\"google-site-verification\" content=\"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Leonid Mamchenkov - Life, universe, and everything else\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Software engineering is like cooking - Leonid Mamchenkov\" \/>\n\t\t<meta property=\"og:description\" content=\"During the last few month I&#039;ve been explaining software engineering to management types quite a bit. Most of the &quot;bosses&quot; that I talked to weren&#039;t technical at all, so I was trying to stay away from famous concepts, examples, and terminology as much as I could. Of course, that required some sort of substitute for\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2009-01-06T22:58:03+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2009-01-06T22:58:03+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MamchenkovBlog\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Software engineering is like cooking - Leonid Mamchenkov\" \/>\n\t\t<meta name=\"twitter:description\" content=\"During the last few month I&#039;ve been explaining software engineering to management types quite a bit. Most of the &quot;bosses&quot; that I talked to weren&#039;t technical at all, so I was trying to stay away from famous concepts, examples, and terminology as much as I could. Of course, that required some sort of substitute for\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2009\\\/01\\\/07\\\/software-engineering-is-like-cooking\\\/#blogposting\",\"name\":\"Software engineering is like cooking - Leonid Mamchenkov\",\"headline\":\"Software engineering is like cooking\",\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2009\\\/01\\\/07\\\/software-engineering-is-like-cooking\\\/#articleImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"},\"datePublished\":\"2009-01-07T00:58:03+02:00\",\"dateModified\":\"2009-01-07T00:58:03+02:00\",\"inLanguage\":\"en-US\",\"commentCount\":4,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2009\\\/01\\\/07\\\/software-engineering-is-like-cooking\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2009\\\/01\\\/07\\\/software-engineering-is-like-cooking\\\/#webpage\"},\"articleSection\":\"All, Programming, Web work, business, communications, cooking, food, software engineering\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2009\\\/01\\\/07\\\/software-engineering-is-like-cooking\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"position\":3,\"name\":\"Programming\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2009\\\/01\\\/07\\\/software-engineering-is-like-cooking\\\/#listItem\",\"name\":\"Software engineering is like cooking\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2009\\\/01\\\/07\\\/software-engineering-is-like-cooking\\\/#listItem\",\"position\":4,\"name\":\"Software engineering is like cooking\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2009\\\/01\\\/07\\\/software-engineering-is-like-cooking\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2009\\\/01\\\/07\\\/software-engineering-is-like-cooking\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2009\\\/01\\\/07\\\/software-engineering-is-like-cooking\\\/#webpage\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2009\\\/01\\\/07\\\/software-engineering-is-like-cooking\\\/\",\"name\":\"Software engineering is like cooking - Leonid Mamchenkov\",\"description\":\"During the last few month I've been explaining software engineering to management types quite a bit. Most of the \\\"bosses\\\" that I talked to weren't technical at all, so I was trying to stay away from famous concepts, examples, and terminology as much as I could. Of course, that required some sort of substitute for\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2009\\\/01\\\/07\\\/software-engineering-is-like-cooking\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"datePublished\":\"2009-01-07T00:58:03+02:00\",\"dateModified\":\"2009-01-07T00:58:03+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/\",\"name\":\"Blog of Leonid Mamchenkov\",\"description\":\"Life, universe, and everything else\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Software engineering is like cooking - Leonid Mamchenkov","description":"During the last few month I've been explaining software engineering to management types quite a bit. Most of the \"bosses\" that I talked to weren't technical at all, so I was trying to stay away from famous concepts, examples, and terminology as much as I could. Of course, that required some sort of substitute for","canonical_url":"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/#blogposting","name":"Software engineering is like cooking - Leonid Mamchenkov","headline":"Software engineering is like cooking","author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"},"image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/#articleImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"},"datePublished":"2009-01-07T00:58:03+02:00","dateModified":"2009-01-07T00:58:03+02:00","inLanguage":"en-US","commentCount":4,"mainEntityOfPage":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/#webpage"},"isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/#webpage"},"articleSection":"All, Programming, Web work, business, communications, cooking, food, software engineering"},{"@type":"BreadcrumbList","@id":"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","position":1,"name":"Home","item":"https:\/\/mamchenkov.net\/wordpress","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","position":3,"name":"Programming","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/#listItem","name":"Software engineering is like cooking"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/#listItem","position":4,"name":"Software engineering is like cooking","previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"}}]},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/#person","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author","url":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"WebPage","@id":"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/#webpage","url":"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/","name":"Software engineering is like cooking - Leonid Mamchenkov","description":"During the last few month I've been explaining software engineering to management types quite a bit. Most of the \"bosses\" that I talked to weren't technical at all, so I was trying to stay away from famous concepts, examples, and terminology as much as I could. Of course, that required some sort of substitute for","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#website"},"breadcrumb":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/#breadcrumblist"},"author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"creator":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"datePublished":"2009-01-07T00:58:03+02:00","dateModified":"2009-01-07T00:58:03+02:00"},{"@type":"WebSite","@id":"https:\/\/mamchenkov.net\/wordpress\/#website","url":"https:\/\/mamchenkov.net\/wordpress\/","name":"Blog of Leonid Mamchenkov","description":"Life, universe, and everything else","inLanguage":"en-US","publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"}}]},"og:locale":"en_US","og:site_name":"Leonid Mamchenkov - Life, universe, and everything else","og:type":"article","og:title":"Software engineering is like cooking - Leonid Mamchenkov","og:description":"During the last few month I've been explaining software engineering to management types quite a bit. Most of the &quot;bosses&quot; that I talked to weren't technical at all, so I was trying to stay away from famous concepts, examples, and terminology as much as I could. Of course, that required some sort of substitute for","og:url":"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/","og:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:secure_url":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:width":1024,"og:image:height":1024,"article:published_time":"2009-01-06T22:58:03+00:00","article:modified_time":"2009-01-06T22:58:03+00:00","article:publisher":"https:\/\/www.facebook.com\/MamchenkovBlog","twitter:card":"summary_large_image","twitter:site":"@mamchenkov","twitter:title":"Software engineering is like cooking - Leonid Mamchenkov","twitter:description":"During the last few month I've been explaining software engineering to management types quite a bit. Most of the &quot;bosses&quot; that I talked to weren't technical at all, so I was trying to stay away from famous concepts, examples, and terminology as much as I could. Of course, that required some sort of substitute for","twitter:creator":"@mamchenkov","twitter:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg"},"aioseo_meta_data":{"post_id":"11485","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-07-19 21:16:36","updated":"2026-01-15 04:03:46","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/\" title=\"Technology\">Technology<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/\" title=\"Programming\">Programming<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tSoftware engineering is like cooking\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/mamchenkov.net\/wordpress"},{"label":"Technology","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/"},{"label":"Programming","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/"},{"label":"Software engineering is like cooking","link":"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/07\/software-engineering-is-like-cooking\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":27343,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/12\/modern-software-over-engineering-mistakes\/","url_meta":{"origin":11485,"position":0},"title":"Modern Software Over-Engineering Mistakes","author":"Leonid Mamchenkov","date":"February 12, 2017","format":false,"excerpt":"\"Modern Software Over-Engineering Mistakes\" is a nice collection of examples, results and reviews of over-engineering mistakes of the modern day. Few things are guaranteed to increase all the time: Distance between stars, Entropy in the visible universe, and F*cking business requirements . Here's the list of things discussed in the\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2017\/02\/perfect-abstraction-500x350.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":10279,"url":"https:\/\/mamchenkov.net\/wordpress\/2006\/07\/12\/daily-del-icio-us-bookmarks\/","url_meta":{"origin":11485,"position":1},"title":"Daily del.icio.us bookmarks","author":"Leonid Mamchenkov","date":"July 12, 2006","format":false,"excerpt":"Shared bookmarks for del.icio.us user tvset on 2006-07-11 Software Engineering -- The classic image of software engineering Tagged as: design development engineering fun funny humor images management picture programming software Financial Software for Linux Tagged as: accounting applications business finance linux money review software tools Gabor's Blog: How Researchers are\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":29302,"url":"https:\/\/mamchenkov.net\/wordpress\/2019\/01\/25\/our-software-dependency-problem\/","url_meta":{"origin":11485,"position":2},"title":"Our Software Dependency Problem","author":"Leonid Mamchenkov","date":"January 25, 2019","format":false,"excerpt":"\"Our Software Dependency Problem\" is a great article going in-depth into the subject of the dependency management during software engineering. Dependency managers have scaled this open-source code reuse model down: now, developers can share code at the granularity of individual functions of tens of lines. This is a major technical\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27399,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/03\/08\/selinux-concepts-but-for-humans\/","url_meta":{"origin":11485,"position":3},"title":"SELinux Concepts &#8211; but for humans","author":"Leonid Mamchenkov","date":"March 8, 2017","format":false,"excerpt":"SELinux has been an annoyance for me since the early days of Fedora and Red Hat bringing it into the distribution and enabling by default (see this blog post, for example, from 2004 about Fedora 3). Over the years, I've tried to learn it, make it useful, and find benefits\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27879,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/08\/28\/clean-code-solid-principles-applied-to-php\/","url_meta":{"origin":11485,"position":4},"title":"Clean Code SOLID principles applied to PHP","author":"Leonid Mamchenkov","date":"August 28, 2017","format":false,"excerpt":"clean-code-php is an excellent set of examples for the SOLID principles as applied to PHP programming: Software engineering principles, from Robert C. Martin's book\u00a0Clean Code, adapted for PHP. This is not a style guide. It's a guide to producing readable, reusable, and refactorable software in PHP. Not every principle herein\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":28124,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/10\/20\/periodic-table-of-software-engineering\/","url_meta":{"origin":11485,"position":5},"title":"Periodic Table of Software Engineering","author":"Leonid Mamchenkov","date":"October 20, 2017","format":false,"excerpt":"I came across this Periodic Table of Software Engineering, and I think it's an excellent visualization.\u00a0 For those working their way to become software engineers, it provides a nice map of skills, topics, and knowledge areas to cover.\u00a0 For the rest, it clearly explains why software is so much more\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2017\/10\/periodic-table-of-software-engineering-500x350.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/11485","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=11485"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/11485\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=11485"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=11485"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=11485"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=11485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}