<?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: Jemal Rashidi</title>
    <description>The latest articles on DEV Community by Jemal Rashidi (@_jmsrsd).</description>
    <link>https://dev.to/_jmsrsd</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%2F37643%2Fdf503cd6-a5d5-491f-8d74-d5f1e7cd43df.jpg</url>
      <title>DEV Community: Jemal Rashidi</title>
      <link>https://dev.to/_jmsrsd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/_jmsrsd"/>
    <language>en</language>
    <item>
      <title>In Defense of Monolithic Design</title>
      <dc:creator>Jemal Rashidi</dc:creator>
      <pubDate>Fri, 05 May 2023 11:39:35 +0000</pubDate>
      <link>https://dev.to/_jmsrsd/in-defense-of-monolithic-design-22ag</link>
      <guid>https://dev.to/_jmsrsd/in-defense-of-monolithic-design-22ag</guid>
      <description>&lt;p&gt;In the world of design, trends come and go, and new approaches constantly emerge. One such approach that has faced its fair share of criticism is monolithic design. Often dismissed as outdated or inefficient, monolithic design has been overshadowed by the rise of modular and component-based design methodologies. However, it's time to reconsider the merits of monolithic design and acknowledge its value in certain contexts.&lt;/p&gt;

&lt;p&gt;Monolithic design, as the name suggests, involves creating interfaces as large, undifferentiated blocks rather than relying on smaller reusable components. This approach stands in contrast to the prevailing trend of breaking down interfaces into modular components, where each component serves a specific function and can be reused across different parts of the system. While the modularity approach offers advantages in terms of flexibility and scalability, it is not without its drawbacks.&lt;/p&gt;

&lt;p&gt;One of the key strengths of monolithic design lies in its simplicity. By treating the interface as a single cohesive unit, designers can focus on the overall user experience and ensure consistency throughout the entire system. With monolithic design, there is no need to spend excessive time and effort on managing and maintaining a large library of reusable components. This streamlined approach can be particularly beneficial for smaller projects or when time is of the essence.&lt;/p&gt;

&lt;p&gt;Furthermore, monolithic design can enhance performance and reduce latency. By consolidating the codebase into a single unit, monolithic designs minimize the overhead associated with network calls and inter-component communication. This can lead to faster loading times and a smoother user experience, especially in scenarios where network connectivity may be limited or unreliable.&lt;/p&gt;

&lt;p&gt;Monolithic design also simplifies the debugging and troubleshooting process. With a modular design, identifying the source of an issue can become complex as it may involve tracing through multiple components and their interdependencies. In contrast, a monolithic design allows for easier pinpointing of problems since everything is contained within a single unit. This can significantly speed up the development and maintenance process, making it more efficient for teams to iterate and improve their designs.&lt;/p&gt;

&lt;p&gt;Critics argue that monolithic design lacks flexibility and scalability, particularly when it comes to larger and more complex projects. They argue that a modular approach enables greater reusability, extensibility, and easier collaboration between designers and developers. While these concerns are valid, it's important to recognize that monolithic design has its place in specific scenarios.&lt;/p&gt;

&lt;p&gt;For example, when working on smaller projects with limited resources and tight deadlines, the simplicity and speed offered by monolithic design can be a significant advantage. It allows designers to focus on delivering a coherent user experience without the burden of managing a complex modular system. In addition, certain applications, such as single-page websites or prototypes, may not require the same level of scalability and modularity as larger, more robust systems.&lt;/p&gt;

&lt;p&gt;In conclusion, monolithic design should not be dismissed as an outdated or inferior approach. While modular and component-based design methodologies have their undeniable advantages, monolithic design has its own merits in specific contexts. Its simplicity, performance benefits, and streamlined development process make it a viable option for smaller projects or situations where speed and efficiency are paramount. As the design landscape continues to evolve, it is essential to recognize the value and versatility of monolithic design alongside other approaches.&lt;/p&gt;

</description>
      <category>design</category>
      <category>writing</category>
      <category>frontend</category>
    </item>
    <item>
      <title>The Emergence of Design Systems: From Pre-Planning to Organic Evolution</title>
      <dc:creator>Jemal Rashidi</dc:creator>
      <pubDate>Fri, 05 May 2023 02:57:05 +0000</pubDate>
      <link>https://dev.to/_jmsrsd/the-emergence-of-design-systems-from-pre-planning-to-organic-evolution-5hig</link>
      <guid>https://dev.to/_jmsrsd/the-emergence-of-design-systems-from-pre-planning-to-organic-evolution-5hig</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;In the world of design, the concept of a design system has become increasingly important. A design system acts as a set of guidelines, components, and patterns that ensure consistency and cohesiveness across a range of products or services. While some might assume that design systems are meticulously pre-planned, the reality is quite the opposite. Design systems are often emergent, evolving and adapting over time. This article explores the notion that design systems are not set in stone from the beginning but rather emerge organically through a continuous process of refinement and iteration.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Birth of Design Systems:
&lt;/h2&gt;

&lt;p&gt;Design systems do not suddenly materialize; they are born out of necessity. Initially, a company or design team may start with individual projects, each with its unique set of design elements and components. However, as these projects multiply, inconsistencies begin to arise. Designers and developers face the challenge of maintaining visual and functional consistency, leading them to recognize the need for a unified approach. Thus, the seed of a design system is planted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Early Stages and Adaptation:
&lt;/h2&gt;

&lt;p&gt;At its inception, a design system is often rudimentary, lacking the comprehensiveness and sophistication it will eventually achieve. It may consist of a handful of shared styles, typography choices, or basic design patterns. However, as more projects are undertaken, the system evolves and expands. Designers and developers collaborate, refining and enhancing the existing components while adding new ones. The system gradually becomes more robust, accommodating the growing complexity of design challenges it faces.&lt;/p&gt;

&lt;h2&gt;
  
  
  User Feedback and Iteration:
&lt;/h2&gt;

&lt;p&gt;Design systems are not created in isolation; they are shaped by user feedback and real-world implementation. As products or services utilizing the design system are released, users provide valuable insights and observations. These insights inform the ongoing evolution of the design system. User feedback helps identify pain points, areas of inconsistency, or opportunities for improvement. The design team, armed with this information, iterates on the system, refining it further to address the users' needs and enhance their experiences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cross-Functional Collaboration:
&lt;/h2&gt;

&lt;p&gt;A truly effective design system requires collaboration among various stakeholders, including designers, developers, product managers, and other relevant teams. As the system evolves, it becomes a shared language that fosters efficient collaboration and streamlines workflows. Designers contribute their expertise in visual aesthetics and user experience, developers provide insights into technical constraints and possibilities, while product managers align the system with business goals. This cross-functional collaboration ensures that the design system remains flexible and adaptable, catering to the needs of diverse stakeholders.&lt;/p&gt;

&lt;h2&gt;
  
  
  Continuous Evolution:
&lt;/h2&gt;

&lt;p&gt;Design systems are not static entities; they are in a constant state of evolution. As new technologies, design trends, or user expectations emerge, the design system must adapt to remain relevant. Regular maintenance and updates are vital to ensure the system's longevity and effectiveness. Through an iterative process of feedback, evaluation, and refinement, the design system continues to grow and improve, empowering designers and developers to create cohesive, user-centric experiences.&lt;/p&gt;

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

&lt;p&gt;Design systems are not pre-planned blueprints but rather living organisms that emerge from the needs and experiences of designers, developers, and users. They evolve over time, incorporating feedback, embracing collaboration, and adapting to changing circumstances. By recognizing the emergent nature of design systems, design teams can approach their development and evolution with agility and flexibility. As design systems continue to evolve, they will play a pivotal role in shaping consistent and delightful user experiences across a wide range of products and services.&lt;/p&gt;

</description>
      <category>design</category>
      <category>ux</category>
      <category>frontend</category>
      <category>writing</category>
    </item>
    <item>
      <title>Overcoming Resistance in Software Engineering</title>
      <dc:creator>Jemal Rashidi</dc:creator>
      <pubDate>Sun, 19 Mar 2023 17:37:18 +0000</pubDate>
      <link>https://dev.to/_jmsrsd/overcoming-resistance-in-software-engineering-3no8</link>
      <guid>https://dev.to/_jmsrsd/overcoming-resistance-in-software-engineering-3no8</guid>
      <description>&lt;p&gt;As software engineers, we face numerous obstacles in our work. From challenging coding problems to demanding deadlines, it can be easy to become overwhelmed and discouraged. But one of the biggest obstacles we face is something that is often internal: Resistance.&lt;/p&gt;

&lt;p&gt;Resistance can take many forms, from negative self-talk to self-doubt and fear of failure. It can be paralyzing and prevent us from doing our best work. However, recognizing Resistance for what it is can be the first step in overcoming it. By acknowledging its presence and understanding its impact on our work, we can begin to take action to push through it.&lt;/p&gt;

&lt;p&gt;One of the most effective ways to overcome Resistance is to stay disciplined. This means showing up every day and doing the work, even when we don't feel like it. It can be easy to get caught up in distractions or feel overwhelmed by the enormity of a particular project, but by remaining focused and committed to our work, we can make steady progress and ultimately achieve our goals.&lt;/p&gt;

&lt;p&gt;Having faith in our abilities is another critical component of overcoming Resistance. As software engineers, we are constantly learning and growing, and it's important to trust in ourselves and our skills. This doesn't mean that we'll always have the answer or that everything will come easily, but it does mean that we have the ability to figure it out.&lt;/p&gt;

&lt;p&gt;In conclusion, overcoming Resistance is a natural part of the creative process, but it is not insurmountable. By recognizing Resistance, staying disciplined, and having faith in our abilities, we can push through the obstacles and achieve our goals as software engineers. So the next time you feel Resistance creeping in, take a deep breath, stay focused, and keep pushing forward.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Rethinking UI Design: Screens/Pages as the Building Blocks</title>
      <dc:creator>Jemal Rashidi</dc:creator>
      <pubDate>Wed, 01 Mar 2023 16:43:29 +0000</pubDate>
      <link>https://dev.to/_jmsrsd/rethinking-ui-design-screenspages-as-the-building-blocks-3e0m</link>
      <guid>https://dev.to/_jmsrsd/rethinking-ui-design-screenspages-as-the-building-blocks-3e0m</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;User Interface (UI) design is crucial for any digital product, website, or application. The way a user interacts with your product is directly influenced by the UI. Designers must understand the building blocks of UI and how they relate to one another to create a cohesive, user-friendly experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Atomic Design vs Screen/Page Design
&lt;/h2&gt;

&lt;p&gt;There are two main approaches to designing a UI: Atomic Design and Screen/Page Design. Atomic Design suggests that a UI is made up of small components that can be reused and combined to create larger components. In contrast, Screen/Page Design proposes that a Screen/Page is actually the smallest component of the UI, rendering Atomic Design unnecessary.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Benefits of Designing Screens/Pages as a Complete Experience
&lt;/h2&gt;

&lt;p&gt;A UI is the collection of screens or pages that make up a digital product. Each screen/page contains all the necessary information and elements for a particular interaction or task. Rather than designing individual components, designers create screens/pages that represent a complete experience. This approach allows for more flexibility and adaptability when designing for multiple platforms and devices. Some of the benefits of designing screens/pages as a complete experience are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;More efficient design and development&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;More creativity and innovation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Better collaboration between design and development teams&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A more coherent and intuitive user experience&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Atomic Design: Balancing Reusability and User Experience
&lt;/h2&gt;

&lt;p&gt;One of the main criticisms of Atomic Design is that it can lead to a disjointed experience for the user. Because the UI is made up of disparate parts, designers must constantly ensure that the components work well together and are consistent across the product.&lt;/p&gt;

&lt;h2&gt;
  
  
  Think Big with Screen/Page-Based Design
&lt;/h2&gt;

&lt;p&gt;Screens/pages, on the other hand, provide a more holistic approach to UI design. Each screen/page represents a complete experience, from the layout to the interactions to the content. Designers can focus on creating a seamless experience within each screen/page, without having to worry about how each component will interact with others.&lt;/p&gt;

&lt;p&gt;Of course, there are some situations where Atomic Design may be more appropriate. For example, if you are designing a UI that will be used across multiple platforms and devices, Atomic Design can provide a consistent experience for the user. However, in most cases, designing with screens/pages in mind provides a better overall user experience.&lt;/p&gt;

&lt;p&gt;it is important to keep in mind that the Screen/Page-first approach does not necessarily mean completely abandoning the principles of Atomic Design. Rather, it is about prioritizing the creation of cohesive, complete experiences while still using Atomic Design principles to ensure consistency and reusability where appropriate.&lt;/p&gt;

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

&lt;p&gt;In conclusion, while Atomic Design has its benefits, there is a growing argument that designing with screens/pages as the building blocks of UI provides a more holistic and efficient approach to design. By focusing on creating complete experiences rather than individual components, designers can produce more intuitive and engaging products while also saving time and resources. Of course, this does not mean that Atomic Design should be completely abandoned, but rather that it should be used in conjunction with a Screen/Page-first approach to create the best possible user experience.&lt;/p&gt;

</description>
      <category>gratitude</category>
    </item>
  </channel>
</rss>
