<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Claudio Pinkus</title>
    <description>The latest articles on DEV Community by Claudio Pinkus (@cpinkus).</description>
    <link>https://dev.to/cpinkus</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F174571%2F734f2b5e-8e5d-4bf9-a018-877bfe628030.jpeg</url>
      <title>DEV Community: Claudio Pinkus</title>
      <link>https://dev.to/cpinkus</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cpinkus"/>
    <language>en</language>
    <item>
      <title>VS Code, GitHub, and CodeStream: Choosing the best of all worlds</title>
      <dc:creator>Claudio Pinkus</dc:creator>
      <pubDate>Wed, 13 Jan 2021 17:37:13 +0000</pubDate>
      <link>https://dev.to/codestream/vs-code-github-and-codestream-choosing-the-best-of-all-worlds-mc3</link>
      <guid>https://dev.to/codestream/vs-code-github-and-codestream-choosing-the-best-of-all-worlds-mc3</guid>
      <description>&lt;p&gt;There is consensus among the thousands of developers we have surveyed that context switching is detrimental to productivity and staying in the zone. One way to reduce this is to integrate the essential tools developers use every day into their IDE. According to the latest &lt;a href="https://insights.stackoverflow.com/survey/2020" rel="noopener noreferrer"&gt;Stack Overflow survey&lt;/a&gt;, the tools developers use most are GitHub, Jira, and Slack. In this post we will focus on the GitHub integration in Visual Studio Code.&lt;/p&gt;

&lt;p&gt;GitHub has been integrated into VS Code for some time now, with versions released prior to Microsoft’s acquisition. The &lt;a href="https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github&amp;amp;ssr=false#review-details" rel="noopener noreferrer"&gt;GitHub Pull Requests and Issues extension&lt;/a&gt;, now under Microsoft’s ownership, has been downloaded about 1.2 million times and has received an average of 3 stars in the Visual Studio Code Marketplace. Many of the recent reviews are 1 star, as GitHub decided to discontinue its support for GitHub Enterprise. In addition, many reviews state that the extension is very buggy, or just does not work.&lt;/p&gt;

&lt;p&gt;If you are interested in integrating GitHub in your IDE, CodeStream offers a better alternative. The &lt;a href="https://marketplace.visualstudio.com/items?itemName=CodeStream.codestream&amp;amp;ssr=false#review-details" rel="noopener noreferrer"&gt;CodeStream extension for VS Code&lt;/a&gt; supports GitHub Cloud and Enterprise, as well as GitHub issues. If you are not a VS Code user, the &lt;a href="https://plugins.jetbrains.com/plugin/12206-codestream-github-gitlab-bitbucket-prs-and-code-review/reviews" rel="noopener noreferrer"&gt;CodeStream extension for JetBrains&lt;/a&gt; is also available with the exact same functionality. The CodeStream extensions have been downloaded about 300,000 times and have an average rating of 4.4 stars. Many reviews praise the functionality and quality of the extension declaring that it works well and is a great tool for code reviews.&lt;/p&gt;

&lt;p&gt;If you are one of those GitHub users who prefers an issue tracker from someone other than GitHub, CodeStream lets you integrate with any of 15 different trackers including Jira, Asana, Trello, Azure DevOps, Linear, and Clubhouse.&lt;/p&gt;

&lt;p&gt;In addition to integrating with code hosts (CodeStream also supports GitLab and Bitbucket, but not yet for Pull/Merge Requests) and issue trackers, CodeStream includes a built-in code chat solution that enables frictionless code discussion and integrates with Slack and Microsoft Teams. CodeStream also allows you to request feedback on unreviewed commits without the need for a pull request with just two clicks.&lt;/p&gt;

&lt;p&gt;The table below summarizes the comparison between the Microsoft GitHub extension and the CodeStream extension for Github.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.website-files.com%2F5c3c1d73652ba045d765cdb1%2F5ffdf49cc43ff72ed5dad7b7_microsoft_vs_codestream.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.website-files.com%2F5c3c1d73652ba045d765cdb1%2F5ffdf49cc43ff72ed5dad7b7_microsoft_vs_codestream.png" alt="enter image description here"&gt;&lt;/a&gt;&lt;br&gt;
Both the CodeStream and the Microsoft Github extensions are free to use for an unlimited number of users indefinitely. If your organization is very security conscious when it comes to code, CodeStream also offers an on-premises version available for a free trial, as shown &lt;a href="http://codestream.com/pricing" rel="noopener noreferrer"&gt;here&lt;/a&gt;. The paid version also includes premium support and reporting features.&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>github</category>
      <category>codereview</category>
      <category>pullrequest</category>
    </item>
    <item>
      <title>JetBrains Space vs. CodeStream</title>
      <dc:creator>Claudio Pinkus</dc:creator>
      <pubDate>Thu, 07 Jan 2021 16:12:58 +0000</pubDate>
      <link>https://dev.to/codestream/jetbrains-space-vs-codestream-1l9l</link>
      <guid>https://dev.to/codestream/jetbrains-space-vs-codestream-1l9l</guid>
      <description>&lt;p&gt;In December, JetBrains announced general availability of Space, an all-in-one solution that aims to replace an array of tools for the whole organization, from Slack to GitHub, Jira to CircleCI, and everything in between. It’s an ambitious project reminiscent of discontinued integrated environments that faded over time, such as Lotus Symphony – I know, I am dating myself – as single-purpose tools such as Word and Excel emerged as the preferred solution for knowledge workers.&lt;/p&gt;

&lt;p&gt;The Microsoft Office Suite (a collection of single-purpose tools) never evolved into a single integrated environment and went on to dominate the office space. Google took a similar approach to the Google Suite. In software development, the most widely used tools today are VS Code (Microsoft), GitHub (Microsoft), Jira (Atlassian), and Slack (soon, Salesforce), as reported in the 2020 Stack Overflow survey. Still, many other companies have significant market share in their niche. JetBrains is well-entrenched as a provider of text editors or IDEs. GitLab offers a powerful code host along with DevOps tools. CircleCI is a market leader in Continuous Integration. And the list goes on. Even the mighty Microsoft has not been able to own every segment of the software development lifecycle, though it keeps trying.&lt;/p&gt;

&lt;p&gt;According to a &lt;a href="https://techcrunch.com/2019/12/06/move-over-slack-space-is-a-new-project-management-platform-for-developers/" rel="noopener noreferrer"&gt;post&lt;/a&gt; in Techcrunch, the ultimate goal for Space is to provide a unified company-wide platform expanded to a wider range of creative teams, including designers, marketers, sales, accounting, and more. Seems like a tall order. The problem JetBrains is trying to address is that the array of tools “...leaves people switching tools and tabs, manually copying information, and generally losing time and creative flow” according to CEO Maxim Shafirov. At CodeStream we share his view that it’s a big problem development teams need to address, but our solution is quite different.&lt;/p&gt;

&lt;p&gt;First, we are focused exclusively on developers, because they are drastically underserved when it comes to integrated solutions, and in particular, have unique needs when it comes to communication tools that are code aware. This point is fundamental when it comes to reducing context switching. Second, we aim to deliver a seamless solution by integrating the tools developers already use into the IDE of their choice, rather than adding yet another separate app into the mix. CodeStream supports 14 different IDEs, including all of JetBrains’ and Microsoft’s. It integrates with over a dozen issue trackers from Asana to Jira, to Azure DevOps, six code hosts including GitHub and GitLab, both cloud and on-prem, Slack, Microsoft Teams, and e-mail.&lt;/p&gt;

&lt;p&gt;Here is a table that summarizes the main differences between JetBrains Space and CodeStream:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.website-files.com%2F5c3c1d73652ba045d765cdb1%2F5fda5cf3602c941b6c3b05c1_space_vs_codestream.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.website-files.com%2F5c3c1d73652ba045d765cdb1%2F5fda5cf3602c941b6c3b05c1_space_vs_codestream.png" alt="enter image description here"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you envision moving all of your collaboration to a single app that replaces your existing tools and workflows, then &lt;a href="https://www.jetbrains.com/space/" rel="noopener noreferrer"&gt;JetBrains Space&lt;/a&gt; looks like a good solution. If you would rather find a way to reduce context-switching, improve collaboration and boost productivity while still retaining the tools and workflows you are currently using, then &lt;a href="http://codestream.com" rel="noopener noreferrer"&gt;CodeStream&lt;/a&gt; might be right for you.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Fixing a broken software development process through better technology</title>
      <dc:creator>Claudio Pinkus</dc:creator>
      <pubDate>Wed, 04 Nov 2020 21:21:41 +0000</pubDate>
      <link>https://dev.to/codestream/fixing-a-broken-software-development-process-through-better-technology-289o</link>
      <guid>https://dev.to/codestream/fixing-a-broken-software-development-process-through-better-technology-289o</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;The software development process keeps evolving to keep up with the demands of the enterprise. As software is (famously) eating the world, more and more organizations make more software, have more frequent changes, requirements and integrations, and must manage a global workforce of developers. Software is now discussed in boardrooms as a strategic asset that drives value creation. In addition, work-from-home is the norm, at least for now, and the trend might stick for the foreseeable future. All this is straining the traditional approach to managing software projects. The assumption that a small team, co-located in an office, can easily communicate, plan and execute is no longer valid. A new approach is needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  A collaboration gap
&lt;/h2&gt;

&lt;p&gt;The typical planning process for software development teams is structured around a sprint. It starts with (a) the allocation of tasks, followed by (b) the execution of those tasks, such as developing a feature, and it ends with a (c) code review triggered by a pull request. During phase (b), developers typically don’t collaborate much. By the time a code review begins, often after a week or two of coding, the amount of work required to rework a suboptimal solution often leads to compromises and the accumulation of technical debt.&lt;/p&gt;

&lt;p&gt;The code review process, which typically involves the developer and one or more reviewers, is also meant to share knowledge about the codebase. While ephemeral knowledge is exchanged among the immediate participants, that knowledge is not captured in a digestible form and is not widely available to other developers in the organization. That leads to a knowledge gap that manifests itself clearly when key developers leave the organization.&lt;/p&gt;

&lt;p&gt;While developers spend most of their time in the Integrated Development Environment or IDE, IDEs have until now not served as collaborative tools and do not include the essential communication, project management and knowledge sharing components that reduce collaborative friction. Therefore, developers must jump from their IDE, to Slack, to Jira, to GitHub.com, to email, many many times per hour, in order to collaborate. This context switching is highly inefficient, disruptive, and going forward, unnecessary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shifting Left in Developer Collaboration
&lt;/h2&gt;

&lt;p&gt;In the last decade, the Shift Left Principle has taken over the software operations and quality assurance process under the newly coined term DevOps. As &lt;a href="https://aws.amazon.com/devops/what-is-devops/"&gt;defined by AWS&lt;/a&gt; “DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes.”&lt;/p&gt;

&lt;p&gt;Still, the “Dev” half of the DevOps equation remains less automated, less collaborative and less efficient than the “Ops” side. According to &lt;a href="https://devopedia.org/shift-left#:~:text=The%20principle%20of%20Shift%20Left%20is%20to%20take%20a%20task,releasing%20the%20product%20into%20production."&gt;Devopedia&lt;/a&gt; “The principle of Shift Left is to take a task that's traditionally done at a later stage of the process and perform that task at earlier stages.” The answer we are looking for in addressing the deficiencies in developer collaboration might be a combination of shifting left from a cultural perspective while adopting practices and tools that integrate the essential tools into a collaborative environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  The IDE becomes the Hub
&lt;/h2&gt;

&lt;p&gt;While the software development process has always involved many participants, the IDE has generally been seen as a standalone, single player tool. In order to stay in the zone, developers shunned distractions, and the IDE was intentionally kept isolated from the communication and collaboration aspects of the software development workflow.&lt;/p&gt;

&lt;p&gt;GitHub, Jira and Slack are the most widely used tools among developers, according to the 2020 Stack Overflow Survey. All three are part of the collaboration required to produce high quality software on time. But none of them were integrated with the IDE as a natural environment when code is written and all appears in context. GitHub is mostly used in a web browser, causing regular context switches between the IDE, the command line and back to the browser. Collaborating in Slack requires developers to copy and paste code, a tedious and infrequent task, and then to explain to the recipient the context that was just lost through the cut and paste operation. Over the last 20+ years we've seen incredible innovation in the browser, as web technologies make it easier to deliver robust and compelling user experiences. So perhaps it's no surprise that Jira, Github, and Slack are all web-based.&lt;/p&gt;

&lt;p&gt;Starting with the Atom editor 6 years ago, and more recently popularized by VS Code, editors can now be extended with web technologies. This opens up the possibility of bringing these powerful capabilities directly into the IDE. Since context switching represents 70% of the steps involved in the unintegrated developer workflow, the same work can be accomplished with ⅓ the effort in an integrated environment where pull requests, issue tickets and messages are associated with the code itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Transparency to Visibility
&lt;/h2&gt;

&lt;p&gt;Many organizations are striving for transparency as a matter of cultural adaptation. When transparency is implemented, better alignment is possible. Communication becomes more streamlined and overlapping departmental and personal responsibilities are better clarified and defined. In order to become more transparent organizations must deploy technologies that increase visibility.&lt;/p&gt;

&lt;p&gt;Examples abound: Many teams share calendars in order to coordinate schedules and meetings, many of us set our status on Slack or Microsoft Teams to show our availability, and in this year of Working From Home many have chosen to keep a Zoom call open among team members to be able to casually discuss ad hoc issues. Still, software developers keep working away in their IDEs after grabbing a ticket and emerge from their focused sprint with an almost finished product. If the individual IDEs were connected to each other in a team setting, increased visibility could be possible. Team members could see what the others are working on, team leaders could help out someone who is blocked, and software quality would improve on the first pass.&lt;/p&gt;

&lt;h2&gt;
  
  
  A New Workflow is Desirable
&lt;/h2&gt;

&lt;p&gt;It is both possible and desirable to integrate the essential tools developers use every day in order to boost collaboration, timely communication and reduce errors and technical debt. The technology is available. The most important step now is to redefine what’s acceptable from a cultural perspective so that developers can feel free to share imperfect work early that is made dramatically better by the contributions of their peers, thus fostering shared knowledge.&lt;/p&gt;

&lt;p&gt;We must step forward in the direction of a new modern workflow where integrations are the norm, code reviews happen sooner and more often, and knowledge is shared effortlessly through technology.&lt;/p&gt;

</description>
      <category>github</category>
      <category>vscode</category>
      <category>jetbrains</category>
      <category>codereview</category>
    </item>
    <item>
      <title>All Remote: Documenting your code is now essential. There is a better way. (Part 4)</title>
      <dc:creator>Claudio Pinkus</dc:creator>
      <pubDate>Wed, 20 May 2020 14:48:36 +0000</pubDate>
      <link>https://dev.to/codestream/all-remote-documenting-your-code-is-now-essential-there-is-a-better-way-part-4-4a19</link>
      <guid>https://dev.to/codestream/all-remote-documenting-your-code-is-now-essential-there-is-a-better-way-part-4-4a19</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;&lt;a href="%5Bhttps://dev.to/codestream/we-are-all-remote-developers-working-from-home-part-1-2od1%5D(https://dev.to/codestream/we-are-all-remote-developers-working-from-home-part-1-2od1)"&gt;In Part 1&lt;/a&gt;, we discussed the personal and human factors affecting all of us during the COVID-19 pandemic. In &lt;a href="%5Bhttps://dev.to/codestream/developers-must-choose-collaboration-in-an-all-remote-world-part-2-2oh5%5D(https://dev.to/codestream/developers-must-choose-collaboration-in-an-all-remote-world-part-2-2oh5)"&gt;Part 2 of this series&lt;/a&gt; we talked about how a combination of cultural and technology factors has traditionally led to insufficient collaboration among developers. In &lt;a href="%5Bhttps://dev.to/codestream/all-remote-transparency-becomes-essential-when-working-all-remote-part-3-1khf%5D(https://dev.to/codestream/all-remote-transparency-becomes-essential-when-working-all-remote-part-3-1khf)"&gt;Part 3&lt;/a&gt; we discussed how transparency needs to turn into &lt;a href="https://www.codestream.com/blog/codestream-7-0-code-reviews-in-your-ide-and-live-view"&gt;visibility&lt;/a&gt; in order to create team alignment and boost velocity and productivity. We turn now to documentation as a tool to improve remote developer performance.&lt;/p&gt;

&lt;p&gt;Documentation has been a source of frustration and conflict in software development for many years. The problem is, fundamentally, that many developers don’t document their code, or do so poorly. As a result, other developers who need to understand the code they are utilizing or changing spend many frustrating hours addressing this shortcoming. Understanding code can take as much as &lt;a href="https://www.quora.com/It-is-true-that-developers-spend-most-of-their-time-reading-code-than-writing-code"&gt;10X the amount of time&lt;/a&gt; as writing new code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why don’t developers document their code?
&lt;/h2&gt;

&lt;p&gt;There are many examples of articles and posts that discuss this question. For instance, &lt;a href="https://www.infoworld.com/article/2618550/how-to-get-developers-to-document-their-code.html"&gt;this article&lt;/a&gt; in Infoworld from 2012 asks “Why don't programmers document? Real programmers don't document is an old chestnut of hacker machismo, one that some coders have sadly taken to heart,” Infoworld states. Their answer might reflect a nugget of truth, but is by no means a universal explanation nor a solution. In a &lt;a href="https://www.freecodecamp.org/news/why-documentation-matters-and-why-you-should-include-it-in-your-code-41ef62dd5c2f/"&gt;post&lt;/a&gt; in 2018 Tomer Ben Rachel argues that “The main reason code goes undocumented is because of time. When developing a feature that needs to be completed within a certain time frame, rarely do we have a moment to stop everything and focus on documenting our code.”&lt;/p&gt;

&lt;p&gt;In an all-remote world, documentation is one more essential tool to sustain team alignment. This is a great moment to revisit how we think of documentation and its value. The good news is that there is a better way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The dawn of On-Demand documentation
&lt;/h2&gt;

&lt;p&gt;At CodeStream we have been working to improve internal documentation practices for over two years. Given that so many fast-moving organizations don’t produce much useful documentation, and that &lt;a href="https://insights.stackoverflow.com/survey/2018"&gt;surveys&lt;/a&gt; show that less than 15% of developers use internally generated documentation in their work, we believe in on-demand documentation. What does this mean?&lt;/p&gt;

&lt;p&gt;When a developer implements a new component or module, instead of trying to figure out in advance what others may not understand when they encounter the code in the future, &lt;a href="https://www.codestream.com/use-cases/code-documentation"&gt;CodeStream&lt;/a&gt; allows the developers using that code to more easily ask questions, and pull the information from the authors. We have implemented an in-editor interactive FAQ approach that captures the question and answer interaction and attaches it to the code it refers to. So not only do the missing pieces get filled in to solve the immediate need, the discussion is saved alongside the code for the benefit of the next developer who consumes the component or module.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---CjU3zV9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/h-41JloX_Ylpz30fnYGHcr3Xk0vidXOCbOCURzhCoSlzCUjHPJEXWuuy6GlW0ZTB7I69TDL7gu2AEF5BQfpiPfyS2LAIR_qGecXbi_Eqx1FldCOZw2IUdTKpuLzua95wTt0EqQNg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---CjU3zV9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/h-41JloX_Ylpz30fnYGHcr3Xk0vidXOCbOCURzhCoSlzCUjHPJEXWuuy6GlW0ZTB7I69TDL7gu2AEF5BQfpiPfyS2LAIR_qGecXbi_Eqx1FldCOZw2IUdTKpuLzua95wTt0EqQNg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Bringing it back to the IDE
&lt;/h2&gt;

&lt;p&gt;Until now, information about your code that explains how it all works has been fragmented, spread out in a variety of different tools and systems. Finding the right information is quite time-consuming, and sometimes impossible. By tying it all back to the IDE and, specifically the code it refers to, documentation emerges as the byproduct of the interactions that take place every day among developers in Slack, Jira, GitHub and other systems. CodeStream inserts itself in the workflow to capture and organize the information so that it becomes accessible and actionable in your editor. Given that the &lt;a href="https://slides.com/tamastorok/test-c0d067"&gt;Number 1 Challenge&lt;/a&gt; for developers today is sharing knowledge, CodeStream sits exactly where the intersection of documentation and collaboration lies. Collaboration solutions that are specifically designed for developers will become the foundation of useful on-demand documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  The future of documentation in On-Demand
&lt;/h2&gt;

&lt;p&gt;The future of software development will include a higher percentage of remote co-workers and teams. We have seen that an all-remote approach requires flexibility, the right collaboration tools, transparency and visibility. It also requires a new approach to documentation if we are to make all-remote work as effective as sitting side by side in an office. Adopting an on-demand approach to documentation solves two problems we have been wrestling with for a long time. It relieves developers from investing time and effort trying to figure out what others might not understand, and it improves knowledge sharing not just among two developers but for the organization as a whole.&lt;/p&gt;

</description>
      <category>remote</category>
      <category>team</category>
      <category>collaboration</category>
      <category>transparency</category>
    </item>
    <item>
      <title>All Remote: Transparency becomes essential when working all-remote (Part 3)</title>
      <dc:creator>Claudio Pinkus</dc:creator>
      <pubDate>Wed, 20 May 2020 14:41:16 +0000</pubDate>
      <link>https://dev.to/codestream/all-remote-transparency-becomes-essential-when-working-all-remote-part-3-1khf</link>
      <guid>https://dev.to/codestream/all-remote-transparency-becomes-essential-when-working-all-remote-part-3-1khf</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://dev.to/codestream/we-are-all-remote-developers-working-from-home-part-1-2od1"&gt;In Part 1&lt;/a&gt;, we discussed the personal and human factors affecting all of us during the COVID-19 pandemic. In &lt;a href="https://dev.to/codestream/developers-must-choose-collaboration-in-an-all-remote-world-part-2-2oh5"&gt;Part 2 of this series&lt;/a&gt; we talked about how a combination of cultural and technology factors has traditionally led to insufficient collaboration among developers.&lt;/p&gt;

&lt;p&gt;From a technology perspective, until recently it’s been surprisingly difficult to carry out simple tasks like asking a question about code you are viewing in your editor, but don’t understand. If you are among the developers who use tools like Slack or GitHub to discuss code, there are some significant limitations in both, but for different reasons. Developers often turn to Slack to ask ephemeral questions about code that’s unclear, but this involves copying and pasting from your IDE into a channel, and having to then recreate the whole context you just lost in order to explain to the recipient what they are actually looking at. Code reviews are often conducted In GitHub, where the context is more clear, however, you are limited to discussing only the changes that are part of that PR. What if you have questions or a suggestion about another part of the code that is not changing?&lt;/p&gt;

&lt;p&gt;Here we will focus on another aspect of remote work. Before your team went all-remote, it was relatively easy to keep informal tabs on what everyone was working on. Just looking around you, could see who is at their desk or in a meeting, or who moved a task on a board. Gone is the physical tap on the shoulder to ask a question or bounce off an idea. In an all-remote world, there is a need to become more transparent in order to improve collaboration, perhaps to demonstrate to your boss that you are actually working while at home, and most importantly, to improve performance and code quality for your team and your company.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is transparency in software development?
&lt;/h2&gt;

&lt;p&gt;One way to think of transparency is to consider it a philosophy, or a point of view. It implies openness, communication, and accountability. Transparency is operating in such a way that it is easy for others to see what actions are performed, and how they are performed. The benefits of transparency were well understood long ago. As explained by &lt;a href="https://www.boost.co.nz/blog/2018/11/agile-transparency-reduces-project-risk"&gt;Nathan Donaldson&lt;/a&gt; of Boost, there are many different dimensions to transparency. For a manager, it might mean knowing the status of a project. For a developer it might be seeing work in progress on a board. In both cases, it’s about producing the best product with the lowest risk. This chart from Boost, who specialize in Agile risk management, illustrates its benefits:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HzFucw1p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/Eh9dT-IcR2k9SBZJdOJ8jy0jPIyMH1crBFlyVRa3WxCBUDfbTZH9bPaHxkeDji7mggdAyRlNXHLUU_i1X56SYY5TDGU1zSXlrACakQSJYN_S1YRCEyIFElit-lSI0JCrLSRfPCip" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HzFucw1p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/Eh9dT-IcR2k9SBZJdOJ8jy0jPIyMH1crBFlyVRa3WxCBUDfbTZH9bPaHxkeDji7mggdAyRlNXHLUU_i1X56SYY5TDGU1zSXlrACakQSJYN_S1YRCEyIFElit-lSI0JCrLSRfPCip" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  From Transparency to Visibility
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.atlassian.com/agile/kanban/boards"&gt;Kanban-style boards&lt;/a&gt; have been popular in software development for a long time. If you used to rely on a physical board to have visibility of the state of a project, in a remote team that becomes impractical. Some software tools, like &lt;a href="http://trello.com"&gt;Trello&lt;/a&gt;, implement the methodology of a kanban board and give you task level visibility of what your teammates are working on. That is very useful and quite adequate for improving visibility in a remote team. However, the value of radical transparency becomes more evident in a remote environment. As communication is a bit harder, it’s easier to make mistakes or incorrect assumptions.&lt;/p&gt;

&lt;p&gt;As described by Matthew Bellows in &lt;a href="https://firstround.com/review/the-case-for-startups-to-make-radical-transparency-the-top-priority/"&gt;this post by First Round Review&lt;/a&gt;, there is a strong case to be made for Radical Transparency among startups, which is likely to apply to companies of all sizes. Matthew says: “Whether you’re starting from scratch or looking to make your existing culture more transparent, start by building it into the tools you use every day. Make the executive team’s calendars visible internally, for example, so everyone can see who’s in a given meeting or when colleagues are available.”&lt;/p&gt;

&lt;p&gt;That is why at &lt;a href="http://codestream.com"&gt;CodeStream&lt;/a&gt; we have been working on giving development teams the tools they need to increase visibility at a granular level.&lt;/p&gt;

&lt;h2&gt;
  
  
  The networked IDE comes of age in a remote era
&lt;/h2&gt;

&lt;p&gt;Developers tend to choose their IDEs individually in a BYOD world. In any given team you might find some using VS Code, others IntelliJ, a third group Atom or pycharm. One of the best ways to increase granular visibility is to connect your teammates’ IDEs to each other. That is exactly &lt;a href="https://www.codestream.com/blog/codestream-7-0-code-reviews-in-your-ide-and-live-view"&gt;what we have done&lt;/a&gt; at CodeStream. We just introduced Live View, a new feature in our collaboration platform that allows admins or any developer to see a live snapshot of what everyone is working on. Specifically we show each user’s name with a list of the repositories in which they have made local changes (i.e., edits that haven’t been pushed). When you hover over a repo entry, you can see the actual files that have changed, as well as the number of additions and deletions, like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--H7fDopXo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/xs0Zb4DIOA2xDBNMDcAazfltnQD_Fd2uCiQ9P7bl9mCZo_Tr8dM7IK4XMHlxvc8EQzJswT91P5Myu6fV8T8wXD1ohW-jXPRj7BIKdbOQgS_PpRr9fwJE7Iw681JcQLb-lFrwH655" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H7fDopXo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/xs0Zb4DIOA2xDBNMDcAazfltnQD_Fd2uCiQ9P7bl9mCZo_Tr8dM7IK4XMHlxvc8EQzJswT91P5Myu6fV8T8wXD1ohW-jXPRj7BIKdbOQgS_PpRr9fwJE7Iw681JcQLb-lFrwH655" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note also the warning sign indicating that Peter may have a potential merge conflict in the “gore” repo. He can then contact whoever is also working on that file in “gore” and resolve the issue before it becomes a painful process to unwind, or to ensure that they aren’t duplicating work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Documenting code is a great way to increase transparency
&lt;/h2&gt;

&lt;p&gt;Software development projects are notorious for &lt;a href="https://softwareengineering.stackexchange.com/questions/101388/why-do-so-many-libraries-have-no-poor-documentation"&gt;their lack of useful documentation&lt;/a&gt;. When working remotely, documenting software becomes increasingly important as informal communication decreases while the increased friction can slow things down. Yet, asking developers to document their code may not be the best answer.&lt;/p&gt;

&lt;p&gt;In Part 4 we will describe how we have tackled the documentation issue at CodeStream with a radical idea. We capture the interactions that take place every day among developers in tools like Slack, Jira, and GitHub and turn them into nuggets of wisdom that explain how the code works.&lt;/p&gt;

</description>
      <category>remote</category>
      <category>team</category>
      <category>collaboration</category>
      <category>transparency</category>
    </item>
    <item>
      <title>Developers Must Choose Collaboration in an All-Remote world (Part 2)</title>
      <dc:creator>Claudio Pinkus</dc:creator>
      <pubDate>Wed, 20 May 2020 14:35:57 +0000</pubDate>
      <link>https://dev.to/codestream/developers-must-choose-collaboration-in-an-all-remote-world-part-2-2oh5</link>
      <guid>https://dev.to/codestream/developers-must-choose-collaboration-in-an-all-remote-world-part-2-2oh5</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In &lt;a href="https://dev.to/codestream/we-are-all-remote-developers-working-from-home-part-1-2od1"&gt;Part 1 of this series&lt;/a&gt;, we talked about how we need to take into account personal and human aspects of our all-remote life that are not about just business or our careers. We also pointed out that being a software developer is a privilege, and that we have the opportunity to contribute to society while sitting at home and applying our knowledge and creativity. Challenging times are often the right moment to re-examine what we take for granted. We believe there is room for improvement in our software development processes, and now is a good time to start. In this article, we will begin to look at what drives dev team performance, and how our culture has been resistant to adopting a more collaborative approach for historical and competitive reasons. We will describe ways in which we, at CodeStream, have learned to tackle these issues and the impact we are seeing as a result of our approach.&lt;/p&gt;

&lt;h2&gt;
  
  
  We don’t collaborate enough
&lt;/h2&gt;

&lt;p&gt;Over the past two years, we have talked to about 2,000 software development teams in an effort to understand how their toolset, their workflow, and the opportunities for performance improvement. If you are like over 80% of the teams we talked to, this is what your toolset and workflow look like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The team plans the sprint on a Monday and developers mostly stay focused on your assignments until the end of the sprint, usually a week, with relatively little collaboration until the code is done.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You ask questions ad-hoc, sometimes to the developer sitting next to you, sometimes on Slack or Microsoft Teams. Mostly, though, you just try to figure it out on your own. There are no incentives to collaborate, other than at code review time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You use GitHub, GitLab or Bitbucket for version control and code reviews.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You assign work through Jira, Trello, Asana, or something like it. Most often, all assignments start in your task management service. You complete your assignments largely without collaborating with anyone on your team.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Overall, you have little visibility of what your teammates are working on at any given moment.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If this seems right, it all makes sense because we are so used to the process. What parts of this can be improved upon in an all-remote mindset and context? To start with, how often do you check with your team or your reviewer on whether the feature you are starting on is on the right path? How often do you suggest a change to a teammate to improve code quality? If the answer is rarely, or even just once or twice a day, you are not optimizing your process for collaboration purposes. In particular, if you are used to resolving issues by just tapping someone on the shoulder or asking out loud in a room with your teammates, a new approach is required. Let’s tackle each of the bullets above through a collaborative lens.&lt;/p&gt;

&lt;h2&gt;
  
  
  There is no shame in asking
&lt;/h2&gt;

&lt;p&gt;Most developers take pride in solving problems on their own. Perhaps it’s a badge of honor, or given the fact that we live in a competitive environment, it feels like asking will reveal some weakness on your part. As a team, at CodeStream we have created incentives to ask more questions more often, and we reward this type of exchange in public, reporting participation on our weekly all-hands. A customer of ours is planning on tieing part of the developers’ bonuses to the collaborative contributions made, whether asking a question or providing an answer. You should consider how your organization can promote more openness in code discussion.&lt;/p&gt;

&lt;p&gt;Still, in a remote setting, the tools commonly used today for code discussion are particularly sub-optimal. Using something like Slack or MS Teams results in ephemeral exchanges that do not add to the collective knowledge and require significant effort to provide the context that was stripped away by copying a code block and pasting it into a chat stream. Further, since the question itself is likely to quickly scroll off the screen never to be seen again, these solutions don’t offer the persistence and accessibility needed in an asynchronous remote world.&lt;/p&gt;

&lt;p&gt;We built CodeStream to solve this by attaching questions and replies to the code block(s) they refer to and then sharing this in Slack, MS Teams or email to leverage your existing communication tools. CodeStream is the in-editor bridge that makes these discussions more frequent and more useful to the whole team.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pull request is great. For code reviews, we can do better.
&lt;/h2&gt;

&lt;p&gt;Virtually every modern development team we have talked to since 2019 performs code reviews using the built-in tools of GitHub, GitLab, and BitBucket. Large organizations like Google and Microsoft have developed their own tools to conduct code reviews that are not PR based. At Google, they have standardized on a uniform toolset with a strong focus on &lt;a href="https://google.github.io/eng-practices/review/reviewer/"&gt;speeding up reviews&lt;/a&gt; by making them as small as possible. Google reports that its average code review is just 24 lines of code and gets turned around and into production in 4 hours or less.&lt;/p&gt;

&lt;p&gt;We believe they have the right philosophy and the right results. There are many benefits to small and fast reviews. Productivity increases, frustration is reduced, small mistakes don’t turn into large messes, and perhaps most importantly it allows larger teams of developers to weave changes together with minimum conflict. What does it take to make this happen in your organization? Pull requests don’t make it easy to review code. To start with, reviewing code in a browser instead of the IDE introduces the same type of context problem we discussed above with Slack, an unnecessary context switch. In addition, much frustration and effort can be eliminated by asking for reviews early and often, even on uncommitted code.&lt;/p&gt;

&lt;p&gt;At CodeStream, we have built a solution that makes this super easy. We just package every change made by a developer in their editor, organize it and size it, and let the developer decide which parts to submit for review. The reviewer can then see all the changes in context, in their editor, attach comments as necessary, and approve or reject the work on a file by file basis. Our team is now conducting 10+ reviews per day per developer, and our velocity has increased by over 20% since we started this process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Transparency and visibility
&lt;/h2&gt;

&lt;p&gt;Working remote brings new challenges in the area of visibility. Not only can we not see each other in the office anymore, but it’s harder to work towards alignment without the right tools. In order to get the right visibility, we must start with a philosophy of transparency. In an all-remote world, we must choose to let everyone see what we are doing because without it there is too much friction and we lose traction. GitLab has famously included &lt;a href="https://about.gitlab.com/handbook/values/#transparency"&gt;Transparency&lt;/a&gt; in their &lt;a href="https://about.gitlab.com/handbook/values/"&gt;Six Values&lt;/a&gt;. How do you implement transparency in your development process to get everyone on the same page? We will tackle that in part 3 of this series.&lt;/p&gt;

</description>
      <category>remote</category>
      <category>team</category>
      <category>collaboration</category>
      <category>transparency</category>
    </item>
    <item>
      <title>We are all Remote Developers: Working From Home (Part 1)</title>
      <dc:creator>Claudio Pinkus</dc:creator>
      <pubDate>Wed, 20 May 2020 14:29:38 +0000</pubDate>
      <link>https://dev.to/codestream/we-are-all-remote-developers-working-from-home-part-1-2od1</link>
      <guid>https://dev.to/codestream/we-are-all-remote-developers-working-from-home-part-1-2od1</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;This is the first article in a four-part series dedicated to helping software developers, managers and organizations adapt to the pandemic emergency and become all-remote. In this first article, we will focus on the basics. There are &lt;a href="https://www.google.com/search?q=working+remote+software+development+covid-19&amp;amp;oq=working+remote&amp;amp;aqs=chrome.0.69i59j69i57j0l6.6141j0j7&amp;amp;sourceid=chrome&amp;amp;ie=UTF-8"&gt;many lists&lt;/a&gt; available discussing the right toolset and the behavioral changes necessary to be an all-remote team or organization. This article is not about that. Here we will dive into the human aspects affecting all of us, and address some of the ways in which we can turn this unfortunate event into an engaging learning experience for ourselves, our team and everyone we interact with.&lt;/p&gt;

&lt;h2&gt;
  
  
  The world during the pandemic
&lt;/h2&gt;

&lt;p&gt;First, a personal note. I am 63 years old, suffer from high blood pressure, and I am scared and concerned, like everyone else who knows what’s happening. You already know that there is much we don’t know. This event will affect virtually everyone on the planet in one way or another, and many factors, including our emotional reaction to what’s happening around us, will make the situation very challenging and potentially extremely challenging, both at home and at work. We are all distracted from our business and professional obligations for good reasons, and we need to allow for a measure of distraction as there will be many moments of intense focus on the worries we are facing.&lt;/p&gt;

&lt;p&gt;In the context of work in particular, which is the general theme of this series, I urge all of us to practice extreme kindness and understanding during these difficult times. In terms of our professional activities, there will be delays, confusion, flared tempers, and a full range of emotions on display as we tackle working together remotely under these circumstances. Since we are mostly working from home, work-related stress can also spill over into our family life with no clear escape valve. Rather than inflame conflicts, it’s a good time to take a step back and diffuse situations. Just like the stock market has a fuse to avoid extreme buying and selling situations from getting out of control, we should all recognize that diffusing and restarting is the best path forward for both personal and professional outcomes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The privilege of being a software developer
&lt;/h2&gt;

&lt;p&gt;Software development is a privileged profession. Not only do we get to build magic, but we can do it from anywhere. With an Internet connection, we can stay professionally connected and productive. Programming is intellectually engaging, so it’s relatively easy to lose yourself in the problem you are trying to solve, providing both a needed distraction and a real purpose. Developers usually work as a team, so you feel like you are part of something bigger than yourself, which also helps with motivation, engagement and emotional balance. So, while we cannot set our worries aside, we can spend part of our day focused on building something that matters now and will matter in the future.&lt;/p&gt;

&lt;p&gt;Take a moment every day to be thankful for this privilege. In good times, the ability to stay home with your family while you work is a nice-to-have. In the current situation, all these amazing technologies we have been building in the last 30 years are holding us together, allowing us to stay productive, and support the creation amazing new products and services that you will be part of. What a great opportunity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every developer is now a remote developer
&lt;/h2&gt;

&lt;p&gt;At CodeStream, we have been remote since Day 1. In fact, our team has been working remotely for more than 20 years, over the course of four different startups, since before Zoom or the iPhone even existed. Because we have built a strong culture around remote, we have never felt disconnected or lonely. Because we understand that not everything about working remotely can be accomplished by using Zoom alone (by the way, we love Zoom), we have always worked extra hard at forging the bonds that sustain us during hard times.&lt;/p&gt;

&lt;p&gt;Over those 20 years we have had several hard moments, even if they do not seem that hard by comparison in light of the moment we are living through now. We have been together through deaths, divorces and illnesses, and we have always found a way to bring the human element back into the professional environment to make us stronger and more resilient as a team.&lt;/p&gt;

&lt;p&gt;This is not the time to move fast and break things. This is the time to stay focused on doing the right thing, helping others, and finding strength in our common goals.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let’s get to work
&lt;/h2&gt;

&lt;p&gt;My next post will describe in detail the way our development team is working, including tips and tricks we have learned over the years. We believe there are many aspects of communication, integration, transparency and knowledge sharing among software developers that could use some improvement, and the fact that we are all remote now is an opportunity to improve on those deficiencies. In the meantime, if you would like a preview, here is a &lt;a href="https://www.codestream.com/blog/every-developer-is-now-a-remote-developer"&gt;short post&lt;/a&gt; that you might find helpful.&lt;/p&gt;

</description>
      <category>remote</category>
      <category>team</category>
      <category>collaboration</category>
      <category>transparency</category>
    </item>
    <item>
      <title>The Connected IDE: A communication-first approach drives collaboration (Part 2)</title>
      <dc:creator>Claudio Pinkus</dc:creator>
      <pubDate>Sat, 16 May 2020 15:33:36 +0000</pubDate>
      <link>https://dev.to/codestream/the-connected-ide-a-communication-first-approach-drives-collaboration-part-2-1n10</link>
      <guid>https://dev.to/codestream/the-connected-ide-a-communication-first-approach-drives-collaboration-part-2-1n10</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In Part 1 of this series we touched on the evolution of IDE from a personal, standalone tool to a connected and networked hub of all things code. We explained how connecting your IDE to your teammates’ simplifies communication and collaboration with two specific use cases: Discussing code in general, and performing code reviews right in your IDE, eliminating the context switching and improving knowledge sharing.&lt;/p&gt;

&lt;p&gt;In this post we will expand this to additional use cases and show how the Connected IDE is the most important step towards team collaboration in a world where we are all remote developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is collaboration anyway?
&lt;/h2&gt;

&lt;p&gt;There are many flavors of collaboration platforms and tools for developers, and many permutations through extensions. In the context of making your IDE more connected, we look for collaboration to enhance velocity and value for the team. In a post updated on November 24, 2019, &lt;a href="https://dev.to/thegeoffstevens"&gt;Geoff Stevens&lt;/a&gt; writes about &lt;a href="https://dev.to/thegeoffstevens/how-to-collaborate-like-a-pro-in-vs-code-4iaj"&gt;How to collaborate like a pro in VS Code&lt;/a&gt;. Since VS Code is today the most popular modern editor, we will focus on it as an example, but the analysis applies to much of the collaboration approach out there.&lt;/p&gt;

&lt;p&gt;In the post, Geoff looks at a list of VS Code extensions that bring collaborative features into the editor. These include, among others:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Microsoft’s own &lt;a href="https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare"&gt;Live Share&lt;/a&gt; that “eliminates the friction of coding together by letting you collaboratively edit, debug, and fix code in real-time without leaving the comfort of your own VS Code setup,” according to Geoff. Live share is pair programming inside VS Code, and provides an experience that is reminiscent of screen-sharing, but specifically for developers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://codestream.com"&gt;CodeStream&lt;/a&gt;, which “allows you to comment, ask questions, and have discussions across your codebase from within VS Code.” Note that CodeStream now also allows you to perform &lt;a href="https://www.codestream.com/blog/codestream-7-0-code-reviews-in-your-ide-and-live-view"&gt;code reviews in your editor&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;a href="https://marketplace.visualstudio.com/items?itemName=gioboa.jira-plugin"&gt;Jira extension&lt;/a&gt; for VS Code gives you the ability to “view, search, and filter issues in Jira inside VS Code.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github"&gt;GitHub Pull Requests&lt;/a&gt; that helps you review and manage GitHub pull requests right inside VS Code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We believe that collaboration starts with communication between developers. Through that lens, only Live Share and CodeStream are actually delivering collaboration, while the GitHub and Jira extensions serve only to reduce friction for the individual developer by reducing context switching. We believe collaboration is a communication-first endeavor. The ability to view or reference other content inside my IDE makes it easier for me to collaborate with my team, but only in communicating am I actually explaining my intent and resolving conflicts, misunderstandings or misalignment. A communication-first approach drives velocity and code quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code needs to be a first class object in communication
&lt;/h2&gt;

&lt;p&gt;In order to reduce friction and simplify communication about code, the code itself needs to be a first class object in the communication exchange. In part 1 we discussed the difference between a Personal IDE and a Connected IDE approach to asking a question or performing a code review. Here we will present a couple of use cases that illustrate how a tool like CodeStream allows code to become a first class object because your IDE is now connected.&lt;/p&gt;

&lt;h3&gt;
  
  
  Suggesting an improvement
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Personal IDE: You come across some code that you believe could use some improvement. You don’t want to take this on as a project, nor do you want to change someone else’s code without communicating with the author. You copy and paste the code in question into Slack or MS Teams, explain the context (repo, file, line number, etc.), type the code you suggest replacing it with, and explain why you think it’s a better approach. Upon receiving your suggestion, the author needs to locate that code in their IDE, review your suggestion, get back to Slack, discuss it with you, copy and paste the final suggestion (if modified) into her editor and push it. If this happened once, perhaps the friction would be tolerable. But there is just as much friction the second time you have a suggestion, and a third.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connected IDE: You see code you believe could use some improvement. You make your suggested change in your IDE. Then you highlight the code block in question and add a comment in CodeStream such as, “is it safe to short-circuit the loop here? It would make this function much more performant”, like this:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FVg0yUM6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh3.googleusercontent.com/34bHSiJDSLgTilmVu8SUnBGDN2CJuWZ0ia3G995aHZhQoAFCTwZRUqpwu9j0CcnE2PYUAS94Tgb0ZB8YfXZEnsNL8qx2kSf_RiCQ7Q2TJi19oqOUcF8B7K7_DprKt851x4i8nd62" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FVg0yUM6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh3.googleusercontent.com/34bHSiJDSLgTilmVu8SUnBGDN2CJuWZ0ia3G995aHZhQoAFCTwZRUqpwu9j0CcnE2PYUAS94Tgb0ZB8YfXZEnsNL8qx2kSf_RiCQ7Q2TJi19oqOUcF8B7K7_DprKt851x4i8nd62" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the author gets the notification, she can just do a diff in her IDE and apply the patch if she finds it useful, like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--upY2Nxb7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh6.googleusercontent.com/Y23zrXUQU5g5gJZ7_CKUnxceK0XfuTfiuoNv8rqtvoL6fvTTfBf98Hcd3mg2kZP4I6-_fcD4tCLJx3Yc9zHi_hX-1LH0maBK1Z1Zx7WMPynbO8VBDA45lfeiF0ZYfHax921Ob0FD" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--upY2Nxb7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh6.googleusercontent.com/Y23zrXUQU5g5gJZ7_CKUnxceK0XfuTfiuoNv8rqtvoL6fvTTfBf98Hcd3mg2kZP4I6-_fcD4tCLJx3Yc9zHi_hX-1LH0maBK1Z1Zx7WMPynbO8VBDA45lfeiF0ZYfHax921Ob0FD" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Connecting related code:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Personal IDE: Let’s say you want to point out to your teammates that different parts of the code you are writing are related. Perhaps you want to indicate the part of a React component that isn’t interacting with your stylesheet in the way you would expect. You would choose a file, jira ticket, or slack thread to communicate this outside your IDE and assemble there the list of permalinks that point to those code blocks in the different files. Whenever you or anyone on your team wants to make a change, you would have to try to find that external resource with the permalinks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connected IDE: If you want to connect different parts of the code and share that information with your team, you can just make a comment on one of the codeblocks and add the different ranges in other files and even other repos that are connected to that original range, like this:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v7hC3YqA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh3.googleusercontent.com/5dSnlRbsMDd5Vdy6l0FfzCg45qBzxunpIPbjIH7W2fLNz0ejBxjZtOIK4rY634WvF8pQjxJl2qCpaoSa_JBISDCee_jNEbIz5oHHJWQXrVGrjl9irBd7fXaHDnlxou80vjp_TC4a" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v7hC3YqA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh3.googleusercontent.com/5dSnlRbsMDd5Vdy6l0FfzCg45qBzxunpIPbjIH7W2fLNz0ejBxjZtOIK4rY634WvF8pQjxJl2qCpaoSa_JBISDCee_jNEbIz5oHHJWQXrVGrjl9irBd7fXaHDnlxou80vjp_TC4a" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Connected IDE enables knowledge sharing
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://codingsans.com/"&gt;Coding Sans&lt;/a&gt; conducts a &lt;a href="https://codingsans.com/blog/software-development-trends"&gt;Development Trends Survey&lt;/a&gt; every year, and for the past two years the #1 challenge for developers is Sharing Knowledge. It’s very telling that the issue of knowledge sharing remains so challenging. The personal IDE, where each individual developer produces code remains an island detached from colleagues and teammates, so extra effort must be applied to share information about the code being produced. We already covered the fact that documentation is not common among development teams. The Connected IDE provides an opportunity to finally address knowledge sharing in an effective and ubiquitous way.&lt;/p&gt;

</description>
      <category>codereview</category>
      <category>productivity</category>
      <category>ide</category>
      <category>team</category>
    </item>
    <item>
      <title>The Connected IDE is the gateway to increased developer collaboration (Part 1)</title>
      <dc:creator>Claudio Pinkus</dc:creator>
      <pubDate>Sat, 16 May 2020 15:29:38 +0000</pubDate>
      <link>https://dev.to/codestream/the-connected-ide-is-the-gateway-to-increased-developer-collaboration-part-1-2j11</link>
      <guid>https://dev.to/codestream/the-connected-ide-is-the-gateway-to-increased-developer-collaboration-part-1-2j11</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Like the standalone PC’s of the 1980s, the personal IDE remains an island detached from the opportunity to improve collaboration for the development team and the company as a whole. A new era of connected IDEs is coming that does not require you to leave behind the IDE you love. Using modern plug-in technologies, your IDE can begin to evolve towards a truly Integrated Development Environment that will make collaboration easier while improving code quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  History
&lt;/h2&gt;

&lt;p&gt;In the beginning of the personal computer revolution, circa 1975, the IDE was invented. It was called &lt;a href="https://en.wikipedia.org/wiki/Maestro_I"&gt;Maestro I&lt;/a&gt; and it was the first “modern” development environment. The Integrated aspect of the IDE refers to the combination of a source code editor, build automation tools and a debugger. Since then, a plethora of IDEs have been developed ranging from VI and VIM to Emacs, Visual Studio, Sublime and VS Code. The term has evolved to refer both to the source code editor as a standalone tool, as well as the more complex environments that integrate multiple tools.&lt;/p&gt;

&lt;p&gt;A more modern concept of integration refers to the ability of an application to connect to another, typically developed by another entity or company. For instance, the &lt;a href="https://www.atlassian.com/software/jira/guides/expand-jira/jira-integrations"&gt;Jira Integrations page&lt;/a&gt; displays a collection of hundreds of third party applications not produced by Atlassian that connect through APIs to Jira. Let’s explore now the state of the IDE world.&lt;/p&gt;

&lt;h2&gt;
  
  
  The modern Connected IDE is taking over
&lt;/h2&gt;

&lt;p&gt;Much has changed in the last 5 years in the IDE world. When &lt;a href="https://insights.stackoverflow.com/survey/2015#tech-editor"&gt;Stackoverflow&lt;/a&gt; asked developers to select their favorite editor/IDE in 2015, these were the results (Note that you can vote for more than one editor, so totals can add up to more than 100%):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qtBCwTxN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh3.googleusercontent.com/OlIj2D_i-gmTwXsqp6bb6eHI-fm3D9VknQv1-EqHjUUOEpIYq8OJOE6aCiMYIeKLum0p6Oej3ypncMyK_4HI0mNGXVASsv0DiQXi1y15xtI1of_PMrxXNHH8ag42D4eeMh4Y_Xs2" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qtBCwTxN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh3.googleusercontent.com/OlIj2D_i-gmTwXsqp6bb6eHI-fm3D9VknQv1-EqHjUUOEpIYq8OJOE6aCiMYIeKLum0p6Oej3ypncMyK_4HI0mNGXVASsv0DiQXi1y15xtI1of_PMrxXNHH8ag42D4eeMh4Y_Xs2" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sublime and NotePad++ were leading the pack, while Atom, a product of GitHub was just emerging as the first truly extensible editor. Atom was built on &lt;a href="https://www.electronjs.org/apps/atom"&gt;Electron&lt;/a&gt;, and was touted as A hackable text editor for the 21st Century.&lt;/p&gt;

&lt;p&gt;In 2017 the state of the IDE had already changed significantly:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lR9i6iqt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh3.googleusercontent.com/wqy8-aMbKtBuXM0HmOkj0fsFWfGzhPPIZ92fIEnv3v8_eFzT4UEbaCVNio_WozlhJgQDBauK2QXyX91A4gkZV5UbEuaMb6_8B7GodEv5SfpzCHMi_LeCDFT_yZZEjiGdFeRQB74R" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lR9i6iqt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh3.googleusercontent.com/wqy8-aMbKtBuXM0HmOkj0fsFWfGzhPPIZ92fIEnv3v8_eFzT4UEbaCVNio_WozlhJgQDBauK2QXyX91A4gkZV5UbEuaMb6_8B7GodEv5SfpzCHMi_LeCDFT_yZZEjiGdFeRQB74R" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While the question itself had changed (now segmenting web/desktop/sysadmin), the top dog was now Visual Studio for both Web and Desktop development, while Atom moved up to 20% and IntelliJ to 23%. Visual Studio and IntelliJ charged for their editor, while Atom was free to use and Open Source.&lt;/p&gt;

&lt;p&gt;By 2019, the picture had changed again, now with a new leader from Microsoft:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rQp2sj_U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh6.googleusercontent.com/_pJhK18wFO8qitNTpWi1jLWayrxlvgwlCWOwLLz0fiiHDsNq_SoIWPhx-xFqhia9p8SXod8JCkb8OAr_TXanHt5YjX3H5lRcVxnFh5RW-ZrdTFVSaCinW2f0C3265vNX_ofwbI-J" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rQp2sj_U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh6.googleusercontent.com/_pJhK18wFO8qitNTpWi1jLWayrxlvgwlCWOwLLz0fiiHDsNq_SoIWPhx-xFqhia9p8SXod8JCkb8OAr_TXanHt5YjX3H5lRcVxnFh5RW-ZrdTFVSaCinW2f0C3265vNX_ofwbI-J" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Visual Studio Code, an Electron-based Open Source free editor is now the #1 IDE in the world, and it’s very extensible. Atom has fallen off and will probably continue its decline in 2020, now that GitHub (publisher of Atom) is also owned by Microsoft. All modern editors now support plug-ins, and therein lies the collaboration opportunity: The connected IDE.&lt;/p&gt;

&lt;h2&gt;
  
  
  From the Personal IDE to the Connected IDE
&lt;/h2&gt;

&lt;p&gt;Most developers today continue to code in a Personal IDE mode. When it’s time to ask a question or have someone review their code, they move it over to a different environment, outside their IDE, losing context and unnecessarily introducing friction. This is a big deal because quality and productivity suffer. At CodeStream, we have interviewed over 2,000 development teams to find out how they go about producing code. Let’s take a look at two scenarios that benefit drastically from having a connected IDE.&lt;/p&gt;

&lt;h3&gt;
  
  
  Asking a question:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Personal IDE: Before we all began working remotely, a tap on the shoulder was probably the most common way to ask a question. Now, if a developer has a question, she will copy and paste the code in question into Slack or MS Teams (or even take a picture of their screen!), explain the context (repo, file, line number, etc.), find the right person or channel to ask, and when she gets the answer, that interaction will soon scroll off the screen in an ephemeral chat stream that will not contribute to sharing knowledge within the team.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connected IDE: She can just select the code in question, comment on it (like you do in Google Docs), select who to share it with (the context is self-evident here, so no explanation needed), get the answer, and everyone on the team can now benefit from that knowledge, like this:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.codestream.com/use-cases/code-documentation"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VvUtKJUm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh6.googleusercontent.com/eEGcDG813baQEcpDnNqOwmCFceNqmHTSWlTXZopvy7UF21ZVOVQt_YIoDKh6sufEfmfddRIqqwANB05C6xK9VGtR6hzmy8xwrK19AUBuzspyNza-eoodfC7gix5l7ylwSHPTtC43" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Requesting a Code Review:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Personal IDE: Most developers use GitHub, GitLab or Bitbucket to request a code review. That is also where the reviewer performs it. It may feel like that is the right environment for this discussion but in fact, it introduces multiple points of friction that make code reviews slower and harder. 1) It takes you out of your natural coding context by moving the discussion to a web browser, where understanding code is unnecessarily difficult. Why would you want to limit the amount of visible code to just a snippet? If you need to get more context, you need to go back to your editor. And to know what’s happening, you still need a notification tool, like email or Slack. In addition, 2) It forces the author of the code to predetermine what should be reviewed by establishing the PR as the earliest possible time for a review. What if I just want some feedback on WIP or uncommitted code?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connected IDE: As your IDE is already connected to your reviewers’ IDE, the steps are simpler and shorter. First, you do not have to switch context. Your IDE knows exactly what changes you have made. Some may be ready for a formal review, others just for a quick check on general direction. Your IDE can package up every change automatically, ask you if you want to remove any changes from the package and make the request for a review to your preferred reviewers, notifying them through Slack, MS Teams or email, or even easier, just seeing a badge in your IDE letting you know that a review is awaiting. The reviewers can perform the review in their connected IDE and see exactly the state of the code in the author’s editor. The reviewer can comment, suggest, and question with full context. The review can be completed even before a PR is created. Easier and faster. Like this:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.codestream.com/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hIM-do6Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/zXO5JWlLQJbxmY7RLxUqrM0SG4nLrZTEIQmwwx0DnnOVqZGA0t36AayeFCdc6gZy7QEkHyv0L6H7vE9VhhLH3mde_Po8kb7LJdBwmmxWU1cI_NrioWKupQ199k80RrcJlvXGomwv" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  In the future, every IDE will be Connected
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.atlassian.com/blog/teamwork/what-is-company-culture"&gt;Atlassian&lt;/a&gt;, one of the world’s largest development tool companies, believes that teams are the foundational unit of the company’s culture. So strong is their belief in teams that the stock ticker for the company is in fact TEAM. But culture is only the first step in enabling teams to optimize their performance. As we will see in the next post, the Connected IDE has a big role to play in fostering a positive and productive team environment.&lt;/p&gt;

</description>
      <category>collaboration</category>
      <category>ide</category>
      <category>codereview</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Reviewing the Code Review, Part II</title>
      <dc:creator>Claudio Pinkus</dc:creator>
      <pubDate>Tue, 24 Sep 2019 17:26:36 +0000</pubDate>
      <link>https://dev.to/codestream/reviewing-the-code-review-part-ii-1b9e</link>
      <guid>https://dev.to/codestream/reviewing-the-code-review-part-ii-1b9e</guid>
      <description>&lt;p&gt;In &lt;a href="https://www.codestream.com/blog/reviewing-the-code-review-part-i"&gt;Part I&lt;/a&gt;, we discussed specific suggestions to improve code reviews using PRs, and how the methodology itself has inherent limitations.  We asked:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What if you did not need a PR to start the review?&lt;/li&gt;
&lt;li&gt;What if you could just tag and comment on any part of the code at any time?&lt;/li&gt;
&lt;li&gt;What if you could link two otherwise unrelated parts of the code to highlight a dependency or illustrate an approach?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this post we review the suggestions made by Jonathan Maltz of Yelp in his article &lt;a href="https://engineeringblog.yelp.com/2017/11/code-review-guidelines.html"&gt;Code Review Guidelines&lt;/a&gt;. They are similar to many other articles you can find on the topic, so they serve as a clear outline for this discussion.&lt;/p&gt;

&lt;h2&gt;
  
  
  A code review is a discussion
&lt;/h2&gt;

&lt;p&gt;Jonathan points to general themes that tend to improve code reviews. These are some of his key messages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Communication is key&lt;/li&gt;
&lt;li&gt;Smaller is better&lt;/li&gt;
&lt;li&gt;Make your code easy to review&lt;/li&gt;
&lt;li&gt;Code reviews are a discussion, not a dictation&lt;/li&gt;
&lt;li&gt;Time is of the Essence&lt;/li&gt;
&lt;li&gt;Review for Correctness&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that there is an overarching theme here that you can read between the lines.  The PR is in fact determining the cadence.  We are used to PRs defining what is possible. I will now suggest that there may be a better way to frame code reviews in the context of a continuous approach.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Continuous Code Review mindset
&lt;/h2&gt;

&lt;p&gt;At CodeStream, we are building the tools that allow code reviews of any portion of your code at any time without the need for a PR. We call that approach a &lt;em&gt;Continuous Code Review&lt;/em&gt; and it is ideally suited to the DevOps era. Let's look at Jonathan's suggestions in the context of this mindset.&lt;/p&gt;

&lt;p&gt;Of course, &lt;em&gt;communication is key&lt;/em&gt; when reviewing code, since the only way to clarify issues and reach alignment is to communicate.  But how are you communicating?  Are you using Slack or Microsoft Teams, cutting and pasting code snippets and hoping to clarify matters outside the context of the IDE?  Why not avoid context switching altogether and stay in your editor to communicate?  That would simplify and improve the process.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Smaller is better is&lt;/em&gt; also a way of saying that small chunks are easier to understand, process and learn from. Why not make it as small as possible?  What if you could just discuss and review any code block at any time without a PR?  That would increase effectiveness and provide guidance without any of the trappings of the PR formality.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Make your code easy to review&lt;/em&gt; means providing guidance to the reviewer in advance.  While that is desirable, it becomes less important when communication is easy in context,  If your reviewer can ask or comment on your code and you can reply quickly and without context switching, you will not have to guess what the reviewer might be unclear about.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Code reviews are a discussion, not a dictation&lt;/em&gt; means that the reviewer is providing feedback, which may just be a need for clarification instead of a suggested change.  But a good and efficient discussion requires great communication, and great communication about code cannot happen with a lot of context switching. See above.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Time is of the Essence&lt;/em&gt; refers to turning around the review to the submitter as soon as possible. The suggestion is no more than 24 hours to maintain momentum.  Sure, there are many reasons why a review could be delayed, but generally, it's because the amount of code to review is too overwhelming to just knock it out in a few minutes. In a &lt;em&gt;Continuous Code Review&lt;/em&gt; context, reviewer and reviewee would work though small chunks quickly so as to find resolution and clarity and maintain momentum. Issues can sometimes be resolved in minutes, not days.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Review for Correctness&lt;/em&gt; means making sure the code is bug-free and solves the problem at hand.  But what if you could make suggestions about any part of the code that do not need to be resolved immediately and allow the code to be merged while also providing a mechanism to track areas of concern or improvement right along the code so that anyone who works on it can be informed of those concerns and address them appropriately?&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;The Continuous Code Review mindset implies a new set of assumptions regarding what to review, where to best communicate during the review, and when to do it. Here are the takeaways.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;As you encounter code that might be improved, it's best to flag it right away. Not limited to whichever PRs might be open, but any code, at any time, on any branch, anywhere.&lt;/li&gt;
&lt;li&gt;For this approach to be practical, it's assumed that you will be in your IDE, where talking about code is easiest, and that a PR is not needed.  Otherwise, the friction just grinds the process to a halt.&lt;/li&gt;
&lt;li&gt;Lastly, reviews should happen very frequently.  As you work with the code, if you have a question, just ask it; if you see a problem, flag it; if you have a suggestion, describe it; If you have the answer to a question, offer it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CCR represents an order-of-magnitude reduction of friction for code reviews. By allowing you to review, or ask for a review of any code in your codebase without a PR, and without leaving your editor, you have the opportunity to radically improve the code review process.&lt;/p&gt;

</description>
      <category>codequality</category>
      <category>productivity</category>
      <category>codereview</category>
    </item>
    <item>
      <title>Reviewing the Code Review, Part I</title>
      <dc:creator>Claudio Pinkus</dc:creator>
      <pubDate>Thu, 08 Aug 2019 13:53:44 +0000</pubDate>
      <link>https://dev.to/codestream/reviewing-the-code-review-part-i-4apn</link>
      <guid>https://dev.to/codestream/reviewing-the-code-review-part-i-4apn</guid>
      <description>&lt;p&gt;Some of our customers are telling us that they are using CodeStream to shorten code reviews by as much as 50%.  It’s a lightweight approach, and we are trying to learn from their experience and feedback, and improve on the processes and features we offer to make those code reviews even better. CodeStream introduces the concept of a continuous code review, a light-weight, in-editor process that enables the review of any part of your codebase, at any time. Making code review continuous means you can get feedback earlier in the process as you are stubbing out functions and classes, during heavy development while you are building a new feature, immediately prior to merge as you seek feedback from your team, and importantly even for code that was merged some time ago, as you come across technical debt in your codebase. &lt;/p&gt;

&lt;h3&gt;
  
  
  What’s wrong with code reviews?
&lt;/h3&gt;

&lt;p&gt;According to Traci Lum in her article &lt;a href="https://hackernoon.com/how-to-give-and-get-better-code-reviews-e011c3cda55e"&gt;How to Give and Get Better Code Reviews&lt;/a&gt;, code reviews are among the most &lt;strong&gt;dreaded&lt;/strong&gt; activities by developers.  Developers, who typically spend much time creating, imagining, and inventing (often on their own and without interference), face an uncreative procedural judgment. She writes: “...it’s a time when you, the developer, the craftsman, the artist, present your work before a council of critics and beg them to bless your masterpiece with a thumbs-up emoji and a “LGTM.””.&lt;/p&gt;

&lt;p&gt;Code reviews are, of course, necessary to maintain code quality.  Why such dread?  What can be done to reduce it significantly? What are the benefits of a different approach? Much of what’s wrong with code reviews boils down to three elements: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;the time elapsed between code being written and code being reviewed,&lt;/li&gt;
&lt;li&gt;the context switching imposed by the very process, away from the code and into the browser or to a different context outside your IDE, and finally&lt;/li&gt;
&lt;li&gt;the fact that a typical review looks at any given code only once – it’s being readied for deployment – and does not contemplate a continuous improvement process.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In this context, let’s discuss some of the suggestions provided by Traci on how to improve the code review process, and suggest &lt;em&gt;improvements to the improvements&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Developers generally live in their IDE.  That is the place where code is written, changed, compared, etc.  The reason why code reviews are not performed in your IDE is &lt;strong&gt;an accident of timing&lt;/strong&gt;.  Had IDEs been more extensible earlier, we would have seen all the benefits of performing code reviews in context and the disjointed nature of the process might have been avoided.&lt;/p&gt;

&lt;h3&gt;
  
  
  Your IDE is the best place to discuss code
&lt;/h3&gt;

&lt;p&gt;Traci Lum’s suggestions are helpful and reasonable and they are centered on improving the PR process. Let’s summarize her recommendations while addressing potential improvements that could be made if the code review was started earlier and originated in your IDE instead of a PR.&lt;/p&gt;

&lt;p&gt;If you want to &lt;strong&gt;get&lt;/strong&gt; better code reviews, her suggestions include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linking to the GitHub issue or JIRA ticket from the body of a PR

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;What if there was no PR and you could instead generate or attach a
Jira ticket or GitHub issue to the code itself from your IDE, assign
someone to fix or review,  and have that link be permanent and
visible to any teammate perusing the code?&lt;/em&gt; &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Writing a quick summary or list of the changes, trade-offs, and
remaining todos

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;What if the summary of the changes was just an automatic report being
generated within your IDE including all the questions and concerns?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Tagging pull requests with labels, and Review your own code before you
officially put it up for review

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;What if you could tag and comment on any code block and make that
easily accessible in editor for all the devs in your team?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Annotate places where you’re especially unsure or want feedback

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;What if you could just do that at any time as you write code, even
before a PR, so that the feedback can help you avoid a dead end, thus
reducing errors and technical debt?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Tag the right people

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;What if once you select any code block in your IDE there was an
instantaneous git blame lookup to let you know who wrote or edited
that code and that person was @mentioned in your composition box
automatically?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Take a breath and internalize the reviews.

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Always good advice. What if the whole conversation was saved and accessible to both parties
(and ultimately to any dev on the team) as useful documentation that
explains how decisions were made?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to &lt;strong&gt;give&lt;/strong&gt; better code reviews, her suggestions are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask questions instead of making statements, that is, fewer WTFs

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;What if you could share a code example to illustrate a solution and
it was linked to the review automatically?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Articulate the problems (if any) and suggest alternatives &lt;/li&gt;
&lt;li&gt;Try to understand the context and the proposed solution &lt;/li&gt;
&lt;li&gt;Highlight wins &lt;em&gt;(by which she means, be positive when giving feedback)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the PR is to remain the primary place where a code review takes place, all of the steps suggested by Traci in order to improve the process would be fine.  However, if we are prepared to consider beginning the review process earlier, prior to a PR, unencumbered by the PR, the code review becomes continuous, that is, at any time, on any line of code, about any issue.&lt;/p&gt;

&lt;p&gt;In Part 2, we will explore other suggestions for improving the code review, and offer ideas on how to make things even easier, more productive, and more pleasant.&lt;/p&gt;

</description>
      <category>codequality</category>
      <category>productivity</category>
      <category>codereview</category>
    </item>
    <item>
      <title>Knowledge Sharing Leads to Developer Team Productivity</title>
      <dc:creator>Claudio Pinkus</dc:creator>
      <pubDate>Fri, 21 Jun 2019 18:46:39 +0000</pubDate>
      <link>https://dev.to/codestream/knowledge-sharing-leads-to-developer-team-productivity-44a6</link>
      <guid>https://dev.to/codestream/knowledge-sharing-leads-to-developer-team-productivity-44a6</guid>
      <description>&lt;p&gt;Companies are increasingly focusing on the software development team as a driver of productivity gains. Addressing the drivers of team productivity, as opposed to individual developer productivity, requires a different perspective and methodology.  And it starts with sharing knowledge, since the knowledge gap between different developers may lead to unnecessary drags on overall productivity, even if it makes some team members more likely to appear a lot more productive than others.&lt;/p&gt;

&lt;p&gt;First, some background on the business concerns that are accelerating the focus on the dev team. Development team performance is becoming so central to business that it’s become an important topic in boardrooms around the world. In March 2019 Morgan Stanley published a report entitled “A New Software Stack for the Digital Era” in which they describe a transition from the &lt;em&gt;Old Stack&lt;/em&gt; (think Oracle, Tibco, Old Microsoft) to the &lt;em&gt;New Stack&lt;/em&gt; represented by companies like Atlassian, PageDuty, Splunk, MongoDB, and New Microsoft.  According to the report, the New Stack represents a $50B opportunity with 22% vs. 4% CAGR when compared to Old Stack growth, driven by the wide adoption of &lt;strong&gt;DevOps&lt;/strong&gt; and &lt;strong&gt;Agile&lt;/strong&gt; methodology.  Morgan Stanley’s definition of DevOps is as “any practice, methodology or architecture that reduce or alleviate the &lt;em&gt;inefficiencies&lt;/em&gt; in the process of delivering new features and services to end customers.” &lt;/p&gt;

&lt;p&gt;From a more technical perspective, DevOps is a software development strategy that bridges the gap between the developers and the IT staff. With DevOps, organizations can release small features very quickly and incorporate the feedback they receive. This results in 1) Fewer software failures and 2) Shortened lead time between fixes – i.e. higher productivity.  For all of this to work as intended, &lt;em&gt;knowledge sharing&lt;/em&gt; is often a missing link.&lt;/p&gt;

&lt;h2&gt;
  
  
  Knowledge Sharing is Top of Mind
&lt;/h2&gt;

&lt;p&gt;According to the &lt;a href="https://codingsans.com/state-of-software-development-2019" rel="noopener noreferrer"&gt;State of Software Development&lt;/a&gt; report in 2019 by Coding Sans, the second biggest challenge tech companies are facing is knowledge sharing – right after capacity. Typically, knowledge sharing suffers when the backlog is full and the deadline is approaching. In other words, in a world where developer demand outstrips developer supply (as is the case for the foreseeable future), alleviating the inefficiencies is dependent largely on the ability of the organization to share knowledge.  &lt;/p&gt;

&lt;p&gt;The report also points to a difference between management and developer perspectives of the most significant challenges in 2019. For developers, Knowledge Sharing is the most important challenge they face at 24.57% of the respondents, up from 18.11% in 2018.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.website-files.com%2F5c3c1d73652ba045d765cdb1%2F5d0a18d60ff87c22b47a83b0_R9hmKFdY_GsjNumxuVPOba2fgOSrcjVyDPVcG3JznYpuzCjsbNJnclyWxG25J3IcjDTL4_II9IIZN9Zeaeg6e2Cu0pURRORCbk8pWpc1s3xcYyJfJ74bOK-wjtb1ac-1unWyFLQ3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.website-files.com%2F5c3c1d73652ba045d765cdb1%2F5d0a18d60ff87c22b47a83b0_R9hmKFdY_GsjNumxuVPOba2fgOSrcjVyDPVcG3JznYpuzCjsbNJnclyWxG25J3IcjDTL4_II9IIZN9Zeaeg6e2Cu0pURRORCbk8pWpc1s3xcYyJfJ74bOK-wjtb1ac-1unWyFLQ3.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If sharing knowledge is so important, how do teams tackle that fundamental challenge today? The Agile process places strong emphasis on face-to-face conversations for conveying information, but is that the same as having a comprehensive approach to sharing knowledge?  With teams distributed across many time zones, conversations are increasingly not enough. What will supplement or replace these face-to-face conversations?&lt;/p&gt;

&lt;h2&gt;
  
  
  Remote is the New Normal
&lt;/h2&gt;

&lt;p&gt;Remote is increasingly becoming commonplace among developers in organizations of every size.  According to the same report, 72.2% of developers report that remote work is allowed in their organization.&lt;br&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.website-files.com%2F5c3c1d73652ba045d765cdb1%2F5d0a18d79fd3ae2cce388e4c_-Ur2gI4E_m1iS1bqCIp4emZBaxFUcDybXIQ22AeFjVJeoL9w0mhMcgGPvTTbWweKFHkfncoCdhBtQJE-65SXvuP6wA2k6CCySPo_zNCdJU6Clru4eWwjUDUu02kP9kT2z5psB7gP.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.website-files.com%2F5c3c1d73652ba045d765cdb1%2F5d0a18d79fd3ae2cce388e4c_-Ur2gI4E_m1iS1bqCIp4emZBaxFUcDybXIQ22AeFjVJeoL9w0mhMcgGPvTTbWweKFHkfncoCdhBtQJE-65SXvuP6wA2k6CCySPo_zNCdJU6Clru4eWwjUDUu02kP9kT2z5psB7gP.png"&gt;&lt;/a&gt;&lt;br&gt;
Organizations with remote developers often turn to solutions such as Skype or Zoom that can easily replace a face-to-face conversation. A conversation in Slack or Microsoft Teams where knowledge can be shared asynchronously – and tediously when it comes to code – can also answer questions and share knowledge. However, these approaches do nothing for the team or the organization in terms of capturing and organizing that shared knowledge so that it may be easily accessible a month or a year from now. They lead instead to repeated and wasteful interactions as the same issues and concerns are raised again and again, or worse, they become barriers for new developers who are afraid to ask a simple question for fear of becoming an annoyance to more senior team members.&lt;/p&gt;

&lt;h2&gt;
  
  
  Team Productivity and Sharing Knowledge
&lt;/h2&gt;

&lt;p&gt;Developers know that there is a relationship between the team’s ability to share knowledge and its ability to be more productive – as a team.  There are different kinds of knowledge that a team can share.  The first kind, general knowledge about coding, can be conveyed in posts, papers, webinars, books, etc. and can be helpful in lifting all team members to a common understanding of the approaches and methods the team embraces. For instance, Davide de Paolo writes in his post &lt;a href="https://dev.to/dvddpl/what-makes-a-10x-developer--1k0f"&gt;What makes a 10X developer?&lt;/a&gt; that among the characteristics of a rockstar is knowledge sharing: “As soon as you learn something, try to help someone else, teach other colleagues, share your learnings. It can be giving some advice after your daily standup, making a short presentation to your team, writing a blog post or becoming a mentor on an online coding platform.”&lt;/p&gt;

&lt;p&gt;A second kind of knowledge is specific to the code itself.  It is not possible to acquire this kind of knowledge by posting a question on Stack Overflow or Quora, since only your team members might know the answer, and further, security concerns may require the code to be discussed only internally. &lt;/p&gt;

&lt;p&gt;Many developers report frustration at spending a large percentage of their time – sometimes up to 75% – trying to understand code written by someone else.  Less than 20% of developers in Stack Overflow’s 2018 survey state that they use the company’s internal documentation in trying to figure out how the code they are working on works.  In the context of team productivity, how should this kind of knowledge be shared? &lt;/p&gt;

&lt;h2&gt;
  
  
  Sharing Knowledge about Your Code
&lt;/h2&gt;

&lt;p&gt;For this second kind of knowledge to contribute to team productivity, it must meet four criteria: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It must be easily accessible at any time&lt;/li&gt;
&lt;li&gt;It must be contextual&lt;/li&gt;
&lt;li&gt;It must be persistent&lt;/li&gt;
&lt;li&gt;It must allow for interactivity that will further clarify its meaning and applicability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s time for knowledge about your code to move from isolated and disparate sources to the code itself. Knowledge in context is more easily understood. Teams must set aside notions of code that explains itself and adopt instead solutions and technologies that address the knowledge gap and lift the whole team to higher ground.  Shared knowledge then becomes a competitive advantage for the whole organization.&lt;/p&gt;

&lt;p&gt;You might think code comments might take care of this, but that is not the case.  Code comments have been used for a long time to explain how the code works, but they suffer from three major drawbacks: 1) They become stale relatively quickly as the code evolves, 2) they are not conversational, and therefore are not great for iterating around an explanation, and 3) you cannot easily ask a question using a code comment, and questions are perhaps the most important element of knowledge sharing.  That’s because whoever is explaining his or her own code does not know in advance what aspects of the code will not be easily understood by another developer.  Therefore, the ability to ask questions within the code leads to better quality and better documentation.&lt;/p&gt;

&lt;p&gt;Teams who are concerned with capacity and knowledge sharing should therefore look for solutions that meet the above four criteria and fit within their existing workflow and toolset.  Sharing knowledge within your favorite IDE should simplify conversations about code, while integrations with your preferred messaging and issue tracking software will allow developers to stay in context while notifying the whole team when new questions and answers are being created.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Team Productivity is achieved when team members share knowledge widely.  Developers already feel the pain if too little knowledge being shared and rate this as their number one concern.  Traditional face-to-face conversations can help address certain kinds of knowledge, but with remote becoming mainstream, new solutions are required that address both the immediate need and the long term need for knowledge sharing. Specific information that describes how your code works should not be divorced from the code itself, as it makes that information less usable and less understandable.  The next wave of solutions and tools for developers must address the knowledge gap and lift the whole team towards greater productivity.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>coding</category>
      <category>codereview</category>
    </item>
  </channel>
</rss>
