<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://mphomagoro.com/articles</id>
    <title>Mpho Magoro on Tech Blog</title>
    <updated>2026-09-09T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://mphomagoro.com/articles"/>
    <subtitle>Mpho Magoro on Tech Blog</subtitle>
    <icon>https://mphomagoro.com/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[I Used GitHub Copilot Every Day — GH-300 Still Taught Me These Things]]></title>
        <id>https://mphomagoro.com/articles/2026/09/09/gh300-github-copilot-lessons</id>
        <link href="https://mphomagoro.com/articles/2026/09/09/gh300-github-copilot-lessons"/>
        <updated>2026-09-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[What studying for GH-300 taught me despite already using GitHub Copilot professionally.]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="GitHub Copilot and GH-300" src="https://mphomagoro.com/assets/images/hero-a1b15aabd31081d59f7cd74071051f7c.png" width="1672" height="941" class="img_ev3q"></p>
<p>I had already been using GitHub Copilot regularly before I decided to take the GH-300 certification.</p>
<p>It was part of my normal development workflow. I used it to generate code, explain unfamiliar code, refactor existing solutions, explore implementation approaches, write tests and reduce repetition in everyday engineering work.</p>
<p>So when I first looked at the GitHub Copilot certification, I had a very obvious question:</p>
<p><strong>If I already use Copilot every day, what exactly am I going to learn from an exam about it?</strong></p>
<p>It had been a while since I had completed a formal certification, and I had started to think they were not always necessary. At the same time, I also knew that certifications can be useful when they force you to think more deliberately about a tool you already use well.</p>
<p>That question turned out to be the reason the certification was useful.</p>
<p>Using a tool frequently and understanding how to use it deliberately are not the same thing.</p>
<p>GH-300 pushed me past the "I know how to prompt this tool" stage and into the larger question of how AI fits into real software engineering work: context, instructions, governance, accountability and workflow design.</p>
<p>There were plenty of topics in the exam that went beyond my day-to-day usage, and that was exactly why it was valuable.</p>
<!-- -->
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="i-thought-daily-use-meant-i-already-understood-copilot">I Thought Daily Use Meant I Already Understood Copilot<a href="https://mphomagoro.com/articles/2026/09/09/gh300-github-copilot-lessons#i-thought-daily-use-meant-i-already-understood-copilot" class="hash-link" aria-label="Direct link to I Thought Daily Use Meant I Already Understood Copilot" title="Direct link to I Thought Daily Use Meant I Already Understood Copilot" translate="no">​</a></h2>
<p>Before studying for GH-300, my use of Copilot was mostly practical.</p>
<p>I would open VS Code, describe what I wanted, review the generated code and continue working. That alone had real value. It could help me generate repetitive implementation code, write unit tests, explain unfamiliar code, suggest refactoring ideas, generate documentation and troubleshoot errors.</p>
<p>For an experienced engineer, the benefit is not always dramatic in a single interaction. It is the cumulative effect of reducing low-value typing and getting a useful first draft faster.</p>
<p>But that practical usage also creates a false sense of confidence.</p>
<p>You can become very good at using Copilot as an autocomplete engine without becoming particularly good at <strong>engineering with AI</strong>. That distinction became more important to me over time.</p>
<p>The more I used Copilot, the more I realised that my real question was not "How do I get code from the tool?" It was "How do I design an environment where the tool is more useful, more reliable and more aligned with engineering standards?"</p>
<p>That is where GH-300 started to change my thinking.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="lesson-1-productivity-isnt-the-same-as-ai-engineering">Lesson 1: Productivity Isn't the Same as AI Engineering<a href="https://mphomagoro.com/articles/2026/09/09/gh300-github-copilot-lessons#lesson-1-productivity-isnt-the-same-as-ai-engineering" class="hash-link" aria-label="Direct link to Lesson 1: Productivity Isn't the Same as AI Engineering" title="Direct link to Lesson 1: Productivity Isn't the Same as AI Engineering" translate="no">​</a></h2>
<p>One of the first gaps I noticed was between being productive and being deliberate.</p>
<p>If you use Copilot every day, it is easy to treat it like a fast code generator. You ask for a function, a test, a refactor or a sketch of an implementation, review it and move on. That can be productive, but it is not the same as engineering with AI.</p>
<p>The difference shows up when the task is more complex than "generate a method".</p>
<p>A typical workflow might look like this:</p>
<blockquote>
<p>Implement this feature.</p>
</blockquote>
<blockquote>
<p>Write tests for this class.</p>
</blockquote>
<blockquote>
<p>Refactor this method.</p>
</blockquote>
<p>These prompts can work, but they place most of the responsibility for understanding the requirements, architecture and risk on the model.</p>
<p>A stronger approach is to provide the same kinds of constraints an experienced engineer would normally consider before implementation:</p>
<ul>
<li class="">what the requirement really is;</li>
<li class="">what architectural constraints apply;</li>
<li class="">what patterns are already established in the repository;</li>
<li class="">what files should not change;</li>
<li class="">what security or compliance boundaries exist;</li>
<li class="">what testing expectations are required;</li>
<li class="">what would count as an unacceptable outcome.</li>
</ul>
<p>That is the real shift GH-300 prompted in me: the developer’s job is increasingly the design of the environment in which the AI operates, not simply the wording of the next prompt.</p>
<p>This matters because AI does not just accelerate implementation. It changes the distribution of effort across the engineering process.</p>
<p>The more capable the system becomes, the more important good requirements, clear context and sound judgement become.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="lesson-2-context-matters-more-than-clever-prompts">Lesson 2: Context Matters More Than Clever Prompts<a href="https://mphomagoro.com/articles/2026/09/09/gh300-github-copilot-lessons#lesson-2-context-matters-more-than-clever-prompts" class="hash-link" aria-label="Direct link to Lesson 2: Context Matters More Than Clever Prompts" title="Direct link to Lesson 2: Context Matters More Than Clever Prompts" translate="no">​</a></h2>
<p>One of the biggest changes in my thinking after GH-300 was that I stopped viewing Copilot purely as a prompt-and-response tool.</p>
<p>The more important capability is not raw prompting. It is <strong>context</strong>.</p>
<p>A prompt does not exist in isolation. It sits inside a larger environment: the current file, nearby code, repository context, instructions, chat history, open files, standards and the task you are trying to complete. The model is not receiving only the sentence you typed. It is reasoning from a broader set of signals.</p>
<p>That is why context engineering matters so much.</p>
<p>A useful AI-assisted workflow is not the one with the cleverest prompt. It is the one with the right context, in the right form, under the right constraints.</p>
<p>This is the point where the engineering discipline becomes more subtle.</p>
<p>You are no longer asking only, "What should I type?" You are asking, "What information should the assistant have access to, what should it be prevented from seeing, and how do I structure the environment so the output is useful?"</p>
<p>This is also where governance starts to become practical instead of abstract. The best AI workflow is not the one that exposes everything to the model. It is the one that provides the right context, under the right controls, for the right purpose.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="lesson-3-customisation-turns-copilot-into-an-engineering-tool">Lesson 3: Customisation Turns Copilot Into an Engineering Tool<a href="https://mphomagoro.com/articles/2026/09/09/gh300-github-copilot-lessons#lesson-3-customisation-turns-copilot-into-an-engineering-tool" class="hash-link" aria-label="Direct link to Lesson 3: Customisation Turns Copilot Into an Engineering Tool" title="Direct link to Lesson 3: Customisation Turns Copilot Into an Engineering Tool" translate="no">​</a></h2>
<p>Once I started thinking in terms of environment design, I began to see a very different role for Copilot.</p>
<p>Instead of repeatedly explaining the same engineering expectations over and over, those expectations can be encoded into the development environment itself: repository instructions, reusable prompt files, custom agents, specialised skills, architecture constraints, testing expectations and review workflows.</p>
<p>This changes the relationship between the developer and the assistant.</p>
<p>Instead of saying:</p>
<blockquote>
<p>Please remember we use this architecture pattern.</p>
</blockquote>
<p>every time, the objective becomes:</p>
<blockquote>
<p>How do I make that knowledge part of the environment?</p>
</blockquote>
<p>That is a much more scalable approach.</p>
<p>It also reduces friction. If the workflow already knows the standards, the engineer does not need to rediscover them in every interaction. That makes the system more consistent, more reusable and easier to govern.</p>
<p>This is where customisation becomes a real engineering capability rather than just a feature to play with.</p>
<p>The interesting part is not that Copilot can answer a question. It is that Copilot can increasingly act as a participant in a workflow that has been designed around clear rules, context and responsibility.</p>
<p>That is the beginning of AI-assisted engineering, not just AI-assisted prompting.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="lesson-4-governance-belongs-inside-the-workflow">Lesson 4: Governance Belongs Inside the Workflow<a href="https://mphomagoro.com/articles/2026/09/09/gh300-github-copilot-lessons#lesson-4-governance-belongs-inside-the-workflow" class="hash-link" aria-label="Direct link to Lesson 4: Governance Belongs Inside the Workflow" title="Direct link to Lesson 4: Governance Belongs Inside the Workflow" translate="no">​</a></h2>
<p>The governance topics in GH-300 were some of the most useful parts of the exam for me because they made AI adoption feel concrete.</p>
<p>One of the clearest examples was <strong>content exclusion</strong>. It is important to decide which repositories, folders or files should be unavailable to Copilot in certain contexts, especially when they contain confidential information, regulated data, security-sensitive logic or contractual restrictions.</p>
<p>The key question is not simply, "Can Copilot access this code?" It is also, "Should it access this code, under what conditions, and who is responsible for that decision?"</p>
<p>That is a governance question, not just a configuration question.</p>
<p>The same idea applies more broadly to responsible AI. The principles of fairness, reliability and safety, privacy and security, inclusiveness, transparency and accountability are not separate from software engineering. They are part of the quality bar for AI-assisted development.</p>
<p>Copilot can accelerate delivery, but it does not remove the need for review, validation or human judgement. In fact, as output speed increases, review quality matters even more.</p>
<p>The most useful lesson was that responsible AI starts before the prompt is written. It begins with deciding what information is allowed into the workflow and how the output will be checked before it becomes part of the system.</p>
<p>That is the organisational reality behind AI use: governance is not a final approval stage added at the end. It is a design consideration from the start.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="lesson-5-faster-coding-makes-requirements-more-important">Lesson 5: Faster Coding Makes Requirements More Important<a href="https://mphomagoro.com/articles/2026/09/09/gh300-github-copilot-lessons#lesson-5-faster-coding-makes-requirements-more-important" class="hash-link" aria-label="Direct link to Lesson 5: Faster Coding Makes Requirements More Important" title="Direct link to Lesson 5: Faster Coding Makes Requirements More Important" translate="no">​</a></h2>
<p>This was the biggest practical lesson for me.</p>
<p>Copilot can generate code quickly. That is useful when the direction is correct, and dangerous when it is not.</p>
<p>A vague requirement that previously led to a developer implementing the wrong thing over two days may now lead to the wrong implementation being produced in twenty minutes. The bottleneck has moved.</p>
<p>As implementation becomes faster, activities such as requirements analysis, architecture, constraint identification and validation become more valuable, not less.</p>
<p>This is where AI changes the engineering process in a very concrete way.</p>
<p>Before AI, a weak requirement often produced slow failure. The cost of wrong implementation was mainly the cost of time and iteration. With AI, a weak requirement can now be turned into a plausible-looking solution much faster. That can make poor decisions more expensive, not less.</p>
<p>This is one of the strongest arguments for engineering discipline in an AI-assisted world.</p>
<p>Good requirements, clear boundaries, real trade-off analysis and architecture review are not optional extras. They are the constraints that prevent speed from creating new kinds of failure.</p>
<p>AI does not remove the need for engineering judgement. It increases the value of it.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="lesson-6-ai-makes-engineering-judgement-more-valuable">Lesson 6: AI Makes Engineering Judgement More Valuable<a href="https://mphomagoro.com/articles/2026/09/09/gh300-github-copilot-lessons#lesson-6-ai-makes-engineering-judgement-more-valuable" class="hash-link" aria-label="Direct link to Lesson 6: AI Makes Engineering Judgement More Valuable" title="Direct link to Lesson 6: AI Makes Engineering Judgement More Valuable" translate="no">​</a></h2>
<p>The certification also reinforced something I already suspected from daily use: the ability to generate code is becoming less scarce, while the ability to decide whether the code should exist in the first place remains scarce.</p>
<p>An experienced engineer still has to evaluate the problem, the trade-offs and the risk.</p>
<p>That includes asking whether the proposed solution actually solves the real problem, whether there is a simpler approach, whether the implementation fits the architecture, whether the security model makes sense, whether the operational cost is acceptable and whether the generated code is maintainable.</p>
<p>Copilot can help with each of those activities, but it cannot remove accountability from the engineer.</p>
<p>The role shifts from producing every line manually to directing, constraining, evaluating and integrating the output.</p>
<p>That is what makes judgement so valuable.</p>
<p>The AI system can accelerate the work, but humans remain the ones responsible for deciding whether the output is appropriate, safe and aligned with organisational intent.</p>
<p>In many ways, AI raises the bar for good engineering judgement rather than lowering it.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-gh-300-changed-for-me">What GH-300 Changed for Me<a href="https://mphomagoro.com/articles/2026/09/09/gh300-github-copilot-lessons#what-gh-300-changed-for-me" class="hash-link" aria-label="Direct link to What GH-300 Changed for Me" title="Direct link to What GH-300 Changed for Me" translate="no">​</a></h2>
<div><img src="https://mphomagoro.com/img/articles/github-copilot-gh300/github-copilot.svg" alt="GitHub Copilot certification badge" width="180"></div>
<p>I did not take GH-300 because I needed someone to teach me how to open Copilot Chat.</p>
<p>I took it because I wanted a more structured understanding of a tool that was becoming increasingly important in my engineering workflow.</p>
<p>The certification gave me a vocabulary for concepts I had already been bumping into through practice: context engineering, prompt processing, custom instructions, reusable skills, AI-assisted review and governance-aware workflow design.</p>
<p>More importantly, it pushed me toward the next set of questions I wanted to explore.</p>
<p>I became more interested in:</p>
<ul>
<li class="">context engineering</li>
<li class="">instructions, skills and specialised agents</li>
<li class="">AI-assisted requirements and architecture analysis</li>
<li class="">AI-assisted PR review</li>
<li class="">governance-aware engineering workflows</li>
</ul>
<p>That is what made the exam valuable to me: not that it taught me a new prompt trick, but that it created a structure for thinking about the broader engineering system around AI.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="final-thoughts">Final Thoughts<a href="https://mphomagoro.com/articles/2026/09/09/gh300-github-copilot-lessons#final-thoughts" class="hash-link" aria-label="Direct link to Final Thoughts" title="Direct link to Final Thoughts" translate="no">​</a></h2>
<p>Copilot started as a way for me to write code faster. I now see it increasingly as a platform for building AI-assisted engineering workflows designed around context, constraints and human judgement.</p>
<p>AI may reduce the cost of producing code, but it does not reduce the importance of understanding the problem, choosing the right design or deciding whether the result should exist at all.</p>
<p>What happens to software engineering when producing code becomes dramatically cheaper, but understanding the right thing to build does not?</p>
<p>That is the question I want to keep exploring.</p>]]></content>
        <author>
            <name>Mpho Magoro</name>
        </author>
        <category label="AI Engineering" term="AI Engineering"/>
        <category label="GitHub Copilot" term="GitHub Copilot"/>
    </entry>
</feed>