{"id":993,"date":"2010-07-09T13:48:35","date_gmt":"2010-07-09T20:48:35","guid":{"rendered":"https:\/\/simpleprogrammer.com\/?p=993"},"modified":"2013-08-04T21:56:42","modified_gmt":"2013-08-05T01:56:42","slug":"why-small-is-better","status":"publish","type":"post","link":"https:\/\/simpleprogrammer.com\/why-small-is-better\/","title":{"rendered":"Why Small is Better"},"content":{"rendered":"<p>I\u2019ve talked about large backlogs being fatlogs <a href=\"https:\/\/simpleprogrammer.com\/2010\/01\/26\/scrum-backlogs-that-cover-too-much-and-are-not-thinly-sliced-enough-and-have-spreadsheets-attached-and-have-non-specific-things-like-fix-everything-on-this-page\/\">here<\/a> and <a href=\"https:\/\/simpleprogrammer.com\/2010\/03\/09\/return-of-the-fatlog\/\">here<\/a> before, but I\u2019d like to apply that general thinking to more than just backlogs, and talk about why I think small is almost always the right choice.<\/p>\n<p>We can apply the principles I am about to describe in a variety of contexts.<\/p>\n<ul>\n<li>Determining how to best slice up a fatlog<\/li>\n<li>Adding tasks to a backlog<\/li>\n<li>Refactoring or writing methods<\/li>\n<li>Creating database tables<\/li>\n<li>Designing a UI<\/li>\n<li>Designing an API<\/li>\n<\/ul>\n<p><a href=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/07\/small_car.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"display: inline; border: 0;\" title=\"small_car\" alt=\"small_car\" src=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/07\/small_car_thumb-1.jpg\" width=\"467\" height=\"336\" border=\"0\" \/><\/a><\/p>\n<h2>Small = Simple<\/h2>\n<p>Software development, or rather software craftsmanship, is about managing complexity.\u00a0 It always has been, it always will be.<\/p>\n<p>Small things are typically more simple than large things.\u00a0 Constraining size forces us to constrain complexity.\u00a0 This is good.<\/p>\n<p>We can built very large seeming complex things out of simple blocks.<\/p>\n<p>Consider the reason why we break up our code into methods instead of writing it all in the main block.<\/p>\n<p>A simple design is the difference between having a 10 year head start on the mobile phone industry and creating a phone that everyone hates and only ends up using as a basic phone, versus releasing a phone and in a very short time changing the world.<\/p>\n<h2>Small is easy to understand<\/h2>\n<p>This reason is essentially the same as simple, but is worth its own treatise, because it is so important.<\/p>\n<p>Having a unit of work that is easy to understand greatly increases the chances that it will be:<\/p>\n<ul>\n<li>Done right<\/li>\n<li>Done at all<\/li>\n<li>Done quickly<\/li>\n<li>Communicated and passed on correctly and easily<\/li>\n<\/ul>\n<p>Small things are easier to understand.\u00a0 Almost any complex concept can be broken down to small enough pieces that it can be understood.<\/p>\n<p>You will be amazed how much more work gets done when people understand the problem they are trying to solve.\u00a0 Which brings me to the next topic.<\/p>\n<h2>Problem admiration<\/h2>\n<p>There is nothing\u2026 and I mean nothing, that will hamper productivity like problem admiration.\u00a0 If someone thinks a problem is large and complex they will sit and admire that problem instead of working on it.\u00a0 It is basic human nature.<\/p>\n<p>Look at your own life.\u00a0 Look at successful programs for life organization like <a href=\"http:\/\/www.amazon.com\/gp\/product\/0142000280\/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0142000280&amp;linkCode=as2&amp;tag=makithecompsi-20\" target=\"_blank\">Getting Things Done<\/a>.<\/p>\n<ul>\n<li>Why aren\u2019t you cleaning your garage?<\/li>\n<li>Why aren\u2019t you finishing up that degree you wanted to get?<\/li>\n<li>Why aren\u2019t you getting in shape?<\/li>\n<\/ul>\n<p>Most likely it is due in some part to problem admiration.<\/p>\n<p>I\u2019ll give you a hint to cleaning your garage.\u00a0 Break the work up into 10 \u2013 15 small tasks.\u00a0 Watch how much easier it will be to accomplish that goal.\u00a0 Give it a shot.<\/p>\n<p>It is hard to admire a small problem.\u00a0 Take big problems and make them small problems whether you are designing a database, cleaning your garage or slicing up a backlog item.\u00a0 Small is better.<\/p>\n<h2>Evolution<\/h2>\n<p>Iterative development is about evolving software.\u00a0 We evolve software because of the feedback loop.\u00a0 Short feedback loops are good because they allow us to adjust.<\/p>\n<p>Have you ever had a really bad remote desktop connection?\u00a0 What happened to your mouse when you moved quickly in one direction?<\/p>\n<p>Makes it hard to control doesn\u2019t it?<\/p>\n<p>The smaller the piece of software you build, the shorter the feedback loop is.\u00a0 If you want to control the evolution of your software, make the feedback loop short.\u00a0 If you want to make the feedback loop short, make the slices small.<\/p>\n<h2>Estimation<\/h2>\n<p>Want to know how long it will take me to write code to reverse a string?<\/p>\n<ul>\n<li>About 5 minutes.<\/li>\n<\/ul>\n<p>How about how long it will take me to write this blog post?<\/p>\n<ul>\n<li>About 30 to 45 minutes.<\/li>\n<\/ul>\n<p>How about how long it will take me to build a dog house?<\/p>\n<ul>\n<li>I don\u2019t know.\u00a0 About a day maybe.<\/li>\n<\/ul>\n<p>How about how long it will take me to write a book?<\/p>\n<ul>\n<li>I have no idea, but if you make me guess I would say 5 months give or take 5 months.<\/li>\n<\/ul>\n<p>Excuse the crappiness of my examples, but I hope you can see my point.\u00a0 The smaller the item is, the easier it is to estimate the time it will take to complete.<\/p>\n<p>If you have been working in software development for any length of time you have probably come to the realization that tasks estimated to take an hour usually take an hour, but tasks that are estimated to take one day rarely actually take one day and sometimes end up taking a whole week.<\/p>\n<p>Think about a more practical example.\u00a0 Can you show me with your hands how big 1 foot is?\u00a0 Okay, now look outside and eyeball 500 feet.<\/p>\n<h2>Progress<\/h2>\n<p>There is no better motivator than making progress.<\/p>\n<p>This benefit is purely emotional and artificial, but we are emotional artificially inspired beings.<\/p>\n<p>Everyone loves making progress.\u00a0 If you break things down small, you can chart your progress and see that you will indeed finish.<\/p>\n<p>Imagine a progress bar with 2 big blocks.\u00a0 Wouldn\u2019t be very inspiring would it?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I\u2019ve talked about large backlogs being fatlogs here and here before, but I\u2019d like to apply that general thinking to more than just backlogs, and talk about why I think small is almost always the right choice. We can apply the principles I am about to describe in a variety of contexts. Determining how to&#8230;<\/p>\n","protected":false},"author":2,"featured_media":991,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[11287,2185,31679],"tags":[],"class_list":["post-993","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agile","category-best-practices","category-process-improvement"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Why Small is Better<\/title>\n<meta name=\"description\" content=\"Six reasons why almost everything is better when broken down into a small unit. Examples relate to software development but can be applied to life generally\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/simpleprogrammer.com\/why-small-is-better\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Why Small is Better\" \/>\n<meta property=\"og:description\" content=\"Six reasons why almost everything is better when broken down into a small unit. Examples relate to software development but can be applied to life generally\" \/>\n<meta property=\"og:url\" content=\"https:\/\/simpleprogrammer.com\/why-small-is-better\/\" \/>\n<meta property=\"og:site_name\" content=\"Simple Programmer\" \/>\n<meta property=\"article:published_time\" content=\"2010-07-09T20:48:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-08-05T01:56:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/07\/small_car.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"500\" \/>\n\t<meta property=\"og:image:height\" content=\"359\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"John Sonmez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"John Sonmez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/why-small-is-better\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/why-small-is-better\\\/\"},\"author\":{\"name\":\"John Sonmez\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/1abc70edfb189184827740310672de67\"},\"headline\":\"Why Small is Better\",\"datePublished\":\"2010-07-09T20:48:35+00:00\",\"dateModified\":\"2013-08-05T01:56:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/why-small-is-better\\\/\"},\"wordCount\":820,\"commentCount\":5,\"image\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/why-small-is-better\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2010\\\/07\\\/small_car.jpg\",\"articleSection\":[\"Agile\",\"Best Practices\",\"Process Improvement\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/simpleprogrammer.com\\\/why-small-is-better\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/why-small-is-better\\\/\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/why-small-is-better\\\/\",\"name\":\"Why Small is Better\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/why-small-is-better\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/why-small-is-better\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2010\\\/07\\\/small_car.jpg\",\"datePublished\":\"2010-07-09T20:48:35+00:00\",\"dateModified\":\"2013-08-05T01:56:42+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/1abc70edfb189184827740310672de67\"},\"description\":\"Six reasons why almost everything is better when broken down into a small unit. Examples relate to software development but can be applied to life generally\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/why-small-is-better\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/simpleprogrammer.com\\\/why-small-is-better\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/why-small-is-better\\\/#primaryimage\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2010\\\/07\\\/small_car.jpg\",\"contentUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2010\\\/07\\\/small_car.jpg\",\"width\":500,\"height\":359},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/why-small-is-better\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/simpleprogrammer.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Why Small is Better\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#website\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/\",\"name\":\"Simple Programmer\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/simpleprogrammer.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/1abc70edfb189184827740310672de67\",\"name\":\"John Sonmez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g\",\"caption\":\"John Sonmez\"},\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/author\\\/jsonmez\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Why Small is Better","description":"Six reasons why almost everything is better when broken down into a small unit. Examples relate to software development but can be applied to life generally","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/simpleprogrammer.com\/why-small-is-better\/","og_locale":"en_US","og_type":"article","og_title":"Why Small is Better","og_description":"Six reasons why almost everything is better when broken down into a small unit. Examples relate to software development but can be applied to life generally","og_url":"https:\/\/simpleprogrammer.com\/why-small-is-better\/","og_site_name":"Simple Programmer","article_published_time":"2010-07-09T20:48:35+00:00","article_modified_time":"2013-08-05T01:56:42+00:00","og_image":[{"width":500,"height":359,"url":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/07\/small_car.jpg","type":"image\/jpeg"}],"author":"John Sonmez","twitter_card":"summary_large_image","twitter_misc":{"Written by":"John Sonmez","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/simpleprogrammer.com\/why-small-is-better\/#article","isPartOf":{"@id":"https:\/\/simpleprogrammer.com\/why-small-is-better\/"},"author":{"name":"John Sonmez","@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/1abc70edfb189184827740310672de67"},"headline":"Why Small is Better","datePublished":"2010-07-09T20:48:35+00:00","dateModified":"2013-08-05T01:56:42+00:00","mainEntityOfPage":{"@id":"https:\/\/simpleprogrammer.com\/why-small-is-better\/"},"wordCount":820,"commentCount":5,"image":{"@id":"https:\/\/simpleprogrammer.com\/why-small-is-better\/#primaryimage"},"thumbnailUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/07\/small_car.jpg","articleSection":["Agile","Best Practices","Process Improvement"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/simpleprogrammer.com\/why-small-is-better\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/simpleprogrammer.com\/why-small-is-better\/","url":"https:\/\/simpleprogrammer.com\/why-small-is-better\/","name":"Why Small is Better","isPartOf":{"@id":"https:\/\/simpleprogrammer.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/simpleprogrammer.com\/why-small-is-better\/#primaryimage"},"image":{"@id":"https:\/\/simpleprogrammer.com\/why-small-is-better\/#primaryimage"},"thumbnailUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/07\/small_car.jpg","datePublished":"2010-07-09T20:48:35+00:00","dateModified":"2013-08-05T01:56:42+00:00","author":{"@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/1abc70edfb189184827740310672de67"},"description":"Six reasons why almost everything is better when broken down into a small unit. Examples relate to software development but can be applied to life generally","breadcrumb":{"@id":"https:\/\/simpleprogrammer.com\/why-small-is-better\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/simpleprogrammer.com\/why-small-is-better\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/simpleprogrammer.com\/why-small-is-better\/#primaryimage","url":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/07\/small_car.jpg","contentUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/07\/small_car.jpg","width":500,"height":359},{"@type":"BreadcrumbList","@id":"https:\/\/simpleprogrammer.com\/why-small-is-better\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/simpleprogrammer.com\/"},{"@type":"ListItem","position":2,"name":"Why Small is Better"}]},{"@type":"WebSite","@id":"https:\/\/simpleprogrammer.com\/#website","url":"https:\/\/simpleprogrammer.com\/","name":"Simple Programmer","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/simpleprogrammer.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/1abc70edfb189184827740310672de67","name":"John Sonmez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g","caption":"John Sonmez"},"url":"https:\/\/simpleprogrammer.com\/author\/jsonmez\/"}]}},"_links":{"self":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts\/993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/comments?post=993"}],"version-history":[{"count":0,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts\/993\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/media\/991"}],"wp:attachment":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/media?parent=993"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/categories?post=993"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/tags?post=993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}