{
    "componentChunkName": "component---src-templates-post-js",
    "path": "/blog/2012/08/01/code-review-how-to-make-friends-and-influence-developers",
    "result": {"data":{"site":{"siteMetadata":{"title":"your friend Joel's digital garden","description":"Articles and notes from a collaborator at egghead.io. Musings on software, business, and life from a skilled virtual assistant.","author":{"name":"Joel Hooks"},"keywords":["Video Blogger"]}},"mdx":{"excerpt":"I'm a huge fan of peer review, especially with Atlassian's  Crucible  tool. It can be hard to introduce code review to a group that isn't used to doing it, or has had bad experiences with \"hostile\" review process in the past. It can be a…","fields":{"github":"https://github.com/joelhooks/joelhooks-com/tree/master/content/legacy_blog/2012-08-01-code-review-how-to-make-friends-and-influence-developers.markdown"},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"layout\": \"post\",\n  \"title\": \"Code Review: How to Make Friends and Influence Developers\",\n  \"date\": \"2012-08-01T00:00:00.000Z\",\n  \"comments\": true\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"I'm a huge fan of peer review, especially with Atlassian's \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.atlassian.com/software/crucible/overview\"\n  }, \"Crucible\"), \" tool. It can be hard to introduce code review to a group that isn't used to doing it, or has had bad experiences with \\\"hostile\\\" review process in the past. It can be a very effective way to share knowledge and increase quality of a codebase, assuming a few rules are followed.\"), mdx(\"p\", null, \"This is a deck that I like to present to groups that don't have a lot of collective experience with peer review for code. It provides some guidelines that I have harvested from various sources as well as my own experience.\"), mdx(\"iframe\", {\n    src: \"https://www.slideshare.net/slideshow/embed_code/8470537\",\n    width: \"100%\",\n    height: \"600\",\n    frameBorder: \"0\",\n    marginWidth: \"0\",\n    marginHeight: \"0\",\n    scrolling: \"no\",\n    style: {\n      \"border\": \"1px solid #CCC\",\n      \"borderWidth\": \"1px 1px 0\",\n      \"marginBottom\": \"5px\"\n    },\n    allowFullScreen: true\n  }, \" \"), \" \", mdx(\"div\", {\n    style: {\n      \"marginBottom\": \"5px\"\n    }\n  }, \" \", mdx(\"strong\", null, \" \", mdx(\"a\", {\n    href: \"https://www.slideshare.net/joelhooks/effective-peer-review\",\n    title: \"Effective Peer Review\",\n    target: \"_blank\"\n  }, \"Effective Peer Review\"), \" \"), \" from \", mdx(\"strong\", null, mdx(\"a\", {\n    href: \"https://www.slideshare.net/joelhooks\",\n    target: \"_blank\"\n  }, \"Joel Hooks\")), \" \"));\n}\n;\nMDXContent.isMDXComponent = true;","frontmatter":{"title":"Code Review: How to Make Friends and Influence Developers","date":"August 01, 2012","banner":null,"slug":null,"keywords":null}}},"pageContext":{"id":"d746c754-50e0-5e15-b7e8-e7bb34b5ac21","prev":{"id":"151e5788-bf05-5309-98cb-944be474593a","parent":{"name":"2012-08-27-on-transitioning-to-javascript-from-as3-slash-flex","sourceInstanceName":"legacy"},"excerpt":"I'm currently working on a large enterprise JS application, and enjoying myself quite a bit. We've implemented standards and practices that remove most of the bad parts of JS dev. We are using straight up JS with  AngularJS . We are covering our…","fields":{"title":"On Transitioning to JavaScript From AS3/Flex","slug":"blog/2012/08/27/on-transitioning-to-javascript-from-as3-slash-flex","date":"2012-08-27T00:00:00.000Z"}},"next":{"id":"ff8349c6-9d6e-53f3-85bd-adb987616120","parent":{"name":"2012-07-25-fresh-start-migrating-wordpress-octopress","sourceInstanceName":"legacy"},"excerpt":"I've been wanting to part ways with WordPress for some time. It's been expensive, running a VPS for the hosting. I've been \"attacked\" on multiple occasions that result in blacklisting from the Google when I ran on much less expensive shared hosting…","fields":{"title":"Fresh Start: Migrating from Wordpress to Octopress","slug":"blog/2012/07/25/fresh-start-migrating-wordpress-octopress","date":"2012-07-25T00:00:00.000Z"}}}},
    "staticQueryHashes": ["1045846374"]}