{"id":564,"date":"2015-10-22T22:57:19","date_gmt":"2015-10-23T05:57:19","guid":{"rendered":"http:\/\/marcusvorwaller.com\/blog\/?p=564"},"modified":"2016-05-12T02:22:19","modified_gmt":"2016-05-12T09:22:19","slug":"breadth-after-depth-dont-set-yourself-up-to-fail-in-software-projects","status":"publish","type":"post","link":"https:\/\/marcusvorwaller.com\/blog\/2015\/10\/22\/breadth-after-depth-dont-set-yourself-up-to-fail-in-software-projects\/","title":{"rendered":"Breadth after Depth: Don&#8217;t Set Yourself Up to Fail in Software Projects"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">It is very easy for software product owners to be lured into the trap of designing software to solve a broad problem for many people right from the start. <\/span><b>This is a mistake.<\/b><span style=\"font-weight: 400;\"> Most ideas start to scratch an itch or build something that is unique to a particular company or group. Then as you think more about solving it, the natural tendency is to go bigger and think &#8220;hey, this could also solve these similar problems!&#8221; You increase the scope of your project to encompass those problems as well. After all, it&#8217;s software, there&#8217;s no cost to make your product just a bit more generalized, right?<\/span><\/p>\n<p><strong>No. Again, this\u00a0is a mistake.<\/strong><\/p>\n<p><i><span style=\"font-weight: 400;\">Build to solve the smaller problem<\/span><\/i><span style=\"font-weight: 400;\">. Learn the domain by focusing on solving the problem you started off with from A to Z. Once you have done that, expand to similar problems or refactor your software to a higher level of abstraction.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For example, say you rent a house and find it tough to communicate with your landlord. You decide you want to build software to help landlords communicate with their tenants. Great. As you start thinking about it you realize that you could also solve the problem for people who rent out their houses to vacationers for the summer or for commercial apartment building landlords to communicate with many tenants in a building. After all, they&#8217;re basically the same problem, right?<\/span><\/p>\n<p>No.<\/p>\n<p><span style=\"font-weight: 400;\">They require different models, different abstractions and different user interfaces. <\/span><b>Solving everyone\u2019s problem means solving no one\u2019s problem.<\/b><span style=\"font-weight: 400;\"> Instead it means getting bogged down in creating software generic enough to not exclude any potential customers. It may seem like you&#8217;re making big fancy plans and building elegant software models when in reality you are severely lengthening your time to market and setting yourself up to build a product that doesn&#8217;t fully solve any one of your potential customer&#8217;s problems.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Here\u2019s what not to do:<\/span><\/p>\n<ul>\n<li>Don&#8217;t try to solve a problem that can be described in two words\u00a0like &#8220;Project Management&#8221; or &#8220;Travel Guides&#8221; or &#8220;Technical Training&#8221; or &#8220;Note Taking.&#8221; Your first product should be much more specific. &#8220;Note taking for software developers,&#8221; for example.<\/li>\n<li>Don&#8217;t start trying to sell something that has even the smallest\u00a0geographic considerations to customers globally. Instead, pick a country or state and go from beginning to end with just that\u00a0segment of the\u00a0market.<\/li>\n<\/ul>\n<p>An example in the software world is Ruby on Rails.\u00a0It didn&#8217;t start as a broad framework. It started as a product&#8211;Basecamp. It wasn&#8217;t until after Basecamp was successfully built to completion (depth)\u00a0that 37 Signals extracted Rails as\u00a0a general framework that could be used to build other web applications (breadth). Contrast that with <a href=\"https:\/\/www.meteor.com\">Meteor<\/a> or <a href=\"https:\/\/famo.us\">Famo.us<\/a>. These are frameworks built to solve huge problems for many people. They are promising but have been extremely expensive to build and growth has been quite\u00a0slow, in fact for Famo.us, it seems to have stopped completely.<\/p>\n<p><span style=\"font-weight: 400;\">Resist the temptation to start by building for a broad market. Focus. Build a product that completely solves a small problem, then expand it.<\/span><\/p>\n<p><a href=\"http:\/\/www.blushcheek.com\/bridal-hair-accessories\/hats\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-394\" src=\"https:\/\/i0.wp.com\/marcusvorwaller.com\/blog\/images\/logo1.png?resize=139%2C64\" alt=\"bridal hats bridal hair accessories\" width=\"139\" height=\"64\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>It is very easy for software product owners to be lured into the trap of designing software to solve a broad problem for many people right from the start. This is a mistake. Most ideas start to scratch an itch or build something that is unique to a particular company or group. Then as you [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[12],"tags":[],"class_list":["post-564","post","type-post","status-publish","format-standard","hentry","category-technology"],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/ppj2P-96","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/marcusvorwaller.com\/blog\/wp-json\/wp\/v2\/posts\/564","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/marcusvorwaller.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/marcusvorwaller.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/marcusvorwaller.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/marcusvorwaller.com\/blog\/wp-json\/wp\/v2\/comments?post=564"}],"version-history":[{"count":4,"href":"https:\/\/marcusvorwaller.com\/blog\/wp-json\/wp\/v2\/posts\/564\/revisions"}],"predecessor-version":[{"id":712,"href":"https:\/\/marcusvorwaller.com\/blog\/wp-json\/wp\/v2\/posts\/564\/revisions\/712"}],"wp:attachment":[{"href":"https:\/\/marcusvorwaller.com\/blog\/wp-json\/wp\/v2\/media?parent=564"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/marcusvorwaller.com\/blog\/wp-json\/wp\/v2\/categories?post=564"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/marcusvorwaller.com\/blog\/wp-json\/wp\/v2\/tags?post=564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}