<?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: Diana Hernández</title>
    <description>The latest articles on DEV Community by Diana Hernández (@dianait).</description>
    <link>https://dev.to/dianait</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%2F229899%2F04ed69e3-95b6-4c7d-8d58-1896f41dea5f.jpg</url>
      <title>DEV Community: Diana Hernández</title>
      <link>https://dev.to/dianait</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dianait"/>
    <language>en</language>
    <item>
      <title>🧟 Task Zombies: Cuando [weak self] no es suficiente</title>
      <dc:creator>Diana Hernández</dc:creator>
      <pubDate>Mon, 12 Jan 2026 18:34:21 +0000</pubDate>
      <link>https://dev.to/dianait/task-zombies-cuando-weak-self-no-es-suficiente-jfg</link>
      <guid>https://dev.to/dianait/task-zombies-cuando-weak-self-no-es-suficiente-jfg</guid>
      <description>&lt;p&gt;Todos lo hemos escrito mil veces:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kt"&gt;Task&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;weak&lt;/span&gt; &lt;span class="k"&gt;self&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;self&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;descargarDatos&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Usamos [weak self] religiosamente para evitar memory leaks. ✅ Problema resuelto, ¿verdad?&lt;/p&gt;

&lt;p&gt;Pues no del todo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;El problema que no sabías que tenías&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagina esta situación super común:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;PerfilViewController&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;cargarPerfil&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;Task&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;weak&lt;/span&gt; &lt;span class="k"&gt;self&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt;
            &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;foto&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;descargarFotoGigante&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// 10 segundos&lt;/span&gt;
            &lt;span class="k"&gt;self&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;imagenPerfil&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;foto&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El usuario abre el perfil, pero a los 2 segundos se arrepiente y cierra la pantalla.&lt;/p&gt;

&lt;p&gt;¿Qué pasa?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ El ViewController se destruye&lt;/li&gt;
&lt;li&gt;✅ self se vuelve nil&lt;/li&gt;
&lt;li&gt;✅ No hay memory leak&lt;/li&gt;
&lt;li&gt;❌ PERO la descarga sigue corriendo 8 segundos más 🧟&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Estás desperdiciando batería, datos y CPU en algo que nadie va a ver.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;La demostración: 3 casos reales&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Me puse a investigar esto y creé una app de prueba con 3 casos para entender qué estaba pasando realmente.&lt;/p&gt;

&lt;p&gt;Puedes leer mas sobre esto en mi blog... &lt;/p&gt;

&lt;p&gt;&lt;a href="https://dianait.blog/blog/task-zombies-cuando-weak-self-no-es-suficiente/" rel="noopener noreferrer"&gt;https://dianait.blog/blog/task-zombies-cuando-weak-self-no-es-suficiente/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>swift</category>
      <category>ios</category>
      <category>memory</category>
      <category>swiftui</category>
    </item>
    <item>
      <title>A11y in SwiftUI: Grouping</title>
      <dc:creator>Diana Hernández</dc:creator>
      <pubDate>Sun, 23 Feb 2025 16:38:50 +0000</pubDate>
      <link>https://dev.to/dianait/a11y-in-swiftui-grouping-5fd6</link>
      <guid>https://dev.to/dianait/a11y-in-swiftui-grouping-5fd6</guid>
      <description>&lt;h3&gt;
  
  
  Let's group elements accessibly in SwiftUI
&lt;/h3&gt;

&lt;p&gt;Welcome to this series of articles about accessibility in SwiftUI! &lt;/p&gt;

&lt;p&gt;Over the next few weeks, we'll explore different aspects of A11y to create truly inclusive applications. In this first article, we'll focus on a fundamental technique: grouping elements.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Scenario: A Book List 📚
&lt;/h3&gt;

&lt;p&gt;Imagine you're developing a book app. You have a list where each item shows:&lt;/p&gt;

&lt;p&gt;🌆 A book cover&lt;br&gt;
📗 The title&lt;br&gt;
📝 The author&lt;br&gt;
📆 The publication year&lt;br&gt;
⭐️ A star rating&lt;/p&gt;

&lt;p&gt;Sounds simple, right? But when we activate VoiceOver, things get complicated...&lt;/p&gt;
&lt;h3&gt;
  
  
  Houston, We Have a Problem 🚨
&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%2Fq6z393fl6h96d7f764n8.gif" 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%2Fq6z393fl6h96d7f764n8.gif" alt="screenshot of the app with every UI element as A11y element" width="323" height="700"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we don't configure accessibility, VoiceOver will treat each UI element as an independent item. &lt;/p&gt;

&lt;p&gt;This means our users will have to navigate through five different elements to understand the information for a single book. &lt;br&gt;
Not the best experience, right?&lt;/p&gt;
&lt;h3&gt;
  
  
  The Key Question: What's Really Important? 🤔
&lt;/h3&gt;

&lt;p&gt;Before we start coding, we should ask ourselves some questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does the cover image provide unique information that isn't in the text?&lt;/li&gt;
&lt;li&gt;Do we need VoiceOver to read decorative emojis?&lt;/li&gt;
&lt;li&gt;How does the user visually perceive this information?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The answer leads us to a conclusion: visually, we perceive each book as a unit, not as separate elements. &lt;br&gt;
Let's make the VoiceOver experience reflect this!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution 1&lt;/strong&gt;: The Quick Path ⚡️&lt;br&gt;
The most direct way to solve this is to group everything into a single accessible element:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kt"&gt;BookView&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;book&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;book&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;accessibilityElement&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;accessibilityLabel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="n"&gt;book&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="s"&gt; written by &lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="n"&gt;book&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;author&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="s"&gt; in &lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="n"&gt;book&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="s"&gt;, &lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="n"&gt;book&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stars&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="s"&gt; out of 5"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Solution 2&lt;/strong&gt;: The Granular Approach 🎯&lt;br&gt;
For more complex views, we can opt for a more structured approach:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;struct&lt;/span&gt; &lt;span class="kt"&gt;BookView&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;View&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;book&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Book&lt;/span&gt;

    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;some&lt;/span&gt; &lt;span class="kt"&gt;View&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;HStack&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kt"&gt;Image&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;book&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;accessibilityHidden&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;// The image is decorative&lt;/span&gt;

            &lt;span class="kt"&gt;VStack&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="kt"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;book&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="c1"&gt;// The default label works well here&lt;/span&gt;

                &lt;span class="kt"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;book&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;author&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;accessibilityLabel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"written by &lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="n"&gt;book&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;author&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

                &lt;span class="kt"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"📆 &lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="n"&gt;book&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;accessibilityLabel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"in &lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="n"&gt;book&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

                &lt;span class="kt"&gt;RatingView&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;rating&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;book&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stars&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;accessibilityLabel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="n"&gt;book&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stars&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="s"&gt; stars out of 5"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;accessibilityElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;combine&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="c1"&gt;// Combines all labels into a single fluid reading&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Result: A Unified Experience ✨
&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%2Fgv0vzc4mzlyrd19tr9g4.gif" 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%2Fgv0vzc4mzlyrd19tr9g4.gif" alt="Screenshot of the app with all the information regarding one book as an unique A11y element" width="323" height="700"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, VoiceOver treats each book as a coherent unit, offering a much more natural and efficient experience.&lt;br&gt;
Which One to Choose? 🤷‍♀️&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution 1&lt;/strong&gt;: Perfect for simple and straightforward components&lt;br&gt;
&lt;strong&gt;Solution 2&lt;/strong&gt;: Ideal for complex views where you need more control over each element&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion and Next Steps 🎯
&lt;/h3&gt;

&lt;p&gt;Accessibility isn't an extra, it's a fundamental necessity. In this article, we've seen how proper grouping of elements can significantly improve the experience for users who rely on VoiceOver.&lt;/p&gt;

&lt;p&gt;In the next article in the series, we'll explore how to handle traits in SwiftUI. Don't miss it!&lt;/p&gt;

&lt;p&gt;Did you find this article helpful? Do you have any doubts, questions, or advice about accessibility in SwiftUI? &lt;br&gt;
&lt;a href="https://bsky.app/profile/dianait.dev/post/3liu5jgjxqk2j" rel="noopener noreferrer"&gt;Drop by BlueSky and let's talk!&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🗒️ This article is an English translation of my original Spanish article: &lt;a href="https://dianait.blog/blog/a11y-en-swiftui-agrupando-elementos/" rel="noopener noreferrer"&gt;A11y en SwiftUI: Agrupando que es gerundio&lt;/a&gt;&lt;/p&gt;

</description>
      <category>a11y</category>
      <category>swiftui</category>
      <category>ios</category>
    </item>
    <item>
      <title>2025 Tech Predictions: A Year of Transformation</title>
      <dc:creator>Diana Hernández</dc:creator>
      <pubDate>Thu, 02 Jan 2025 10:08:07 +0000</pubDate>
      <link>https://dev.to/dianait/2025-tech-predictions-a-year-of-transformation-3hg3</link>
      <guid>https://dev.to/dianait/2025-tech-predictions-a-year-of-transformation-3hg3</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/newyear"&gt;2025 New Year Writing challenge&lt;/a&gt;: Predicting 2025.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🛠 Tools and Technologies&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accessibility&lt;/strong&gt; Tools and Standards&lt;br&gt;
2025 will be a landmark year for accessibility in tech. With the EU's accessibility legislation taking effect, I think that we'll see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New tools and frameworks specifically designed for accessibility testing and implementation&lt;/li&gt;
&lt;li&gt;Enhanced screen reader compatibility becoming a standard requirement&lt;/li&gt;
&lt;li&gt;Automated accessibility testing tools becoming more sophisticated&lt;/li&gt;
&lt;li&gt;Built-in accessibility features in major development frameworks&lt;/li&gt;
&lt;li&gt;More robust design systems with accessibility at their core&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;💭 Personal Feelings About the 2025&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As we enter 2025, I feel both excitement and a healthy dose of pragmatism about the rapid pace of change in our industry. The acceleration of AI development is particularly striking – what seems cutting-edge today might be commonplace in just a few months.&lt;/p&gt;

&lt;p&gt;This rapid evolution reinforces the importance of maintaining strong development fundamentals. While AI tools are becoming increasingly powerful, understanding core programming principles, clean code practices, and solid architecture patterns becomes more crucial than ever.&lt;/p&gt;

&lt;p&gt;I believe 2025 will be a year of significant &lt;strong&gt;transformation&lt;/strong&gt;, but also one that reminds us of the importance of building on solid foundations. The key will be finding the right balance between embracing innovation and maintaining the fundamental principles that make our code robust and &lt;/p&gt;

&lt;p&gt;As developers, we'll need to &lt;strong&gt;stay agile and adaptable&lt;/strong&gt;, but also grounded in best practices and core principles. This balance will be crucial as we navigate the exciting but challenging landscape of 2025's technological advancements.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>newyearchallenge</category>
      <category>future</category>
    </item>
    <item>
      <title>My 2025 Vision: Goals and Aspirations</title>
      <dc:creator>Diana Hernández</dc:creator>
      <pubDate>Thu, 02 Jan 2025 08:39:50 +0000</pubDate>
      <link>https://dev.to/dianait/my-2025-vision-goals-and-aspirations-2phd</link>
      <guid>https://dev.to/dianait/my-2025-vision-goals-and-aspirations-2phd</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/newyear"&gt;2025 New Year Writing challenge&lt;/a&gt;: Compiling 2025.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎯 New Skills to Learn&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Accessibility&lt;/strong&gt; is at the top of my learning priorities for 2025. With the European Union's accessibility legislation becoming more stringent, it's crucial to deepen my knowledge in this area.&lt;/p&gt;

&lt;p&gt;I want to ensure that our applications are not just compliant with regulations, but truly inclusive and user-friendly for everyone. &lt;br&gt;
This involves understanding both the technical implementation aspects and the human-centered design principles that make digital products accessible to all users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 Side Projects to Pursue&lt;/strong&gt;&lt;br&gt;
I'm excited to continue developing my personal &lt;strong&gt;achievement tracking app&lt;/strong&gt;. This project is particularly meaningful as it addresses the common challenge of impostor syndrome in tech. &lt;/p&gt;

&lt;p&gt;The app will serve as a personal repository of accomplishments, positive feedback, and milestones that users can revisit during moments of self-doubt. By documenting these victories, both big and small, we can build a powerful tool for maintaining perspective and confidence in our professional journey.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚀 Career Aspirations&lt;/strong&gt;&lt;br&gt;
My main career goal is to evolve into a &lt;strong&gt;T-shaped developer&lt;/strong&gt; - someone with deep expertise in iOS development while also maintaining a broad understanding of other development aspects. &lt;/p&gt;

&lt;p&gt;This balanced approach to growth will not only make me a more versatile developer but also enable me to &lt;strong&gt;contribute more effectively&lt;/strong&gt; to cross-functional teams and projects.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>newyearchallenge</category>
      <category>career</category>
    </item>
    <item>
      <title>My 2024</title>
      <dc:creator>Diana Hernández</dc:creator>
      <pubDate>Thu, 02 Jan 2025 08:28:37 +0000</pubDate>
      <link>https://dev.to/dianait/my-2024-2p2m</link>
      <guid>https://dev.to/dianait/my-2024-2p2m</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/newyear"&gt;2025 New Year Writing challenge&lt;/a&gt;: Retro’ing and Debugging 2024.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✨ Achievements Made&lt;/strong&gt; &lt;br&gt;
This year has been transformative for my professional growth. One of my proudest moments was earning a &lt;strong&gt;promotion&lt;/strong&gt;, moving beyond my junior position. &lt;/p&gt;

&lt;p&gt;The positive feedback I received during my PDD (Performance and Development Discussion) validated my progress and commitment to growth.&lt;/p&gt;

&lt;p&gt;A significant milestone was leading the &lt;strong&gt;complete refactoring of our section's codebase&lt;/strong&gt;. As one of the oldest sections in our application, this was an ambitious four-month project that I'm tremendously proud of. &lt;/p&gt;

&lt;p&gt;Taking on this challenge not only improved our codebase but also demonstrated our team's capability to tackle complex technical challenges.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📚 Lessons Learned&lt;/strong&gt;&lt;br&gt;
This year taught me valuable lessons about &lt;strong&gt;communication&lt;/strong&gt; and &lt;strong&gt;self-confidence&lt;/strong&gt;. I've learned the importance of speaking up whenever something doesn't seem quite right. What might seem like a minor concern could actually be an oversight that needs attention. &lt;/p&gt;

&lt;p&gt;Other lesson was discovering that &lt;strong&gt;I'm capable of much more than I initially believed&lt;/strong&gt;. Each challenge I faced became an opportunity to prove my capabilities and expand my skillset.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💪 Challenges Faced&lt;/strong&gt;&lt;br&gt;
2024 presented significant challenges, both professionally and emotionally. &lt;/p&gt;

&lt;p&gt;Our company went through a &lt;strong&gt;difficult period of layoffs&lt;/strong&gt; and restructuring, which was particularly tough for everyone involved. The subsequent team reorganization brought changes to both my team composition and people manager.&lt;/p&gt;

&lt;p&gt;Adapting to these changes wasn't easy. I found myself working with unfamiliar code and new team members, having to quickly learn and take ownership of different parts of our codebase. &lt;br&gt;
While challenging, this transition pushed me to &lt;strong&gt;grow and adapt&lt;/strong&gt;, ultimately strengthening my technical and collaborative skills.&lt;/p&gt;

&lt;p&gt;These challenges, though difficult, have shaped me into a more &lt;strong&gt;resilient and capable professional&lt;/strong&gt;, ready to take on whatever 2025 may bring.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>newyearchallenge</category>
      <category>career</category>
    </item>
  </channel>
</rss>
