<?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: Duodu Randy 💻🐍</title>
    <description>The latest articles on DEV Community by Duodu Randy 💻🐍 (@iam_randyduodu).</description>
    <link>https://dev.to/iam_randyduodu</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%2F689275%2F851d4872-da64-4704-a12e-fae8b586746d.jpeg</url>
      <title>DEV Community: Duodu Randy 💻🐍</title>
      <link>https://dev.to/iam_randyduodu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/iam_randyduodu"/>
    <language>en</language>
    <item>
      <title>Why Docs-as-Code is the Key to Better Software Documentation</title>
      <dc:creator>Duodu Randy 💻🐍</dc:creator>
      <pubDate>Mon, 10 Jun 2024 14:01:33 +0000</pubDate>
      <link>https://dev.to/iam_randyduodu/why-docs-as-code-is-the-key-to-better-software-documentation-4e45</link>
      <guid>https://dev.to/iam_randyduodu/why-docs-as-code-is-the-key-to-better-software-documentation-4e45</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In the software development ecosystem, there is often friction between software developers and technical writers when it comes to creating and contributing to software documentation. One reason for this issue is that these two key players often use different methods for publishing their work. However, wouldn't it be beneficial if software developers could collaborate with technical writers in writing and managing software documentation?&lt;/p&gt;

&lt;p&gt;The answer is &lt;strong&gt;YES&lt;/strong&gt;, it is possible, but only with the &lt;strong&gt;Docs-as-Code&lt;/strong&gt; approach. To understand how this can be achieved, let's dive deeper into what the Docs-as-Code approach entails.&lt;/p&gt;

&lt;p&gt;In this post, you will learn about managing technical documentation in the same way a developer handles code, known as the Doc-as-Code (DAC) approach, and why team leaders and technical writers should adopt it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TABLE OF CONTENTS&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;
Docs-as-Code (DaC)

&lt;ul&gt;
&lt;li&gt;What is Docs-as-Code?&lt;/li&gt;
&lt;li&gt;Processes of the Docs-as-Code approach&lt;/li&gt;
&lt;li&gt;Tools used in Docs-as-Code&lt;/li&gt;
&lt;li&gt;The Benefits and Limitations of Docs-as-Code&lt;/li&gt;
&lt;li&gt;Benefits&lt;/li&gt;
&lt;li&gt;Limitations&lt;/li&gt;
&lt;/ul&gt;


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

&lt;h2&gt;
  
  
  Docs-as-Code (DaC)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F64lc7suy0vy23qp7050j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F64lc7suy0vy23qp7050j.png" alt="*Illustration of the Docs-as-Code approach*" width="696" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In technical writing, many approaches have been used by technical writers for writing, publishing, and maintaining technical documentation. Previously, technical writers used Database CMS tools such as WordPress, Hippo, and others, which did not encourage contributions from other users, such as developers, to the documentation.&lt;/p&gt;

&lt;p&gt;It was not until October 19, 2000, that &lt;a href="https://tom.preston-werner.com/"&gt;Tom Preston-Werner&lt;/a&gt;, co-founder of GitHub, had an idea about the Docs-as-Code (DaC) approach.&lt;/p&gt;

&lt;p&gt;In a blog post, &lt;a href="https://tom.preston-werner.com/2008/11/17/blogging-like-a-hacker.html"&gt;Blogging Like a Hacker&lt;/a&gt;, he states,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What would happen if I approached blogging from a software&lt;br&gt;
development perspective? What would that look like?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The question above gave birth to the &lt;strong&gt;Docs-as-Code&lt;/strong&gt; approach.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Docs-as-Code?
&lt;/h3&gt;

&lt;p&gt;Docs-as-code is an approach to writing and publishing documentation with the same tools and processes developers use to create code.&lt;br&gt;
In short, the DaC approach uses the same systems, processes, and workflows with docs as you do with programming code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Processes of the Docs-as-Code approach
&lt;/h3&gt;

&lt;p&gt;The Docs-as-Code approach comprises:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Writing reStructuredText or Markdown&lt;/strong&gt; in plain text files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developing the documentation website using an open-source static site generator&lt;/strong&gt; like &lt;a href="https://www.sphinx-doc.org/en/master/"&gt;Sphinx&lt;/a&gt; or &lt;a href="https://www.mkdocs.org/"&gt;MkDocs&lt;/a&gt; to build the files locally through the command line, rather than using a commercial program.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Working with files using a text editor&lt;/strong&gt; that supports docs-as-code, such as Visual Studio Code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keeping track of the documentation in a version control repository&lt;/strong&gt; (usually a Git repo), similar to how developers store programming code, rather than keeping docs in another space like Dropbox or a SharePoint drive. Additionally, you can store the docs in the same repository as the code itself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Working with other writers using version control systems&lt;/strong&gt; such as Git to track changes in the plain text files instead of collaborating through large content management systems or SharePoint-like check-in/check-out sites.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automating the site build process with continuous delivery&lt;/strong&gt; to build the documentation website when you update the repository, rather than manually publishing and transferring files from one place to another.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Executing validation scripts&lt;/strong&gt; to check for broken links, improper terms/styles, and formatting errors instead of spot-checking the content manually.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Managing docs using processes similar to engineers&lt;/strong&gt; (e.g., agile scrum), such as dividing documentation tasks in an issue manager (such as JIRA), allocating the issues to bi-weekly sprints, and informing stakeholders about the tasks finished (showing demos).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2zpbp67qt04jwoaid3c2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2zpbp67qt04jwoaid3c2.png" alt="*Simplified docs-as-code approach*" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Tools used in Docs-as-Code
&lt;/h4&gt;

&lt;p&gt;There are many tools that you can use with the Docs-as-Code approach. They include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plain text markup such as &lt;a href="https://docutils.sourceforge.io/docs/ref/rst/directives.html"&gt;reStructuredText&lt;/a&gt; or Markdown. We recommend you use reStructuredText. You can read this &lt;a href="https://idratherbewriting.com/2016/10/28/markdown-or-restructuredtext-or-dita-choosing-format-tech-docs/"&gt;article&lt;/a&gt; first to help decide which markup language to use in your project.&lt;/li&gt;
&lt;li&gt;Static site generators like &lt;a href="https://www.sphinx-doc.org/en/master/"&gt;Sphinx&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Text editors that support Docs-as-Code, such as &lt;a href="https://code.visualstudio.com/"&gt;Visual Studio Code&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://git-scm.com/"&gt;Git&lt;/a&gt; for version control and &lt;a href="https://github.com"&gt;GitHub&lt;/a&gt; for storing remote versions of the repository.&lt;/li&gt;
&lt;li&gt;Continuous integration and continuous delivery tools like &lt;a href="https://docs.github.com/en/actions"&gt;GitHub Actions&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://python.org/"&gt;Python&lt;/a&gt; programming language.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Benefits and Limitations of Docs-as-Code
&lt;/h3&gt;

&lt;p&gt;Using the docs-as-code approach has both merits and demerits, which you must consider before adopting it into your project. Below are some benefits and limitations of using the docs-as-code approach.&lt;/p&gt;

&lt;h4&gt;
  
  
  Benefits
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Collaboration with developers:&lt;/strong&gt; The docs-as-code approach improves collaborative efforts between developers and technical writers, enabling the provision of better and more accurate documentation. Often, writing documentation for a particular product is complex enough to necessitate involvement from developers for both writing and reviewing. As a result, implementing the docs-as-code approach encourages developers to contribute to the product documentation, allowing technical writers to focus on documenting how to use the product effectively.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Integration with other infrastructures:&lt;/strong&gt; You can incorporate the docs-as-code workflow into existing company or project infrastructures. Most companies rely on certain infrastructures to operate, and any new approach they adopt must integrate seamlessly with those existing infrastructures. The docs-as-code approach is suitable for such companies because of its flexibility, making it easy to integrate into any existing infrastructure. For example, &lt;a href="https://useblocks.com"&gt;useblocks GmbH&lt;/a&gt;, a German software solution company, has developed a &lt;a href="https://useblocks.com/sphinx-needs-enterprise/"&gt;Sphinx-Needs Enterprise&lt;/a&gt; plugin that integrates &lt;a href="https://sphinxcontrib-needs.readthedocs.io/en/latest/"&gt;Sphinx-Needs&lt;/a&gt; into company-specific tool environments. This synchronization of data between Sphinx-Needs and existing tools like Jira, Azure, GitHub, and CodeBeamer ensures the utilization of data from other existing tools with Sphinx-Needs, resulting in the generation of meaningful documentation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Contribution from the open-source community:&lt;/strong&gt; The docs-as-code approach embraces external contributions from other technical writers, subject-matter experts, and users. While not all documentation projects are public, most allow other contributors to participate in their development, aiding in the discovery and resolution of issues in the documentation. Although these contributions need to be reviewed to ensure they align with your style guide and content strategy, the input provided by the community helps enhance your documentation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Continuous Delivery:&lt;/strong&gt; In the docs-as-code approach, you can rebuild your output by simply committing and pushing content into a Git repository. The repository will detect the changes and trigger a build and publishing job, a process known as &lt;strong&gt;Continuous Delivery&lt;/strong&gt;. You can edit multiple pages and send your changes to your production repository. When the changes reach your production repository, an automatic content build and deploy process runs on your repo, quickly transferring the output files to your server. You no longer need to FTP files to a server or follow a manual deployment process. A quick update and a Git commit are all you need to change your documentation. This helps reduce the pressure of publishing and deploying docs and also encourages developers to write and contribute to the documentation. Continuous delivery is the feature that makes docs-as-code so much more effortless (with publishing) compared to other solutions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Delivery of updated and validated documentation:&lt;/strong&gt; Using the DaC approach, you can deliver up-to-date documentation to your users, enabling them to access accurate content. For example, most Sphinx documentation sites provide information about the date of the last changes. This information informs readers if they are reading outdated content or not. Additionally, we can use validation scripts in our docs-as-code approach to ensure we validate each content before publishing it. Validation scripts, such as checking broken links or verifying if the content meets the style guide, help us identify mistakes so we can correct them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Integration with A.I. tools:&lt;/strong&gt; You can use A.I. tools to assist in drafting and reviewing documentation, enhance documentation search capabilities with tools like &lt;a href="https://docsearch.algolia.com/"&gt;Algolia DocSearch&lt;/a&gt; and &lt;a href="https://typesense.org/docs/guide/docsearch.html"&gt;TypeSense DocSearch&lt;/a&gt;, and provide a support assistant chatbot like &lt;a href="https://docsbot.ai/"&gt;DocsBot AI&lt;/a&gt; that helps software users access information and troubleshoot problems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Content reuse:&lt;/strong&gt; Content reuse is the ability to include content from one document in another. Most docs-as-code static site generators support content utilization using templating languages like &lt;a href="https://palletsprojects.com/p/jinja/"&gt;Jinja&lt;/a&gt; to enable documentation writers to use conditional filtering, content reuse, variables, and more when writing documentation.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Limitations
&lt;/h4&gt;

&lt;p&gt;Here's the revised version with corrections:&lt;/p&gt;

&lt;p&gt;The following are some limitations of docs-as-code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Learning Curve:&lt;/strong&gt; The DaC approach requires writers to be familiar with software development tools like Git. Additionally, most technical writers use Markdown to write their documentation. Although the Markdown language is easy to learn and use, it lacks standards. The many flavors of Markdown syntax make it challenging to use the same Markdown text across all Markdown-supported static site generators.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of using the Markdown language, we recommend you use the &lt;a href="https://docutils.sourceforge.io/docs/ref/rst/directives.html"&gt;reStructuredText&lt;/a&gt; language.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tool Integration:&lt;/strong&gt; Integrating documentation tools into existing workflows can be tricky at times if best practices are not implemented.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cultural Shifts:&lt;/strong&gt; Both technical writers and developers must agree to the use of this approach for successful implementation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Localization:&lt;/strong&gt; Localization in docs means adapting your documentation to the needs of a particular language. Having your documentation in multiple languages is a requirement for a documentation site that aims to convey its message to a particular language and culture. Most docs-as-code static site generators do not support translation (except &lt;a href="https://www.sphinx-doc.org/en/master/"&gt;Sphinx&lt;/a&gt;). While we write most technical documentation in one language, it is appropriate if these docs-as-code tools support localization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hard to prevent Git disasters in public technical documentation:&lt;/strong&gt; Using version control systems, like Git in the docs-as-code workflow, requires some training and a code of conduct to prevent Git mistakes in public documentation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No PDFs:&lt;/strong&gt; For most technical documentation, it is necessary to generate PDF documents for the entire documentation project or single pages in the documentation. PDF is possible, just not usually an out-of-the-box feature.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can try out either the &lt;a href="https://isolveit.github.io/sphinx-pdf-generate/"&gt;Sphinx-PDF Generate&lt;/a&gt; or the &lt;a href="https://sphinx-simplepdf.readthedocs.io/"&gt;Sphinx-SimplePDF&lt;/a&gt; plugin if you are using Sphinx-Doc.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Conclusions
&lt;/h2&gt;

&lt;p&gt;In most companies, technical writers adopt the docs-as-code approach to write both external and internal technical documentation. Although there are challenges with the approach, if the right measures and practices are put in place, both the developers and technical writers will benefit hugely from adopting the docs-as-code approach to document up-to-date content for their software users.&lt;/p&gt;

&lt;p&gt;Below are some &lt;strong&gt;best practices&lt;/strong&gt; I would recommend if you want to adopt the docs-as-code approach in your projects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Early Integration:&lt;/strong&gt; Integrate the DaC approach into your documentation project early in the development process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Testing:&lt;/strong&gt; Employ automated testing tools like PyTest, linters, and formatters in CI/CD tools like GitHub Actions to ensure documentation accuracy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistent Formats:&lt;/strong&gt; Analyze and select one or more text-based formats to use in your project and provide standards on the text-based formats selected for ease of collaboration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use third-party software and collaborative tools:&lt;/strong&gt; Utilize third-party tools to ensure writers focus on writing and delivering documentation quickly and to ensure collaborative editing and review.&lt;/li&gt;
&lt;li&gt;Additionally, &lt;strong&gt;create a docs-as-code ecosystem that is open to all contributors&lt;/strong&gt;. If users contribute to the documentation, it enables a workflow where writers and users feel ownership of documentation and work together to deliver essential information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is more to building a proper &lt;strong&gt;Docs-as-Code&lt;/strong&gt; ecosystem, and I hope to find and share such knowledge with everyone. &lt;/p&gt;

&lt;p&gt;Kindly comment📝, like👍, and share🔗 this article if you find it informative.&lt;/p&gt;

</description>
      <category>documentation</category>
      <category>webdev</category>
      <category>softwaredevelopment</category>
      <category>python</category>
    </item>
    <item>
      <title>Saved by `git fetch` and GitHub</title>
      <dc:creator>Duodu Randy 💻🐍</dc:creator>
      <pubDate>Tue, 25 Jul 2023 07:18:48 +0000</pubDate>
      <link>https://dev.to/iam_randyduodu/saved-by-git-fetch-and-github-412e</link>
      <guid>https://dev.to/iam_randyduodu/saved-by-git-fetch-and-github-412e</guid>
      <description>&lt;h2&gt;
  
  
  How to Retrieve a Discarded Commit from a Closed Pull Request
&lt;/h2&gt;

&lt;p&gt;Have you ever encountered the heart-stopping moment of accidentally discarding a crucial commit during your development process? I certainly did while working on GitHub. Initially, I wanted to share my experience and knowledge on "&lt;em&gt;How to Retrieve a Discarded Commit from a Closed Pull Request&lt;/em&gt;" in this blog post. However, after discovering a powerful solution that saved the day, I knew I had to re-title it to "&lt;em&gt;Saved by &lt;code&gt;git fetch&lt;/code&gt; and GitHub&lt;/em&gt;".&lt;/p&gt;

&lt;h3&gt;
  
  
  Objective
&lt;/h3&gt;

&lt;p&gt;In this article, I'll guide you through the steps I took to recover that lost commit, sparing you from future Git stress. So let's dive in and uncover the magic behind &lt;code&gt;git fetch&lt;/code&gt; and GitHub's functionality.&lt;/p&gt;

&lt;h3&gt;
  
  
  A little backstory...☁
&lt;/h3&gt;

&lt;p&gt;Here's what happened: I synced a branch of a forked repository with changes from the main branch of the parent repository. In doing so, I accidentally discarded a crucial commit. Realizing the mistake, I began my quest to recover the commit but made several unsuccessful attempts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Salvation steps 🏆
&lt;/h3&gt;

&lt;p&gt;Despite the many trial and errors, I eventually found a solution that worked. I discovered the following steps that led to a successful retrieval:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;First, I checked the commit history of the pull request (PR) on the parent repository associated with the forked repository. There, I found this entry: "&lt;em&gt;&lt;a class="mentioned-user" href="https://dev.to/user123"&gt;@user123&lt;/a&gt; force-pushed the &lt;code&gt;Test-Feature&lt;/code&gt; branch 2 times, most recently from &lt;code&gt;q7a4399&lt;/code&gt; to &lt;code&gt;wa8a5fa&lt;/code&gt;&lt;/em&gt;".
&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F703y0em63vpym83gc78a.png" alt="PR commit history" width="800" height="53"&gt;
&lt;/li&gt;
&lt;li&gt;Armed with this information, I clicked on the &lt;code&gt;q7a4399&lt;/code&gt; commit link, which redirected me to the commit page. From there, I clicked the "&lt;em&gt;Browse Files&lt;/em&gt;" button in the top-right corner of the GitHub page, leading me to a tree page for commit &lt;code&gt;q7a4399&lt;/code&gt;.
&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyvxlcufmyy8pijnkaqao.png" alt="Commit page" width="800" height="141"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhv00tz6bni11hko7d4a.png" alt="Commit tree page" width="800" height="146"&gt;
&lt;/li&gt;
&lt;li&gt;On the commit page, I copied the fully spelt hexadecimal object name or the full commit ID from the page's URL. The hexadecimal commit ID looked like this: &lt;code&gt;q7a439948dd813bdcdd5b153effca041d197591d&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;To retrieve the lost commit, I employed the &lt;code&gt;git fetch&lt;/code&gt; command with the following syntax:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git fetch origin +q7a439948dd813bdcdd5b153effca041d197591d:Test-Feature
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The command's structure is as follows:&lt;br&gt;
&lt;code&gt;git fetch [&amp;lt;repository&amp;gt; [&amp;lt;refspec&amp;gt;...]]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;where&lt;/strong&gt;&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;repository&lt;/strong&gt;: Refers to the Git repository (in this case, "&lt;code&gt;origin&lt;/code&gt;" as a shorthand for my remote GitHub repository).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;refspec&lt;/strong&gt;: Specifies which refs to fetch and which local refs to update. The format of the parameter is an optional plus "+", followed by the source &lt;code&gt;&amp;lt;src&amp;gt;&lt;/code&gt;, followed by a colon ":", and finally, the destination ref &lt;code&gt;&amp;lt;dst&amp;gt;&lt;/code&gt;. &lt;code&gt;&amp;lt;src&amp;gt;&lt;/code&gt; typically represents a ref, but can also be a fully spelt hexadecimal object name. (E.g. &lt;code&gt;+&amp;lt;src&amp;gt;:&amp;lt;dst&amp;gt;&lt;/code&gt; =&amp;gt; &lt;code&gt;+q7a439948dd813bdcdd5b153effca041d197591d:Test-Feature&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;For more details on the &lt;code&gt;git fetch&lt;/code&gt; command, you can refer to its &lt;a href="https://git-scm.com/docs/git-fetch"&gt;documentation&lt;/a&gt; or use the "git fetch --help" command to access the manpage.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By following these steps, I successfully relieved myself from the stress caused by the lost commit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;In conclusion, Git is a powerful tool that requires continuous learning to improve our understanding and expertise. Take the time to explore its capabilities, and you'll find it invaluable in your development workflow.&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Software Developer 👨‍💻 and Package 📦 Loop 🔁</title>
      <dc:creator>Duodu Randy 💻🐍</dc:creator>
      <pubDate>Fri, 08 Oct 2021 11:34:02 +0000</pubDate>
      <link>https://dev.to/iam_randyduodu/the-software-developer-and-package-loop-57k</link>
      <guid>https://dev.to/iam_randyduodu/the-software-developer-and-package-loop-57k</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;If you are reading this, you might think about these questions. &lt;strong&gt;🤔️Should I focus on learning a software package than the programming language they built it to support? or 🤔️Should I know every detail about a software package to be employed?&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;If the questions above describe you, I think it is good you continue reading⬇️.&lt;/p&gt;

&lt;p&gt;While writing this blog, I wanted to share tips that helped me improve📈️ as a self-taught developer. &lt;/p&gt;

&lt;p&gt;One major problem that hindered my learning path📉️ was trying to memorise the software packages I used to build software apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About software packages&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In any programming language, be it Python or JavaScript, the community builds and provides software modules known as packages. These packages help you develop your applications without knowing the low-level details of how they perform them.&lt;/p&gt;

&lt;p&gt;Some of these packages have their communities that help improve the package. Packages like React, Django, just to name a few, host conferences to learn best practices of using these packages. In addition, job descriptions include these packages as requirements to be qualified for a job.&lt;/p&gt;

&lt;p&gt;Because of the points above, many entry-level software developers seem to focus🧐️ on being good at using software packages which is not appropriate. &lt;/p&gt;

&lt;p&gt;As a software developer, it is not appropriate to focus on being good at using software packages and I clarify why you don't need to below.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reasons you don’t need to memorise a software package📦️.
&lt;/h2&gt;

&lt;p&gt;To begin with, let us list my three reasons you shouldn’t focus on being good at using a software package.&lt;/p&gt;

&lt;p&gt;The reasons are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Software packages have a purpose.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They can depreciate over time⏳️.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They have documentation📑️.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now let us discuss these reasons.&lt;/p&gt;

&lt;h3&gt;
  
  
  Software packages have a purpose
&lt;/h3&gt;

&lt;p&gt;Every software package we use as developers is a tool to achieve a specific goal. For example, you can use React to build outstanding user interfaces for mobile or web applications and that will be the purpose of React for you. As a result, the important thing to know is how to apply a package to your use case.&lt;/p&gt;

&lt;h3&gt;
  
  
  Software packages can depreciate over time⏳️
&lt;/h3&gt;

&lt;p&gt;So, just like any package at the supermarket, software packages and their functions become obsolete or deprecated. This happens to either improve software packages or create new ones that better implement the purposes of the older packages. As a result, users must update their knowledge about a package. For instance, you cannot apply the way you did things in Django version 1 to how you do it in Django version 3.&lt;/p&gt;

&lt;h3&gt;
  
  
  Software packages have documentation
&lt;/h3&gt;

&lt;p&gt;Documentation is a manual written by the creator of a software package on how to use it. Although some creators do not write good documentation, your ability to read documentation can guide you on how to apply a software package. As a result, it is important to learn how to access this documentations and well use it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips on how to overcome the problem of memorising software packages 💪️
&lt;/h2&gt;

&lt;p&gt;The list below helped me to get out of the software package loop and you can try it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You must have a use case for a software package.&lt;/strong&gt; A use case will guide you on how best to learn and apply the package. For instance, a project may require you to build an E-commerce site for a large-scale business. This use case can guide you in selecting a software package like Django.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You must develop the habit of reading package documentation.&lt;/strong&gt; The habit to access and read package documentation can help you apply a software package to a use case.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You must focus on learning the programming language.&lt;/strong&gt; This is because the packages revolve around the programming language and not vice versa. For example, if you know JavaScript, you can learn and understand React or any JS package. This is because the React team built React using JS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Also, your &lt;strong&gt;knowledge about a programming language can help you contribute to improving the package&lt;/strong&gt;. For example, if you know JavaScript, you can contribute code to any JS package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You must write notes about how you used a package to solve a problem&lt;/strong&gt;. These notes can serve as a reference to you later.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In conclusion, you shouldn’t focus on learning a software package than the programming language they built it to support. Also, you shouldn’t know every detail about a software package to be employed. &lt;br&gt;
&lt;strong&gt;You being able to apply a package for a particular use case is important than memorising it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What are your thoughts about this topic? Also, what are some tips that helped you grow as a software developer? Share your answers in the comments section.&lt;/p&gt;

&lt;p&gt;If you enjoyed this blog, do well to like 💜️ and share it with friends. Also, follow my account for more interesting blogs and consider following me on &lt;a href="https://twitter.com/iam_randyduodu"&gt;Twitter🐦️&lt;/a&gt; and &lt;a href="https://www.linkedin.com/in/randy-duodu/"&gt;LinkedIn&lt;/a&gt; account for more developer-related content.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>hacktoberfest</category>
    </item>
    <item>
      <title>What did I do wrong? 😓</title>
      <dc:creator>Duodu Randy 💻🐍</dc:creator>
      <pubDate>Mon, 06 Sep 2021 01:25:09 +0000</pubDate>
      <link>https://dev.to/iam_randyduodu/what-did-i-do-wrong-431a</link>
      <guid>https://dev.to/iam_randyduodu/what-did-i-do-wrong-431a</guid>
      <description>&lt;h2&gt;
  
  
  A story about an entry-level developer's frustration
&lt;/h2&gt;

&lt;p&gt;⏰ Woke up one day 🌅 feeling good, cause meeeen! I wanna be a software developer 🧑‍💻&lt;/p&gt;

&lt;p&gt;🔎 Searched on Youtube, learnt the basics, created some demos 📁. Ooh! nice 🤩 Dev ain't bad at all&lt;/p&gt;

&lt;p&gt;Joined some boot camps 🏕️, made some dev friends 🧑‍🤝‍🧑. Oh Wow! this s**** is awesome&lt;/p&gt;

&lt;p&gt;Wanted more so I bought 💵 some courses, created a Twitter account cause TechTwitter they said was the best&lt;/p&gt;

&lt;p&gt;🤝 Followed some folks, got some tips and yeah TechTwitter is the best&lt;/p&gt;

&lt;p&gt;Kept on learning 🐱‍👓   and practising more because practice they say makes one perfect&lt;/p&gt;

&lt;p&gt;So it has been some years and I felt like yoo! I got this. Let me apply for some jobs 👔&lt;/p&gt;

&lt;p&gt;Started writing some CV's 📋✍️, created a LinkedIn 👤 account to apply for jobs related to my tech stack&lt;/p&gt;

&lt;p&gt;Applied for internship jobs, freelance jobs, entry-level jobs, like all the jobs I could think of&lt;/p&gt;

&lt;p&gt;Was at this point that I knew s**** 💩 is getting crazy&lt;/p&gt;

&lt;p&gt;Went through the mail, got plenty of rejected 🙅 applications. For some, I don't know when they are going to reply&lt;/p&gt;

&lt;p&gt;Maybe when Thanos grows a moustache 🥸&lt;/p&gt;

&lt;p&gt;Started getting frustrated 😔. Imposter syndrome kicked in. F**** I have to put food on the table, why me?&lt;/p&gt;

&lt;p&gt;DMed some folks for advice. I continued sharpening 🏋️ my skills cause I had the belief things will be fine&lt;/p&gt;

&lt;p&gt;Thought of startups so I started. It failed but I learnt. We move 🚙&lt;/p&gt;

&lt;p&gt;Volunteered to build apps for some friends and organisations to improve my experience. Some rejected and others accepted&lt;/p&gt;

&lt;p&gt;Added the volunteered work to my CV and started applying for some jobs because I spent the little I had on improving my skills&lt;/p&gt;

&lt;p&gt;Finally, I got some replies 📫 with links to the code test. Felt glad.&lt;/p&gt;

&lt;p&gt;Opened the replies 📬 and what 🤯! I get these scary questions to answer&lt;/p&gt;

&lt;p&gt;Tried my best, got some answers right, submitted my response ↩️, and hoped 🤞for the best&lt;/p&gt;

&lt;p&gt;Results came back and I failed ❌ but I realised I needed to learn hard if I want far&lt;/p&gt;

&lt;p&gt;Not having enough resources to purchase some courses and data bundles, I depended on late midnight bundles, torrents, free courses, and Youtube courses&lt;/p&gt;

&lt;p&gt;Developed a portfolio site, updated my CV, and improved my LinkedIn, GitHub, and Twitter accounts with some tips&lt;/p&gt;

&lt;p&gt;Doing all this and still, no jobs started hitting me hard 😞. All I wanted was to do what I liked while getting paid&lt;/p&gt;

&lt;p&gt;Began to doubt me 🤦, see TechTwitter as showoffs, and losing passion and love for development&lt;/p&gt;

&lt;p&gt;Some will say I was after the money but sincerely speaking who does not want to enjoy their hard labour&lt;/p&gt;

&lt;p&gt;After some time ⌛, I decided to quit. I stopped coding, stopped learning skills, and stopped focusing on my career path&lt;/p&gt;

&lt;p&gt;I called a friend to talk to and the encouragement I got made me realise that I must keep on fighting&lt;/p&gt;

&lt;p&gt;So I resumed my software development career and something 😲happened one day&lt;/p&gt;

&lt;p&gt;I got an alert and it made me happy 😃&lt;/p&gt;

&lt;p&gt;The alert was from Google Photos and it was an OTD picture. The picture was about a URL cutter ✂️⛓️ project I did during the early stages of learning development&lt;/p&gt;

&lt;p&gt;I laughed and said I have come far.&lt;/p&gt;

&lt;p&gt;So though you haven't crashed ®️ the jobs yet and you don't know what you are doing wrong 🤷 it is ok&lt;/p&gt;

&lt;h2&gt;
  
  
  👍&lt;strong&gt;YOU GOT THIS&lt;/strong&gt;💪
&lt;/h2&gt;

</description>
      <category>developer</category>
      <category>inspiration</category>
      <category>jobhunt</category>
      <category>devlife</category>
    </item>
  </channel>
</rss>
