<?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: Assembla</title>
    <description>The latest articles on DEV Community by Assembla (@assembla).</description>
    <link>https://dev.to/assembla</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%2Forganization%2Fprofile_image%2F7534%2F5864ca92-e71b-4602-8297-684bd283b49c.png</url>
      <title>DEV Community: Assembla</title>
      <link>https://dev.to/assembla</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/assembla"/>
    <language>en</language>
    <item>
      <title>Reducing crunch and burnout in Game Dev with... DevOps</title>
      <dc:creator>Claudia Fernandes</dc:creator>
      <pubDate>Thu, 28 Sep 2023 16:54:35 +0000</pubDate>
      <link>https://dev.to/assembla/reducing-crunch-and-burnout-in-game-dev-with-devops-572k</link>
      <guid>https://dev.to/assembla/reducing-crunch-and-burnout-in-game-dev-with-devops-572k</guid>
      <description>&lt;p&gt;As the conversation around &lt;a href="https://www.bloomberg.com/news/newsletters/2022-09-09/video-game-executive-faces-backlash-over-comments-about-crunch"&gt;crunch and burnout&lt;/a&gt; in game development continues, and studios struggle to find enough &lt;a href="https://www.gamesindustry.biz/how-game-developers-can-better-respond-to-the-talent-crisis"&gt;devs and artists&lt;/a&gt;, DevOps can be a valuable tool for improving workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does DevOps look like in Game Dev?
&lt;/h2&gt;

&lt;p&gt;DevOps in game development typically takes advantage of cloud storage and computing to improve communication and collaboration among team members. It can also involve Test-Driven Development (TDD) to speed up iteration and improve development cycles. DevOps practices can be leveraged to create repeatable processes for game launches, updates, and patches.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Benefits of DevOps for Game Devs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Increased efficiency through automation&lt;/strong&gt;: Game DevOps automation can be implemented across a wide range of areas, from process workflows to automated builds and deployment. Source code management solutions provide automated security and increased performance, and allow for easy roll-back to previous versions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improved project management&lt;/strong&gt;: In a DevOps environment, developers and producers work together to break work down into smaller and more manageable chunks, improve regression testing, create emergency contingency plans, and a host of other methods to improve productivity and eliminate waste. Using a suite of reporting and task management tools gives project managers valuable insights into their teams, and real-time progression tracking through UIs that visualize task schedules can help managers improve workflows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Better scaling and less overhead&lt;/strong&gt;: In a DevOps environment, developers can quickly respond to changes in scale and adjust accordingly. Particularly for teams leveraging hosted DevOps tools, this gives smaller studios a head start with tools that can easily scale as the team grows. While an on-prem or dedicated cloud instance requires a significant resource investment, leveraging tools like &lt;a href="https://get.assembla.com/perforce"&gt;cloud-based Perforce VCS&lt;/a&gt; allows teams to stay lean and agile.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Transitioning to DevOps
&lt;/h2&gt;

&lt;p&gt;An effective transition to DevOps requires a clear understanding of your team's current needs and long-term goals. Another consideration is flexibility and support for extensions and integrations. Every studio and project is unique, so being able to choose the tools and practices that best apply to your current goals, with the ability to adapt as your needs evolve, is very powerful.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Archiving Files in Perforce (Archive Typemap)</title>
      <dc:creator>Claudia Fernandes</dc:creator>
      <pubDate>Thu, 14 Sep 2023 12:11:45 +0000</pubDate>
      <link>https://dev.to/assembla/archiving-files-in-perforce-archive-typemap-35a2</link>
      <guid>https://dev.to/assembla/archiving-files-in-perforce-archive-typemap-35a2</guid>
      <description>&lt;h2&gt;
  
  
  First, why you should archive files in Perforce
&lt;/h2&gt;

&lt;p&gt;The archive functionality in Perforce improves storage efficiency, streamlines backups, reduces network traffic, improves overall performance, space management, and scalability. These benefits contribute to a more streamlined and optimized version control workflow for development teams (usually gamedev teams). &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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgp1525ufp7hfsadtfnpl.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgp1525ufp7hfsadtfnpl.png" alt="How to establish an archive depot: use p4 depot and specify its Type as an archive"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How the Archive Typemap works
&lt;/h2&gt;

&lt;p&gt;It allows you to store older or infrequently accessed versions of files in a compressed format, which reduces the storage footprint on your server and improves overall system performance. Only the most recent and actively used files remain readily accessible, while archived files are stored separately.&lt;/p&gt;

&lt;p&gt;Most importantly, you can streamline a workflow by archiving files; you can exclude them from regular backups and focus on critical data. This reduces backup time, storage requirements, and associated costs. Archiving also enables you to restore specific files or versions as needed without restoring the entire repository.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjhiqva5s2y7zd2ewtl8.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjhiqva5s2y7zd2ewtl8.png" alt="Purge archives of specific files in the archive depot, use p4 archive -p. Optionally unmount the volume from which the archive files were purged"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How it improves system performance
&lt;/h2&gt;

&lt;p&gt;Let’s say you have files that are not accessed frequently. Archiving large files or binary assets that are not frequently accessed can significantly reduce network traffic. This way, when you sync your workspaces or update your local copies, Perforce retrieves only the necessary files, resulting in faster sync times and reduced bandwidth consumption.&lt;/p&gt;

&lt;p&gt;It’s worth noting that the archive feature helps improve overall system performance by reducing the size of the repository. Smaller repositories result in faster operations such as syncing, branching, merging, and searching, mainly when dealing with large codebases or projects with extensive histories.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcq8sm65s4iwdmay96ja0.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcq8sm65s4iwdmay96ja0.png" alt="Restore archived files by mounting the volume: use p4 verify - A to verify files before restoring them. Use p4 restore to transfer files from the archive depot to a local depot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Use it to manage disk space
&lt;/h2&gt;

&lt;p&gt;Archiving files helps you better manage disk space on your server. Whether you're using &lt;a href="https://get.assembla.com/perforce" rel="noopener noreferrer"&gt;Perforce in the cloud&lt;/a&gt; or on-prem, removing older versions or less frequently used files from the active repository frees up space for new development work and ongoing projects. This allows you to maintain a well-organized and efficient version control environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;More changelists, history, this means as your projects and repositories grow over time, archiving becomes even more valuable. It enables you to accommodate increasing file sizes and handle expanding codebases without compromising system performance or overwhelming storage capacity.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Bugs in Agile Development</title>
      <dc:creator>Claudia Fernandes</dc:creator>
      <pubDate>Wed, 13 Sep 2023 13:32:05 +0000</pubDate>
      <link>https://dev.to/assembla/how-handle-bugs-in-agile-development-2ooh</link>
      <guid>https://dev.to/assembla/how-handle-bugs-in-agile-development-2ooh</guid>
      <description>&lt;p&gt;If you're using agile methodologies, it’s likely that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You're a CTO, Development Manager, or Senior Developer, and&lt;/li&gt;
&lt;li&gt;You spend a majority of your time actually managing your development team’s workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Today, I'll share four ways that software teams can adapt current agile practices to make bug resolution easier and faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Allocate time in sprints for fixing errors and prevent bug overwhelm
&lt;/h2&gt;

&lt;p&gt;If a development team pushes code into production and relies on tests and a QA processes before deployment, it could be falling on your customers to find and report problems they encounter.&lt;/p&gt;

&lt;p&gt;Unfortunately independent research found that only 1% of users actually report issues.&lt;/p&gt;

&lt;p&gt;The best thing we can do to prevent revenue loss from errors is to have processes in place to both find and respond to errors before users even notice. How do most companies achieve this?&lt;/p&gt;

&lt;p&gt;Rigorous testing before deployment is certainly one of the best ways to maintain a company culture of producing quality code at all times.&lt;/p&gt;

&lt;p&gt;Buggy software means customers are having a poor experience – and as team leaders it’s our job to make sure that doesn’t happen.&lt;/p&gt;

&lt;p&gt;We can make the process a little easier by using our agile processes together with a continuous deployment strategy. For example, our friends at &lt;a href="https://raygun.com/"&gt;Raygun&lt;/a&gt;, discovered that “when a team gets locked into a sprint it can become much harder to recognize and fix bugs”.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;We actively avoid locking all but the lowest priority errors into sprints – rather we have time set aside inside our sprints to allow us to find errors and fix them on the spot. This way, it doesn’t affect our sprint work, and issues get addressed as soon as they come up, rather than waiting for an end user to find them.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The most important takeaway is to always keep your code deployable. By always keeping your master branch matching your production code, you can fix a bug and deploy knowing that other ongoing fixes and features aren’t creeping into a bug fix deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Improve communication between support and dev teams to keep customer relations strong
&lt;/h2&gt;

&lt;p&gt;Errors do slip through the cracks. Understanding how best to manage these errors and the customers who become affected is an important part of the error handling process.&lt;/p&gt;

&lt;p&gt;It’s not always easy for developers to replicate issues for customers so they can be fixed quickly. So sometimes errors do get lost in communication.&lt;/p&gt;

&lt;p&gt;This is especially true for last minute fixes and changes. When we ‘tweak’ code, inadvertently introducing errors becomes much more likely. Especially when there are strict deadlines to be met.&lt;/p&gt;

&lt;p&gt;Keeping your whole team looking at the bigger picture (from coding right through to how the user is experiencing the software) helps the dev team communicate with support so they can get information to customers quickly and effortlessly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get as much contextual information on errors as possible for faster fixes
&lt;/h2&gt;

&lt;p&gt;In agile methodology, traditionally bugs may appear on issue tracker backlogs or within your agile management tool as tickets/tasks.&lt;/p&gt;

&lt;p&gt;When tickets get assigned, the error can remain unsolved until deeper diagnostics on the issue are discovered.&lt;/p&gt;

&lt;p&gt;Getting full contextual information on an error is extremely difficult unless you have crash and error reporting software.&lt;/p&gt;

&lt;p&gt;Hands down, this is the biggest time saver and the best way to resolve errors in your current agile methodology.&lt;/p&gt;

&lt;p&gt;Most crash and error reporting software will pull extremely detailed information on location and damage caused by errors that slip through the testing process. Using a tool like &lt;a href="https://get.assembla.com"&gt;Assembla&lt;/a&gt; to deliver that information to a team member cuts the time in the communication process.&lt;/p&gt;

&lt;p&gt;If you have allocated time in your sprint to errors rather than locking in fixes, there’s still hard work to be done by your team. However, having the correct tools in your toolkit will greatly improve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prioritize fixes (without leaving out the non critical bugs)
&lt;/h2&gt;

&lt;p&gt;Because of the flexible nature of agile practices, lots of small, last minute changes can be introduced into a developer’s workflow.&lt;/p&gt;

&lt;p&gt;This usually means two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Common bugs make repeat appearances (meaning minor recurring bugs get through the cracks);&lt;/li&gt;
&lt;li&gt;Bug fixes can become stagnant under high priority tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unfortunately, recurring bugs and ‘minor’ fixes are still affecting end users – someone is still getting a poor experience of your application.&lt;/p&gt;

&lt;p&gt;Staying on top of the errors inside your agile workflow is critical – which comes back round to practicing test driven development.&lt;/p&gt;

&lt;p&gt;Every bug is a chance to build a test. If you find a bug, write a test! This prevents recurring bugs and keeps the culture of producing quality code in your team strong.&lt;/p&gt;

</description>
      <category>agile</category>
      <category>development</category>
      <category>productivity</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
