<?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: Wilfried PETIT</title>
    <description>The latest articles on DEV Community by Wilfried PETIT (@krosnoz).</description>
    <link>https://dev.to/krosnoz</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%2F1198034%2F3d55ac69-83ac-4803-8609-625a9d92d3a3.jpeg</url>
      <title>DEV Community: Wilfried PETIT</title>
      <link>https://dev.to/krosnoz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/krosnoz"/>
    <language>en</language>
    <item>
      <title>Supercharging Developer Productivity: Claude Project</title>
      <dc:creator>Wilfried PETIT</dc:creator>
      <pubDate>Sat, 03 Aug 2024 11:32:13 +0000</pubDate>
      <link>https://dev.to/krosnoz/supercharging-developer-productivity-claude-project-2l0j</link>
      <guid>https://dev.to/krosnoz/supercharging-developer-productivity-claude-project-2l0j</guid>
      <description>&lt;p&gt;As developers, we're always looking for ways to be more productive and make our workflows more efficient. In my quest for better efficiency, I came across a game-changing tool that has completely transformed my development process: Claude, an AI assistant that has become my go-to coding companion. In this article, I'll share how integrating Claude into my workflow has not just improved, but given me a significant productivity boost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Meeting Claude: An AI-Powered Development Partner
&lt;/h2&gt;

&lt;p&gt;Claude is an advanced AI model developed by Anthropic, capable of understanding and generating human-like text across a wide range of topics. I use Claude for its ability to comprehend and work with complex codebases, provide insightful suggestions, and even act as a virtual CTO when given the right instructions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Claude Project
&lt;/h2&gt;

&lt;p&gt;One of the most powerful features. Right now, I've managed to upload the relevant files for 57% of the knowledge of Claude's system. That means that at any given moment, I have an AI assistant that understands the majority of my project's structure, dependencies, and logic. It's been a game-changer having my codebase accessible to Claude. It means the AI can provide context-aware suggestions, spot potential issues, and offer solutions that are tailored specifically to my project's architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Custom Instructions
&lt;/h2&gt;

&lt;p&gt;I've basically turned Claude into a virtual CTO by using custom instructions. I give him specific guidelines on how I want him to analyze and respond to my queries, and he's now an AI assistant that thinks and communicates like an experienced technical leader. Here's an example of the custom instructions I use to shape Claude's responses:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;You are an experienced Chief Technology Officer (CTO) with a strong background in motion design systems, user experience (UX), and developer experience (DX). Your role is to oversee the technical strategy and implementation of cutting-edge digital products.

Key aspects of your expertise include:

Motion Design Systems:
&lt;span class="p"&gt;-&lt;/span&gt; Creating consistent animation guidelines for seamless user interactions
&lt;span class="p"&gt;-&lt;/span&gt; Implementing performance-optimized motion libraries
&lt;span class="p"&gt;-&lt;/span&gt; Ensuring motion design consistency across different platforms and devices

User Experience (UX):
&lt;span class="p"&gt;-&lt;/span&gt; Championing user-centered design principles throughout the development process
&lt;span class="p"&gt;-&lt;/span&gt; Balancing aesthetic appeal with functional efficiency
&lt;span class="p"&gt;-&lt;/span&gt; Conducting and interpreting user studies to inform design decisions

Developer Experience (DX):
&lt;span class="p"&gt;-&lt;/span&gt; Streamlining development workflows and processes
&lt;span class="p"&gt;-&lt;/span&gt; Implementing robust documentation and code standards
&lt;span class="p"&gt;-&lt;/span&gt; Selecting and integrating tools that enhance developer productivity

Your responses should reflect a deep understanding of these areas and their interconnections. Provide strategic insights, technical recommendations, and solutions that demonstrate your expertise as a CTO. Consider the broader impact of technology decisions on product success, team efficiency, and business goals.

When answering questions or scenarios, approach them from a high-level strategic perspective while being able to dive into technical details when necessary. Your advice should balance innovation and practicality, always keeping in mind that technology is a crucial driver of business success. You can also suggest additional feature, UX/DX advice, etc.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These instructions make sure that Claude gives answers that are not only technically correct but also in line with my project's goals. And most importantly, I'm going to give him an example of a good redigested technical task so that he can use it as a reference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Task Management
&lt;/h2&gt;

&lt;p&gt;With my new friend, I don't have to spend hours breaking down complex features into manageable tasks. I can just describe the feature to Claude and he'll give me a detailed breakdown of the necessary steps.&lt;br&gt;
For instance, when I asked Claude to help me implement a new "Effects sidebar feature", he gave me a structured task list that included file locations, necessary modifications, and even code snippets.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Creation of an "Effects" Sidebar&lt;/span&gt;

&lt;span class="gu"&gt;## Location&lt;/span&gt;
&lt;span class="sb"&gt;`/src/app/(templates)/[template]/_components/section/TemplateProperties/TemplateProperties.tsx`&lt;/span&gt;

&lt;span class="gu"&gt;## Modifications to make:&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Import the EffectsDrawer component
&lt;span class="p"&gt;-&lt;/span&gt; Add state to manage the opening/closing of the drawer
&lt;span class="p"&gt;-&lt;/span&gt; Add a button to open the drawer
&lt;span class="p"&gt;-&lt;/span&gt; Integrate EffectsDrawer into the TemplateProperties rendering
&lt;span class="p"&gt;-&lt;/span&gt; Integration example:

import EffectsDrawer from './components/EffectsDrawer/EffectsDrawer';

// In TemplateProperties
const [isEffectsDrawerOpen, setIsEffectsDrawerOpen] = useState(false);

// ...

return (
  &lt;span class="nt"&gt;&amp;lt;TemplatePropertiesBox&amp;gt;&lt;/span&gt;
    {propertiesPanelContent}
    &lt;span class="nt"&gt;&amp;lt;Button&lt;/span&gt; &lt;span class="na"&gt;onClick=&lt;/span&gt;&lt;span class="s"&gt;{()&lt;/span&gt; &lt;span class="err"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; setIsEffectsDrawerOpen(true)}&amp;gt;Add an effect&lt;span class="nt"&gt;&amp;lt;/Button&amp;gt;&lt;/span&gt;
    &amp;lt;EffectsDrawer
      isOpen={isEffectsDrawerOpen}
      onClose={() =&amp;gt; setIsEffectsDrawerOpen(false)}
      onAddEffect={(matchName) =&amp;gt; {
        if (currentLayer) {
          currentLayer.properties.effect.addEffect(matchName);
        }
      }}
    /&amp;gt;
  &lt;span class="nt"&gt;&amp;lt;/TemplatePropertiesBox&amp;gt;&lt;/span&gt;
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This level of detail lets me dive right into coding, saving time I'd otherwise spend planning and making sure new features fit into the existing codebase seamlessly.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Comprehensive Development Assistant
&lt;/h3&gt;

&lt;p&gt;Having my codebase accessible to Claude is great for more than just task management. This setup makes Claude a one-stop shop for development support, covering all the bases in the process:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bug Resolution&lt;/strong&gt;: When I run into bugs or errors, I can easily turn to Claude for help. For example, when I had a problem with uncontrolled/controlled input in MUI, Claude gave me a detailed solution:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;I understand your problem. The warning you are receiving indicates that there is a change between controlled and uncontrolled input, which is usually caused by a change from defined to undefined value. Here's how we can solve this problem and improve the &lt;span class="sb"&gt;`PropertyString`&lt;/span&gt; component:

&lt;span class="gh"&gt;# Update PropertyString component&lt;/span&gt;
&lt;span class="gu"&gt;## Localization&lt;/span&gt;
&lt;span class="sb"&gt;`/src/app/(templates)/[template]/_components/section/TemplateProperties/components/PropertyString/PropertyString.tsx`&lt;/span&gt;

&lt;span class="gu"&gt;## Changes to be made&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; Handle cases where &lt;span class="sb"&gt;`property.preExpressionValue`&lt;/span&gt; or &lt;span class="sb"&gt;`property.computedValue`&lt;/span&gt; could be &lt;span class="sb"&gt;`undefined`&lt;/span&gt;.
&lt;span class="p"&gt;2.&lt;/span&gt; Use &lt;span class="sb"&gt;`useState`&lt;/span&gt; to manage the local state of the value.
&lt;span class="p"&gt;3.&lt;/span&gt; Update &lt;span class="sb"&gt;`handleOnChange`&lt;/span&gt; logic to handle both local updates and updates via &lt;span class="sb"&gt;`setStaticValue`&lt;/span&gt;.

[Code solution and detailed explanations followed]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Code Optimization&lt;/strong&gt;: Claude can take a look at existing code and suggest ways to make it more efficient or suggest best practices, which can help improve the overall quality of the code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature Ideation&lt;/strong&gt;: When we're brainstorming new features, I can run ideas by Claude. He's got a good grasp on the project structure, so he can come up with solid, creative suggestions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentation Assistance&lt;/strong&gt;: Claude can help put together or polish up documentation for different parts of the codebase, making sure that the project stays well-documented as it changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Review Support&lt;/strong&gt;: While it doesn't replace human code reviews, Claude can give you an initial pass on code changes, catching potential issues or suggesting improvements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learning Resource&lt;/strong&gt;: For junior developers or folks new to the project, Claude is always there to explain the code structure, design decisions, and implementation details.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quantifying the Impact: A Significant Productivity Boost
&lt;/h2&gt;

&lt;p&gt;I've found that integrating Claude into my workflow has had a really positive impact. While it's not easy to quantify the increase in productivity, I've noticed significant improvements in several areas.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Roadmap Planning&lt;/strong&gt;: I was able to put together an entire roadmap through December, with all the technical details for my part, in just three days. This process would have taken much longer if I hadn't used this method.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sprint Productivity&lt;/strong&gt;: In our two-week sprints, I've seen my point completion rate go up by about 25% to 35%.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature Implementation&lt;/strong&gt;:  Thanks to the detailed task breakdowns from Claude, we've been able to implement new features much faster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Quality&lt;/strong&gt;: It's not as easy to measure, but I've seen fewer bugs and better performance in the features we've developed with Claude's help.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Challenges and Limitations
&lt;/h2&gt;

&lt;p&gt;While Claude has really helped me get more done, it's worth mentioning a few things it can't do:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Rate Limiting&lt;/strong&gt;: Claude has a rate limit of 45 messages per 5 hours. This can be restrictive during intense work sessions or when collaborating with team members.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project Updates&lt;/strong&gt;: One of the biggest challenges is keeping the project up to date in Claude. When I add new features that affect multiple files (sometimes 5-20 files), I currently have to delete the entire project and recreate it in Claude. This process disrupts the flow and can be time-consuming.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learning Curve&lt;/strong&gt;: While Claude is easy to use, there's still a bit of a learning curve when it comes to structuring queries and interpreting responses in the most efficient way.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Need for Verification&lt;/strong&gt;: While Claude's suggestions are often right on the money, it's important to double-check and test all code and design decisions. The AI can sometimes make mistakes or misunderstand complex project requirements.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkqgd7caofkmfgypdz1w2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkqgd7caofkmfgypdz1w2.png" alt="Before and After using Claude Workflow" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've found that integrating Claude AI into my development workflow has been a total game-changer. It's really boosted my productivity and enhanced the quality of my work. I do think it's important to acknowledge that the current cloud-based solution might not fit every workflow, especially for companies with strict data privacy concerns.&lt;/p&gt;

&lt;p&gt;The good news is that we're on the verge of a major shift. With open-source models like LLama3.1 making huge strides, it's only a matter of time before we have similar capabilities available locally. This advancement will open up AI-assisted development to an even wider range of developers and organizations.&lt;/p&gt;

&lt;p&gt;As we look to the future, it's important to remember that while AI is an amazing tool, it's the human touch—our creativity, ethical considerations, and deep understanding of user needs—that truly brings software to life. Let's embrace these new technologies as partners in our development journey, always striving to create better, more innovative solutions for the world.&lt;/p&gt;

&lt;p&gt;So, fellow developers, what are your thoughts on AI-assisted development? Have you tried it yet? I'd love to hear from anyone who's a Claude fan, a skeptic, or just curious about AI.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Why I Don’t Like Tailwind CSS: A Junior Frontend Developer’s Perspective</title>
      <dc:creator>Wilfried PETIT</dc:creator>
      <pubDate>Sat, 20 Jul 2024 14:13:08 +0000</pubDate>
      <link>https://dev.to/krosnoz/why-i-dont-like-tailwind-css-a-junior-frontend-developers-perspective-3p6i</link>
      <guid>https://dev.to/krosnoz/why-i-dont-like-tailwind-css-a-junior-frontend-developers-perspective-3p6i</guid>
      <description>&lt;p&gt;As a junior frontend developer, I’ve experimented with various CSS approaches in my quest to find the most efficient and maintainable way to style web applications. My journey has taken me from vanilla CSS through Bootstrap and Material-UI (MUI), eventually leading me to embrace CSS-in-JS solutions, particularly Emotion with its styled components.&lt;/p&gt;

&lt;p&gt;Over time, I’ve come to form strong opinions about different styling methodologies. One popular tool that hasn’t convinced me is Tailwind CSS. Despite its widespread adoption, I find it complicated to understand.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fyftsk31witjwrrb2937c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fyftsk31witjwrrb2937c.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  My Issues with Tailwind CSS
&lt;/h1&gt;

&lt;p&gt;While Tailwind CSS has gained popularity, I’ve found several aspects that don’t align with my development preferences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Readability Concerns&lt;/strong&gt;: Tailwind’s utility-first approach often leads to long strings of classes in HTML elements. This can make the code difficult to read and understand at a glance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separation of Concerns&lt;/strong&gt;: Tailwind mixes styling directly into HTML, which goes against the principle of separating structure from presentation. This can make it harder to maintain and update styles across a large project.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customization Complexity&lt;/strong&gt;: Although Tailwind is customizable, doing so often requires additional configuration. This can be more complex than simply writing custom CSS or extending styled components.
These issues led me to explore alternatives, ultimately leading me to discover and appreciate styled components.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  What Are Styled Components?
&lt;/h1&gt;

&lt;p&gt;Styled components are a CSS-in-JS solution that allows you to write actual CSS code to style your components. They enable you to define your styles using JavaScript template literals, keeping them scoped to specific components and reducing the risk of style conflicts.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;styled&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="s2"&gt;`
  background-color: blue;
  border-radius: 4px;
`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;
  
  
  My Preferred Component Structure
&lt;/h1&gt;

&lt;p&gt;One of the main reasons I love styled components is how well they integrate with my preferred project structure. For each component, I typically create a dedicated folder with the following files:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MyComponent/
├── MyComponent.tsx
└── MyComponent.styles.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;This separation allows me to keep my component logic clean and focused while still maintaining a close connection between the component and its styles.&lt;/p&gt;

&lt;h1&gt;
  
  
  Benefits of This Approach
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Improved Readability&lt;/strong&gt;: By separating styles into their own file, both the component logic and the styles become more readable. I can quickly scan the .tsx file to understand the component structure and behavior, and easily refer to the .styles.ts file for styling details.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modularity and Reusability&lt;/strong&gt;: Styled components are inherently modular. I can easily reuse styles across different components or create variations of a component by extending its base styled component.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type Safety&lt;/strong&gt;: When using TypeScript, styled components provide excellent type safety. I can define prop types for my styled components, ensuring that I’m using the correct props for styling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Easy Refactoring&lt;/strong&gt;: If I need to change a component’s structure or styling, having separate files makes it easy to locate and modify the relevant code without affecting other parts of the application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Styling&lt;/strong&gt;: I can easily create dynamic styles based on props or theme values.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;While Tailwind CSS offers a unique approach to styling with its utility-first methodology, my experience as a junior frontend developer has led me to prefer styled components. The clarity, modularity, and JavaScript integration of styled components align better with my workflow and mental model of component-based development.&lt;/p&gt;

&lt;p&gt;However, it’s important to recognize that different projects and teams may have varying needs. Tailwind CSS might be an excellent fit for rapid prototyping or projects with specific design systems. As with any tool in the vast world of web development, the key is to understand the trade-offs and choose the approach that best suits your project’s requirements and your team’s preferences.&lt;/p&gt;

&lt;p&gt;Ultimately, the goal is to create maintainable, scalable, and visually appealing web applications. Whether you choose Tailwind, styled components, or another approach, what matters most is consistency and the ability to efficiently deliver high-quality results.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tailwindcss</category>
      <category>css</category>
      <category>frontend</category>
    </item>
  </channel>
</rss>
