<?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: nmwl</title>
    <description>The latest articles on DEV Community by nmwl (@nmwl).</description>
    <link>https://dev.to/nmwl</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%2F901262%2Fd1e3efa6-5ecd-449f-9eff-a7f3b029ced7.png</url>
      <title>DEV Community: nmwl</title>
      <link>https://dev.to/nmwl</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nmwl"/>
    <language>en</language>
    <item>
      <title>The Overlooked Power of Frontend Performance Optimization</title>
      <dc:creator>nmwl</dc:creator>
      <pubDate>Fri, 14 Mar 2025 06:40:11 +0000</pubDate>
      <link>https://dev.to/nmwl/the-overlooked-power-of-frontend-performance-optimization-1b78</link>
      <guid>https://dev.to/nmwl/the-overlooked-power-of-frontend-performance-optimization-1b78</guid>
      <description>&lt;p&gt;Most frontend developers focus on building beautiful, interactive user interfaces. But how often do we prioritize performance with the same level of attention?&lt;/p&gt;

&lt;p&gt;Frontend performance is not just about loading times; it's about user experience, conversion rates, and even SEO rankings. A sluggish interface can cost a business customers, no matter how well-designed it is.&lt;/p&gt;

&lt;p&gt;Here are some optimization strategies that are often overlooked:&lt;/p&gt;

&lt;p&gt;Efficient State Management – Unnecessary re-renders in React applications can significantly slow down performance. Techniques like memoization (React.memo, useMemo, useCallback) and optimizing context usage can make a big difference.&lt;/p&gt;

&lt;p&gt;Minimizing Third-Party Dependencies – Every additional library adds to the bundle size. Before installing a package, consider if it can be replaced with native browser APIs or a lighter alternative.&lt;/p&gt;

&lt;p&gt;Optimized Rendering with Concurrent Features – React’s Concurrent Mode and Suspense help avoid blocking the main thread, improving responsiveness. Understanding how to use these effectively is crucial for modern applications.&lt;/p&gt;

&lt;p&gt;Adaptive Loading Strategies – Not all users have high-speed connections. Implementing lazy loading, code splitting, and serving different assets based on network conditions can enhance accessibility and performance.&lt;/p&gt;

&lt;p&gt;Avoiding Unnecessary DOM Manipulations – Overuse of direct DOM manipulation (even via libraries like jQuery) can cause performance bottlenecks. Leveraging React’s virtual DOM properly prevents unnecessary updates.&lt;/p&gt;

&lt;p&gt;But here’s something often ignored: network constraints matter more than you think.&lt;/p&gt;

&lt;p&gt;A 1MB JavaScript bundle takes approximately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;30+ seconds on 2G (essentially unusable)&lt;/li&gt;
&lt;li&gt;8–10 seconds on 3G (frustrating for users)&lt;/li&gt;
&lt;li&gt;1.5–3 seconds on 4G (still noticeable)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s the average internet speeds for these network types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2G – 50–100 Kbps&lt;/li&gt;
&lt;li&gt;3G – 1-3 Mbps&lt;/li&gt;
&lt;li&gt;4G – 10-20 Mbps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now imagine your app loads 2MB+ of JavaScript before becoming interactive. That’s an instant deal-breaker for users in areas with unstable connections.&lt;/p&gt;

&lt;p&gt;Let’s look at some common package sizes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lodash – ~72KB minified &amp;amp; gzipped (often used unnecessarily)&lt;/li&gt;
&lt;li&gt;Moment.js – ~67KB (better alternatives: date-fns, Luxon)&lt;/li&gt;
&lt;li&gt;Ant Design – ~1MB (heavy UI library; consider tree-shaking or alternatives like Radix UI)&lt;/li&gt;
&lt;li&gt;React PDF – ~500KB (great for PDFs, but heavy for simple cases)&lt;/li&gt;
&lt;li&gt;jQuery – ~90KB (do you really need this in 2025?)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your project includes all these dependencies without optimization, you could easily ship over 2MB of JavaScript before the user interacts with the page. That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;40+ seconds on 2G (practically unusable)&lt;/li&gt;
&lt;li&gt;12–16 seconds on 3G (most users will bounce)&lt;/li&gt;
&lt;li&gt;4–6 seconds on 4G (noticeable delay, impacting UX and SEO)&lt;/li&gt;
&lt;li&gt;This is why performance optimization isn’t optional—it’s a necessity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some ways to mitigate this:&lt;br&gt;
✔️ Replace large libraries with lighter alternatives (e.g., use date-fns &lt;br&gt;
   instead of Moment.js)&lt;br&gt;
✔️ Use tree-shaking to remove unused code from heavy UI libraries&lt;br&gt;
✔️ Implement lazy loading for components and assets&lt;br&gt;
✔️ Split bundles using dynamic imports to only load what’s needed&lt;/p&gt;

&lt;p&gt;Optimizing frontend performance is not just a technical challenge; it's a user experience imperative. In an era where milliseconds matter, a well-optimized fron-tend can be the key differentiator for digital products.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What does highly intelligent software engineer have in his arsenal ?</title>
      <dc:creator>nmwl</dc:creator>
      <pubDate>Fri, 07 Jul 2023 09:54:37 +0000</pubDate>
      <link>https://dev.to/nmwl/what-does-highly-intelligent-software-engineer-have-in-his-arsenal--2l3m</link>
      <guid>https://dev.to/nmwl/what-does-highly-intelligent-software-engineer-have-in-his-arsenal--2l3m</guid>
      <description>&lt;p&gt;A highly intelligent software engineer possesses a wide range of skills, knowledge, and tools in their arsenal. Here are some key elements you might find in their skill set and resources:&lt;/p&gt;

&lt;p&gt;Strong Programming Skills: They excel in one or more programming languages such as Python, Java, C++, or JavaScript and have a deep understanding of software development principles and best practices.&lt;/p&gt;

&lt;p&gt;Problem-Solving Abilities: They have excellent analytical and problem-solving skills, allowing them to break down complex problems into manageable components and devise efficient solutions.&lt;/p&gt;

&lt;p&gt;Algorithms and Data Structures: They possess a solid understanding of fundamental algorithms and data structures, enabling them to choose the most appropriate ones for different scenarios and optimize performance.&lt;/p&gt;

&lt;p&gt;Software Development Tools: They are proficient in using various development tools, such as integrated development environments (IDEs), version control systems (e.g., Git), and debugging tools. They leverage these tools to streamline the development process and improve productivity.&lt;/p&gt;

&lt;p&gt;Knowledge of Software Engineering Principles: They are well-versed in software engineering principles, including software architecture, design patterns, modularization, and code documentation. They can design and build scalable, maintainable, and robust software systems.&lt;/p&gt;

&lt;p&gt;Knowledge of Databases: They have a good understanding of database concepts and are skilled in working with relational databases (e.g., SQL) and/or NoSQL databases. They can design efficient database schemas, write optimized queries, and manage data effectively.&lt;/p&gt;

&lt;p&gt;Web Development Skills: They are proficient in web development technologies, including HTML, CSS, JavaScript, and frameworks such as React, Angular, or Vue.js. They can build interactive and responsive web applications.&lt;/p&gt;

&lt;p&gt;Knowledge of Software Testing: They understand various testing methodologies and frameworks, such as unit testing, integration testing, and automated testing. They use testing tools to ensure the quality and reliability of their software.&lt;/p&gt;

&lt;p&gt;Continuous Learning: They have a thirst for knowledge and continuously update their skills to keep up with the rapidly evolving technology landscape. They stay informed about the latest industry trends, tools, and frameworks.&lt;/p&gt;

&lt;p&gt;Collaboration and Communication: They possess strong collaboration and communication skills, allowing them to work effectively within a team and articulate technical concepts to both technical and non-technical stakeholders.&lt;/p&gt;

&lt;p&gt;Problem Domain Expertise: Depending on their specialization or area of interest, they may acquire knowledge in specific domains such as machine learning, artificial intelligence, cybersecurity, cloud computing, or mobile app development.&lt;/p&gt;

&lt;p&gt;Creativity and Innovation: They bring a creative mindset to their work and are adept at thinking outside the box. They find innovative solutions to problems and constantly seek ways to improve existing systems or processes.&lt;/p&gt;

&lt;p&gt;It's important to note that intelligence and skills can vary among individuals, and different software engineers may have different strengths and areas of expertise.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What does commitment sound like ?</title>
      <dc:creator>nmwl</dc:creator>
      <pubDate>Wed, 05 Jul 2023 10:41:17 +0000</pubDate>
      <link>https://dev.to/nmwl/what-does-commitment-sound-like--45jg</link>
      <guid>https://dev.to/nmwl/what-does-commitment-sound-like--45jg</guid>
      <description>&lt;p&gt;What’s common in the phrases of the previous section is that they either assume things are out of “my” hands or they don’t take personal responsibility. In each of these cases, people behave as if they were victims of a situation instead of in control of it.&lt;/p&gt;

&lt;p&gt;The real truth is that you, personally, ALWAYS have something that’s under your control, so there is always something you can fully commit to doing. &lt;/p&gt;

&lt;p&gt;The secret ingredient to recognizing real commitment is to look for sentences that sound like this: I will . . . by . . . (example: I will finish this by Tuesday.)&lt;/p&gt;

&lt;p&gt;Creating a language of commitment may sound a bit scary, but it can help solve many of the communication problems programmers face today—estimations, deadlines, and face-to-face communication mishaps. You’ll be taken as a serious&lt;br&gt;
developer who lives up to their word, and that’s one of the best things you can hope for in our industry.&lt;/p&gt;

&lt;p&gt;There is (technically) no way out of this verbal commitment. You said you’ll do it and now only a binary result is possible—you either get it done, or you don’t.&lt;br&gt;
If you don’t get it done, people can hold you up to your promises. You will feel bad about not doing it. You will feel awkward telling someone about not having done it (if that someone heard you promise you will).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scary, isn’t it?&lt;/strong&gt;&lt;br&gt;
**&lt;br&gt;
You’re taking full responsibility for something, in front of an audience of at least one person. It’s not just you standing in front of the mirror, or the computer screen. It’s you, facing another human being, and saying you’ll do it. That’s the start of commitment. Putting yourself in the situation that forces you to do something.**&lt;/p&gt;

&lt;p&gt;Here are a number of reasons you might not mean it, or follow through, with some solutions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It wouldn’t work because I rely on person X to get this done.&lt;/strong&gt;&lt;br&gt;
You can only commit to things that you have full control of. For example, if your goal is to finish a module that also depends on another team, you can’t commit to finish the module with full integration with the other team. But you can commit to specific actions that will bring you to your target. You&lt;br&gt;
could:&lt;br&gt;
• Sit down for an hour with Gary from the infrastructure team to understand your dependencies.&lt;br&gt;
• Create an interface that abstracts your module’s dependency from the other team’s infrastructure.&lt;br&gt;
• Meet at least three times this week with the build guy to make sure your changes work well in the company’s build system.&lt;br&gt;
• Create your own personal build that runs your integration tests for the module.&lt;/p&gt;

&lt;p&gt;See the difference ?&lt;/p&gt;

&lt;p&gt;If the end goal depends on someone else, you should commit to specific actions that bring you closer to the end goal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It wouldn’t work because I don’t really know if it can be done.&lt;/strong&gt;&lt;br&gt;
If it can’t be done, you can still commit to actions that will bring you closer to the target. Finding out if it can be done can be one of the actions to commit to!&lt;br&gt;
Instead of committing to fix all 25 remaining bugs before the release (which may not be possible), you can commit to these specific actions that bring you closer to that goal:&lt;/p&gt;

&lt;p&gt;• Go through all 25 bugs and try to recreate them.&lt;br&gt;
• Sit down with the QA who found each bug to see a repro of that bug.&lt;br&gt;
• Spend all the time you have this week trying to fix each &lt;br&gt;
bug.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It wouldn’t work because sometimes I just won’t make it.&lt;/strong&gt;&lt;br&gt;
That happens. Something unexpected might happen, and that’s life. But you still want to live up to expectations. In that case, it’s time to change the expectations, as soon as possible.&lt;/p&gt;

&lt;p&gt;If you can’t make your commitment, the most important thing is to raise a red flag as soon as possible to whoever you committed to. The earlier you raise the flag to all stakeholders, the more likely there will be time for the team to stop, reassess the current actions being taken, and decide if something can be done or changed (in terms of priorities, for example). By doing this, your commitment can still be fulfilled, or you can change to a different commitment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt; &lt;br&gt;
Creating a language of commitment may sound a bit scary, but it can help solve many of the communication problems programmers face today—estimations, deadlines, and face-to face communication mishaps. You’ll be taken as a serious developer who lives up to their word, and that’s one of the best things you can hope for in our industry.&lt;/p&gt;

&lt;h1&gt;
  
  
  credit
&lt;/h1&gt;

&lt;h1&gt;
  
  
  thecleancoder
&lt;/h1&gt;

&lt;h1&gt;
  
  
  chapter3
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Recognizing lack of commitment</title>
      <dc:creator>nmwl</dc:creator>
      <pubDate>Wed, 05 Jul 2023 09:50:27 +0000</pubDate>
      <link>https://dev.to/nmwl/recognizing-lack-of-commitment-26al</link>
      <guid>https://dev.to/nmwl/recognizing-lack-of-commitment-26al</guid>
      <description>&lt;p&gt;We should look at the language we use when we commit to doing something, as the telltale sign of things to come. Actually, its more a matter of looking for specific words in what we say. If you cant find those little magic words, chances&lt;br&gt;
are we dont mean what we say, or we may not believe it to be feasible.&lt;br&gt;
Here are some examples of words and phrases to look for that are telltale signs of noncommitment:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;• Need\should&lt;/strong&gt;. “We need to get this done.” “I need to lose weight.” “Someone should make that happen.”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;• Hope\wish&lt;/strong&gt;. “I hope to get this done by tomorrow.” “I hope we can meet again some day.” “I wish I had time for that.” “I wish this computer was faster.”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;•Let’s.&lt;/strong&gt; (not followed by “I . . .”) “Let’s meet sometime.” “Let’s finish this thing.”&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
