<?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: Dominika Zając (she/her) 🇵🇱</title>
    <description>The latest articles on DEV Community by Dominika Zając (she/her) 🇵🇱 (@domizajac).</description>
    <link>https://dev.to/domizajac</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%2F817301%2F6368ed44-c1a2-472e-af8e-14c92c77a445.jpg</url>
      <title>DEV Community: Dominika Zając (she/her) 🇵🇱</title>
      <link>https://dev.to/domizajac</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/domizajac"/>
    <language>en</language>
    <item>
      <title>AI, please stop guessing a.k.a. Chrome DevTools MCP</title>
      <dc:creator>Dominika Zając (she/her) 🇵🇱</dc:creator>
      <pubDate>Sun, 12 Apr 2026 18:51:50 +0000</pubDate>
      <link>https://dev.to/domizajac/ai-please-stop-guessing-aka-chrome-devtools-mcp-570m</link>
      <guid>https://dev.to/domizajac/ai-please-stop-guessing-aka-chrome-devtools-mcp-570m</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;We used to think coding was the most difficult part of an engineer’s job. Almost every engineer I know enjoys sharing tales of spending hours debugging, wrestling with stubborn syntax, or churning out countless lines of code to meet a deadline. However, our field has changed drastically in recent months.&lt;/p&gt;

&lt;p&gt;Coding is no longer the main challenge. With AI tools like Cursor, Copilot, or ChatGPT, generating code is fast — sometimes too fast. The true bottleneck has shifted elsewhere: to understanding what the application is actually doing, reviewing code, and debugging code generated by AI agents.&lt;/p&gt;

&lt;p&gt;Let’s be honest: most of us aren’t working on shiny, clean greenfield demos. We work on real systems used by millions of people. We can’t simply rewrite the entire system overnight, our documentation is rarely perfect, and sometimes we have to maintain that one module built a decade ago. There is always something more pressing on the roadmap than finally replacing legacy components.&lt;/p&gt;

&lt;p&gt;This fact remains unchanged by AI: programmers spend significantly more time reading, extending, and fixing existing code than they do generating brand new code. Can AI assist with this, too? Yes, but…&lt;/p&gt;

&lt;h2&gt;
  
  
  Context is a key
&lt;/h2&gt;

&lt;p&gt;AI is great at generating code but struggles with accurately interpreting reality. Without specific context, it often offers generalized, sometimes irrelevant, advice, similar to an uncle at family dinner who knows everything about politics, economy and every other aspect of life. For instance, when asked about performance issues, AI correctly suggests theoretical fixes like caching or checking slow requests, but often what engineers actually need is detailed, actionable data — such as which specific request is slow or which image is oversized, not general knowledge we all typically have.&lt;/p&gt;

&lt;p&gt;To make AI truly valuable in daily engineering work, it must be grounded in reality by having access to real-time data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The view from the browser.&lt;/li&gt;
&lt;li&gt;The actual network responses.&lt;/li&gt;
&lt;li&gt;Errors reported in the console.&lt;/li&gt;
&lt;li&gt;Real-world user application behavior.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fortunately, a solution exists: the &lt;strong&gt;Chrome DevTools MCP&lt;/strong&gt;, which is designed to help.&lt;/p&gt;

&lt;h2&gt;
  
  
  Definitions
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt; acts as a “universal connector,” similar to a USB-C for AI. It allows AI agents to “plug into” actual tools and retrieve structured data. This represents a significant transformation: instead of speculating, “hallucinating,” or requiring numerous follow-up questions, the AI can fetch concrete data, inspect systems, and validate its own assumptions by themselves, shortening the feedback loop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chrome DevTools&lt;/strong&gt; is a well-known set of programming tools available in the Chrome browser. It’s totally free and developed by Google engineers. And what’s great — since September 2025 it has MCP, which means you can connect your AI agent to those powerful features and provide a way for AI to get real data about your app. All you have to do, is to add below snippet to your mcp.json file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"chrome-devtools"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"chrome-devtools-mcp@latest"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What can it actually do?
&lt;/h2&gt;

&lt;p&gt;The whole list of tools is available on the &lt;a href="https://github.com/ChromeDevTools/chrome-devtools-mcp/?tab=readme-ov-file#tools" rel="noopener noreferrer"&gt;github repository&lt;/a&gt; but tools can be grouped into below sections:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Input automation&lt;/li&gt;
&lt;li&gt;Navigation automation&lt;/li&gt;
&lt;li&gt;Emulation&lt;/li&gt;
&lt;li&gt;Performance&lt;/li&gt;
&lt;li&gt;Network&lt;/li&gt;
&lt;li&gt;Debugging&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So it can click over the page, fill some forms, emulate different color scheme, cpu throttling, network conditions, different viewport sizes, run performance analyzes (including lighthouse audits), take memory snapshots, list all network requests, get console errors, take screenshots, accessibility snapshots and much much more!&lt;/p&gt;

&lt;p&gt;Here are a few practical examples (aka: things that save your sanity):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Take screenshots&lt;/strong&gt; — AI can capture the current UI state. Why does it matter? No more “it looks broken” descriptions, easier debugging of visual issues, and it is useful for regression checks. Especially helpful when something is misaligned, invisible, or “just slightly off” (the worst kind of bug).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Navigate the app&lt;/strong&gt; — AI can open pages, click things, and simulate user flows. You don’t have to manually reproduce every bug; you can test user journeys faster or even speed up your testing by asking an AI agent to check all user flows without needing to specify all possible paths.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inspect network requests&lt;/strong&gt; — AI can analyze real status codes, payloads, and timing of API calls to, for example, instantly spot failed requests, detect slow endpoints, or debug CORS issues without guessing. As Chrome DevTools can also read console messages and take snapshots, it’s really useful when something is not visible in the UI or it’s presented incorrectly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analyze performance&lt;/strong&gt; — AI can look into performance traces of slow renders, blocking scripts, and heavy components, so you can easily find real bottlenecks and improve performance based on real data, not theoretical assumptions. It can also start a Lighthouse audit before and after a fix to ensure that the proposed change really helped. Personally, it’s my favorite feature from Chrome DevTools — playing with performance is always tricky, and allowing AI agents self-healing based on immediate feedback is much more efficient and less annoying than checking things manually and providing those data back to the agent chat.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connect to a running Chrome instance&lt;/strong&gt; — What’s more, you can also connect it to a running Chrome instance (by default it’s opening a new one), so e.g. you can check some tricky case you started to debug manually or avoid problems with trying to automate login. You can find instructions on how to do it here: &lt;a href="https://github.com/ChromeDevTools/chrome-devtools-mcp/?tab=readme-ov-file#connecting-to-a-running-chrome-instance" rel="noopener noreferrer"&gt;https://github.com/ChromeDevTools/chrome-devtools-mcp/?tab=readme-ov-file#connecting-to-a-running-chrome-instance&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Of course there are many many more cases where it’s useful. But the pattern and idea are always the same. By connecting AI to DevTools via MCP, we give it eyes, so it can see what’s happening and hands, so it can interact with the app. And that changes everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do we need it?
&lt;/h2&gt;

&lt;p&gt;Instead of playing ping-pong with an agent manually verifying their changes, you can delegate the problem to the agent, let them automatically check if the problem was solved, and auto-heal if needed. This provides much shorter feedback loops and much better results. What’s nice is that it also reduces the problem of starting the agent, going for a coffee, and… discovering an hour later that nothing happened as the agent asked for additional data and I forgot about the request (which, unfortunately, is often the case for me).&lt;/p&gt;

&lt;p&gt;So what changes for us? Thanks to having smarter and less needy agents, we can reduce time spent on chasing typos, manually debugging requests, reproducing bugs or switching between tools. And we can have more time for things which are really important like architecture decisions, improving user experience and solving real users’ problems.&lt;/p&gt;

&lt;p&gt;Or in simpler terms:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Let AI take our jobs (but only the boring parts). So we have time for things that &lt;strong&gt;really&lt;/strong&gt; matter.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>coding</category>
    </item>
    <item>
      <title>Is your repo ready for the AI Agents revolution? Checklist</title>
      <dc:creator>Dominika Zając (she/her) 🇵🇱</dc:creator>
      <pubDate>Mon, 30 Mar 2026 06:59:10 +0000</pubDate>
      <link>https://dev.to/domizajac/is-your-repo-ready-for-the-ai-agents-revolution-checklist-1a1b</link>
      <guid>https://dev.to/domizajac/is-your-repo-ready-for-the-ai-agents-revolution-checklist-1a1b</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;AI is probably the biggest buzzword around this year and last — it’s not just developers talking about it, it’s everyone! We’re seeing huge shifts in the programming world thanks to personal assistants packed with knowledge, tools that help us code, and autonomous agents. This whole thing is a mix of risks and cool opportunities. On one side, you’ve got the AI fans who are super excited about boosted productivity, getting more creative, and having millions of agents handle all the boring stuff for us. On the other, the cautious folks are raising valid concerns about data privacy, accuracy, and how this all affects our mental health. But here’s the deal: this change is happening, and we can’t hit the brakes. The best way to get ready is to jump in and be a part of it. So, I really recommend you try out, practice, and just play around with these new technologies. Keep an open mind, but also stay smart about the risks. That’s definitely what I’m aiming for!&lt;/p&gt;

&lt;p&gt;For some time now, I’ve been exploring various AI tools, frameworks, models, and approaches, primarily focusing on existing (brownfield) codebases rather than entirely new experiments. My goal is straightforward: to find ways to make my work easier and more enjoyable. I don’t expect AI to write all my code or solve complex architectural challenges. Instead, I want it to handle the tedious, repetitive tasks, such as writing tests, fixing minor issues, or migrating outdated technologies. I ran experiments across different projects — in PHP, Node, React, and Java, encompassing both legacy and newer systems. Some were successful; others were not, and I plan to share more about these experiences in future articles. However, through this process, I recognized a critical omission in all the courses, tutorials, and articles I encountered: a simple, practical checklist for preparing a codebase to work effectively with AI agents. This checklist is what I’m sharing today. While you can just check the checklist below, I highly recommend reading the full article to fully understand the context and customize it to your specific requirements.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: Please note that I am a software engineer, not an AI specialist. The AI landscape is evolving rapidly, and I acknowledge that I may have missed certain developments or information. My focus is primarily on integrations with GitHub, Cursor, and Copilot, as these are the tools I use most often. While this checklist should be generally applicable, users of different toolchains may need to make minor adaptations. This article and the following tips are based on my personal experiences and may not universally apply. I encourage discussion and feedback — if you disagree with any points or feel something is missing, my DMs are open. I anticipate that this article will require updates over time, but I believe it offers immediate value in its current form.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The high-level goal
&lt;/h2&gt;

&lt;p&gt;This checklist serves as an initial roadmap, not a definitive final product. You are encouraged to customize it to fit your project’s specific needs and development practices. However, it offers a simple guide to immediate steps for making AI agents more effective in your project. The structure is outlined below (in markdown so you can easily reuse for your projects):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# AI Readiness checklist

## Repository Hygiene

### Source Control &amp;amp; Ignore Rules
- [ ] Repository is integrated with Git (GitHub / GitLab / Bitbucket)
- [ ] `.gitignore` is added
- [ ] `.cursorignore` is added
- [ ] No secrets are hardcoded
- [ ] `.env` file is used and secrets are injected securely

### Automatic Linting &amp;amp; Formatting
- [ ] One formatter is configured and enabled
- [ ] Auto-format on save is enabled
- [ ] One linter is configured and added to the repository
- [ ] Linter runs in the CI pipeline

### IDE Setup &amp;amp; Extensions
- [ ] Modern IDE is used (Cursor / Antigravity / IntelliJ + Windsurf, etc.)
- [ ] Common shortcuts are configured (open chat, select lines, inject files, etc.)

### Standard Repository Commands
The repository provides a **single obvious command** for each action:
- [ ] Start the application
- [ ] Run all tests
- [ ] Run unit tests only
- [ ] Run e2e tests only
- [ ] Run the linter

## Testing Safety Net

### Unit and e2e rules
- [ ] Unit tests cover core functionality
- [ ] Test coverage is at least ~70%
- [ ] E2E tests cover critical user flows

### CI / CD &amp;amp; Code Review
- [ ] CI runs before every merge
- [ ] Linting, tests, and formatting are enforced in CI
- [ ] Code review is required before merge
- [ ] Merge Request (MR) template with a manual checklist exists (e.g. accessibility)
- [ ] (Optional) Automated AI-based code reviews are enabled (e.g. Copilot)
- [ ] (Optional) Automated repo checks are enabled (e.g. Jules agents)


## Grounding Documents

### Requirements &amp;amp; Intent
- [ ] High-level product specification exists in `.ai/requirements`
- [ ] Each new feature has a PRD in `.ai/requirements`
- [ ] (Optional) Out-of-scope features are documented in `.ai/requirements`

### High-Level Technical Documentation
- [ ] `architecture.md` exists in `.ai/docs`
- [ ] `tech-stack.md` exists in `.ai/docs`

### AI Rules &amp;amp; Guardrails
- [ ] `agents.md` with high-level AI rules exists in `.cursor/rules`
- [ ] Each framework/technology has its own rules file in `.cursor/rules`
- [ ] Cognitive-load reduction rules (e.g. 3x3 rule) are documented in `.cursor/rules`


## MCP Integrations

- [ ] Task management MCP (Jira / Asana, etc.) is added to `mcp.json`
- [ ] Design tooling MCP (Figma / Subframe, etc.) is added to `mcp.json`
- [ ] Database tooling MCP is added to `mcp.json`
- [ ] Browser tooling MCP (e.g. Chrome DevTools) is added to `mcp.json`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let’s talk about those sections and rules in more detail.&lt;/p&gt;

&lt;h2&gt;
  
  
  Repository hygiene
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fcuph1jitb5ifsug95007.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fcuph1jitb5ifsug95007.png" alt="" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Source control &amp;amp; ignore rules
&lt;/h3&gt;

&lt;p&gt;Before you start throwing new AI tools at your codebase, you’ve gotta make sure your repository has the right basic setup. The name of the game is safety and making sure you can easily track and roll back any changes. Seriously, these simple points are crucial:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Your Version Control Setup&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git is Key: Your code needs to be fully hooked up with Git. Also, make sure your setup (whether it’s your terminal, your IDE plugin, or whatever else) is super comfortable and efficient for you to use.&lt;/li&gt;
&lt;li&gt;Hosting Platform: You need a platform like GitHub, GitLab, or Bitbucket. Personally, I highly recommend GitHub — in the last months it’s got some great features and integrations not available in other platforms, especially when you start bringing AI agents into the mix.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Essential “Don’t Look Here” Files&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;.gitignore: Non-negotiable. Use this to stop tracking files that are unnecessary or sensitive, like your .env file with all your credentials.&lt;/li&gt;
&lt;li&gt;.cursorignore (or similar): Add this file to tell tools like semantic search, code completion (like Tab), agents, and inline edits to totally ignore certain content. Files already in .gitignore are automatically skipped, but you can:&lt;/li&gt;
&lt;li&gt;Overrule It: Use the ! symbol if you do need an agent to see a file that Git is ignoring.&lt;/li&gt;
&lt;li&gt;Speed Things Up: Add extra rules to cut out irrelevant parts of the repo. It helps the indexing go faster.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quick Tip&lt;/strong&gt;: If you use Cursor, you can set up global ignore patterns in your user settings so you don’t have to configure it for every single project.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Secret Management (Seriously, Stop Hardcoding)&lt;/strong&gt;:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No Hardcoded Secrets: This is a basic security rule, but it’s even more vital now that Large Language Models (LLMs) are learning from and analyzing our code. Back in the day, early LLMs like Copilot were sometimes proposing actual secret values just based on common variable names — a huge security risk! You must stop your secrets from being suggested to anyone else.&lt;/p&gt;

&lt;h3&gt;
  
  
  Automatic linting and formatting
&lt;/h3&gt;

&lt;p&gt;Setting up the right tools isn’t &lt;em&gt;strictly&lt;/em&gt; required, but man, does it make a difference for the developers! It seriously improves the quality of life and saves a ton of time arguing during code reviews or when new folks join the team (you know, like that never-ending tabs vs. spaces war). You totally need a formatter. Just make sure it’s set up to match your project’s style. If it auto-formats when you save, developers won’t even have to think about it — it just happens! For trickier style and quality issues, a Linter is a must-have. Get it configured, and make sure there’s one simple command to run it. And the last piece? Your CI/CD pipeline needs to lock these rules down. Any pull requests that mess up the formatting or fail the linting checks should be stopped dead before they can merge into the main branch.&lt;/p&gt;

&lt;h3&gt;
  
  
  IDE setup + extensions
&lt;/h3&gt;

&lt;p&gt;Investing time in mastering your IDE is a crucial, yet often overlooked, step — much like familiarizing yourself with a new phone/car or air-fryer. While coding in a Notepad is technically possible (I still remember when teachers taught us to code this way back at school), it’s not an efficient use of your time. Utilize a modern IDE specifically designed for AI-tooling. Tools like Cursor IDE and Antigravity are excellent options that offer significant functionality right out of the box with minimal setup. If you prefer your existing IDE (such as IntelliJ), at least install and learn a contemporary, AI-focused plugin like Windsurf.&lt;/p&gt;

&lt;p&gt;Knowing the most common shortcuts will drastically improve your efficiency. For example, in Cursor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cmd r then Cmd s: Opens the command palette&lt;/li&gt;
&lt;li&gt;Cmd i: Toggles the side panel&lt;/li&gt;
&lt;li&gt;Cmd e: Toggles the agent layout&lt;/li&gt;
&lt;li&gt;Cmd Shift L (with code selected): Selects the highlighted code as context for the chat&lt;/li&gt;
&lt;li&gt;@: Selects a file as input&lt;/li&gt;
&lt;li&gt;/: Runs a shortcut command within the chat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sharpen Your Axe: Think of preparing your workspace as a reasonable investment to maximize productivity.&lt;/p&gt;

&lt;h3&gt;
  
  
  The repository provides a single obvious command for each action
&lt;/h3&gt;

&lt;p&gt;Having too many options, like when you’re shopping or picking a restaurant, can actually freeze you up, turning simple decisions into a major time sink. You see the same problem in a ton of software projects: too many settings and options. They’re great for the “power users,” sure, but they’re a total headache for the average person who just needs the standard setup. To make sure your code repository is easy for an AI Agent to use and welcoming to new developers, you’ve got to keep it from getting crazy complicated. It’s fine to keep the deep configuration options for the advanced folks, but you absolutely must provide a simple, single-command way to run the most common, basic stuff. This straightforward approach will be a huge win for both Large Language Models (LLMs) and junior engineers just getting started with your code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Must-Have One-Command Tasks&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start the whole app&lt;/li&gt;
&lt;li&gt;Run every test&lt;/li&gt;
&lt;li&gt;Run just the unit tests&lt;/li&gt;
&lt;li&gt;Run only the end-to-end (e2e) tests&lt;/li&gt;
&lt;li&gt;Run the linter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These commands should be front-and-center in your README and included in the usual spots — like the scripts section in the package.json for any TypeScript/JavaScript project. Cutting down on confusion is key to a smooth start for everyone: new engineers and AI tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing safety net
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F37ptxrxloykttsysn6x7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F37ptxrxloykttsysn6x7.png" alt="" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To get your repository ready for AI agents, after the initial setup, you should really focus on building a solid testing safety net so you don’t accidentally break your application’s logic. Trust me, you really want to throw down comprehensive tests before you dive into any major refactoring or logic changes to guard your code. This safety net keeps unexpected failures from popping up, especially those caused by “improvements” or changes from your shiny new AI agents. Don’t just cross your fingers; never assume code is too simple to fail, or that developers will manually check things after every agent run. Make sure you get super-fast feedback — tests are the shortest loop you can get, letting the agent quickly fix itself if it slips up and introduces a bug. Keep that code quality high by running these tests in your CI/CD pipeline. This is a must-do to stop buggy code from sneaking into production. Plus, well-written test cases are actually awesome documentation for both your human engineers and the LLMs.&lt;/p&gt;

&lt;p&gt;While automating is key, let’s be real — you can’t automate everything. For those tricky bits, set up a clear manual process instead of just relying on “everyone knows this” or a gut feeling. Make code reviews mandatory by requiring approval from another team member (you can set this up in Github). Give them review templates with checklists for things you can’t automate (like more advanced accessibility checks). Automate all the grunt work you can to maximize efficiency so your human reviewers can focus their brainpower on the critical, nuanced stuff, not nitpicking a missing comma. Oh, and definitely use AI pre-checks! Tools like Copilot’s automatic code review or Jules’ scheduled regular checks are an easy, cheap way to get an extra set of eyes, which is super helpful, especially for smaller teams.&lt;/p&gt;

&lt;h3&gt;
  
  
  Grounding documents
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fpoaqp3lmdmtlnvh49e7q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fpoaqp3lmdmtlnvh49e7q.png" alt="" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
AI agents are quickly moving past their initial “junior engineer” phase — they’re getting way smarter and more capable. The thing is, their training is based on tons of global data, so they don’t know the ins and outs of your specific app or tech stack yet. To connect their general expertise with your specific world, you need to introduce grounding documents.&lt;/p&gt;

&lt;h3&gt;
  
  
  Requirements &amp;amp; Intent
&lt;/h3&gt;

&lt;p&gt;If you’re wondering where to put documents about your product’s logic, the .ai/requirements folder, usually right at the top of your repository, is a great spot. It’s not a super-official standard, but it works well for keeping a high-level product spec. This spec should clearly explain what the app can do, and just as important, what’s definitely not going to be included (out-of-scope). Seriously, listing those excluded things, especially when you have to cut scope because of time or resources, has been super helpful.&lt;/p&gt;

&lt;p&gt;For those of you into &lt;a href="https://github.com/github/spec-kit/blob/main/spec-driven.md" rel="noopener noreferrer"&gt;spec-driven development&lt;/a&gt;, this is also the perfect home for your Product Requirement Documents (PRDs). PRDs should get into the nitty-gritty of every feature and function. They basically turn the product manager’s big-picture idea into actual code and keep the documentation handy. PRDs shine brightest in “greenfield” projects (brand new repositories). But if you’re dealing with an existing, “brownfield” project, a mixed approach is the way to go: keep a high-level doc for all the stuff that’s already solid, then use good PRD practices for new things, like fresh features or big code migrations to ditch old systems. This hybrid strategy works pretty well for me (at least for now 😛).&lt;/p&gt;

&lt;h3&gt;
  
  
  High-level tech documentation
&lt;/h3&gt;

&lt;p&gt;These two files I propose you to add in the repo are basically the high-level, technical rundown of what the project is all about.&lt;/p&gt;

&lt;h4&gt;
  
  
  architecture.md
&lt;/h4&gt;

&lt;p&gt;First up is architecture.md. Keep this one short, like max two pages. It sketches out the project’s architecture, and you can toss in links to more detailed stuff if needed. Right now, I stick it in the .ai/docs folder at the root of the repo, but honestly, I don’t know if that’s standard practice or not. Why architecture.md is useful? It’s the main reference point for AI agents when they’re tackling huge jobs, like moving everything over to a new technology. It’s super helpful for getting new engineers up to speed fast. It’s essential for showing exactly how data moves through the whole application.&lt;/p&gt;

&lt;h4&gt;
  
  
  tech-stack.md
&lt;/h4&gt;

&lt;p&gt;The second document I think we should have is tech-stack.md. This is just a list of all the tools and frameworks the app uses. It stops AI agents from “hallucinating” or randomly adding stuff we don’t need (like bringing in a new unit testing library) by nudging them to use what’s already there. It helps make sure new code follows our chosen solutions, especially during migrations, although we can also manage this with those cursor rules files (more on those later).&lt;/p&gt;

&lt;h2&gt;
  
  
  AI rules and guardrails
&lt;/h2&gt;

&lt;p&gt;While previous sections can be useful also in standard development, this one is strictly connected with AI. There are special techniques to improve accuracy, reduce time needed for changes, help with context window problems and ensure that AI-generated code fits your best practices and conventions.&lt;/p&gt;

&lt;h3&gt;
  
  
  agents.md
&lt;/h3&gt;

&lt;p&gt;First of them is an AGENTS.md file, which serves as a readme specifically for AI agents. This is an open, simple format designed to guide coding agents, with various examples available on their dedicated webpage. You should place this file in the root directory of your repository. For monorepos, it should also be included in the root of subfolders. The AGENTS.md file should contain essential information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build and test commands.&lt;/li&gt;
&lt;li&gt;Code style guidelines.&lt;/li&gt;
&lt;li&gt;Testing instructions.&lt;/li&gt;
&lt;li&gt;A high-level overview of the project.
My additional tip is to not overfocus on creating this file perfect at the first run. Start with a working version and improve it gradually — you can always update the file later.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cursor rules
&lt;/h3&gt;

&lt;p&gt;I understand that not everyone finds “Cursor rules” appealing, but I personally consider them quite valuable. Cursor rules are concise markdown files, ideally under 500 lines, located in the .cursor/rules folder. They serve to provide agents with additional context about specific frameworks, technologies, or areas, you can also add some good and bad examples of given rule there. For example, a rule could mandate the use of functional components in React or enforce your internal design system. Another rule might define what should typically be covered in unit tests and what mocking strategies to employ. You should continuously refine these files. After extended sessions with an agent, prompt it to improve the rules, adding more context relevant to your objectives. The agent finds and uses these rules automatically, so you don’t need to add them specifically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cognitive load rules
&lt;/h3&gt;

&lt;p&gt;This section was added to my personal workflows after completing the 10xDevs course by Przeprogramowani (hello, Przemek and Marcin!). I realized that while I was focused on improving AI performance, I neglected the importance of managing my own cognitive load, overfocusing on helping machines instead. Dealing with detailed change tracking, debugging, or reviewing hundreds of lines of code is exhausting. You can significantly ease this burden by establishing rules for the AI agent on when it should pause and ask for your review. This approach allows you to understand changes and adjust the code more frequently. A practical example is the 3x3 approach: instruct the agent to implement a maximum of three steps from the plan, briefly summarize the work done, and then propose the next three steps. While Cursor’s built-in agents have recently started doing something similar, it lacks predictability (yet?). To tailor this interaction to your needs, you should define a specific rule for it. These rule files can contain various other tips for collaboration. Simply consider your preferred way of communicating with the agent and ask them to follow those preferences in the rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  MCPs
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F6w1vi73vqmdiuu2dr59a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F6w1vi73vqmdiuu2dr59a.png" alt="" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Model Context Protocol (MCP) is an open-source standard designed to connect AI applications with external systems, often likened to the simplicity of a USB-C connection — a “one-fits-all” solution that eliminates the need for special converters. You can learn more here: &lt;a href="https://modelcontextprotocol.io/docs/getting-started/intro" rel="noopener noreferrer"&gt;https://modelcontextprotocol.io/docs/getting-started/intro&lt;/a&gt;. Its primary benefit is enabling AI applications to connect to data sources and perform tasks, essentially giving the Large Language Model (LLM) “hands.” This means the AI can move beyond just suggesting or proposing actions to actually carrying them out and learning from the results. This capability leads to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improved accuracy due to better context for the LLM.&lt;/li&gt;
&lt;li&gt;Reduced development time.&lt;/li&gt;
&lt;li&gt;Simplified workflows, especially when multiple tools are involved.&lt;/li&gt;
&lt;li&gt;Getting started is very easy, typically requiring only a few lines of code in your mcp.json file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While this area is rapidly evolving, a general approach is recommended. In my view, you will likely need MCP integration for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Task management tools&lt;/li&gt;
&lt;li&gt;Design tooling&lt;/li&gt;
&lt;li&gt;Database tooling&lt;/li&gt;
&lt;li&gt;Browser tooling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your specific needs may vary — you might require fewer or different tools, especially if you specialize in a certain area. How to find good MCP candidates? Validate your existing working flows. Ask yourself: which tools do you use most often? What common tasks do you perform? What actions currently require you to stop the agent’s work, perform an action manually, and then paste the results back into the agent window to continue? These manual steps are excellent candidates for MCP integration. Given current trends, it’s highly likely that “there should be an MCP for that!”&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media2.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%2Fi9bap76038unxspqg5s8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fi9bap76038unxspqg5s8.png" alt="" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This article is long, personal and opinionated. However, I hope it will help you build a “framework” to maximalize benefits from using AI-agents in your project. You absolutely don’t have to agree with everything here, so feel free to read through, think critically, and adjust these ideas to fit what your project actually needs.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Plans are worthless, but planning is everything.”&lt;br&gt;
~Dwight D. Eisenhower&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Remember that famous Eisenhower quote, &lt;em&gt;“Plans are worthless, but planning is everything.”&lt;/em&gt; Take some time to prep before you jump into “vibe-coding” and just throw random changes into the repo. A little foresight goes a long way toward avoiding huge messes, bad changes, and flat-out wrong calls. Your code, your teammates, and future-you will seriously appreciate the effort.&lt;/p&gt;

&lt;p&gt;P.S. If you got something good out of this, please think about sharing it or dropping a clap/comment below to help other people find it. Thanks!&lt;/p&gt;

&lt;p&gt;P.S.2 All pictures used in the article were generated using ChatGPT.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Can AI debug my AI-built web app? AI tools in Chrome DevTools</title>
      <dc:creator>Dominika Zając (she/her) 🇵🇱</dc:creator>
      <pubDate>Tue, 12 Aug 2025 05:20:01 +0000</pubDate>
      <link>https://dev.to/domizajac/can-ai-debug-my-ai-built-web-app-ai-tools-in-chrome-devtools-473h</link>
      <guid>https://dev.to/domizajac/can-ai-debug-my-ai-built-web-app-ai-tools-in-chrome-devtools-473h</guid>
      <description>&lt;h1&gt;
  
  
  Intro
&lt;/h1&gt;

&lt;p&gt;AI is undoubtedly transforming our industry, and the words "artificial intelligence" have been on everyone's lips over the last year. Thanks to tools like Claude, ChatGPT, and Firebase Studio, not only programmers, but also people not directly involved in programming, such as my English teacher friend, a hairdresser, or a musician, can create applications. What happens, however, when an application doesn't quite work as we'd like, and our favorite AI assistant throws its hands up and refuses to help, despite being fed with more tokens? That's when a human with debugging skills must step in. In my personal opinion, these skills will be the most useful and indispensable in the future. The more code AI writes for us, the more important it becomes to have skills in reading comprehension, tracking changes, debugging, and fixing problems. Interestingly, even here, AI can prove to be useful!&lt;/p&gt;

&lt;h1&gt;
  
  
  AI features in Chrome DevTools
&lt;/h1&gt;

&lt;p&gt;I don't think I'll surprise anyone who has ever worked with me, listened to my presentations, or read my articles by saying that I'm a big fan of Chrome DevTools – free developer tools built into the Chrome browser. You don't need to install them, they offer many possibilities, and they help me in my daily work almost every day. In previous articles, I wrote about lesser-known features like &lt;a href="https://dev.to/domizajac/check-without-installing-any-tools-how-your-webpage-looks-like-for-people-with-vision-deficiencies-1dol"&gt;emulating vision deficiencies&lt;/a&gt;, &lt;a href="https://dev.to/domizajac/how-to-generate-css-overview-report-on-your-page-1eh"&gt;generating CSS Overview&lt;/a&gt;, &lt;a href="https://dev.to/domizajac/how-to-easily-record-replay-and-measure-user-flow-on-your-webpage-using-only-the-chrome-devtools-231e"&gt;recording and replaying flows&lt;/a&gt; or &lt;a href="https://dev.to/this-is-learning/can-it-work-faster-aka-how-to-use-chrome-devtools-to-improve-your-webpage-performance-5689"&gt;things related to improving performance&lt;/a&gt;. In this article, I would like to focus on something else – AI features.&lt;/p&gt;

&lt;h1&gt;
  
  
  Overview
&lt;/h1&gt;

&lt;p&gt;For some time now, Gemini has been integrated and built into Chrome DevTools. It's currently available in the Console, Styles, Performance, and Network tabs, but I wouldn't be surprised if they add more. In a nutshell, the new capabilities allow you to chat with Gemini, analyze the page, and suggest improvements. This is turned off by default because, like any AI solution, it can of course suggest incorrect things. Importantly, the data we enter can be used to train the model, so it's worth thinking before sharing personal or sensitive data.&lt;/p&gt;

&lt;h1&gt;
  
  
  How to setup your toolbox
&lt;/h1&gt;

&lt;p&gt;To enable AI features in Chrome DevTools, you must manually activate them as they are not enabled by default. Users need to be at least 18 years old, located in a supported country, and use Chrome DevTools in English. A stable version of Chrome is sufficient - the Canary version is not required. Navigate to Chrome DevTools &amp;gt; Settings &amp;gt; AI Innovations. Here, you'll find 3 options: to enable Console Insights, AI Assistance and Auto annotations. Simply enable the option you want to use (I recommend all of them).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fhgwbfv4wvg3hzklfuejz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fhgwbfv4wvg3hzklfuejz.png" alt="AI innovation settings in Chrome DevTools. You can see info with things to consider and 3 options able to enable: Console Insights, AI assistance and Auto annotations"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Console Insights
&lt;/h2&gt;

&lt;p&gt;It’s a simple but powerful feature. When an error appears in the Console, AI can help understand it and suggest corrections. Just hover over the error and click the lightbulb icon, which expands into an “Understand this error” button. After a few seconds of analyzing the error and the page's code, Gemini will explain the problem, suggest ways to check it, and offer a solution. There’s also a TLDR option for those who prefer the short version. At the bottom, you’ll find a summary of the data used for the analysis. A useful feature is also the Google search button, for when AI can't find a solution. Even if the tool doesn't always provide an ideal solution, in my experience it's almost always a good first step to summarize the problem, understand what's wrong, and what debugging options are available. It's also helpful when there are junior developers on the team – they can quickly learn stuff. I definitely recommend trying it next time you see a scary red message in the Console.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F2imqprt3gx5arl8z1xgr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F2imqprt3gx5arl8z1xgr.png" alt="Screenshot with example explanation of 404 error in Console"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Styling assistant
&lt;/h2&gt;

&lt;p&gt;Who hasn't struggled with CSS? Even a small change can often cause a cascade of problems. And it's even worse when an AI assistant wrote the CSS, and now you have to guess what it was thinking! Luckily, AI features in Chrome DevTools can help. You can right-click on any element in the Elements tab and find the "Ask AI" option. Interestingly, once the conversation opens, you can also add a screenshot using the "Take screenshot" option (the camera icon). This lets you start a conversation with Gemini and ask for help – even with tough things like centering an image. Gemini is helpful with layout and positioning issues, element visibility, styling, box model problems, CSS cascade, and much more. It can even override your styles in Chrome to preview changes, so you can easily test them. If you have a workspace folder connected, changes will also be saved there after using the "Apply to workspace" option. It has context of the webpage, so it's great for finding and fixing problematic spots.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fuewued8a4s0h78xdex5p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fuewued8a4s0h78xdex5p.png" alt="Screenshot of Elements tab in Chrome DevTools with menu visible after right-clicking given element. Ask AI option is selected"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  AI in Network tab
&lt;/h2&gt;

&lt;p&gt;Sometimes we hit snags with specific requests – maybe it's taking too long, or it's returning some weird code we don't recognize. The cool thing is, when you spot it in the network tab, you can just right-click and hit "ask AI." That opens up a chat with Gemini, and it already knows all about that particular request. Since you're the one giving it prompts, you can get pretty creative with how you use it. A super common scenario would be asking how to make that request more efficient. It's really handy for getting a quick initial look at what might be going wrong and figuring out next steps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F49f7luvsau3kpj2nkof2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F49f7luvsau3kpj2nkof2.png" alt="Screenshot showing AI Assistance in Network panel"&gt;&lt;/a&gt;&lt;/p&gt;
This yellow button close to the request name is another entry point to open AI assistance



&lt;h2&gt;
  
  
  AI in Performance tab
&lt;/h2&gt;

&lt;p&gt;Performance is a huge topic, and there's almost always something you can improve. So it's worth checking out what AI has to say, even if you're quite happy with your site's results. In Chrome DevTools, you should first create a profile – either automatically on reload or by recording it yourself – and then chat about what was recorded in that profile. Personally, I usually ask about specific entries in the performance trace to better understand the details of a given item, but of course, we can also ask about the whole trace view and, for example, ask for an initial selection of areas for deeper analysis. We can also go to AI from the Insights tab as well if we want to learn more about them or expand on the suggestions made there. Very generic entries like "how to improve performance" might give you some pointers, but the magic happens when you want to work on a deeper level.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Ffe1igqgo52thexend6v2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ffe1igqgo52thexend6v2.png" alt="Screenshot showing Ask AI option in Performance Insights details"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is also a small but nice AI feature useful when debugging requests - generating labels for events in Performance tab. If you struggle with finding good naming (which is the one of the most difficult things in programming, right?), you can double-click on given item in Main view in Perfomance report and autogenerate it. Small but nice improvement!&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/K4LzrYakEgI"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  AI in Sources tab
&lt;/h2&gt;

&lt;p&gt;Honestly, I don't use this mode much, but it's still worth mentioning. In Sources, you can right-click and select "Ask AI" to prompt within the context of a given file. You can ask it to analyze the file, change logic, generate a snippet, etc. Personally, I prefer to do these things from my IDE, but I believe it could be useful if, for example, an extra package gives you a weird file and you want to understand it better, you need to check something quickly, or for some reason you don't have direct access to the source code. It's not a game-changer for me, but maybe you'll find some cool use for it – if so, let me know!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F2lrc6ym6nc3hxatbdyg1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F2lrc6ym6nc3hxatbdyg1.png" alt="Screenshot showing options visible in Sources after right-click on the file, Ask AI is highlighted one"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;This article shows off how much easier debugging can be when you use AI tools. These tools are super handy already and are only going to get better. The AI in the Styling tab, for example, has been a huge help for me with tricky problems. Adding these AI-powered tools to your set of skills is a smart move, because debugging is only going to get more complex. By letting AI take care of annoying stuff like finding typos or double-checking syntax, we can &lt;strong&gt;focus on what's really important: providing value to our users&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Jules - The AI Agent I'd Happily Delegate My Least Favorite Tasks To</title>
      <dc:creator>Dominika Zając (she/her) 🇵🇱</dc:creator>
      <pubDate>Tue, 15 Jul 2025 07:30:18 +0000</pubDate>
      <link>https://dev.to/domizajac/jules-the-ai-agent-id-happily-delegate-my-least-favorite-tasks-to-23k3</link>
      <guid>https://dev.to/domizajac/jules-the-ai-agent-id-happily-delegate-my-least-favorite-tasks-to-23k3</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;Will AI take my job? I hear this question really often recently. But my reaction may be surprising for some people because typically my first reaction is… “Yes, please!”. But it’s not for everything – it’s about the repetitive, boring, not-creative parts like writing unit tests, documentation, patching vulnerabilities (where Dependabot/Renovatebot is not enough), etc. Fortunately (for me), AI is revolutionizing how we work, and I really hope it will do the job I don’t like to allow me to focus on things I love + delivering real value for the clients.&lt;/p&gt;

&lt;p&gt;So… to achieve my goal of delegating “stupid” work to AI, I am really interested in background agents and was happy when I learned that &lt;a href="https://jules.google.com/" rel="noopener noreferrer"&gt;Jules from Google&lt;/a&gt; is available. Jules is an async development agent that is integrated with GitHub and can fix bugs, add documentation, build new features, etc. Right now, it’s limited to GitHub, which is a problem in my case since the majority of my projects are in GitLab, but I really hope it will change soon. This async part is important for me, so I can, e.g., delegate tasks to write tests, go for my dancing lessons, and check results when ready, without looking at my computer. Also, multiple tasks can be run simultaneously (up to 5 tasks at the same time and 60 total tasks per day). For now, this tool is in beta, so you can try it for free, but it will be paid in the future - we don’t know the final prizes yet. Jules claims not to train on private repositories' data. What’s nice, we can add some configuration per project - e.g. to show initial setup and add repo commands (e.g. adding we prefer npm over yarn etc).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fasj6z8g4kfsnp4bw6f1t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fasj6z8g4kfsnp4bw6f1t.png" alt="Snow White cleaning the house and many animals helping her with that" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;
Offtop but... each time I schedule some agents to do my work I feel like Snow White from this picture (originally from Disney movie, here posting after https://kulturadobra.pl/krolewna-sniezka-i-siedmiu-krasnoludkow/)



&lt;h2&gt;
  
  
  Experiment assumptions
&lt;/h2&gt;

&lt;p&gt;To assess Jules's capabilities, I focused on common development tasks I find challenging or repetitive:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Documentation&lt;/strong&gt;: Adding comprehensive documentation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing&lt;/strong&gt;: Implementing unit and integration tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency Management&lt;/strong&gt;: Upgrading outdated dependencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security &amp;amp; Accessibility&lt;/strong&gt;: Identifying and resolving security and accessibility issues.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature Development&lt;/strong&gt;: Integrating new features (a task I enjoy, but essential for a complete comparison).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I applied these criteria to three distinct projects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Small Legacy Project&lt;/strong&gt;: A hybrid mobile application built with Ionic and Angular, approximately three years outdated, featuring two simple views.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Medium-Sized Personal Webpage&lt;/strong&gt;: A personal website developed using Scully and Angular.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Medium-Sized Full-Stack Application&lt;/strong&gt;: A full-stack application leveraging React, Next.js, and Firebase.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While these projects may not be entirely representative of all development scenarios, my choice was influenced by GitHub's limitations and my familiarity with each codebase.&lt;/p&gt;

&lt;p&gt;Additional assumptions for testing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use the same prompt for each project.&lt;/li&gt;
&lt;li&gt;Use metaprompting before putting a prompt to ensure it’s OK.&lt;/li&gt;
&lt;li&gt;Ask in the context of the whole project, not specific files (asking for files should probably be better).&lt;/li&gt;
&lt;li&gt;Judged subjectively by me + automated review by Copilot.&lt;/li&gt;
&lt;li&gt;Each category scored between 1 and 5 points.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;h3&gt;
  
  
  Disclaimer:
&lt;/h3&gt;

&lt;p&gt;There are so many new approaches and tools each week that it’s impossible to stay up-to-date with everything. Having a full-time job, a personal life, and a new hobby (Lindy Hop is amazing!), I experienced huge FOMO recently, and I know that this article may not cover everything. But I decided to write it anyhow in case someone else is looking for ideas to remove legacy/KTLO/improve engineering quality of life using AI. (My professional goal for the next few months is to focus on those aspects, so you may expect more thoughts in this direction). If you see that something is outdated or you know something that can be better than the approach described here - let me know! Add a comment here or write to me on &lt;a href="https://x.com/home" rel="noopener noreferrer"&gt;X&lt;/a&gt; or &lt;a href="https://www.linkedin.com/in/dominikazajac" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Let’s start testing!
&lt;/h2&gt;

&lt;p&gt;Onboarding is well-described in the &lt;a href="https://jules.google/docs" rel="noopener noreferrer"&gt;docs&lt;/a&gt;, so I won’t repeat it.&lt;br&gt;
You can start a task from the UI or from a GitHub issue by adding the label 'jules'. You need to describe what changes you want to apply, choose which repository it should apply to, and what the main branch is. You can give Jules permissions for all repositories or only for selected ones. After a few seconds, it will create a plan of action for you, which you can approve or change, and then start working on the changes. In the end, it will create a PR with proposed changes. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fs5r3hslgrdjafvhabapj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fs5r3hslgrdjafvhabapj.png" alt="Robot working on the computer" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Results of my testing
&lt;/h2&gt;

&lt;p&gt;What are the results?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Autogenerate documentation - 4.5 stars&lt;/li&gt;
&lt;li&gt;Add unit tests - 3 stars&lt;/li&gt;
&lt;li&gt;Upgrade dependencies and remove unused ones - 4 stars &lt;/li&gt;
&lt;li&gt;Check for security/accessibility problems and fix them - 3 stars&lt;/li&gt;
&lt;li&gt;Add a new feature - 5 stars&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While the results weren't perfect, they were promising. The webpage experienced slowdowns when running five simultaneous tasks, and occasionally, loaders incorrectly indicated task completion. However, these issues were not blockers as a simple page reload resolved them. Let's deep dive into the specifics of each area.&lt;/p&gt;

&lt;h3&gt;
  
  
  Autogenerate documentation - 4.5 stars
&lt;/h3&gt;

&lt;p&gt;I asked Jules to generate all documentation without specifying what exactly was needed. It added/adjusted readme.md, added CONTRIBUTING.md with rules about collaboration, and DEPLOYMENT.md with rules about deploying, plus some super high-level architecture with diagrams. In cases where a readme was present in a scrappy form before, it was great – it could reorganize it, add additional info, etc. When a readme was not present at all, it was super generic – e.g., it had a &lt;code&gt;git pull&lt;/code&gt; command with example links like &lt;code&gt;git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY&lt;/code&gt; instead of a real address. It also added a typo in one of the addresses – "httpss" instead of "https" even if in the original code it was correct. The architecture was too generic and verbose for me, but maybe that was because those projects were really simple, and it’s hard to write a lot of interesting stuff. Still, it could have written a concise, short note instead of an elaborate one. What positively surprised me was that the tool rejected generating Swagger documentation where it was useless – even if I followed up with a specific question to do so. Jules explained that it’s not needed for a frontend application, asked what I wanted to achieve, and proposed to improve the documentation of existing code instead. General score? 4.5 points on a 5-point scale. It’s not perfect and requires review, but it certainly simplifies my work and helps me save time. I will use it for sure in my projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add unit tests - 3 stars
&lt;/h3&gt;

&lt;p&gt;This was a difficult task, as testing frontend/mobile is more challenging than backend APIs, and my repositories are mostly frontend-focused. In my legacy project, Jules was unable to get tests running (it’s really old code with a hybrid mobile app with no test setup, so I can totally understand it ☺️). It tried multiple different approaches, checked Chrome and Firefox before failing and asking for human help. It’s good that it could stop itself instead of running out of tokens or costing me a lot of money if it were a paid feature. To be honest, it’s the same result I would expect from a junior engineer, so I’m not really surprised. All in all, the old truth about AI is still valid: the more cases you have to train your model, the better the output. And who writes unit tests in legacy projects? 😂 &lt;/p&gt;

&lt;p&gt;For the two remaining repositories, the results were much better. In the repository without any tests at all, Jules created a base setup and simple test cases. Sometimes it over-mocked in my opinion, but it wasn't super bad. I achieved the best results for the repository with existing tests and setup - Jules was able to follow existing conventions and add tests to achieve the expected complexity. It also provided tips to improve existing ones. It’s worth mentioning that this aspect took longer than other tests - Jules tried many approaches before the final result and often needed to change something to make tests run. However, it happened in the background, so I didn’t have to approve each change or ask it directly to re-test. Final score? 3 - good for modern codebases, especially with an existing setup, but not recommended for old ones. Probably adding initial setup + some documentation on how to run tests should be on the human side, while Jules can add test cases to an existing setup. &lt;/p&gt;

&lt;h3&gt;
  
  
  Upgrade dependencies and remove unused ones - 4 stars
&lt;/h3&gt;

&lt;p&gt;I know that tools like Renovatebot are excellent for updating dependencies, but I was curious how Jules would handle this task, especially when breaking changes were introduced – would it be able to fix problems? It’s not surprising that it was much easier in modern repositories than in legacy ones – not only because of more data to be trained on, but also simply a lower number of vulnerabilities to address. In the legacy repo, it tried to bump a few major versions at once, and you can imagine how that ended... But let’s be honest, the prompt “upgrade all dependencies” is too generic. I received much better results when I asked to bump packages one by one and only one major version at a time (which should be part of the initial prompt). And the poor testing suite didn’t help in this scenario as well. For newer repositories results were OK - packages were updated, tests are still running, some changes to adjust to major bumps were done. Would I just release those changes to production? Of course not, but it was a solid work - Jules receives 4 stars from me in this area.&lt;/p&gt;

&lt;h3&gt;
  
  
  Check for security/accessibility problems and fix them - 3 stars
&lt;/h3&gt;

&lt;p&gt;What to do when we don’t know what to do? Audit! And asking about security/accessibility problems we might overlook is something I do very often with different tools. Jules recognized many small problems within the code: missing aria tags, using divs instead of correct elements, places vulnerable to XSS injection, and… Not only was a committed (for test purposes) token not removed, but it was even shared between files! That really made me laugh and confirmed we can’t blindly trust AI. Or we should verify one model with another, as Copilot correctly highlighted that. Some of errors were also skipped - e.g. Jules replaced divs functioning as buttons to correct format but skipped those behaving as images. To be honest, I have a problem with the score in this case. I should give a 1 because of such a crucial problem with the token, but on the other hand, it was a solid 4 in other areas. I finally decided on a 3, but hope that Jules will remember in the future not to expose tokens (should I force it to write it on the blackboard 100 times to recall?).&lt;/p&gt;

&lt;h3&gt;
  
  
  Add a new feature - 5 stars
&lt;/h3&gt;

&lt;p&gt;This category definitely showcased the power of Jules. I asked for adding small, funny features like additional confetti animation after performing a given action. Jules added new code, tests, and documentation, mostly keeping patterns from the existing codebase. At first, I provided specific input, mentioning in which file I wanted to add changes, which package to use, etc. But Jules was able to successfully finish the task even if only super generic commands were provided. While I don’t want AI to take my joy of programming, I have in mind some tasks from Jira I could just delegate to AI to save my time :P I will use this option for sure!&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
&lt;a href="https://media2.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%2Fevhht8pd0uvtotcl8fhw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fevhht8pd0uvtotcl8fhw.png" alt="Robot standing on the top step of podium but it's described as 2nd place. Also all steps are described as 2nd place and there are 4 steps on podium instead of 3" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;
I didn't fix this image by purpose cause it's good visualisation of AI capabilities. It's really good but... not perfect - made it working after few additional attempts 





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

&lt;p&gt;After those subjective tests driven by domi-thinking-metodology (professors from studies please forgive me for my non-scientific approach!) I still believe and Jules is a nice tool and I want to include it into my toolkit, especially for delegating tasks I dislike. I'm not looking for it to create new features, but rather to handle the DevOps and operational work I'd rather avoid. While not yet perfect—it lacks GitLab support, struggles with areas like adding tests to legacy codebases or doing stupid stuff like sharing a token instead of redacting that—it still saves me time, allowing me to focus on delivering value. I'll definitely keep an eye on its progress. Currently, I view it as a junior engineer: full of theoretical knowledge and eager to explore different methods, but benefits a lot from more specific guidance and always needing additional code review before applying their changes.&lt;/p&gt;

&lt;p&gt;I sincerely hope this AI trend will extend beyond generating new features in entirely new codebases (a rare occurrence in mature enterprise organizations) and instead prioritize tools for enhancing existing code and augmenting current workspaces. Ultimately, I hope it will take on more of the tedious work, freeing me to concentrate on delivering genuine value to users and, of course, pursuing my passions! Let's delegate the boring stuff to AI and have some fun!&lt;/p&gt;

&lt;p&gt;PS: All images used in the article were generated using Gemini&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ai</category>
      <category>developer</category>
    </item>
    <item>
      <title>Trusted Web Tester certification — what is it and is it worth your time?</title>
      <dc:creator>Dominika Zając (she/her) 🇵🇱</dc:creator>
      <pubDate>Sun, 05 May 2024 11:25:14 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/trusted-web-tester-certification-what-is-it-and-is-it-worth-your-time-44fb</link>
      <guid>https://dev.to/playfulprogramming/trusted-web-tester-certification-what-is-it-and-is-it-worth-your-time-44fb</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.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%2Fld3acmue3hlpn26ujh0x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fld3acmue3hlpn26ujh0x.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;
Photo by Christin Hume (https://unsplash.com/@christinhumephoto) on Unsplash (https://unsplash.com)




&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;From February you can find a new accessibility certificate on my LinkedIn profile — the DHS Trusted Tester certification. It proves I finished and passed the final exam of the accessibility course conducted by the Department of Homeland Security (DHS)’s Customer Experience Directorate. And since then many people have reached out to me to ask about it, an exam, learning materials, etc. That’s why I decided to write an article and summarize my experiences with it. Hope it will help you decide if you also want to go this path.&lt;/p&gt;

&lt;h2&gt;
  
  
  What DHS Trusted Tester Process is?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.dhs.gov/trusted-tester" rel="noopener noreferrer"&gt;Section 508 Trusted Conformance program&lt;/a&gt; was created by the American Department of Homeland Security (DHS)’s Customer Experience Directorate (CXD), formerly known as the Office of Accessible Systems &amp;amp; Technology (OAST). It’s a try to introduce a standardized process of testing web pages according to Section 508 — accessibility law based on WCAG. From the future Trusted Tester side, the process is combined training, a mock exam, and the final exam. What is worth mentioning — the training and certification are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;free&lt;/strong&gt; — which is not so common in the tech world,&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;remote&lt;/strong&gt; — all you need is a stable internet connection,&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;flexible&lt;/strong&gt; — you can start it whenever you want and you have unlimited time to finish the training.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To start, you must visit the &lt;a href="https://www.dhs.gov/508-training" rel="noopener noreferrer"&gt;official page&lt;/a&gt; and &lt;a href="https://training.section508testing.net/" rel="noopener noreferrer"&gt;register for the program&lt;/a&gt;. You don’t need prior knowledge about accessibility before joining the program, however, it requires basic knowledge of HTML, CSS, and JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F0ncurwgm0s9ky9d5v65r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F0ncurwgm0s9ky9d5v65r.png" alt="Graphic showing that shortcut a11y was created by taking the first and the last letter of the word accessibility and counting the remaining letters (11)" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;
Sometimes we use shortcut a11y when talking about accessibility — here you can see why!



&lt;h2&gt;
  
  
  Training
&lt;/h2&gt;

&lt;p&gt;That’s the longest part of the course. You start with some theory about web accessibility, legal requirements, and the reasoning behind why it’s so important. Each lesson includes a short quiz at the end, which you must pass to proceed to the next chapter. Following that, you continue into more practical lessons, which are the most beneficial part of the course. Here, you’ll receive concise information about each aspect to test, the process of what and how to test, and how to report findings. Additionally, you’ll encounter examples of non-compliant, compliant, and failing webpages in this regard. To advance to the next chapter, you must test the demo page against a given aspect (test cases are randomized to prevent simple guessing).&lt;/p&gt;

&lt;h2&gt;
  
  
  Exam
&lt;/h2&gt;

&lt;p&gt;Let’s be honest — no one enjoys exams. And I hoped that after completing my Masters, I wouldn’t have to stress again 😅 However, this exam isn’t so bad — you can take it from the comfort of your home, wrapped in your lucky blanket with your favorite tea in hand. It’s an open-book exam, so you can use any notes and materials you want (though without assistance from others, of course). The exam is practical, and this format makes a lot of sense — you’re given a webpage and tasked with conducting an audit of it. To receive the link for the real exam, you must first pass a mock exam, which is very similar to the final one but on a different webpage. Once you pass the mock exam, you should send an email and await the link for the actual exam. Upon accessing the exam page, you have three days and three attempts to complete it. You need to score at least 90%, but with subsequent attempts, you only need to review the criteria you marked incorrectly in previous attempts. The page is randomized for each attempt, so even if it appears the same or similar, you must evaluate it carefully each time. What surprised me the most was the time I needed to prepare — official instructions recommend allocating six hours for the first pass 😲 I managed it in about three hours, but it took much longer than I expected. So it’s good to be prepared for that. All in all, I think this format is quite good — it focuses on practical aspects and doesn’t require memorizing useless information (yes, I like open-book exams). Since the course and certificate are free, you can try it without consequences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Certificate
&lt;/h2&gt;

&lt;p&gt;When you complete the entire process, there’s one more thing to do — receive your certificate and share it with the world (including potential employers). In my case, this part unfortunately took quite some time — contacting the certification organizers was quite challenging. Fortunately, after a few emails and phone calls, I managed to obtain it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fntf3iz9e0og2ey878y37.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fntf3iz9e0og2ey878y37.png" alt="Certificate issued by Department of Homeland Security confirming that Dominika Zając completed Trusted Tester for Web on Windows" width="800" height="615"&gt;&lt;/a&gt;&lt;/p&gt;
Each DHS Trusted Tester receives a certificate similar to mine





&lt;p&gt;The certificate you receive is valid with no expiration date. You’ll receive it in online form via email with a unique number — you can use it to verify that you are a Trusted Tester and to sign test reports conducted by you (validating that they were conducted by a person with the mentioned certification). Of course, you can also print it and hang it on the fridge — to remind yourself that you did a great job during the 70+ hours of training and the challenging exam! After receiving this diploma, you should be proud of yourself!&lt;/p&gt;

&lt;h2&gt;
  
  
  Do I recommend it?
&lt;/h2&gt;

&lt;p&gt;After all that information there is still one question that needs to be answered — do I recommend passing this certification? The answer is not simple — it depends. If you are a QA specialist, accessibility passionate, or looking for a way to improve your skills in this area, then definitely can recommend it to you. The same if you are a front-end developer looking for a way to enhance your CV or want to understand accessibility certifications. However, this course is not the best if you are looking for info not only on &lt;strong&gt;what&lt;/strong&gt; to test but also &lt;strong&gt;how to&lt;/strong&gt; implement it correctly. We still don’t have clear and solid standards in web accessibility and this course does not define coding standards either (as it’s a program for testers). On the other hand, even if I am really interested in accessibility it helped me organize my thoughts and knowledge so I found it useful and will return to testing materials when in doubt. So, the decision is yours but if you have some spare time — give it a try!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Let’s make the Internet a better, more accessible world where everyone feels welcome!&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;PS. If you like this article or found it useful, please, leave some comments below or share it with your friends. Thanks in advance!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>computerscience</category>
      <category>testing</category>
      <category>programming</category>
    </item>
    <item>
      <title>Can it work faster? Aka how to use Chrome DevTools to improve your webpage performance</title>
      <dc:creator>Dominika Zając (she/her) 🇵🇱</dc:creator>
      <pubDate>Sun, 20 Aug 2023 10:55:25 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/can-it-work-faster-aka-how-to-use-chrome-devtools-to-improve-your-webpage-performance-5689</link>
      <guid>https://dev.to/playfulprogramming/can-it-work-faster-aka-how-to-use-chrome-devtools-to-improve-your-webpage-performance-5689</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.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%2F7wb6ayf05uqnvm4cpgtd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F7wb6ayf05uqnvm4cpgtd.png" alt="A sweet doggie sleeping in their bed" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
When you are a doggie you don’t have to worry about performance and e.g. take a nap when you are waiting for something. Unfortunately, as a developer, you have to think about impatient people and the performance of your website. Source of the photo: https://www.instagram.com/basenji_ginger/



&lt;p&gt;&lt;strong&gt;Can it work faster?&lt;/strong&gt; Almost every front-end developer has heard this question at least once. And let’s be honest — in a majority of cases, it’s a good question. Our web apps are more interesting, more complex, more powerful but also… slow! And when I recently spent one week in a place with super poor internet I painfully experienced that… Fortunately, there are many tools that can help you identify and fix performance problems on your webpage. In this article, I wanna show you those which are available for free and without installing anything inside one of my favorite tools — Chrome DevTools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chrome DevTools Overview
&lt;/h2&gt;

&lt;p&gt;Let’s start with a super short Chrome DevTools overview. It’s a set of developer tools built into the Chrome browser, available completely for free. To start using it you just need to open the page to test in Chrome browser and open Chrome DevTools. You can do it in many ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Right-click on any element on the page and choose &lt;em&gt;Inspect&lt;/em&gt; option from menu&lt;/li&gt;
&lt;li&gt;Use 3 dots menu in the top right side of the browser -&amp;gt; Choose &lt;em&gt;More tools&lt;/em&gt; and later -&amp;gt; &lt;em&gt;Developer tools&lt;/em&gt; option
Use the shortcut (&lt;em&gt;ctrl + shift + I&lt;/em&gt; on Linux/Windows or &lt;em&gt;cmd + shift + I&lt;/em&gt; on Mac)
After that, you’ll see a panel similar to the one visible in the screenshot below:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fai9t5dhgbto5bpd39nuq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fai9t5dhgbto5bpd39nuq.png" alt="A screenshot from Chrome DevTools opened on Elements tab — displaying HTML structure of page elements and section describing their styling" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
A screenshot of Chrome DevTools opened on the Elements tab



&lt;p&gt;Some time ago I wrote about &lt;a href="https://medium.com/p/8b6ae1bc7cb1#:~:text=using%20it%20for%20debugging%20HTML%20and%20styling%20on%20your%20webpage" rel="noopener noreferrer"&gt;using it for debugging HTML and styling on your webpage&lt;/a&gt; and &lt;a href="https://medium.com/p/8b6ae1bc7cb1#:~:text=less%20known%20features%20hidden%20in%20this%20tool" rel="noopener noreferrer"&gt;less known features hidden in this tool&lt;/a&gt;, so if you want to check some basics look at those links. Today we’ll focus only on features connected with performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lighthouse Audit
&lt;/h2&gt;

&lt;p&gt;Let’s start with something simple. What is your first action when you had to improve something? For me it’s always understanding the starting point — a good audit in the beginning help me understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;the whole picture&lt;/strong&gt; (are we in a critical condition? or maybe we just need some small fixes?)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;the biggest pain points&lt;/strong&gt; (what annoys my user/me the most?)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;low-hanging fruits&lt;/strong&gt; (are there easy-to-perform fixes that can significantly improve the situation?)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are many tools available on the market which provide performance audits but here we’ll use the Lighthouse option from DevTools. To perform an audit you need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;open your webpage in the Chrome browser&lt;/li&gt;
&lt;li&gt;open Chrome DevTools (as described in the first section)&lt;/li&gt;
&lt;li&gt;Go to &lt;em&gt;Lighthouse&lt;/em&gt; tab&lt;/li&gt;
&lt;li&gt;Choose Mode, Device, and Categories options (of course, including Performance option)&lt;/li&gt;
&lt;li&gt;Click &lt;em&gt;Analyze page load&lt;/em&gt; button.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: It’s recommended to perform this audit in incognito mode to avoid the influence of e.g. cache to your test.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fyxexm4opxjsc5bdr6dhb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fyxexm4opxjsc5bdr6dhb.png" alt="Panel from Chrome DevTools with options to choose Mode, Device and Categories and button to “Analyze page load”" width="800" height="191"&gt;&lt;/a&gt;&lt;/p&gt;
Generating a Lighthouse performance report



&lt;p&gt;After a few seconds, you’ll receive a report similar to what is visible below. At the top, there is a summary with a score and the overall result.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Ft0r5thh3e6ogjktow160.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ft0r5thh3e6ogjktow160.png" alt="Screenshot of the report. At the top, there is a green widget with a score of 95, below is some info with links to check how the score is calculated." width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
Example of performance report created by Chrome DevTools



&lt;p&gt;The widget is presenting the overall performance score. The scale is 0–100 where a result below 50 is bad, 50–89 is average and you want to achieve 90 or more points. I won’t go into details about how this score is calculated (you can read more about it in the &lt;a href="https://medium.com/p/8b6ae1bc7cb1#:~:text=How%20the%20Performance%20score%20is%20weighted%E2%80%9D%20article%20on%20the%20official%20Chrome%20blog" rel="noopener noreferrer"&gt;“How the Performance score is weighted” article on the official Chrome blog&lt;/a&gt;) but what I recommend is taking a look at Lighthouse Scoring Calculator — the link to it is just below widget with your score.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F5fygadai07u17jj2rfau.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F5fygadai07u17jj2rfau.png" alt="A screenshot of Lighthouse Scoring Calculator results. There are different metrics, for each of them we can see value in ms, metric score and weighting. User can also use sliders to simulate different values and scores for metrics and see how it impacts the overall score." width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
Lighthouse Scoring Calculator shows you the weighting of different metrics and gives you an opportunity to simulate how improving metrics given metrics may influence your total score.



&lt;p&gt;As you can see on the screenshot above you can play with different values and scores for metrics and simulates how it will impact your score. It may be useful to determine which metric should be improved first (as let’s be honest, in real life we rarely have time to fix everything). But there are also some other parts in the report which may help you with that. Let’s go back to the report.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fzqup6mpd4p0zpd30p7co.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fzqup6mpd4p0zpd30p7co.png" alt="Report’s section with metrics: First Contentful Paint, Total Blocking Time, Speed Index, Largest Contentful Paint, and Cumulative Layout Shift. Only the Largest Contentful Paint is not green (it’s orange). The focus is on the “Expand view” button" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
Metrics are great indicators of your’s page performance



&lt;p&gt;The second section shows a summary of the most important metrics: First Contentful Paint, Largest Contentful Paint, Total Blocking Time, Cumulative Layout Shift, and Speed Index. As you may guess the green color of the value means it’s good, orange suggests it should be improved and red shows serious problems. What do they mean?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;First Contentful Paint (FCP)&lt;/strong&gt; — this indicator checks how long it takes to render the first DOM element on the page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Largest Contentful Paint (LCP)&lt;/strong&gt; — this one measures how long it takes to render the largest text block or image on the page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Total Blocking Time (TBT)&lt;/strong&gt; — measures how long a page is blocked after user action (click, keyboard press, etc). The sum is calculated from all tasks over 50ms between First Contentful Paint and Time to Interactive (only excess over 50 is taken into account)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cumulative Layout Shift (CLS)&lt;/strong&gt; — measures unexpected shifts of visible page elements&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speed Index (SI)&lt;/strong&gt; — measures how long it takes to display text and images on your webpage during load&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Of course, also here DevTools can help you understand metrics. Click the “Expand view” button and you’ll see short summary of metrics and links to articles explaining in detail how they are calculated, why they are important, and how to fix them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fbs2txptnj9pbgh81qewg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fbs2txptnj9pbgh81qewg.png" alt="Extended view of metrics — displaying not only value of each metric but also short summary and links to useful materials." width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
An extended view is helpful, especially for beginners.



&lt;p&gt;A lot of data, don’t you think? Let’s add even more: below metrics you have buttons to see Treemap and Original Trace. The first one visualizes your JavaScript bundles (helping to e.g. discover unused bytes), and the second opens the timeframe of load in the Performance section of Chrome DevTools (we’ll talk more about this section later in this article).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F2oo9bed1geolx4md468e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F2oo9bed1geolx4md468e.png" alt="Screenshot of Treeview map showing multiple colorful rectangles. Each of them represents different bundle, the size of the rectangle represents how big the bundle is.&amp;lt;br&amp;gt;
" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
Treemap view visualizes the size of Javascript bundles and helps find e.g. unused bytes.



&lt;p&gt;OK, we have a lot of data but the question is — what can we do with them? Information is powerful only when we can use them. Let’s take a look at the next section in the report: Opportunities and Diagnostics.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fh8xmnekzuul75e7yo71j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fh8xmnekzuul75e7yo71j.png" alt="A screenshot of opportunities and diagnostics sections in the Lighthouse report." width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
Don’t know where to start improving the performance of your page? Take a look at the Opportunities and Diagnostics sections in the Lighthouse report.



&lt;p&gt;Each item in those sections can be extended to show more details and link to the article explaining why it’s important. Sometimes it’s also displaying a list of elements that are influencing a given metric.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fgp4gnulce9xnabu2eu7v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fgp4gnulce9xnabu2eu7v.png" alt="An extended view of the “Avoid an excessive DOM size” item in the Diagnostics section. It’s showing short summary of the problem, link to helpful articles and list of problematic elements" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
An extended view of the element in the Diagnostics section shows much more data needed to fix the problem



&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: remember that suggestions from Opportunities and Diagnostics can help load the page faster but don’t directly affect the Performance score.&lt;/p&gt;

&lt;p&gt;Notice there is also a filter helping you see items only connected with a given metric. If you are a beginner you can additionally take a look at the Passed Audits section to understand which factors are also important for the performance of the page. And that’s all from the Lighthouse audit. But that’s not the only tool in Chrome DevTools that can be used to improve performance. Let’s take a look at the next of them: Performance Insights.&lt;/p&gt;
&lt;h2&gt;
  
  
  Performance Insights
&lt;/h2&gt;

&lt;p&gt;Performance Insights is a still preview feature but I strongly believe it should stay in Chrome DevTools. Why? Because it significantly simplifies work with performance for developers. You don’t have to fully understand all metrics described in the previous section (even if that’s helpful) to start work. Just:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;open Chrome DevTools&lt;/li&gt;
&lt;li&gt;click the 3 dots button in the top right corner&lt;/li&gt;
&lt;li&gt;Select &lt;em&gt;More tools&lt;/em&gt; and &lt;em&gt;Performance insights&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fcjkbj1ckl7zdphmq3hgy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fcjkbj1ckl7zdphmq3hgy.png" alt="A screenshot of menu in Chrome DevTools — in the first “More tools” are selected, in the second “Performance insights”" width="437" height="516"&gt;&lt;/a&gt;&lt;/p&gt;
I recommend checking this “More tools” section from time to time — you may be positively surprised!



&lt;p&gt;After that, you’ll see the interface below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fwhovkguw38otlwuuiwsi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fwhovkguw38otlwuuiwsi.png" alt="Screenshot of Performance insights tab — there is 3 step instruction, button to choose if you want to measure page load or custom scenario and option to set throttling." width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
Have you seen this view before? If not, you should definitely take a look!



&lt;p&gt;Here you can parameterize the audit. You can choose Network and/or CPU throttle, and disable cache.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fr78u61na64gqryrx7e0b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fr78u61na64gqryrx7e0b.png" alt="Options to set throttling for the audit. You can change Network, CPU params or Disable cache" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also choose if you want to focus on page load or custom scenarios by clicking the dropdown close to the “Measure page load” blue button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fdpvppib30mmyn358tuy6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fdpvppib30mmyn358tuy6.png" alt="Dropdown below blue “Measure page load” button with 2 options: “Start recording” and “Measure page load”" width="239" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After running the audit, you’ll see a report with a timeline of the most important events.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F8g666d33gedmprpsumqc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F8g666d33gedmprpsumqc.png" alt="Report containing timeline with all network events and rendering tasks, screenshots and info about layout shifts and panel with timeline of the most important events and tab for their details.&amp;lt;br&amp;gt;
" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;
Report generated from Performance Insights tool



&lt;p&gt;You can replay that (at a different speed), show/hide screenshots or click on a given task to show its details. There is also a small gear icon in the top right corner helping you adjust settings. But what I like the most is the Insights/Details section on the right. You can see a list of the most important events there and with visual marks for e.g. First Contentful Paint, Largest Contentful Paint, etc. When you want to investigate e.g. given long task found before First Contentful Paint you can click on that to preview Details (the given item will be also highlighted in the timeframe on the right so you can easily localize that). Tips on how to fix the problem are super useful!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fe484mebhsocshzx7b233.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fe484mebhsocshzx7b233.png" alt="Details tab is showing issue, how to fix that, duration and also longest functions and stack traces about given insight." width="306" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also use Import/Export icons at the top to save the report for later.&lt;/p&gt;
&lt;h2&gt;
  
  
  Performance tab
&lt;/h2&gt;

&lt;p&gt;In the article describing improving performance with Chrome DevTools, I cannot forget about Performance tab as it was created especially for that! But to be honest I see this view as very complex and don’t recommend starting with that — unless you are an experienced developer and you know what you are doing. Personally, I use it only when need details not visible in previously described sections. This tab is providing a sophisticated overview of all events on your webpage. To start recording:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;open Chrome DevTools&lt;/li&gt;
&lt;li&gt;go to &lt;em&gt;Performance&lt;/em&gt; tab&lt;/li&gt;
&lt;li&gt;Click the recording icon in the top left corner to start recording your custom script or the reload button to record loading the page
&lt;strong&gt;Note&lt;/strong&gt;: It’s best to perform the audit in incognito mode.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fiyioaibol1z0bq2lbom8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fiyioaibol1z0bq2lbom8.png" alt="Screenshot of performance tab. &amp;lt;br&amp;gt;
There is a huge timeline with screenshots, events and its summary visible" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
The view of the Performance tab may be a little overwhelming for beginners but when you understand the basics it’s an awesome tool to dig into performance details.



&lt;p&gt;As you can see, there are many details visible on this page. You can decide if you want to record a custom scenario or page load, you can also import/export profile from the disc. Clicking the gear icon in the top right corner you can also set additional settings — like throttling, enabling advanced paint instrumentation, etc. What’s nice, in network throttling you can not only choose one of the predefined options but also create a custom profile. There is even a small trash icon forcing garbage collection during recording a page!&lt;/p&gt;

&lt;p&gt;When the report is ready, you can use selectors from the left or/and right side to narrow down the time range you want to focus on (you can take a look at the time at the top or screenshots of the visible content). The donut chart at the bottom in the &lt;em&gt;Summary&lt;/em&gt; section will show you a breakdown of the activity, so you can see how big percentage of events was connected with Loading, Scripting, Rendering, etc. You can also switch tab to e.g. Bottom-Up to see which task took the most of the time (and see its subtasks).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fg5winsvzv0iu1yv1joni.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fg5winsvzv0iu1yv1joni.png" alt="Donut chart showing how big part of activity were Loading, Scripting, Rendering, Painting, System and Idle." width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Talking about tasks — when you expand the &lt;em&gt;Main&lt;/em&gt; section in the chart you’ll see a call tree of all tasks. The red rectangle in the top right corner of the most parent task informs you that this task was marked as a long one and probably needs some improvements. You can &lt;a href="https://medium.com/p/8b6ae1bc7cb1#:~:text=read%20more%20about%20optimizing%20long%20tasks%20in%20the%20great%20article%20written%20by%20Jeremy%20Wagner" rel="noopener noreferrer"&gt;read more about optimizing long tasks in the great article written by Jeremy Wagner&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fbfvgucny4zykyga8eaph.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fbfvgucny4zykyga8eaph.png" alt="A task with red rectangle in top right corner and tooltip saying it’s a long task which took 215.89 ms" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you are looking for some specific task you can use a search box visible after clicking &lt;em&gt;Ctrl+F&lt;/em&gt; or &lt;em&gt;Cmd+F&lt;/em&gt; keyboard shortcut. You can even use regexes there.&lt;/p&gt;

&lt;p&gt;There are much more data visible in the chart — you may be interested in looking at the Frames row (for detecting e.g. frame drops), the Timings (showing important metrics like Largest Contentful Paint, First Paint, DOMContentLoaded Event, etc), and the self-explaining GPU section. I won’t describe all information visible in the Performance tab here (as this article should be 5 times longer then) but strongly recommend using this tab when debugging performance issues on your webpage!&lt;/p&gt;
&lt;h2&gt;
  
  
  Performance Monitor
&lt;/h2&gt;

&lt;p&gt;Now, time for the Performance monitor tab. It’s a feature that allows you to receive a real-time view of different performance aspects like CPI usage, JS heap size, DOM Nodes, JS event listeners, and more. You can open it via a few steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;open Chrome DevTools&lt;/li&gt;
&lt;li&gt;Click the 3 dots menu in the top right corner&lt;/li&gt;
&lt;li&gt;Click &lt;em&gt;More tools&lt;/em&gt; and &lt;em&gt;Performance monitor&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After that, you should see a view similar to the one below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fvbfoqjtaezgv64ymwizu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fvbfoqjtaezgv64ymwizu.png" alt="Screenshot of performance monitor tool — there are few metrics and timeline displaying state of each of them in real-time" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;
Screenshot of performance monitor tool — there are few metrics and timeline displaying state of each of them in real-time



&lt;p&gt;You can interact with your page and check how your actions will influence the scores. You can also click on the names of metrics to hide/show them in the chart on the right side. Unfortunately, it won’t give you any recommendations on which values are OK and which are not so it’s up to you to figure out what’s happening and if is it right. It’s why I recommend this view only for more advanced programmers.&lt;/p&gt;
&lt;h2&gt;
  
  
  Extras
&lt;/h2&gt;

&lt;p&gt;All the things I presented till now are big features having their own tabs. But there are also smaller ones worth mentioning here! Here I’ll describe 2 of them: Paint flashing and Scrolling Performance Issues.&lt;/p&gt;
&lt;h3&gt;
  
  
  Paint flashing
&lt;/h3&gt;

&lt;p&gt;Paint flashing is a great mechanism to visually check if only the required elements are repainted on the page (and helps to detect during debugging e.g. which component is constantly re-rendering). When it’s turned on, you can use your page or navigate through it and repainted elements are marked in green.&lt;/p&gt;

&lt;p&gt;To enable this option:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open Chrome DevTools&lt;/li&gt;
&lt;li&gt;Click the 3 dots menu in the top right corner&lt;/li&gt;
&lt;li&gt;Choose &lt;em&gt;More tools&lt;/em&gt; and &lt;em&gt;Rendering&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Check the tooltip close to &lt;em&gt;Paint flashing&lt;/em&gt; option&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/LIbmf-IQaR8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
Thanks to Paint flashing loader is marked in green and it’s easy to understand which components are repainted. This example is simple but it makes a huge difference on complex webpages, especially when re-render is unexpected.



&lt;h3&gt;
  
  
  Scrolling Performance Issues
&lt;/h3&gt;

&lt;p&gt;In the same Rendering tab you can find also another interesting option called &lt;em&gt;Scrolling Performance Issues&lt;/em&gt;. When enabled, it marks elements that can slow down scrolling. It’s a small but interesting feature — I don’t use it super often but helped me a lot while investigating more difficult problems.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fah98z21395jholfvn5pw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fah98z21395jholfvn5pw.png" alt="A screenshot showing search element marked with orange box with message “Repaints on scroll”" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
Thanks to enabling the Scrolling Performance Issues option we can see that this search box is repainted on scroll and may slow down scrolling.



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

&lt;p&gt;I know this article is long — but it’s because the topic of performance is so interesting and difficult! There are definitely much more features in Chrome DevTools and tips you can take to improve your webpage. But I hope that those described in this article we’ll help you. If so — leave some comments or share it with friends. Thanks in advance!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tooling</category>
      <category>performance</category>
    </item>
    <item>
      <title>How to use Chrome DevTools to debug HTML/CSS on your webpage — intro for beginners</title>
      <dc:creator>Dominika Zając (she/her) 🇵🇱</dc:creator>
      <pubDate>Sat, 25 Mar 2023 17:50:15 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/how-to-use-chrome-devtools-to-debug-your-webpage-intro-for-beginners-b3g</link>
      <guid>https://dev.to/playfulprogramming/how-to-use-chrome-devtools-to-debug-your-webpage-intro-for-beginners-b3g</guid>
      <description>&lt;p&gt;Today’s article is addressed mainly to those who are starting their journey in IT. Recently, I work a lot with people who are learning their first programming language or want to switch careers to tech and I noticed that many tutorials are showing how to build stuff but almost never how to read existing code, debug mistakes or find a way to fix a bug. And it’s surprising as in “real life” we often work with existing codebase (adding a new feature, fixing bugs, changing business logic, etc) than writing the code from the scratch. Also, it’s super important to know ways to find a problem in your code — not only go step by step from the tutorial. In this article, I want to show you some features available for free in your Chrome browser which can help you address those problems. I hope it will inspire you to experiment more with programming and become a better developer!&lt;/p&gt;

&lt;h2&gt;
  
  
  What Chrome DevTools are
&lt;/h2&gt;

&lt;p&gt;Let’s start with a short intro about Chrome DevTools. It’s a set of developer tools built into the Chrome browser and available completely for free. To start using them you just need to open the page to test in Chrome browser and open Chrome DevTools. You can do it in many ways:&lt;/p&gt;

&lt;p&gt;Right-click on any element on the page and choose Inspect option from menu&lt;br&gt;
Use 3 dots menu in the top right side of the browser -&amp;gt; Choose More tools and later -&amp;gt; Developer tools option&lt;br&gt;
Use shortcut (ctrl + shift + I on Linux/Windows or cmd + shift + I on Mac)&lt;br&gt;
After that, you’ll see a panel similar to the one visible in the screenshot below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fftz8oamroc8eavuc1az3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fftz8oamroc8eavuc1az3.png" alt="Screenshot of ChromeDev Tools with opened Elements tab" width="800" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Your panel can be visible as a separate window or on the right/left/bottom side of the page. If you want to change that, find the 3 dots menu in the top right part of the Chrome DevTools panel and click the preferred mode in Dock side option.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fy3h80qnjs8rzhrgoelzx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fy3h80qnjs8rzhrgoelzx.png" alt="Screenshot of menu inside chrome dev tools with panel to choosing Docker side, search, run command, etc" width="238" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are many tabs and options available but in today's article, we'll focus on the most basic one - &lt;code&gt;Elements&lt;/code&gt;. It is mostly used to preview the HTML structure and styling of the page. What can we do here?&lt;/p&gt;

&lt;h2&gt;
  
  
  Preview the HTML structure of the whole page
&lt;/h2&gt;

&lt;p&gt;Yes, I said it before but let's extend this topic a little. As you can see in the Elements tab you can preview all HTML nodes visible on the page. Why it's important? You can e.g. check if all components are displayed correctly (it's a super popular mistake among beginners to create a separate component for some widgets and forget to use them on the page). You can also check the order of elements on the page and nest (which element is inside which). To extend/collapse the node, just use the arrow at the beginning of the line.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preview of a specific node
&lt;/h2&gt;

&lt;p&gt;When you see some problems on your webpage, you may want to focus on a specific area/node instead of looking at the whole page. There are several ways to do so: you can just right-click on the element on the page and choose the &lt;code&gt;Inspect&lt;/code&gt; option from the menu (it works even if Chrome DevTools are not opened on the page), you can find the element in the Elements preview by extending sections, or you can click the selector icon in the Chrome DevTools (on the top left side of the panel) and select the node on the page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Faq4xr1hvsr8su5t7x24j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Faq4xr1hvsr8su5t7x24j.png" alt="The selector icon in the Chrome DevTools" width="377" height="80"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After selecting the given node will be highlighted in the Elements preview in the DevTools panel, so you can see which exact HTML tag is responsible for displaying the given part. This element will be also highlighted on the page with additional info - the margin part will be marked in orange, padding in green and a small popup will show a preview of styling applied on the element. You can see it in the screenshot below&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F8k19ieiu4i61djgqdyhj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F8k19ieiu4i61djgqdyhj.png" alt="Example of the previewing specific node on the page - in this case header of the article. There is a header selected in page preview and selected correct node in Elements tab in Chrome DevTools" width="800" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What we can see here? "How to start programming in 2022" is a header element marked with an h1 tag with id="32bb" and many styling classes applied (don't worry about their naming - it's the effect of Javascript uglification and minification on the page making source code smaller, loading faster and more difficult to steal by other developers :) ). The popup is showing us a summary of styling - color, font, margins, and contrast of the element. The orange area is showing the top margin applied to this element (notice that in DevTools there is a colorful box visible on the right side - from this, we can read that the top margin has 19.2px). There is also a section with info about all styles applied to this element. I'll write a little more about styling in the section below but don't be afraid to play a little with all those options. You can't break anything with that - I promise (all your changes will be removed after reloading the page).&lt;/p&gt;

&lt;h2&gt;
  
  
  Hide/edit/delete/duplicate given element
&lt;/h2&gt;

&lt;p&gt;When you want to quickly preview some changes on the page, you can modify elements directly on the page using Chrome DevTools. Just select the node you are interested in and right-click on it in the Elements tab or click the 3 dots menu at the beginning on the line with the element. After that, you'll see a menu with many options e.g. to hide/edit/delete or duplicate a given element, add an attribute, edit as HTML, etc. Select the one you are interested in and see the visual changes on the page. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; it's only a preview, your changes won't be saved after reloading the page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Ftm4nb2qagzh15vzq59xn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ftm4nb2qagzh15vzq59xn.png" alt="Element's menu in Chrome DevTools" width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Change the styling of the element
&lt;/h2&gt;

&lt;p&gt;It's one of my favorite options here - previewing styling changes to the element. You don't have to do changes locally and wait to reload the page each time you change one property. Or you can preview how the page you have no access to will look e.g. with different font colors. Just select the given node as I described in previous sections and look at the Styles tab close to the HTML tree. In the first view, you can see all CSS classes applied to the element, you can change their values (just double-click on the value), add new properties, etc. You can also uncheck the checkbox close to the attribute to disable the given rule. When some rule is crossed out it means some other properties override it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fx55bw7zc46b93eav1x6j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fx55bw7zc46b93eav1x6j.png" alt="An example of styling rules on the body element." width="359" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When it's possible, autosuggestion will propose available values for given property (sometimes with visual tips on what they mean), so it's an easy way to find e.g. correct option when you don't remember the exact name of the property's value!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Frqjuanopqgl8ndu8q5he.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Frqjuanopqgl8ndu8q5he.png" alt="When you add the " width="359" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In one of the recent releases, Chrome added also information when some rule cannot be applied to a given element. You can recognize it by greyed letters and the 'i' icon close to the value. When you hover over the 'i' icon, you'll see a popup with an explanation of why a given rule cannot be applied.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fw0x2cuuttpnagsidigm6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fw0x2cuuttpnagsidigm6.png" alt="Example of info when a property cannot be applied on the element." width="457" height="248"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; remember that those changes are not saved and will be removed after reloading the page!&lt;br&gt;
There are many, many other options available for styling here (so strongly recommend just playing with it), but I want you to focus on one more thing - close to the 'Styles' tab there is also the 'Computed' tab. You can use it to easily preview all rules applied to the element without splitting them into CSS classes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Toggle element state
&lt;/h2&gt;

&lt;p&gt;Sometimes elements on the page look differently depending on their state - e.g. visited link looks differently than an unvisited one, the button may have different background color on mouse hover, etc. Fortunately, you can easily play with the styling of different element states too. Just select the given node, find the :hov button in the Styles tab, and toggle the checkbox on the state you want to force. Thanks to that, even if you stop e.g. hovering over the element, you can still preview and edit styles applied in this state.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fw9og4mmv62o753ysmcd2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fw9og4mmv62o753ysmcd2.png" alt="Example of forcing hover state on the element" width="358" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Reorder elements on the page
&lt;/h2&gt;

&lt;p&gt;Sometimes you may want to rearrange elements on your webpage but you are not sure which order is the best. Fortunately, you can easily preview it! Just select the element you want to move in the Elements tab in Chrome DevTools, drag it, and drop it in the correct place. That's it! A new order will be visible in the UI until you reload the page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Previewing mobile/responsive mode
&lt;/h2&gt;

&lt;p&gt;Modern web development is not easy - we have to ensure our webpages will look good not only on laptops but also on mobile, tablets, big screens, etc. And Chrome DevTools may be useful also in case of checking the responsiveness of our webpage. Just click the mobile preview button close to the selector icon (the second icon from the left in the top menu) and later choose the device, width, height, and device orientation in the menu visible above the page preview. Play with different dimensions - thanks to that you can notice some problems with your webpage behavior on different devices!&lt;br&gt;
A webpage preview on Pixel 5 phone. Notice the icon to enable responsive mode - it's marked in blue with a tooltip below it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F6x7ktsgrbf6a3imomxz0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F6x7ktsgrbf6a3imomxz0.png" alt="A webpage preview on Pixel 5 phone. Notice the icon to enable responsive mode - it's marked in blue with a tooltip below it." width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Of course, the options described in this article are not the only ones available in Chrome DevTools - you may be surprised how many awesome features are available here (I wrote about the less-known ones in my preview article). Feel free to experiment and play with this tool a little - I'm sure it will help you to better understand and easier debug your projects.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>tooling</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to find the topic of the technical presentation</title>
      <dc:creator>Dominika Zając (she/her) 🇵🇱</dc:creator>
      <pubDate>Thu, 01 Sep 2022 13:32:41 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/how-to-find-the-topic-of-the-technical-presentation-2c83</link>
      <guid>https://dev.to/playfulprogramming/how-to-find-the-topic-of-the-technical-presentation-2c83</guid>
      <description>&lt;p&gt;A few subjective tips that will help you choose the topic of the next workshop or presentation quickly and without pain.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fdmx218sqvhd5cs31dzh5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fdmx218sqvhd5cs31dzh5.png" alt="A young woman giving a presentation for a group of a dozen or so people in the room." width="800" height="614"&gt;&lt;/a&gt;&lt;/p&gt;
Photo from ngGirls workshop in Warsaw.


 

&lt;h2&gt;
  
  
  Why is it worth it?
&lt;/h2&gt;

&lt;p&gt;When I started my career in IT, I asked one of my mentors why he devotes his time to conducting workshops and lectures and sharing knowledge with others. The answer I heard inspires me to this day:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“What separates good programmers from the great ones is that the first ones are well-versed in technical issues, can solve problems and take care of their development. Others also share their knowledge and help others to develop”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I strongly believe that &lt;strong&gt;the free flow of knowledge, helping each other and sharing experiences are the things that make IT such a wonderful and unique industry&lt;/strong&gt;. I also learned a lot from various presentations and I would like to “give” some good to the world. Therefore, I strongly encourage you to share your knowledge with others - e.g. by conducting interesting presentations and workshops. What's more - attending all sorts of events can help you grow your personal brand, get a promotion at work, expand your network of contacts, and even travel more (after all, tech conferences are held all over the world).&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing a topic
&lt;/h2&gt;

&lt;p&gt;If the arguments in the previous paragraph have convinced you (and I hope so), you are probably wondering how to start. Contrary to public opinion, it is not that difficult! For most of the people I have spoken to and mentored, the problem is finding the right topic for a speech. What criteria should a good topic meet? It should be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;interesting&lt;/strong&gt; - to attract the attention of the audience,&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;precise&lt;/strong&gt; - to convey knowledge despite time constraints and to focus on a small area of knowledge so as not to overload the audience with excess knowledge,&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;matched to the audience&lt;/strong&gt; - we will speak differently to a group of professionals from the same industry and differently to children. From the very beginning, it is worth considering who is the recipient of our message and choose a topic appropriate for a given group.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once we know what a good topic means, it's time to generate ideas. Personally, I recommend a one-person brainstorming session on this topic. Book 30 minutes in your calendar, during which no one will disturb you. Then get a pen and paper or a computer with your favorite word processor. Start the timer for 20 minutes. Think about 3 areas: things you are interested in, things you have been working on recently and things you want to know more about (I will describe them in more detail in the following paragraphs). For each of them, write down as many ideas and associations as possible. Don't limit yourself and don't scratch any idea at this stage - even if it looks strange at first glance. When the time runs out, start analyzing your saved ideas, taking into account the criteria for a good topic outlined above. Do any of them speak exceptionally to your heart? This is most likely the topic of your next presentation!&lt;/p&gt;

&lt;h2&gt;
  
  
  Generating ideas
&lt;/h2&gt;

&lt;p&gt;The most important step in coming up with a presentation topic is generating ideas. As I wrote above, I most often use 3 predefined areas here: passion, current work and plans. What exactly do I mean by them? Let's go through each of these areas in turn.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fw8v2tatqsry798vntewx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fw8v2tatqsry798vntewx.png" alt="Plush Android and many yellow sticky notes with ideas behind him" width="800" height="1067"&gt;&lt;/a&gt; &lt;/p&gt;
As you can see in the picture attached, me and my teddy Android are big fans of using sticky notes to generate ideas, but of course the digital version is also OK.



&lt;h3&gt;
  
  
  Things you are fascinated by
&lt;/h3&gt;

&lt;p&gt;Each of us has our own interests. And there is nothing better than true enthusiasts who tell others about their hobbies. Is there something that really fascinates you? Something you love telling your friends about and what you can talk about for hours? What was your last "after hours" project that you couldn't tear yourself away from? What subject on your studies /bootcamp do you remember so much that you would like more people to hear about it? It doesn't have to be purely technical either - think about how you can combine your passion with technology. Maybe you can create your own dance mat and program it in your favorite language? Or to use the passion for yoga to tell programmers what to do to make your back hurt less after a whole day of work? I'm sure you already have some interesting ideas - use them! An additional bonus: the easiest way to talk about things we love, is that preparation and presentation will be a pleasure for you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Something you have been working on recently
&lt;/h3&gt;

&lt;p&gt;Another area worth focusing on is the things you are currently working on or have recently worked on. Perhaps it is not something as interesting as the things you thought about in the previous paragraph, but most likely you have already done the initial research and implementation of the solution. You also have a good base for a presentation in which you will tell about your specific example: the business goal you want to achieve, the problems you encountered on your way and the ways in which you addressed them, analyzed approaches - their advantages and disadvantages. What would you do differently if you started this project from scratch? What would you like to know beforehand? Help others by answering these questions. In my subjective opinion, presentations describing a specific use case in the real world are one of those presentations with the most listeners. Think of recent interesting examples from work or additional projects and share them with others.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fthouzaa9aho1q4fhwqa1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fthouzaa9aho1q4fhwqa1.png" alt="A young woman in a black dress giving a presentation to a small group of women. In the background behind it, there is a slide with the words " width="800" height="581"&gt;&lt;/a&gt; &lt;/p&gt;
A photo from my presentation for the Success University about what a programmer's job looks like. Our experiences from everyday work can interest many people.



&lt;h3&gt;
  
  
  Something you want to know more about
&lt;/h3&gt;

&lt;p&gt;The last category of ideas is the least intuitive and requires the most work on your part. I'm sure you have in your head suggestions for things you want to learn more about, frameworks that you intend to learn or tools that you plan to test. A presentation on these topics can be an additional motivation to turn these plans into reality. In addition, there is a good chance that others would like to learn about these topics as well. Thanks to your presentation, they will learn how to start and save some time needed for researching a given tool. I think &lt;strong&gt;many great presentations were created thanks to interesting conversations over beer, interesting meetings at meetups or conferences&lt;/strong&gt;. Take a look at the list of things you want to learn, look at inspirations and notes from recent times. Perhaps that's where the topic of your presentation hid. However, there is one very big risk with this approach - remember that getting to know new things is a long process, and your final conclusions may be different than those planned at the very beginning. In addition, it is important to select the recipients of such content - your topic will most likely be appropriate for a local meetup or meeting at work among people who do not know anything about the topic but definitely do not fit the conference gathering specialists in a given area. Personally, I advise you not to attend any conference or meetup until you have a specific abstract and general plan. Remember that each presentation should be well thought out and properly prepared. However, if you are not chased by deadlines and you can spend some time on research, combine business with pleasure - learn something new, and when you get to know it, share your knowledge with others!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fw3i59fqswsds7vcqzoov.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fw3i59fqswsds7vcqzoov.png" alt="A young woman in a colorful dress with a professional microphone on her ear. Behind it there are fragments of a slide with a CSS class snippet." width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;
Photo from my presentation about accessibility at InfoShare F3 conference in Gdańsk.



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

&lt;p&gt;Choosing a good presentation topic is not an easy task, but you will certainly be able to handle it. What to do?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Take a piece of paper and a pen in your hand.&lt;/li&gt;
&lt;li&gt;List things in which you are very interested.&lt;/li&gt;
&lt;li&gt;List the things you have been working on recently.&lt;/li&gt;
&lt;li&gt;List things you would like to know more about.&lt;/li&gt;
&lt;li&gt;Analyse all your saved ideas and think about which one you like best.
I am sure that thanks to this simple exercise you will be able to choose the topic of your next presentation!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;I keep my fingers crossed for you and for your presentation!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>publicspeaking</category>
      <category>beginners</category>
      <category>career</category>
    </item>
    <item>
      <title>Jak znaleźć temat prezentacji technicznej</title>
      <dc:creator>Dominika Zając (she/her) 🇵🇱</dc:creator>
      <pubDate>Wed, 24 Aug 2022 09:03:36 +0000</pubDate>
      <link>https://dev.to/domizajac/jak-znalezc-temat-prezentacji-technicznej-2e13</link>
      <guid>https://dev.to/domizajac/jak-znalezc-temat-prezentacji-technicznej-2e13</guid>
      <description>&lt;p&gt;Kilka subiektywnych wskazówek, które pomogą Ci szybko i bez bólu wybrać temat kolejnych warsztatów czy prezentacji.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0AyrxijB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dmx218sqvhd5cs31dzh5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0AyrxijB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dmx218sqvhd5cs31dzh5.png" alt="Młoda kobieta prowadząca prezentację dla grupy kilkunastu osób na sali." width="800" height="614"&gt;&lt;/a&gt;&lt;/p&gt;
Zdjęcie z warsztatów ngGirls w Warszawie.


 

&lt;h2&gt;
  
  
  Dlaczego warto?
&lt;/h2&gt;

&lt;p&gt;Gdy rozpoczynałam swoją karierę w IT, spytałam jednego ze swoich mentorów dlaczego poświęca swój czas na prowadzenie warsztatów i wykładów oraz dzielenie się wiedzą z innymi. Odpowiedź, którą usłyszałam inspiruje mnie do dziś:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Dobrych programistów od tych wybitnych dzieli to, że pierwsi doskonale orientują się w kwestiach technicznych, potrafią rozwiązywać problemy i dbają o swój rozwój. Drudzy oprócz tego dzielą się wiedzą i pomagają rozwijać się innym”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Bardzo mocno wierzę w to, że &lt;strong&gt;swobodny przepływ wiedzy, pomaganie sobie nawzajem i wymiana doświadczeń to rzeczy, dzięki którym IT jest tak wspaniałą i wyjątkową branżą&lt;/strong&gt;. Sama też wiele nauczyłam się dzięki różnym prezentacjom i chciałabym “oddać” trochę dobra dla świata. Dlatego bardzo mocno zachęcam Cię do dzielenia się swoją wiedzą z innymi — m.in. prowadząc ciekawe prezentacje i warsztaty. Co więcej — udział w różnego rodzaju wydarzeniach może pomóc Ci rozwinąć markę osobistą, zdobyć awans w pracy, rozwinąć sieć kontaktów, a nawet więcej podróżować (w końcu konferencje techniczne odbywają się na całym świecie).&lt;/p&gt;

&lt;h2&gt;
  
  
  Wybieranie tematu
&lt;/h2&gt;

&lt;p&gt;Jeżeli argumenty z poprzedniego akapitu Cię przekonały (a mam nadzieję, że tak właśnie było), zastanawiasz się pewnie jak zacząć. Wbrew pozorom, nie jest to takie trudne! Dla większości osób, z którymi rozmawiałam i które mentoruję, problemem jest znalezienie odpowiedniego tematu wystąpienia. Jakie kryteria powinien spełniać dobry temat? Powinien on być:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;interesujący&lt;/strong&gt; — by przyciągnąć uwagę słuchaczy,&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;precyzyjny&lt;/strong&gt; — by przekazać wiedzę mimo ograniczeń czasowych i koncentrować się na małym obszarze wiedzy tak aby nie zarzucić słuchaczy nadmiarem wiedzy,&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;dobrany do widowni&lt;/strong&gt; — inaczej będziemy w końcu mówić do grupy profesjonalistów z tej samej branży, a inaczej do dzieci. Warto od samego początku zastanowić się kto jest odbiorcą naszego przekazu i wybrać temat odpowiedni dla danej grupy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kiedy już wiemy, co oznacza dobry temat, przychodzi czas na generowanie pomysłów. Osobiście polecam w tym temacie jednoosobową burzę mózgów. Zarezerwuj w swoim kalendarzu 30min, w czasie których nikt nie będzie Ci przeszkadzał. Następnie zaopatrz się w kartkę i długopis lub też komputer z ulubionym edytorem tekstu. Włącz stoper na 20 min. Pomyśl o 3 obszarach: rzeczach, którymi się interesujesz, rzeczach nad którymi pracowałeś/pracowałaś w ostatnim czasie i rzeczach, o których chcesz się dowiedzieć więcej (opiszę je dokładniej w kolejnych akapitach). Do każdego z nich wypisz jak najwięcej pomysłów i skojarzeń. Nie ograniczaj się i nie wykreślaj na tym etapie żadnego pomysłu — nawet jeżeli na pierwszy rzut oka wygląda dziwnie. Kiedy skończy się czas, rozpocznij analizę zapisanych pomysłów, biorąc pod uwagę kryteria dobrego tematu opisane wyżej. Czy któryś z nich wyjątkowo przemawia do Twojego serca? Najprawdopodobniej to temat Twojej kolejnej prezentacji!&lt;/p&gt;

&lt;h2&gt;
  
  
  Generowanie pomysłów
&lt;/h2&gt;

&lt;p&gt;Najważniejszym etapem wymyślania tematu prezentacji jest generowanie pomysłów. Tak jak pisałam wyżej, najczęściej korzystam tutaj z 3 wcześniej określonych obszarów: pasji, aktualnej pracy i planów. Co dokładnie przez nie rozumiem? Przejdźmy przez każdy z tych obszarów po kolei.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oSkxncEP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w8v2tatqsry798vntewx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oSkxncEP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w8v2tatqsry798vntewx.png" alt="Pluszowy Android a za nim mnóstwo żółtych karteczek samoprzylepnych z pomysłami" width="800" height="1067"&gt;&lt;/a&gt; &lt;/p&gt;
Jak widać na załączonym obrazku, ja i mój pluszowy Android jesteśmy wielkimi fanami wykorzystywania karteczek do generowania pomysłów ale oczywiście wersja cyfrowa jest również OK.



&lt;h3&gt;
  
  
  Rzeczy, którymi się fascynujesz
&lt;/h3&gt;

&lt;p&gt;Każdy z nas ma swoje własne zainteresowania. I nie ma nic lepszego niż prawdziwi pasjonaci, którzy opowiadają innym o swoich “konikach”. Czy jest coś co Cię naprawdę fascynuje? Coś o czym uwielbiasz opowiadać swoim znajomym i o czym możesz rozmawiać godzinami? Jaki był Twój ostatni projekt “po godzinach”, od którego nie mogłaś/nie mogłeś się oderwać? Jaki przedmiot na studiach/kursie zapadł Ci tak bardzo w pamięć, że chciałbyś by więcej osób o tym usłyszało? To nie musi być również rzecz czysto techniczna — pomyśl jak możesz połączyć swoją pasję z technologią. Może uda Ci się stworzyć własną matę do tańczenia i zaprogramować ją w ulubionym języku? Albo wykorzystać pasję do jogi, by podpowiedzieć programistom co zrobić, by plecy po całym dniu pracy bolały mniej? Jestem pewna, że w Twojej głowie zrodziło się już kilka ciekawych pomysłów — wykorzystaj je! Dodatkowy bonus: najłatwiej mówi nam się o rzeczach, które uwielbiamy, stąd przygotowanie i prezentacja będą dla Ciebie zapewne przyjemnością.&lt;/p&gt;

&lt;h3&gt;
  
  
  Coś nad czym pracujesz w ostatnim czasie
&lt;/h3&gt;

&lt;p&gt;Kolejny obszar, nad którym warto się pochylić to rzeczy, nad którymi aktualnie pracujesz lub pracowałaś/pracowałeś w ostatnim czasie. Być może nie jest to coś aż tak interesującego jak rzeczy, o których pomyślałeś/pomyślałaś w poprzednim akapicie, jednak najprawdopodobniej masz już za sobą wstępny research, a także implementację rozwiązania. Masz też dobrą bazę na prezentację, w której opowiesz o swoim konkretnym przykładzie: celu biznesowym, który chcesz osiągnąć, problemach, które napotkałeś/napotkałaś na swojej drodze i sposobach w jaki je zaadresowałaś/zaadresowałeś, przenalizowanych podejściach — ich zaletach i wadach. Co zrobiłabyś/zrobiłbyś inaczej gdybyś zaczynała/zaczynał ten projekt od zera? Co chciałabyś/chciałbyś wiedzieć wcześniej? Pomóż innym odpowiadając na te pytania. W mojej subiektywnej ocenie, prezentacje opisujące konkretny przypadek użycia w rzeczywistym świecie są jednymi z tych wystąpień, z których słuchacze wynoszą najwięcej. Pomyśl o ciekawych przykładach z pracy lub projektów dodatkowych w ostatnim czasie i opowiedz o nich innym.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YmDwF1o2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/thouzaa9aho1q4fhwqa1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YmDwF1o2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/thouzaa9aho1q4fhwqa1.png" alt='Młoda kobieta w czarnej sukience prowadząca prezentację dla małej grupy kobiet. W tle za nią widoczny jest slajd z napisem "Jak wygląda praca programistki"' width="800" height="582"&gt;&lt;/a&gt; &lt;/p&gt;
Zdjęcie z mojej prezentacji dla Uniwersytetu Sukcesu o tym jak wygląda praca programistki. Nasze doświadczenia z codziennej pracy mogą być podstawą prezentacji, która zaciekawi wiele osób.



&lt;h3&gt;
  
  
  Coś o czym chcesz dowiedzieć się więcej
&lt;/h3&gt;

&lt;p&gt;Ostatnia kategoria pomysłów jest najmniej intuicyjna i wymaga największego nakładu pracy z Twojej strony. Z pewnością masz w swojej głowie propozycje rzeczy, o których chcesz dowiedzieć się więcej, frameworki, których zamierzasz się nauczyć czy też narzędzia, które planujesz przetestować. Prezentacja dotycząca tych tematów może być dodatkową motywacją, by te plany zamienić w rzeczywistość. Ponadto, istnieje wielka szansa, że inni również chcieliby poznać te tematy. Dzięki Twojej prezentacji dowiedzą się jak zacząć i zaoszczędzą trochę czasu potrzebnego na research danego narzędzia. Myślę, że &lt;strong&gt;wiele świetnych prezentacji powstało dzięki ciekawym rozmowom przy piwie, ciekawym spotkaniom na meetupie czy konferencji&lt;/strong&gt;. Zerknij na listę rzeczy, których chcesz się nauczyć, popatrz na inspiracje i notatki z ostatniego czasu. Być może właśnie tam ukrył się temat Twojej prezentacji. Z tym podejściem wiąże się jednak jedno bardzo duże ryzyko — pamiętaj, że poznawanie nowych rzeczy jest długotrwałym procesem, a Twoje ostateczne wnioski mogą być inne niż te zaplanowane na samym początku. Dodatkowo, ważne jest odpowiednie dobranie odbiorców takich treści — Twój temat będzie najprawdopodobniej odpowiedni na lokalny meetup czy spotkanie w pracy wśród osób, które nic nie wiedzą w temacie ale stanowczo nie pasuje na konferencję gromadzącą specjalistów w danym obszarze. Osobiście odradzam też zgłaszanie się na jakąkolwiek konferencję czy meetup zanim nie będziesz mieć określonego abstraktu oraz planu ogólnego. Pamiętaj, że każda prezentacja powinna być przemyślana i odpowiednio przygotowana. Jeżeli jednak nie gonią Cię żadne terminy i możesz poświęcić trochę czasu na research, połącz przyjemne z pożytecznym — naucz się czegoś nowego, a gdy już to poznasz podziel się wiedzą z innymi!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WNsVByJM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w3i59fqswsds7vcqzoov.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WNsVByJM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w3i59fqswsds7vcqzoov.png" alt="Młoda kobieta w kolorowej sukience z profesjonalnym mikrofonem na uchu. Za nią widoczne są fragmenty slajdu ze snippetem klasy w CSS." width="800" height="1201"&gt;&lt;/a&gt;&lt;/p&gt;
Zdjęcie z mojej prezentacji o dostępności na InfoShare F3 w Gdańsku.



&lt;h2&gt;
  
  
  Podsumowanie
&lt;/h2&gt;

&lt;p&gt;Wybór dobrego tematu prezentacji nie jest zadaniem prostym ale z pewnością sobie z nim poradzisz. Co zrobić?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Weź w rękę kartkę papieru i długopis.&lt;/li&gt;
&lt;li&gt;Wynotuj rzeczy, którymi się bardzo interesujesz.&lt;/li&gt;
&lt;li&gt;Wynotuj rzeczy, nad którymi ostatnio pracowałaś/pracowałeś.&lt;/li&gt;
&lt;li&gt;Wynotuj rzeczy, o których chciałbyś dowiedzieć się więcej.&lt;/li&gt;
&lt;li&gt;Przeanalizuj wszystkie zapisane pomysły i zastanów się, który z nich najbardziej Ci się podoba.
Jestem pewna, że dzięki temu prostemu ćwiczeniu uda Ci się wybrać temat kolejnej prezentacji!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Bonus
&lt;/h2&gt;

&lt;p&gt;Przygotowanie swoich pierwszych prezentacji, wybieranie tematu, tworzenie struktury prezentacji czy poszukiwanie miejsca, w którym można się zaprezentować może wydawać Ci się nieco przytłaczającym zadaniem — spokojnie, wiele osób ma podobne obawy. Aby pomóc początkującym, razem z Jarkiem Michalikiem (świetnym programistą i prelegentem opowiadającym głownie o testach w Kotlinie) &lt;strong&gt;tworzymy kurs, w którym będziemy pomagać początkującym stworzyć swoją pierwszą prezentację&lt;/strong&gt;. Brzmi dobrze? &lt;strong&gt;Wypełnij &lt;a href="https://devspeaker.pl/ankieta"&gt;ankietę&lt;/a&gt;&lt;/strong&gt;, by pomóc nam zrozumieć czego oczekujesz od takiego kursu, a my damy Ci znać gdy wystartujemy z projektem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trzymam bardzo mocno kciuki za Ciebie i za Twoją prezentację!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>publicspeaking</category>
      <category>beginners</category>
      <category>career</category>
    </item>
    <item>
      <title>5 tips to improve your Code Reviews on GitHub</title>
      <dc:creator>Dominika Zając (she/her) 🇵🇱</dc:creator>
      <pubDate>Mon, 15 Aug 2022 18:52:09 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/5-tips-to-improve-your-code-reviews-on-github-gja</link>
      <guid>https://dev.to/playfulprogramming/5-tips-to-improve-your-code-reviews-on-github-gja</guid>
      <description>&lt;p&gt;&lt;em&gt;Code review is one of the simplest but at the same time the most powerful mechanisms for programmers. Unfortunately, very often it is also the most underestimated one. In my previous work, I went with my teammates through a journey from zero to quite a good organized and well-working process. Was it worth our time and effort? Definitely, yes! Below you can find some thoughts and tips based on our experiences.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fkg1ee6cslsw6y0hua7ix.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fkg1ee6cslsw6y0hua7ix.jpeg" alt="Cat sitting in front of computer with open code editor." width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
Cat sitting in front of computer with open code editor.



&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Let's start from the beginning - what is Code Review?
&lt;/h2&gt;

&lt;p&gt;If you are a programmer you probably heard that phrase before. But for tech newbies let's start with a short definition. Code Review (CR in short) is a practice when the second engineer audits your changes before merging them to the main codebase. That super easy behavior improves code quality and accelerates knowledge sharing among the team. Moreover, it helps to avoid mistakes (especially complex ones like architecture problems). All the most popular version controlling platforms like GitHub or GitLab prepared special tools to support CR in their environments. And the majority of companies and teams have special standards defining how the CR should look like and how many approvals you need before merging the code to the main branch. Below you can find 5 tips that in my opinion are super useful when defining your standards.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Protected branches
&lt;/h2&gt;

&lt;p&gt;First of all - protect your main branch against unexpected changes. It doesn't matter if someone will call &lt;code&gt;git push&lt;/code&gt; locally on a wrong branch or someone from another team who doesn't know your standards is trying to add something to your codebase. &lt;strong&gt;Pushing something directly to the main branch should not be possible&lt;/strong&gt;. Fortunately, GitHub is offering a great mechanism for that called &lt;strong&gt;protected branches&lt;/strong&gt;. You can create special rules for a branch or set of branches (e.g. based on name pattern) defining that e.g. pull request and approval from at least one reviewer are required to merge your code to the main branch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fi2d8ifbgql21e1yuq5v2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fi2d8ifbgql21e1yuq5v2.png" alt="Screenshot of branch protection rule section in GitHub. There is an input field for branch name or name pattern and a checklist of rules for given branches." width="800" height="1171"&gt;&lt;/a&gt;&lt;/p&gt;
Screenshot of the section responsible for defining branch protection rules.



&lt;p&gt; &lt;/p&gt;

&lt;p&gt;How to configure that?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to github.com and navigate to your repository&lt;/li&gt;
&lt;li&gt;Click Settings tab&lt;/li&gt;
&lt;li&gt;In the left-side menu click Branches option&lt;/li&gt;
&lt;li&gt;Click Add branch protection rule button&lt;/li&gt;
&lt;li&gt;Put branch name or regex for name patter in Branch name pattern input&lt;/li&gt;
&lt;li&gt;Choose one of the items available in the checklist below&lt;/li&gt;
&lt;li&gt;Save your changes&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2. Labels
&lt;/h2&gt;

&lt;p&gt;It's a super small but extremely useful feature for me. Especially in big, open-source repositories. Labels are nothing else but additional, easy-to-see and filter pieces of information visible on pull request lists. You can use them to e.g. differentiate internal and external changes. MRs connected with particular features of your app, type of changes, or size. Using labels makes managing merge requests much easier for me! How to create a label?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fbln343xb2p01ldywn0ei.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fbln343xb2p01ldywn0ei.png" alt="Form to create a new label containing fields " width="800" height="64"&gt;&lt;/a&gt;&lt;/p&gt;
Creating a new label is really easy!



&lt;p&gt; &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;code&gt;github.com&lt;/code&gt; and navigate to your repository&lt;/li&gt;
&lt;li&gt;Go to the &lt;code&gt;Pull request&lt;/code&gt; section&lt;/li&gt;
&lt;li&gt;Click &lt;code&gt;Labels&lt;/code&gt; close to the filtering input&lt;/li&gt;
&lt;li&gt;Click the green &lt;code&gt;New label&lt;/code&gt; button&lt;/li&gt;
&lt;li&gt;Fulfil all fields in the form and click &lt;code&gt;Create labels&lt;/code&gt; button&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now you can assign this label to any of your new or existing merge requests in the pull request creation form or menu in the pull requests section.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Automated Checks
&lt;/h2&gt;

&lt;p&gt;Not everything can be tested automatically. But many things like syntax or running tests can be. Don't waste your and your colleagues' time checking things that can be tested by the computer. You can use Jenkins/Github Actions/CircleCI or any other tool of your choice to start automated tests on each merge request creation. Add a rule to disable merge until all required checks pass. It may save your production someday! Small tip: add also a way to easily re-trigger those tests manually - e.g. sending a special message in a comment on GitHub. It's very useful in debugging problems.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fz3gjh3mcwpufo2fa1ijd.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fz3gjh3mcwpufo2fa1ijd.jpeg" alt="Plush Android sitting in front of 2 computers - one of them is completely covered in stickers, the second one has no sticker on it." width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;
One of the biggest benefits of using a code review mechanism is that everyone has a different view, background, and priorities. E.g. one person loves may love stickers on the laptop and the second hates them. But our software should work for everyone! So the second person can see things you accidentally missed in your code.



&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  4. Template Pull Request message with a checklist
&lt;/h2&gt;

&lt;p&gt;Each merge request should have a good, short, and self-explaining title and some description. In big teams, it's also useful to add additional information like links to tasks/issues from your task-tracking system like Jira or Trello. Some things cannot be tested manually - like accessibility or fulfilling business requirements. Unfortunately, when your team and projects are growing it's more and more difficult to remember all of those things to put in the merge request message as an author and things to check as a reviewer. You can easily address those problems using templates for merge requests. Thanks to that you'll see a predefined draft of a message with a checklist of things to manually check when you create a merge request and it's enough to fulfill the form with needed information and mark all items in the checklist as done.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fudcfql1719ava253pfd2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fudcfql1719ava253pfd2.png" alt="Screenshot of merge request template from Github - there is a place to put the JIRA link of the issue and a checklist of things to manually check during a review like accessibility check or sending strings to translations." width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;
Example of merge request template (yes, the screenshot was taken before IE depreciation).



&lt;p&gt; &lt;/p&gt;

&lt;p&gt;How to do so?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open your repository in your favorite code editor&lt;/li&gt;
&lt;li&gt;Add file &lt;code&gt;pull_request_template.md&lt;/code&gt; in the root of your repository or the docs folder placed in the root.&lt;/li&gt;
&lt;li&gt;Put your template inside of the file (You can use markdown syntax there to create headings, checklists, etc).&lt;/li&gt;
&lt;li&gt;Merge the change to the main branch.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Note: If you want to have more than 1 template of the message create the &lt;code&gt;PULL_REQUEST_TEMPLATE&lt;/code&gt; directory (also in the root or in the docs folder) and keep your markdown files there. In this setup, a user can choose one of the templates using the dropdown menu during creating the MR.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Always be open-minded and empathic
&lt;/h2&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1412481733396602883-45" src="https://platform.twitter.com/embed/Tweet.html?id=1412481733396602883"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1412481733396602883-45');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1412481733396602883&amp;amp;theme=dark"
  }



 &lt;/p&gt;
Please, don't be like the people from this tweet. Source: https://twitter.com/pareekhjain/status/1412481733396602883



&lt;p&gt; &lt;/p&gt;

&lt;p&gt;My last tip is not technical but extremely important (inspired by the tweet above presenting 4 people beating the 5th people with the description "4 of 5 developers enjoy code review"). When you do a code review always keep an open mind and be emphatic. Code review is not about roasting someone of their skills. It's not a place to show your superiority or greater experience. It's a mechanism to let us all grow, learn and keep high quality. So, don't only criticize. If someone is doing a great job - let them know about it! If someone is solving something differently than you, try to understand their approach before pushing them to code your way. If someone made a mistake - let them know but in a supportive, not hating way. Each of us has learned once, and we all make mistakes sometimes. Write only the messages you would like to get - to help you develop your skills but not to be depressing. &lt;strong&gt;Despite stereotypes empathy is a crucial skill in software engineering&lt;/strong&gt; - don't forget that! All in all, programming is a team sport nowadays.&lt;/p&gt;

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

&lt;p&gt;The tips described below do not exhaust all possibilities of improving your code review but are in my opinion a good start to creating a good code review process and defining some standards. I hope, you found this article useful. If so, clap the button below or share it with your friends. Thanks in advance and happy coding!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>computerscience</category>
      <category>github</category>
      <category>webdev</category>
    </item>
    <item>
      <title>6 tips to make your JS/TS repository more new-joiners friendly</title>
      <dc:creator>Dominika Zając (she/her) 🇵🇱</dc:creator>
      <pubDate>Sun, 31 Jul 2022 10:36:17 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/6-tips-to-make-your-jsts-repository-more-new-joiners-friendly-50oo</link>
      <guid>https://dev.to/playfulprogramming/6-tips-to-make-your-jsts-repository-more-new-joiners-friendly-50oo</guid>
      <description>&lt;p&gt;Have you ever wondered how to make your repository more readable and lower the entry-level for new joiners in your team? How to decrease the time needed for onboarding new people and limit questions asked by external people who want to use your solutions or contribute to them? Or how to make it easier just for yourself to recreate the developing ecosystem after reimaging/changing your laptop? Recently, I analyzed many repositories (private and open source) and discovered that some of them are much more friendly to new joiners than others. What makes them so special? Several small things you can implement in your project with really low time and effort costs. Below, you can find 6— in my opinion — the most useful tips to improve your code repository just today.&lt;/p&gt;

&lt;h2&gt;
  
  
  #1 Readme
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F4ozy3ewj1p3mpmqcsn5q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F4ozy3ewj1p3mpmqcsn5q.png" alt="Example of readme file — short description of the project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Probably that point is obvious to many of you. But at the same time it’s so important I can’t miss that point in my article. Readme is a file in the root of your git project where you should describe the most essential info about it. What kind of information should be placed there? Definitely, the main purpose of the repository — why it was created, what is the purpose of it, who is responsible for that project. Personally, I am also a huge fan of adding a section with specific info on how to install, develop, and deploy code in the repo. Yeah, I know that majority of times in the beginning it will be sth like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone &amp;lt;repository-address&amp;gt;
npm install
npm run start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;but remember that our projects are not always so simple! When your repository is growing and you start using subrepositories, monorepos, micro-frontends, complex dependencies, dockers, or advanced logic to deploy, the first run of the app may become a nightmare for a new joiner — especially if that’s a person with a different technical background than yours. Adding specific info in the readme about that process (especially formed as a chain of commands to call in a terminal) not only lowers an entry-level to contribute to your repository but also decreases the time needed for onboarding a new person or answering questions from other teams in your company. And it should take less than 5 minutes (in the most basic way you can just copy-paste commands you use each time to start a project from terminal to readme file). Completely, worth it — don’t you think? If you need some inspiration, check e.g. &lt;a href="https://github.com/github-changelog-generator/github-changelog-generator#readme" rel="noopener noreferrer"&gt;github-changelog-generator&lt;/a&gt; — really nice example of a good readme file! &lt;/p&gt;

&lt;h2&gt;
  
  
  #2 Scripts in package.json
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fmty18oku63poii2qrl5q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fmty18oku63poii2qrl5q.png" alt="Screenshot of example scripts in package.json"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Package.json is the next, super-essential file in almost every JS/typescript-based project. It’s a file where you can define the version, name, and dependencies for the project. Thanks to that you can just call &lt;code&gt;npm install&lt;/code&gt; or &lt;code&gt;yarn&lt;/code&gt; to install all dependencies required for your project (in the correct versions!). As a frontend developer, you probably use that all the time. But there is also a section which is, unfortunately, less popular — and I’m writing here about scripts. It’s nothing more than a key-value list where you can define your own names for some commands. When you are using e.g. Angular, some of them will be generated during the init of the project — like &lt;code&gt;start&lt;/code&gt; or &lt;code&gt;test&lt;/code&gt;. Although, I strongly encourage you to add your custom ones. If you have a special command to start unit tests, add it to scripts. If you are using some tools to check code styling, add it in that section. If you are using docker, add a script to run it locally there as well. To be honest, almost every command you use in the terminal should be placed here. Benefits are at least two: all useful commands are documented, so a new person in the team can easily check what actions are possible and you receive short, easy-to-remember, and type alias to call in the terminal.&lt;/p&gt;

&lt;h2&gt;
  
  
  #3 Swagger
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fkyq8cwl19cexatbh51n0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fkyq8cwl19cexatbh51n0.png" alt="Example of swagger file from the official page — swagger.io. In the left there is a source code, on the right generated api doc"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Defining and documenting API can be a challenging task. Fortunately, we have something called a &lt;a href="http://swagger.io/" rel="noopener noreferrer"&gt;swagger&lt;/a&gt; — a set of open-source tools built around the OpenAPI Specification that can help you design, build, document, and consume REST APIs. Thanks to them, you can create a webpage with all endpoints defined with their query params, body params, schemas of the expected response, etc. What’s more, you can also test calls directly from that page. You don’t have to dig into source code to understand APIs. And using or changing your service is much easier, don’t you think? Let’s say some words about how to implement them in our project lifecycles. There are two main approaches to defining swagger: as a contract before development or autogenerating that based on created service code. Both of them have their own cons and pros. Defining swagger file as an API contract before touching a code allows us to parallel work between different teams dependent on that service and create typescript types based on that (useful when your backend is written in Node and you want to share types between repositories). But also requires more effort— all endpoints have to be defined manually and some later changes in service may be missed (developers have to remember about changes in two places). On the other hand, you can use annotations to generating swagger files automatically, based on source code — using libraries available for almost all languages. Thanks to that you don’t have to worry about updating documentation, but all consumers have to wait for a working version of API to start their work and some comments. Nevertheless, no matter which option is better in your case, using swagger definitely can take your API documentation to a completely new level.&lt;/p&gt;

&lt;p&gt;Note: Very often your swagger contract will be defined in a separate repository. If so, remember to add a swagger link to the Readme file in the main project. Be nice to others, don’t make them search for that (or worse, miss knowledge it exists)!&lt;/p&gt;

&lt;h2&gt;
  
  
  #4 Tests
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fe9t6kvct1xq3m0ohojly.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fe9t6kvct1xq3m0ohojly.png" alt="A board with text Tests are for people who make mistakes. Part who make mistakes is strikethrough, so final text is “Tests are for people”"&gt;&lt;/a&gt;&lt;br&gt;
Probably, the most surprising point here. But well-written tests may be a much better source of knowledge about the repository than traditional documentation. Docs can lie — code never! When I have a problem with understanding some part of a system, I’m always taking a look at a unit or functional tests for that. It simple way to check which use cases were predicted by the code author and how it should work. And good tests increase also the quality of your project. Double win!&lt;/p&gt;

&lt;h2&gt;
  
  
  #5 .nvmrc
&lt;/h2&gt;

&lt;p&gt;A little thing, but makes me happy! A .nvmrc file allows you to define and document the node version used in the project. It’s only one line, but whoever was struggling with a broken installation and had no clue what’s wrong, will appreciate it. Especially, because errors printed in the terminal are not suggesting the wrong node version at all! Using .nvmrc it’s enough to call &lt;code&gt;nvm use&lt;/code&gt; before &lt;code&gt;npm install&lt;/code&gt; and the correct node version will be used. So small, so nice!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fxb0251bz8dis1y8nbihf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fxb0251bz8dis1y8nbihf.png" alt="Black cat sitting in the front of the computer with opened source code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  #6 Code styling rules &amp;amp; automation
&lt;/h2&gt;

&lt;p&gt;Please, don’t waste your and others' time on manually checking indents or formatting rules. And write them down instead of saying “We always do it that way” during code review. I know that &lt;em&gt;“spaces vs tabs”&lt;/em&gt; is a holy war in programming but you have to decide that battle for your team. Add tools like &lt;a href="https://eslint.org/" rel="noopener noreferrer"&gt;eslint&lt;/a&gt; or &lt;a href="https://prettier.io/" rel="noopener noreferrer"&gt;prettier&lt;/a&gt; and a set of rules to your repository. Automate that checks. Test your formatting on pre-commit or creating merge requests. Define rules in a transparent way — not only in your head. And let a computer do that simple checks — it is the best at that!&lt;/p&gt;

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

&lt;p&gt;Of course, the list presented above is not exhausted and there are many more ways to improve your codebase to make it more new-joiners friendly. But all tips presented by me are easy to implement and — in my personal opinion — have a huge impact on people who want to start work with your repository. I hope, you will find that article useful! If so, click the “clap” button or leave a comment below. Happy coding!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>programming</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>A short comment on comments in the code</title>
      <dc:creator>Dominika Zając (she/her) 🇵🇱</dc:creator>
      <pubDate>Wed, 20 Jul 2022 17:09:38 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/a-short-comment-on-comments-in-the-code-1i54</link>
      <guid>https://dev.to/playfulprogramming/a-short-comment-on-comments-in-the-code-1i54</guid>
      <description>&lt;p&gt;My short comment on why you should stop using comments in your code (unless in special cases)&lt;/p&gt;

&lt;h2&gt;
  
  
  Tl;dr
&lt;/h2&gt;

&lt;p&gt;Please, think twice before adding comments to your code. Probably, there are no needed and will just confuse people who will read your code later on. Write a clean, readable code instead. Thanks in advance!&lt;/p&gt;

&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;I was thinking about this article for a very long time. As I often help young developers I see how many of them love adding comments to their code. And I still remember lecturers from my studies who tried to convince us that the good code should be commented to be readable for other developers. However, the last straw that breaks the camel’s back was the tweet you can see below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Ffal0udi31n6r3pwg8d73.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ffal0udi31n6r3pwg8d73.png" alt="A stop sign with sign below informing “This is a stop sign" width="589" height="737"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: &lt;a href="https://twitter.com/programmersmeme/status/1291657147823136768" rel="noopener noreferrer"&gt;Programmers Memes Twitter&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This photo is the best comment on adding comments to the code ever. I wish I could say it’s an exaggeration. But what is the difference between the above and the comment in the function below?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// function to count the perimeter of the triangle
// input: 3 numbers, output: number
const countTrianglePertimeter = (a: number, b: number, c: number)
: number =&amp;gt; {
    return a + b + c;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Unfortunately, we can still find a lot of snippets like that in the code. And I strongly encourage you to avoid them! Why? There are many reasons to stop adding useless comments to your code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reasons to stop adding comments to your code
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Comments are just redundant to the code
&lt;/h3&gt;

&lt;p&gt;Very often comments do not provide any additional information to the user. They describe exactly the same things as the code does. So why duplicate the info for the reader? Use meaningful names instead. Extract logic to separate functions if needed. Extract const values to the well-named const variables. Simplify code e.g. using fast returning and avoiding multiple nesting if needed. Well-written code is even easier to read by non-native English speakers than long descriptions in plain language!&lt;/p&gt;

&lt;h3&gt;
  
  
  Comments are often out-to-date
&lt;/h3&gt;

&lt;p&gt;The code in live projects changes. There are always some bug fixes or new functionalities which require not only adding the code but also editing the existing source. And as long as code is always up-to-date, hardly anyone remembers about updating the comments. So, comments are often out-to-date and present the old logic of the code. Remember, &lt;strong&gt;comments can lie — the code never does&lt;/strong&gt;!&lt;/p&gt;

&lt;h3&gt;
  
  
  Comments can be misleading
&lt;/h3&gt;

&lt;p&gt;Programmers very often want to keep comments short and write them after writing the code. Because of that, the text can contain some mental shortcuts and simplifications. What is hidden between the words may be obvious to the author, but not to the reader. Using the wrong word may make the whole meaning completely different. And when you make a mistake in the code — tests will catch it. Unfortunately, there is no automated way to test if your comment is not misleading. So just skip it — as long as it’s possible.&lt;/p&gt;

&lt;h3&gt;
  
  
  Comments make the source code longer
&lt;/h3&gt;

&lt;p&gt;It’s quite obvious — each comment’s line makes your code file longer. And our brains don’t like long walls of text. Opening a file with many comments makes it difficult to find really important lines and see all the code on the screen. When you can’t see all functions on one screen it’s easier to make mistakes or create some inconsistency. Also, computers have to handle it, so it may have an impact on performance. For many years, fans of the minimalist approach to life have been saying that fewer things mean less chaos. And I agree with them — at least when it comes to programming.&lt;/p&gt;

&lt;h3&gt;
  
  
  Everyone is afraid of removing or uncommenting commented code
&lt;/h3&gt;

&lt;p&gt;Sometimes we leave the code commented in case it will be useful in the future. But let’s be honest — there are no more scary things than code that is commented on and no one knows why. Can we just remove it? Why it’s not working? What happens if we uncomment it? Leaving unfinished or “almost working” snippets commented in the code could be useful many years ago. But now we have great code versioning systems like git — removing the code with meaningful and descriptive commit message (and eventually adding a tag to make it easier to find later on) is much more convenient, clear, and easy to revert. Also, almost no one starts the implementation of a new feature by looking for some commented code in the codebase. So chances that someone will use your currently unnecessary code are really low.&lt;/p&gt;

&lt;h2&gt;
  
  
  Special cases when comments can be useful
&lt;/h2&gt;

&lt;p&gt;In the previous section, I described many reasons for removing comments from your code. However, there are some special cases where comments can be useful — even in the production code! They are described below — but remember: I don’t call them &lt;em&gt;special cases&lt;/em&gt; by accident :)&lt;/p&gt;

&lt;h3&gt;
  
  
  Regexes
&lt;/h3&gt;

&lt;p&gt;There is an old saying “If you have a problem and use regex to solve it then you have two problems”. Regular expressions are great and useful but unfortunately not very readable. It’s why adding comments explaining what a given regex is checking is not the worst idea.&lt;/p&gt;

&lt;h3&gt;
  
  
  Specific business logic
&lt;/h3&gt;

&lt;p&gt;Sometimes business requirements are tricky and not intuitive. Theoretically, the logic should be covered in some tech documentation but let’s be honest — no one likes reading tons of docs when need to fix one small thing. It’s why adding a short comment explaining the reasons behind some not obvious decisions may be OK. Just check if it’s a confusing logic that cannot be well explained in the code.&lt;/p&gt;

&lt;h3&gt;
  
  
  TODO comments
&lt;/h3&gt;

&lt;p&gt;The developing process is split into steps. And it’s OK to not include all changes in one commit but leave them for the following ones. When your project is small and you don’t use any tool to track tasks (like Jira or Github Issues), having TODO comments saying what should be changed and where can be useful. Especially because code editors have special mechanisms to support them. The problem here is that this solution is not scaling and can be inefficient for big projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips on comments and avoiding them
&lt;/h2&gt;

&lt;p&gt;Some tips may help you decide if comments are needed or how to use them correctly. First of all, &lt;strong&gt;before writing a comment thing if you can provide the same content in the code&lt;/strong&gt;. Why do you need free text to express your intention? Why code cannot speak itself? &lt;strong&gt;Very often the need of writing a comment is just a symptom of a refactoring need&lt;/strong&gt;. Also, if you have to write a comment (because of one of the reasons described in the previous section), &lt;strong&gt;keep a comment as close to the code which it describes as possible&lt;/strong&gt;. If you add your thoughts at the beginning of the file, a person reading the code probably won’t notice it or not update it while implementing some changes. And talking about changes — don’t track them in the source code. &lt;strong&gt;Git is definitely a better place to track changes&lt;/strong&gt; and their authors. Also, git (or any other versioning system) is your friend if you want to remove some functionality but have a chance to revert it. &lt;strong&gt;Don’t comment on the source code — create a commit with a meaningful name instead&lt;/strong&gt; and programmers will find it in history if needed. Thanks to all of those tips your code will be cleaner, up-to-date, and more readable for everyone.&lt;/p&gt;

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

&lt;p&gt;Of course, there are no strict rules about adding comments to the code. Each case is a little different and your role as a developer is to determine if comments can be useful in your case or distract/mislead the person who will read your code. I encourage you to think twice before you will add a new comment to your code and consider their props and cons. Remember: &lt;strong&gt;comments can lie — code never does&lt;/strong&gt;!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>typescript</category>
      <category>codenewbie</category>
    </item>
  </channel>
</rss>
