{"id":2377,"date":"2019-02-19T08:47:44","date_gmt":"2019-02-19T13:47:44","guid":{"rendered":"http:\/\/www.soul-repairs.com\/blog\/?p=2377"},"modified":"2019-01-30T18:21:09","modified_gmt":"2019-01-30T23:21:09","slug":"why-developers-love-sonarqube","status":"publish","type":"post","link":"https:\/\/soul-repairs.com\/blog\/2019\/02\/19\/why-developers-love-sonarqube\/","title":{"rendered":"Why Developers Love SonarQube"},"content":{"rendered":"<p>We&#8217;ve seen a lot of tool transitions across a large enterprise, and one of the coolest examples was changing the opinion of the company we worked for regarding source code analysis. We had a tool that was under-licensed, slow, ineffective, and largely ignored. At best, it was\u00a0a check box labeled &#8220;we&#8217;re definitely secure, you guys!&#8221; that everyone on the ground ignored.<\/p>\n<p><!--more--><\/p>\n<p>The purpose of a source code analysis tool is to look for the following in code:<\/p>\n<ul>\n<li>security issues<\/li>\n<li>likely bugs or logic issues<\/li>\n<li>inefficient or shady development practices<\/li>\n<\/ul>\n<p>The tool our company had, however, was poorly supported with an unclear process for adoption and usage. The UI was hard to navigate and it didn&#8217;t support all of the languages that we used &#8211; as a result, almost no one used it and the people who <em>did<\/em> struggle to work with it got little value from it.<\/p>\n<h2>Bad Tools, Bad Process, Bad Governance<\/h2>\n<p>The worst thing you can do in <a href=\"https:\/\/soul-repairs.com\/blog\/2019\/02\/14\/libertarian-boundaried-enterprise-governance\/\" target=\"_blank\" rel=\"noopener\">governance<\/a> is say you&#8217;ll enforce something (especially bad if this is an enforcement promised to an\u00a0<em>external <\/em>authority, like an auditor) and then implement that decision with an onerous tool that everyone hates that doesn&#8217;t solve the real issue &#8211; and then, for funsies, support that tool poorly and don&#8217;t really explain how to <em>use<\/em> it in day to day processes.<\/p>\n<h2>Why SonarQube<\/h2>\n<p><span style=\"font-size: 80%;\">Note: We got zero dollars or&#8230;anything, actually, for this post. We just saw how much the nerds we love, loved SonarQube &#8211; and some of the reasons why were interesting from a culture nerd perspective. If the SonarQube people <em>wanted<\/em> to give us some money for this post, we&#8217;d probably be just fine with that. We also accept swag as payment!<\/span><\/p>\n<p>The best parts of SonarQube, from a developer&#8217;s perspective:<\/p>\n<ul>\n<li>early &#8220;hey, you guys have a bug.&#8221; <em>Fail fast<\/em>.<\/li>\n<li>integrates nicely into CI\/CD pipelines<\/li>\n<li>built by developers, for developers<\/li>\n<li>free and open source, with paid support if that&#8217;s your jam<\/li>\n<li>has great enterprise support and plugins, including functionality for\u00a0<em>many many\u00a0<\/em>coding languages<\/li>\n<\/ul>\n<figure id=\"attachment_2403\" aria-describedby=\"caption-attachment-2403\" style=\"width: 325px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/www.sonarqube.org\/\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2403\" src=\"https:\/\/soul-repairs.com\/blog\/wp-content\/uploads\/2019\/01\/clean-code-300x194.png\" alt=\"\" width=\"325\" height=\"210\" srcset=\"https:\/\/soul-repairs.com\/blog\/wp-content\/uploads\/2019\/01\/clean-code-300x194.png 300w, https:\/\/soul-repairs.com\/blog\/wp-content\/uploads\/2019\/01\/clean-code-768x495.png 768w, https:\/\/soul-repairs.com\/blog\/wp-content\/uploads\/2019\/01\/clean-code-419x270.png 419w, https:\/\/soul-repairs.com\/blog\/wp-content\/uploads\/2019\/01\/clean-code.png 789w\" sizes=\"auto, (max-width: 325px) 100vw, 325px\" \/><\/a><figcaption id=\"caption-attachment-2403\" class=\"wp-caption-text\">Image courtesy of https:\/\/www.sonarqube.org\/<\/figcaption><\/figure>\n<p>It&#8217;s clear to users that value is delivered quickly and clearly.<\/p>\n<p>It also has a nifty dashboard for each artifact scanned that tells people bugs, vulnerabilities, code smells (hey, you coded this silly, please fix?), and unit testing coverage. It makes a\u00a0<em>game\u00a0<\/em>out of code quality &#8211; it makes it\u00a0an interesting, measurable\u00a0<strong>challenge<\/strong>.<\/p>\n<h3>The Game of it All<\/h3>\n<blockquote><p>Gamification helps to clarify purpose.<\/p><\/blockquote>\n<p>Gamification reinforces the actions that move a person or team toward fulfilling their purpose.<\/p>\n<p>Translation: gamification helps teams focus on what their purpose <em>is<\/em>, and it also shows with clear feedback and metrics (scores!) if they&#8217;re <em>successful<\/em> at fulfilling that purpose or not.\u00a0 In that way, gamification helps to\u00a0<strong>clarify<\/strong>\u00a0purpose &#8211; it helps teams focus on what their purpose <em>is<\/em>, and it shows with clear metrics (scores!) if they&#8217;re successful at fulfilling that purpose or not.\u00a0<strong>Gamification gives people clear\u00a0goals to attain, and\u00a0fast feedback on if they&#8217;re attaining them. <\/strong><\/p>\n<p>In order for this to be successful, leadership has to make it clear that people shouldn&#8217;t be <em>afraid<\/em> of missing those goals, of &#8220;losing&#8221; the game &#8211; but if they do that, people will try to hit those goals because&#8230;it&#8217;s\u00a0<em>fun<\/em>. People will also try to hit the goals because they love what they do, and because hitting those goals, the\u00a0<em>game<\/em> of it,\u00a0confirms that their actions fulfill their purpose &#8211; they know that\u00a0<strong>they&#8217;re doing something important<\/strong>.<\/p>\n<h2>Thanks SonarQube!<\/h2>\n<p>There&#8217;s a whole world of tools out there that enterprises can purchase and use, and it requires a combination of\u00a0<em>good tool<\/em> and also\u00a0<em>good implementation<\/em> for them to be successful. Most of the time, the implementation is more important than the tool, but sometimes tools are\u00a0<em>exceptionally bad\u00a0<\/em>(and no implementation can save them) or\u00a0<em>exceptionally good\u00a0<\/em>(and the implementation is easy). SonarQube falls into that last category, and it was a blast to watch people get excited about a process that they previously hated.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We&#8217;ve seen a lot of tool transitions across a large enterprise, and one of the coolest examples was changing the opinion of the company we worked for regarding source code analysis. We had a tool that was under-licensed, slow, ineffective, and largely ignored. At best, it was\u00a0a check box labeled &#8220;we&#8217;re definitely secure, you guys!&#8221; &hellip; <\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/soul-repairs.com\/blog\/2019\/02\/19\/why-developers-love-sonarqube\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[39,28,41,4],"tags":[45,67,77],"wf_post_folders":[],"coauthors":[11,26],"class_list":["post-2377","post","type-post","status-publish","format-standard","hentry","category-human-architecture","category-organizations","category-processes","category-technology","tag-continuous-delivery","tag-ownership","tag-sonarqube"],"_links":{"self":[{"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/posts\/2377","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/comments?post=2377"}],"version-history":[{"count":20,"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/posts\/2377\/revisions"}],"predecessor-version":[{"id":2471,"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/posts\/2377\/revisions\/2471"}],"wp:attachment":[{"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/media?parent=2377"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/categories?post=2377"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/tags?post=2377"},{"taxonomy":"wf_post_folders","embeddable":true,"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/wf_post_folders?post=2377"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/coauthors?post=2377"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}