{"id":32,"date":"2009-12-03T15:41:11","date_gmt":"2009-12-03T15:41:11","guid":{"rendered":"https:\/\/simpleprogrammer.com\/?p=32"},"modified":"2022-09-07T14:05:29","modified_gmt":"2022-09-07T18:05:29","slug":"dedicated-developer-tools-teams","status":"publish","type":"post","link":"https:\/\/simpleprogrammer.com\/dedicated-developer-tools-teams\/","title":{"rendered":"Dedicated Developer Tools Teams"},"content":{"rendered":"<p><strong>Every large team needs a developer tools team<\/strong><\/p>\n<p>I have been realizing more and more the need for developer tools and setting aside dedicated time to create them. \u00a0 I&#8217;ve noticed many organizations have internal tools teams, but I haven&#8217;t seen dedicated developer tools teams. \u00a0I am sure there are some out there, but I just haven&#8217;t seen them yet. \u00a0I am pretty convinced that any decent sized project needs to have a dedicated team for building tools to be used by developers.<\/p>\n<p><strong>What do I mean by developer tools?<\/strong><\/p>\n<p>I don&#8217;t mean defect tracking systems, or test case management system, or internal workflow websites, etc. \u00a0Let me give you an example. \u00a0On the project I am currently working on we use a particular rules engine software called <a href=\"http:\/\/www-01.ibm.com\/software\/websphere\/ilog_migration.html\">ILOG<\/a>. \u00a0When I was working on the architecture team and not actually writing rules and trying to unit test the rules, I didn&#8217;t realize how inefficient the whole process was. \u00a0I ended up becoming the Scrum Master of one of the teams using this software package and immediately felt the pain of:<\/p>\n<ol>\n<li>Writing a unit test<\/li>\n<li>Writing a rule to try and make the whole unit test pass<\/li>\n<li>Building the rules package (7 minutes)<\/li>\n<li>Running your unit test which causes the rules to be reloaded to disk (2 minutes)<\/li>\n<li>Finding out it didn&#8217;t work, and changing the unit test<\/li>\n<li>Modifying the rule<\/li>\n<li>Building the rules package again (7 minutes)<\/li>\n<li><span style=\"background-color: #ffffff;\">Repeating until rule works correctly<\/span><\/li>\n<\/ol>\n<p>The very first thing I did was create a &#8220;Rule Loader&#8221; that could load just one rule without having to build the entire package, and allowed you to make a change against a rule and instantly run your unit test, just like it was pure java code. \u00a0Thus, the process changed to:<\/p>\n<ol>\n<li>Write a unit test<\/li>\n<li>Write part of a rule to try and make it pass<\/li>\n<li>Run the unit test which automatically loads your changes for just that rule (5 sec)<\/li>\n<li>Done, move onto the next unit test (you&#8217;re done instead of going back, because you wrote a small unit test instead of a large one because you can load the rule much faster now)<\/li>\n<\/ol>\n<p>Thus a developer tool was born. \u00a0We later found the same problem with functional testing and added a hidden webpage to trigger the rule loader to load up rules dynamically while the application was running, which saved even more time.<\/p>\n<p><span style=\"text-decoration: underline;\">Developer tools are tools which speed up development.<\/span><\/p>\n<p>There are many examples of developer tools. \u00a0The only way you can figure out what developer tools are useful is to have a <strong>developer customer<\/strong>. \u00a0You either have to have a developer build the tool or ask them. \u00a0Once I got down in the trenches I was able to immediately see the need for several tools, which I then developed which saved countless hours across the entire project.<\/p>\n<p><strong>Who builds developer tools?<\/strong><\/p>\n<p>I stress the point that this is not the same as an internal tools team. \u00a0They are usually building tools for the customer that is the internal business or even development workflow. \u00a0Developer tools are focused at developer customers. \u00a0Consider some of the meta-developer tools just as <a href=\"http:\/\/www.jetbrains.com\/resharper\/index.html\">ReSharper<\/a>. \u00a0Those are general to development, but developer tools on a project would be specific to development on that project. \u00a0 I would recommend having a <span style=\"text-decoration: underline;\">dedicated team<\/span> that has their own iterations that build developer tools from developer stories. \u00a0Now this isn&#8217;t always possible due to the size of projects, team and budgets. \u00a0In that case, and perhaps a better solution is to take one developer from each team each iteration and put them on a special developer tools team for that iteration. \u00a0In this way, you will get developers from the trenches building their own tools and &#8220;eating their own dog food.&#8221;<\/p>\n<p><strong>Why?<\/strong><\/p>\n<p>When we do things over and over again it is a waste of time when we could automate some of the steps. \u00a0When you work on a large team the amount of wasted time multiplies. \u00a0For example, if you can build a tool that saves a developer 2 minutes of work each time they work on an item of work, and they work on 3 items of work a day on average. \u00a0You are only saving 6 minutes a day. \u00a0Not a huge savings, but when you multiply that times 30 developers, and you multiple that over the number of days in a 90 day project you get 6<em>30<\/em>90 = 16,200 minutes. \u00a0That is 270 hours. \u00a0Can you spend 70 hours to build a tool that will save 2 minutes off most of your development tasks? \u00a0In that case you net 200 hours of productivity in 90 working days? \u00a0So why doesn&#8217;t everyone already do this? \u00a0Simple: a developer isn&#8217;t concerned about saving 6 minutes a day. \u00a0In general a developer with a deadline trying to complete work is not going to see the bigger picture of investment of a large number of hours to save themselves 6 minutes a day.<\/p>\n<p>Agree? Disagree? Anyone already have a developer tools team?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Every large team needs a developer tools team I have been realizing more and more the need for developer tools and setting aside dedicated time to create them. \u00a0 I&#8217;ve noticed many organizations have internal tools teams, but I haven&#8217;t seen dedicated developer tools teams. \u00a0I am sure there are some out there, but I&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"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,31679,1981],"tags":[],"class_list":["post-32","post","type-post","status-publish","format-standard","hentry","category-agile","category-process-improvement","category-tools"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Dedicated Developer Tools Teams<\/title>\n<meta name=\"description\" content=\"An explanation of how developer tools teams can speed up the development process for a company. Includes a real life example of such a tool\" \/>\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\/products\/careerguide\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dedicated Developer Tools Teams\" \/>\n<meta property=\"og:description\" content=\"An explanation of how developer tools teams can speed up the development process for a company. Includes a real life example of such a tool\" \/>\n<meta property=\"og:url\" content=\"https:\/\/simpleprogrammer.com\/products\/careerguide\" \/>\n<meta property=\"og:site_name\" content=\"Simple Programmer\" \/>\n<meta property=\"article:published_time\" content=\"2009-12-03T15:41:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-07T18:05:29+00:00\" \/>\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\\\/products\\\/careerguide#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/dedicated-developer-tools-teams\\\/\"},\"author\":{\"name\":\"John Sonmez\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/1abc70edfb189184827740310672de67\"},\"headline\":\"Dedicated Developer Tools Teams\",\"datePublished\":\"2009-12-03T15:41:11+00:00\",\"dateModified\":\"2022-09-07T18:05:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/dedicated-developer-tools-teams\\\/\"},\"wordCount\":833,\"commentCount\":8,\"articleSection\":[\"Agile\",\"Process Improvement\",\"Tools\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/dedicated-developer-tools-teams\\\/\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide\",\"name\":\"Dedicated Developer Tools Teams\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#website\"},\"datePublished\":\"2009-12-03T15:41:11+00:00\",\"dateModified\":\"2022-09-07T18:05:29+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/1abc70edfb189184827740310672de67\"},\"description\":\"An explanation of how developer tools teams can speed up the development process for a company. Includes a real life example of such a tool\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/simpleprogrammer.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dedicated Developer Tools Teams\"}]},{\"@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":"Dedicated Developer Tools Teams","description":"An explanation of how developer tools teams can speed up the development process for a company. Includes a real life example of such a tool","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\/products\/careerguide","og_locale":"en_US","og_type":"article","og_title":"Dedicated Developer Tools Teams","og_description":"An explanation of how developer tools teams can speed up the development process for a company. Includes a real life example of such a tool","og_url":"https:\/\/simpleprogrammer.com\/products\/careerguide","og_site_name":"Simple Programmer","article_published_time":"2009-12-03T15:41:11+00:00","article_modified_time":"2022-09-07T18:05:29+00:00","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\/products\/careerguide#article","isPartOf":{"@id":"https:\/\/simpleprogrammer.com\/dedicated-developer-tools-teams\/"},"author":{"name":"John Sonmez","@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/1abc70edfb189184827740310672de67"},"headline":"Dedicated Developer Tools Teams","datePublished":"2009-12-03T15:41:11+00:00","dateModified":"2022-09-07T18:05:29+00:00","mainEntityOfPage":{"@id":"https:\/\/simpleprogrammer.com\/dedicated-developer-tools-teams\/"},"wordCount":833,"commentCount":8,"articleSection":["Agile","Process Improvement","Tools"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/simpleprogrammer.com\/products\/careerguide#respond"]}]},{"@type":"WebPage","@id":"https:\/\/simpleprogrammer.com\/dedicated-developer-tools-teams\/","url":"https:\/\/simpleprogrammer.com\/products\/careerguide","name":"Dedicated Developer Tools Teams","isPartOf":{"@id":"https:\/\/simpleprogrammer.com\/#website"},"datePublished":"2009-12-03T15:41:11+00:00","dateModified":"2022-09-07T18:05:29+00:00","author":{"@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/1abc70edfb189184827740310672de67"},"description":"An explanation of how developer tools teams can speed up the development process for a company. Includes a real life example of such a tool","breadcrumb":{"@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/simpleprogrammer.com\/products\/careerguide"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/simpleprogrammer.com\/"},{"@type":"ListItem","position":2,"name":"Dedicated Developer Tools Teams"}]},{"@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\/32","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=32"}],"version-history":[{"count":0,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts\/32\/revisions"}],"wp:attachment":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/media?parent=32"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/categories?post=32"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/tags?post=32"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}