<?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: Jackline Kaunda</title>
    <description>The latest articles on DEV Community by Jackline Kaunda (@jackline_kaunda).</description>
    <link>https://dev.to/jackline_kaunda</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%2F3407797%2Ff161eb61-1f22-44d9-9cf9-1be7e7175a46.jpg</url>
      <title>DEV Community: Jackline Kaunda</title>
      <link>https://dev.to/jackline_kaunda</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jackline_kaunda"/>
    <language>en</language>
    <item>
      <title>How to Install Homebrew on Ubuntu (Step-by-Step Guide)</title>
      <dc:creator>Jackline Kaunda</dc:creator>
      <pubDate>Tue, 17 Mar 2026 20:16:30 +0000</pubDate>
      <link>https://dev.to/jackline_kaunda/how-to-install-homebrew-on-ubuntu-step-by-step-guide-3mo0</link>
      <guid>https://dev.to/jackline_kaunda/how-to-install-homebrew-on-ubuntu-step-by-step-guide-3mo0</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Install Homebrew on Ubuntu in these steps:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;build-essential procps curl file git

/bin/bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; /home/pc/.bashrc
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv bash)"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; /home/pc/.bashrc
&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;/home/linuxbrew/.linuxbrew/bin/brew shellenv bash&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then verify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew doctor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Your system is ready to brew.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’re all set.&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;If you have used macOS before, you’ve probably come across &lt;code&gt;brew&lt;/code&gt; (Homebrew). It’s a simple and powerful package manager that makes installing developer tools much easier.&lt;/p&gt;

&lt;p&gt;I previously used &lt;code&gt;brew&lt;/code&gt; on macOS and really liked the experience, so I decided to try it on Ubuntu as well. My goal was to use both Homebrew and the native Ubuntu package manager &lt;code&gt;apt&lt;/code&gt; in my development.&lt;/p&gt;

&lt;p&gt;In this guide, I’ll walk through how to install Homebrew on Ubuntu.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Throughout this installation, we’ll reference the official Homebrew documentation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Homebrew/install?tab=readme-ov-file" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://brew.sh/" rel="noopener noreferrer"&gt;Official Website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let’s get started.&lt;/p&gt;

&lt;h3&gt;
  
  
  1: Install the prerequisite packages
&lt;/h3&gt;

&lt;p&gt;Homebrew requires a few system packages before installation.&lt;br&gt;
Run the following command in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;build-essential procps curl file git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These packages provide the basic tools needed to compile and manage software.&lt;/p&gt;

&lt;p&gt;You can find the full requirements in the official guide:&lt;br&gt;
&lt;a href="https://docs.brew.sh/Homebrew-on-Linux#requirements" rel="noopener noreferrer"&gt;https://docs.brew.sh/Homebrew-on-Linux#requirements&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 2: Run the Homebrew installation script
&lt;/h3&gt;

&lt;p&gt;Next, run the official Homebrew installation script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/bin/bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The script will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Show the packages that will be installed&lt;/li&gt;
&lt;li&gt;Display the directories that will be created&lt;/li&gt;
&lt;li&gt;Pause and ask whether you want to continue&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this point, press &lt;strong&gt;Enter/Return&lt;/strong&gt; to continue the installation.&lt;/p&gt;

&lt;p&gt;The installation will proceed automatically, and once it finishes, the terminal will display the &lt;strong&gt;next steps&lt;/strong&gt; required to configure Homebrew.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Configure Homebrew after installation
&lt;/h3&gt;

&lt;p&gt;After installation, Homebrew needs to be added to your shell environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add Homebrew to your PATH&lt;/strong&gt;&lt;br&gt;
If you are using bash, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; /home/pc/.bashrc
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv bash)"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; /home/pc/.bashrc
&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;/home/linuxbrew/.linuxbrew/bin/brew shellenv bash&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you are using zsh, add the same command to &lt;code&gt;~/.zshrc.&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Test the installation
&lt;/h3&gt;

&lt;p&gt;To confirm everything is working, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew doctor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If everything is set up correctly, you should see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Your system is ready to brew.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Possible errors
&lt;/h3&gt;

&lt;p&gt;You might encounter an error like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/home/pc/.linuxbrew/Library/brew.sh: line 177: &lt;span class="nb"&gt;exec&lt;/span&gt;: : not found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This usually indicates a missing dependency, often &lt;strong&gt;Ruby&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;First, check whether Ruby is installed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;which &lt;span class="nt"&gt;-a&lt;/span&gt; ruby
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If Ruby is missing, install it with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;ruby
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alternatively, you can install all common Homebrew dependencies with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;build-essential curl git m4 ruby texinfo libbz2-dev libcurl4-openssl-dev libexpat-dev libncurses-dev zlib1g
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ubuntu</category>
      <category>devtools</category>
      <category>linux</category>
      <category>productivity</category>
    </item>
    <item>
      <title>👩‍💻 Phoenix LiveView: Bringing Real-Time Magic to the Web</title>
      <dc:creator>Jackline Kaunda</dc:creator>
      <pubDate>Wed, 19 Nov 2025 08:38:39 +0000</pubDate>
      <link>https://dev.to/jackline_kaunda/phoenix-liveview-bringing-real-time-magic-to-the-web-4glo</link>
      <guid>https://dev.to/jackline_kaunda/phoenix-liveview-bringing-real-time-magic-to-the-web-4glo</guid>
      <description>&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/BupvKWMNt6A?start=445"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Blog Post Based on the ElixirKenya Webinar #001 by Jackline Kaunda&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Phoenix LiveView has been around for some time, but it was officially announced last year (2019) by Chris McCord. Many of us have already used it to do amazing stuff, moving much of our client-side work, which we initially used to do in GitHub versions, into a finalized, published dependency.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is Phoenix LiveView?
&lt;/h2&gt;

&lt;p&gt;Phoenix LiveView is a powerful library that provides &lt;strong&gt;rich, real-time user experiences with server-rendered HTML&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For a long time, building rich, real-time interfaces meant relying heavily on JavaScript frameworks like React, Angular, or Vue.js. These are majorly client-side architectures. However, LiveView proposes that it might be &lt;strong&gt;wiser and simpler to handle this on the server side&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here are the key takeaways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Server-Side State:&lt;/strong&gt; LiveView is stateful &lt;em&gt;in the server&lt;/em&gt;. This is the core difference.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bi-directional Communication:&lt;/strong&gt; It achieves interactivity using &lt;strong&gt;WebSockets&lt;/strong&gt; for bi-directional communication between the client and the server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Minimal JavaScript:&lt;/strong&gt; As Chris McCord said, LiveView enables you to write your UI code &lt;strong&gt;without really having to write JavaScript code&lt;/strong&gt;. While the framework is built on top of JavaScript (for managing the WebSocket connection and DOM updates), the JavaScript you, the application developer, write is minimal.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This means you, as an Elixir developer, &lt;strong&gt;do not have to learn all the current trending JavaScript frameworks&lt;/strong&gt;. Instead, you just have to focus on your Elixir code to make good, real-time applications, maximizing your time and resources.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧱 The Pillars of LiveView
&lt;/h2&gt;

&lt;p&gt;LiveView is built on three core systems that were already part of the Phoenix Framework:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Phoenix Channels
&lt;/h3&gt;

&lt;p&gt;Channels have been a foundational system since the beginning of Phoenix. They use &lt;strong&gt;WebSockets&lt;/strong&gt; to ensure &lt;strong&gt;bi-directional communication&lt;/strong&gt; between the client (like a browser) and the server.&lt;/p&gt;

&lt;p&gt;A key challenge that channels help solve is connection density. The beauty of Channels is that they leverage the BEAM (Erlang VM) to allow &lt;strong&gt;so many connections on the same node without the application crashing&lt;/strong&gt;. This makes real-time communication robust and scalable.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. LiveView Templates (LEx)
&lt;/h3&gt;

&lt;p&gt;LiveView uses the &lt;strong&gt;LEx&lt;/strong&gt; (Live EEx) template engine, which was created to achieve two main goals:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Initial Rendering:&lt;/strong&gt; To render the template initially.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Diff Tracking:&lt;/strong&gt; To track differences in the content of an HTML page.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When LEx renders your template to the browser, it splits the resulting HTML into two parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Static Part:&lt;/strong&gt; Content that will &lt;strong&gt;never change&lt;/strong&gt; (e.g., HTML tags).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Part:&lt;/strong&gt; Content that changes with time (e.g., a variable assigned to a time value).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This split is essential for efficient updates. LEx calculates the minimal difference—the "diff"—between the old and new dynamic content, optimizing the payload sent over the WebSocket.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. JavaScript
&lt;/h3&gt;

&lt;p&gt;While we write minimal JS, a file called &lt;code&gt;phoenix_live_view.js&lt;/code&gt; contains all the necessary scripts for LiveView to manage the connection and attain the rich user experience. It plays a major part in handling the client-server communication.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 The LiveView Lifecycle: From Stateless to Stateful
&lt;/h2&gt;

&lt;p&gt;The life cycle of a LiveView begins with a two-step process:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Initial Stateless HTTP Request (Mount to the DOM)
&lt;/h3&gt;

&lt;p&gt;When you first load a LiveView page (e.g., navigating to &lt;code&gt;/messenger&lt;/code&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;GET request&lt;/strong&gt; is sent to the server.&lt;/li&gt;
&lt;li&gt;The server calls the &lt;strong&gt;&lt;code&gt;mount&lt;/code&gt; function&lt;/strong&gt;, which gets all the data needed (e.g., from a database or API) and puts it into the &lt;strong&gt;&lt;code&gt;assigns&lt;/code&gt;&lt;/strong&gt; of the socket.&lt;/li&gt;
&lt;li&gt;The data is passed to the &lt;strong&gt;&lt;code&gt;render&lt;/code&gt; function&lt;/strong&gt;, which sends back a &lt;strong&gt;full HTML response&lt;/strong&gt; to the client.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This first step ensures a fast, SEO-friendly initial page load.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Stateful WebSocket Connection
&lt;/h3&gt;

&lt;p&gt;After the HTML is rendered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The client uses a small piece of JavaScript code to connect to the server via a &lt;strong&gt;WebSocket&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The server then spawns a new &lt;strong&gt;Phoenix LiveView Process&lt;/strong&gt; for that connection.&lt;/li&gt;
&lt;li&gt;This process calls the &lt;strong&gt;&lt;code&gt;mount&lt;/code&gt; function&lt;/strong&gt; again (this time, the stateful version), gets the data, and passes it to the &lt;code&gt;render&lt;/code&gt; function.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From this point on, the connection is &lt;strong&gt;stateful&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Updates Happen
&lt;/h2&gt;

&lt;p&gt;When an event is triggered (a click, a keypress, etc.):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; The message is sent over the WebSocket to the LiveView process.&lt;/li&gt;
&lt;li&gt; The server calls the appropriate &lt;strong&gt;&lt;code&gt;handle_event&lt;/code&gt; callback&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; The server updates the socket assigns (&lt;code&gt;@changes&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt; The server renders the new template and calculates the minimal &lt;strong&gt;diff&lt;/strong&gt; (using LEx).&lt;/li&gt;
&lt;li&gt; This small patch is sent back to the client.&lt;/li&gt;
&lt;li&gt; The client uses &lt;strong&gt;&lt;code&gt;morphdom.js&lt;/code&gt;&lt;/strong&gt; (a lightweight library) to patch the existing DOM, not a virtual DOM.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is how LiveView maintains its own state throughout the session and updates the UI in real-time efficiently.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo: A Real-Time To-Do Application
&lt;/h2&gt;

&lt;p&gt;In a short demo, we saw a simple to-do application built with LiveView. The power was immediately visible:&lt;/p&gt;

&lt;p&gt;When typing in a new to-do item, the list of to-dos updated &lt;strong&gt;immediately&lt;/strong&gt; below the input field, demonstrating the real-time feedback loop.&lt;/p&gt;

&lt;p&gt;By inspecting the WebSocket traffic, we saw the transparency of LiveView:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The event was triggered.&lt;/li&gt;
&lt;li&gt;The message included the topic (&lt;code&gt;lv:*subtopic*&lt;/code&gt;) and the actual content typed.&lt;/li&gt;
&lt;li&gt;The server sent back an updated render event, complete with the list of to-dos updated in the socket assigns.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This shows that with very few lines of code, you can achieve powerful, real-time interactivity.&lt;/p&gt;




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

&lt;p&gt;Phoenix LiveView is a game-changer. It enables Elixir developers to build highly interactive, real-time web applications without the overhead and complexity of traditional client-side frameworks. By leveraging Channels, LEx, and the power of the BEAM, LiveView offers an incredibly efficient and developer-friendly path to modern web development.&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>learning</category>
      <category>backend</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Things I Wish I Knew Before Getting Into Tech</title>
      <dc:creator>Jackline Kaunda</dc:creator>
      <pubDate>Sun, 21 Sep 2025 16:47:21 +0000</pubDate>
      <link>https://dev.to/jackline_kaunda/things-i-wish-i-knew-before-getting-into-tech-2c6f</link>
      <guid>https://dev.to/jackline_kaunda/things-i-wish-i-knew-before-getting-into-tech-2c6f</guid>
      <description>&lt;p&gt;Getting into tech is thrilling, but the reality often comes with surprises no one warns you about. I recently had the chance to share my journey, the lessons I’ve learned, the missteps along the way, and the things I wish I knew earlier. It was an empowering space to connect, reflect, and grow alongside other incredible women in tech&lt;/p&gt;

&lt;p&gt;Here are the twelve key insights I shared in my talk.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You Will Fail ... A Lot&lt;/strong&gt;&lt;br&gt;
The first thing you have to accept in tech is that you will encounter failure. Those red error messages aren't a reflection of your ability; they are a fundamental part of the development process. Learning to see these &lt;em&gt;failures&lt;/em&gt; as puzzles to be solved will build your resilience and make you a much stronger problem-solver.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tech is a Journey of Continuous Learning&lt;/strong&gt;&lt;br&gt;
The tech landscape is in constant motion. New technologies like AI and prompt engineering emerge, and the tools you use today will continuously evolve. A commitment to lifelong learning isn't just a good idea, it's essential for survival. It can be challenging, but it’s also what keeps this field so exciting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Not All Solutions Solve a Problem&lt;/strong&gt;&lt;br&gt;
It’s incredibly easy to get swept up in the thrill of building something new. But our purpose is to add value, not complexity. I've seen teams pour resources into features no one uses or optimizations that don't matter. Before you build, always ask &lt;em&gt;why&lt;/em&gt;. Collaborate closely with your team and focus on the real needs of the user. Just because you can make it, doesn’t mean you should.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Documentation is Your Best Friend&lt;/strong&gt;&lt;br&gt;
While AI assistants and Stack Overflow have their place, your first stop for answers should always be the official documentation. It’s written by the people who built the tool, it's always the most up-to-date, and it covers crucial edge cases you won't find anywhere else. Make it a habit, not an afterthought.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You Don’t Need to Know Everything&lt;/strong&gt;&lt;br&gt;
No one has all the answers, not even senior engineers, who, I promise you, do research like googling things every single day. What’s more important than knowing everything is having a growth mindset. Cultivate your curiosity, become resourceful in finding answers, and stay consistent in your efforts to learn and improve.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Your Career Path Wont Be a Straight Line&lt;/strong&gt;&lt;br&gt;
It’s okay if your path doesn’t follow the traditional roadmap. It's common to start in one specialty and discover a passion for another. We see developers become Solutions Architects, QA Engineers move into DevOps, and Data Analysts transition into AI. Embrace the journey, it can take you to exciting and unexpected places.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Please, Let's Stop Over-engineering&lt;/strong&gt;&lt;br&gt;
Engineering should solve real problems, not imaginary future ones. Don't build a system for 10 million users when you only have 10. Avoid adding unnecessary complexity in the name of &lt;em&gt;future-proofing.&lt;/em&gt; Solve the problem at hand with the simplest, most effective solution.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Make it work. Make it right. Then make it fast. - Kent Beck&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;You Are Your Own Biggest Advocate&lt;/strong&gt;&lt;br&gt;
No one can tell your story better than you. Make your work visible. Do not assume your hard work will speak for itself. You must be proactive in communicating your accomplishments and advocating for your career growth. Schedule regular check-ins with your manager to get feedback and meticulously track your achievements. I highly recommend keeping a brag document, a concept I learned from Julia Evans, to record your successes. It's an invaluable tool for performance reviews and promotion discussions.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;a href="https://jvns.ca/blog/brag-documents/" rel="noopener noreferrer"&gt;Check out Julia Evans’ blog on brag documents&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Company Culture Truly Matters&lt;/strong&gt;&lt;br&gt;
The environment you work in has a direct impact on your mental health, career growth, and job satisfaction. A negative culture where blame is common and people fear asking questions will lead to burnout and stifle your potential. When you're interviewing, always ask about the culture. Ask how the team handles failure, how junior developers are supported, and what growth looks like there.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Work-Life Balance Isn't a Luxury, It's a Necessity&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Hustle culture&lt;/em&gt; is a recipe for burnout. To build a sustainable and joyful career, you must set clear boundaries. This means defining your work hours, actually using your vacation days, and scheduling time for your life outside of tech. My most practical tip? Keep work email and Slack off your personal phone.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Be Intentional About Your Career Progression&lt;/strong&gt;&lt;br&gt;
Take active ownership of your career path. Think about what your next role is and what you need to do to get there. Work with your manager to create a timeline and identify the small, focused steps to achieve your goals. And remember, you don't have to do it alone. Find mentors who can offer guidance along the way.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Coding is Only Part of the Job&lt;/strong&gt;&lt;br&gt;
Writing code is a core skill, but it's far from the only one. To truly excel, you must also master:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Problem-solving: Understanding the business logic and user needs behind the code.&lt;/li&gt;
&lt;li&gt;Communication: Clearly explaining complex ideas to both technical and non-technical colleagues.&lt;/li&gt;
&lt;li&gt;Collaboration: Working effectively with designers, QA engineers, and product managers.&lt;/li&gt;
&lt;li&gt;Reading and Maintaining Code: Understanding and improving upon the work of others is just as vital as writing your own&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>womenintech</category>
      <category>wecoded</category>
      <category>techjourney</category>
    </item>
  </channel>
</rss>
