<?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: Brian G.</title>
    <description>The latest articles on DEV Community by Brian G. (@brian_curricular).</description>
    <link>https://dev.to/brian_curricular</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%2F1124271%2Fa6c1412a-a270-4cce-8820-db3ce2b8582a.png</url>
      <title>DEV Community: Brian G.</title>
      <link>https://dev.to/brian_curricular</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/brian_curricular"/>
    <language>en</language>
    <item>
      <title>Mastering Git and GitHub: Best Practices for Branch Naming</title>
      <dc:creator>Brian G.</dc:creator>
      <pubDate>Tue, 07 May 2024 13:26:28 +0000</pubDate>
      <link>https://dev.to/brian_curricular/mastering-git-and-github-best-practices-for-branch-naming-2o9</link>
      <guid>https://dev.to/brian_curricular/mastering-git-and-github-best-practices-for-branch-naming-2o9</guid>
      <description>&lt;p&gt;While we’re learning how to use Git and GitHub, it’s pretty easy to use arbitrary names for branches, not to mention commit messages. Even seasoned developers do it, especially when in a hurry or working on something self-contained.&lt;/p&gt;

&lt;p&gt;But as you transition to working as part of a professional development team, or contributing to an open source project, it’s crucial to understand how to name branches in a way that enhances project organization and communication among team members.&lt;/p&gt;

&lt;p&gt;That’s what we’ll dig into in this post.  &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Branch Naming Matters&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Git branching allows multiple developers to work on different features or fixes simultaneously without interfering with the main codebase. &lt;/p&gt;

&lt;p&gt;Branch naming really boils down to communicating well with your team, and trying to make your work explain itself, as quickly as possible.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clarity:&lt;/strong&gt; Well-named branches give immediate insight into their purpose, making it easier for anyone in the team to understand the branch's focus.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Organization:&lt;/strong&gt; Consistent naming helps in organizing and managing branches, especially in larger projects with many contributors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automation:&lt;/strong&gt; Certain naming conventions can be leveraged by CI/CD pipelines and other automation tools to trigger specific workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's important to distinguish between temporary branches and permanent branches. Most of what we'll talk about in this post are temporary branches, the branches you'll use when writing a single fix, new feature, or chore. Temporary branches most often don't need to exist after the code is merged to the master or main branch, but it's still important and helpful to name them in a way that maximizes legibility and organization.&lt;/p&gt;

&lt;p&gt;We'll also look at an example of permanent branch naming later in the post.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Best Practices for Naming Branches&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Let's look at 7 widely accepted best practices for naming your Git branches.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Be Descriptive and Concise&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Descriptive names convey the purpose of the branch clearly without needing to delve into its commit history. However, the name should also be concise enough not to become cumbersome to type or read.&lt;/p&gt;

&lt;p&gt;Good Example: &lt;strong&gt;&lt;code&gt;feature/user-authentication&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bad Example: &lt;strong&gt;&lt;code&gt;new_magical_stuff&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Use a Prefix to Categorize Branches&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Prefixes like*&lt;em&gt;&lt;code&gt;feature&lt;/code&gt;&lt;/em&gt;&lt;em&gt;, *&lt;/em&gt;&lt;code&gt;fix&lt;/code&gt;&lt;strong&gt;, `&lt;/strong&gt;chore*&lt;em&gt;`, *&lt;/em&gt;&lt;code&gt;release&lt;/code&gt;** describe the type of work and facilitate sorting and managing branches.&lt;/p&gt;

&lt;p&gt;Common structures include:&lt;br&gt;&lt;br&gt;
    - &lt;strong&gt;&lt;code&gt;feat/&amp;lt;feature-name&amp;gt;&lt;/code&gt; or &lt;code&gt;feature/&amp;lt;feature-name&amp;gt;&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
    - &lt;strong&gt;&lt;code&gt;fix/&amp;lt;issue&amp;gt;&lt;/code&gt;&lt;/strong&gt; or  &lt;strong&gt;&lt;code&gt;hotfix/&amp;lt;issue&amp;gt;&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
    - &lt;code&gt;**chore/&amp;lt;chore-name&amp;gt;**&lt;/code&gt;&lt;br&gt;
    - &lt;strong&gt;&lt;code&gt;release/&amp;lt;release-version&amp;gt;&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;Use Dashes to Separate Words&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Use dashes rather than underscores or camelCase. Dashes are generally more accessible and readable, and work consistently across filesystems.&lt;/p&gt;

&lt;p&gt;Example: &lt;strong&gt;&lt;code&gt;feat/add-login-page&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;Avoid Special Characters&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Stick to alphanumeric characters and hyphens. Avoid using spaces, underscores, or other special characters that might not be supported across all platforms.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. &lt;strong&gt;Keep It Lowercase&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Since Git is case-sensitive, sticking to lowercase avoids confusion and prevents issues that arise from case mismatches, especially when working across different operating systems.&lt;/p&gt;

&lt;p&gt;Example: &lt;strong&gt;&lt;code&gt;fix/fix-login-error&lt;/code&gt;&lt;/strong&gt; instead of &lt;strong&gt;&lt;code&gt;Fix/FixLoginError&lt;/code&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;code&gt;Fix/Fix-Login-Error&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. &lt;strong&gt;Include Issue or Ticket Numbers&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;If your team uses a ticketing system, include the ticket number in the branch name. This creates an easy reference to detailed discussions about what the branch should accomplish.&lt;/p&gt;

&lt;p&gt;Example: &lt;strong&gt;&lt;code&gt;feat/123-update-user-profile&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. &lt;strong&gt;Consistency is Key&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Whatever conventions your team chooses and uses, the most important thing is to be consistent. This makes it easier for all team members to understand and follow the branching strategy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning From Examples
&lt;/h2&gt;

&lt;p&gt;Let's look at these best practices in the wild.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example: Cal.com
&lt;/h3&gt;

&lt;p&gt;Cal.com, an open source meeting scheduling tool, mostly uses prefixes, including &lt;code&gt;feat&lt;/code&gt;, &lt;code&gt;fix&lt;/code&gt;, and &lt;code&gt;refactor&lt;/code&gt;, while also utilizing descriptive names, hyphens, and underscores. While it’s not airtight consistency, it makes for readable branch names and quick filtering.&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%2Fcurricular.dev%2Fassets%2Fimages%2Farticles%2Fgit_branching%2Fcaldotcom_branch_naming.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%2Fcurricular.dev%2Fassets%2Fimages%2Farticles%2Fgit_branching%2Fcaldotcom_branch_naming.png" alt="Cal.com contributors use prefixes for certain work."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Example: Laravel
&lt;/h3&gt;

&lt;p&gt;Looking at a mature code base like Laravel helps us see the difference between temporary branches and permanent branches. &lt;/p&gt;

&lt;p&gt;Laravel’s permanent branches are primarily organized by major version numbers.&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%2Fcurricular.dev%2Fassets%2Fimages%2Farticles%2Fgit_branching%2Flaravel_branch_naming_1.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%2Fcurricular.dev%2Fassets%2Fimages%2Farticles%2Fgit_branching%2Flaravel_branch_naming_1.png" alt="Laravel permanent branches"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With temporary branches, the team will typically use prefixes to categorize work, along with dashes with descriptive names, always lowercase with purely alphanumerical characters.&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%2Fcurricular.dev%2Fassets%2Fimages%2Farticles%2Fgit_branching%2Flaravel_branch_naming_2.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%2Fcurricular.dev%2Fassets%2Fimages%2Farticles%2Fgit_branching%2Flaravel_branch_naming_2.png" alt="Laravel temporary branches"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Example: Shadcn-ui
&lt;/h3&gt;

&lt;p&gt;For the UI component library Shadcn-ui, creator shadcn uses prefixes without using slashes to separate the prefixes. Again, consistency and readability are the most critical principle here.&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%2Fcurricular.dev%2Fassets%2Fimages%2Farticles%2Fgit_branching%2Fshadcn-ui-branch-naming.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%2Fcurricular.dev%2Fassets%2Fimages%2Farticles%2Fgit_branching%2Fshadcn-ui-branch-naming.png" alt="Shadcn temporary branches don't utilize prefixes"&gt;&lt;/a&gt;&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%2Fcurricular.dev%2Fassets%2Fimages%2Farticles%2Fgit_branching%2Fshadcn-ui-branch-naming-2.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%2Fcurricular.dev%2Fassets%2Fimages%2Farticles%2Fgit_branching%2Fshadcn-ui-branch-naming-2.png" alt="Shadcn temporary branches don't utilize prefixes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see that some contributors to this project include a prefix with a slash while organizing their own work.&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%2Fcurricular.dev%2Fassets%2Fimages%2Farticles%2Fgit_branching%2Fshadcn-ui-branch-naming-3.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%2Fcurricular.dev%2Fassets%2Fimages%2Farticles%2Fgit_branching%2Fshadcn-ui-branch-naming-3.png" alt="Shadcn contributors sometimes utilize prefixes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Practice Makes Perfect
&lt;/h2&gt;

&lt;p&gt;A great way to get used to following these conventions is doing it on your personal projects. &lt;/p&gt;

&lt;p&gt;At Curricular, we provide &lt;a href="https://curricular.dev/projects/" rel="noopener noreferrer"&gt;real-world practice projects&lt;/a&gt; to help developers like you master the foundational skills needed to do professional work. On our practice projects, we encourage users to follow best practices like this when committing features to GitHub.&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>When do you focus on making your code maintainable?</title>
      <dc:creator>Brian G.</dc:creator>
      <pubDate>Fri, 15 Mar 2024 13:42:09 +0000</pubDate>
      <link>https://dev.to/brian_curricular/when-do-you-focus-on-making-your-code-maintainable-5ecc</link>
      <guid>https://dev.to/brian_curricular/when-do-you-focus-on-making-your-code-maintainable-5ecc</guid>
      <description>&lt;p&gt;My team and I have been discussing an interesting question: when in your process do you focus on making code maintainable?&lt;/p&gt;

&lt;p&gt;For context, this started with a discussion about how developers (particularly junior developers) can get better at writing maintainable code.&lt;/p&gt;

&lt;p&gt;My company, Curricular, creates challenges for up-and-coming developers to practice their skills, including code reviews. We see lots of portfolio projects and capstone projects from bootcamps. Almost every project that we review has issues that impact maintainability, like vague variable/class/method names, or violations of principles like DRY or separation of concerns.&lt;/p&gt;

&lt;p&gt;Obviously, when starting out, maintenance isn't as high a priority as just getting something to work, or meeting a deadline for school/bootcamp. But part of making the leap to professional developer is shipping code that you and/or others can work with in the future.&lt;/p&gt;

&lt;p&gt;We've been dissecting our own processes to share when code starts to become more maintainable. For some, it's only through refactoring - at first it's really about getting things to work and then rewriting to optimize / subtract. For others, it starts when defining the problem - they're thinking about extensibility and future use cases right away.&lt;/p&gt;

&lt;p&gt;My feeling is that a lot of this comes with practice. The more practice you get, and the more feedback you get from code reviews, the better your code becomes earlier in the process. But the same is true with refactoring - the more you do it, the better you get at it.&lt;/p&gt;

&lt;p&gt;What techniques do you use to keep your code maintainable? And how much of your code's maintainability comes through refactoring vs. through your ingrained practices?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Code Review Best Practices for Junior Developers</title>
      <dc:creator>Brian G.</dc:creator>
      <pubDate>Wed, 28 Feb 2024 13:33:12 +0000</pubDate>
      <link>https://dev.to/brian_curricular/code-review-best-practices-for-junior-developers-3i7j</link>
      <guid>https://dev.to/brian_curricular/code-review-best-practices-for-junior-developers-3i7j</guid>
      <description>&lt;p&gt;Reviewing code is an essential skill for professional developers. If you're going to work in a team, you'll be expected to review other developers' code.&lt;/p&gt;

&lt;p&gt;Most junior programmers I talk to find it daunting to start doing code reviews. Imposter syndrome starts to rear its head. After all, when you're a junior, how are you expected to provide great feedback to a more senior developer? How do you know you're looking for the right things?&lt;/p&gt;

&lt;p&gt;Reviewing code is also an under-appreciated skill, and one that isn't usually taught. Regardless of whether you went through a bootcamp or CS program, or you're a self-taught developer, you typically learn code reviewing by doing it. And more often than not, you learn by having your code reviewed and then trying to emulate what you've seen others do.&lt;/p&gt;

&lt;p&gt;This post aims to highlight key aspects to focus on during a code review and offering guidance on providing constructive feedback. This isn't &lt;em&gt;the&lt;/em&gt; definitive resource - there's been a lot written about code reviews, including entire books.&lt;/p&gt;

&lt;p&gt;Much of this post comes from Curricular's internal code review guidelines. At Curricular, we spend a great deal of our time &lt;a href="https://curricular.dev/projects/"&gt;reviewing projects&lt;/a&gt;, to help up-and-coming developers continue improving. To make our reviews as helpful as possible, and ensure our feedback is generally consistent across multiple reviewers, we've established internal code review guidelines and best practices. We've tailored those guidelines towards junior developers for this post.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding Code Reviews
&lt;/h3&gt;

&lt;p&gt;A code review is a phase in the development process where you, as a reviewer, check another developer's code to identify errors, ensure adherence to coding standards, and suggest improvements.&lt;/p&gt;

&lt;p&gt;Typically, you’ll review a small change to the codebase, like a single issue. &lt;/p&gt;

&lt;p&gt;The review is only partially about catching bugs; it's also an avenue for reinforcing best practices, ensuring consistency, and fostering a culture of collective ownership and continuous learning.&lt;/p&gt;

&lt;p&gt;Most organizations and open source projects create their own standards and expectations around code reviews. Generally speaking, these standards are designed to aid collaboration and help teams move quickly. Code reviews are typically about improving the quality of code and fostering healthy discussions, without creating too many bottlenecks and slowing down development velocity.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Doing Code Reviews Benefits Junior Developers
&lt;/h3&gt;

&lt;p&gt;It’s one thing to receive feedback on code you’ve written. That’s for another post. Our focus here is on the benefits of reviewing other developers’ code. &lt;/p&gt;

&lt;p&gt;As a junior, code reviews are a chance to sharpen your knowledge of a codebase, your communication skills, your understanding of best practices, and begin contributing to the team.&lt;/p&gt;

&lt;p&gt;To do a great code review, you’ll typically need to spend some time learning about the surrounding codebase to understand how someone’s commit will interact with other components in a system (features, models, tests, etc.). This can, in turn, expose you to programming paradigms you may have only heard or read about, because as a junior, you probably haven’t worked on many distributed systems or microservices. Code reviews are therefore a great chance to learn up close.&lt;/p&gt;

&lt;p&gt;Additionally, you can learn best practices. By observing how more experienced colleagues write and structure their code, you can learn effective coding practices firsthand. Development teams typically try to follow style guidelines, so code reviews are also a great orientation to how things are done within the specific context you’re working in. And whether you’re joining a new company or contributing to open source, you’ll be expected to conform to the established style guidelines, and to catch when someone else’s code doesn’t follow conventions.&lt;/p&gt;

&lt;p&gt;Finally, performing code reviews helps to hone communication and critical thinking skills. At a certain point, technical skills will only get you so far in your career. To maximize your potential as a developer, you’ll need excellent soft skills as well. Code reviews require clear communication, attention to detail, and well-phrased questions and comments - essential skills for progressing to more senior levels.&lt;/p&gt;

&lt;h3&gt;
  
  
  What to Look for in a Code Review
&lt;/h3&gt;

&lt;p&gt;Here are some of the key things to look for in a code review.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Correctness:&lt;/strong&gt; Is the code doing what it's supposed to do? Verify logic, edge cases, and error handling to ensure the code meets its requirements. Also check to make sure there aren't any unintended side effects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Readability:&lt;/strong&gt; Assess the code for clarity and simplicity. Examine things like naming conventions, spacing, code structure, and check whether they follow best practices and the organization's style guidelines. When in doubt, ask for clarification, because chances are if you’re confused, someone else will be down the line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance:&lt;/strong&gt; Look for any potential bottlenecks or inefficiencies. Is there a way to simplify the code while still solving the problem?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Practices:&lt;/strong&gt; Ensure the code follows industry and project-specific best practices. This includes design patterns, SOLID principles, DRY, and avoiding anti-patterns. Nothing scores you points with senior developers like catching and removing an anti-pattern.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing:&lt;/strong&gt; Evaluate the coverage and quality of unit tests and integration tests, ensuring they are meaningful and robust. And ensure any impacted existing automated tests are also updated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security:&lt;/strong&gt; Watch out for potential vulnerabilities, such as SQL injections, XSS, or data exposure. Depending on the seniority of the developer, it's probably rare to find something this glaring, but it's important to check.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Giving Great Feedback
&lt;/h3&gt;

&lt;p&gt;Providing great feedback is an art. The best feedback focuses on the most important issues, fosters healthy conversations, and leaves both the code and the developer in a better place. Here are some things to focus on with your feedback:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Point Out the Good Parts, Too&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you catch someone doing something right, point it out. That will reinforce best practices, and also balance out the areas for improvement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be Specific and Constructive&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Point out specific parts and suggest how they could be improved. Clarify which issues you feel strongly about and which you don’t.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ask Questions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of mandating changes ("you should" or "this needs"), ask questions that provoke thought, such as, "Could this loop be replaced with a map function for better readability?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Provide Context&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When suggesting changes, explain why. This helps the author learn and understand the reasoning behind your feedback, making it more valuable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Focus on the Code, Not the Coder&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Keep your language neutral and focused on the code. Use "we" instead of "you." And avoid humor and sarcasm. Bear in mind that tone is difficult to infer in online discussions. Unless it’s incredibly obvious, it’s better to keep it neutral.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consider Sync Communication&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you notice recurring issues or have a more philosophical topic for feedback, consider a short video call to discuss in detail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don’t be a gatekeeper&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your job is to suggest changes; ultimately the owner of the PR will decide whether it gets approved.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Review Scenarios
&lt;/h3&gt;

&lt;p&gt;Finally, it's important to consider the setting of a code review. Different contexts require difference approaches.&lt;/p&gt;

&lt;h4&gt;
  
  
  Code Reviews Within a Team
&lt;/h4&gt;

&lt;p&gt;In team settings, the goal is to maintain a cohesive codebase and ensure all members are aligned with the project's coding standards and practices. Juniors should leverage these reviews to understand team-specific conventions and seek feedback on their contributions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tailoring your approach&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Aim for constructive feedback, emphasizing how suggestions align with team practices. Don’t shy away from constructive feedback on more senior team members’ code - your contribution is important. But focus on asking questions for clarity until you get comfortable with the team’s norms.&lt;/p&gt;

&lt;h4&gt;
  
  
  Code Reviews on Open Source Projects
&lt;/h4&gt;

&lt;p&gt;Reviewing code in open source projects can be a great way for juniors to get involved with new technologies and communities. Here, the emphasis might be more on adhering to the project's contribution guidelines and understanding the community's expectations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tailoring your approach&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Be respectful of community norms and more conservative in suggesting changes, focusing on clear, documented issues or enhancements.&lt;/p&gt;

&lt;h4&gt;
  
  
  Code Reviews on Side Projects
&lt;/h4&gt;

&lt;p&gt;When reviewing code for side projects, possibly with peers at a similar level, the purpose of the code review is probably more about mutual learning and checking for errors. This kind of code review can be more informal, offering a safe space for experimentation and discussion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tailoring your approach&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are probably fewer established guidelines within the codebase, so you might need to allow for more variance. Be sure to point out which issues are most significant to address. Ask lots of questions and explain context when suggesting changes. Consider leaning into more synchronous discussions to dive deeper into the strategies used and ways to improve.&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Resources
&lt;/h3&gt;

&lt;p&gt;Code reviews are more art than science, and the only way to get truly great is with practice.&lt;/p&gt;

&lt;p&gt;If you want to learn more, check out these other great resources on code reviews:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.kevinlondon.com/2015/05/05/code-review-best-practices"&gt;An oldie but goodie about how one developer approaches code reviews&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every organization treats code reviews slightly differently, so you'll want to adjust your style to fit the context where you're working. Here’s an example for &lt;a href="https://blog.palantir.com/code-review-best-practices-19e02780015f?gi=1885e6b4fb17"&gt;how Palantir thinks about code reviews&lt;/a&gt;, which also contains tons of helpful links&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.atlassian.com/agile/software-development/code-reviews"&gt;Atlassian's guide to code reviews in agile development&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>opensource</category>
    </item>
    <item>
      <title>What Kinds of Projects Belong in Your Developer Portfolio? 🚀</title>
      <dc:creator>Brian G.</dc:creator>
      <pubDate>Fri, 09 Feb 2024 13:49:32 +0000</pubDate>
      <link>https://dev.to/brian_curricular/what-kinds-of-projects-belong-in-your-portfolio-n9g</link>
      <guid>https://dev.to/brian_curricular/what-kinds-of-projects-belong-in-your-portfolio-n9g</guid>
      <description>&lt;p&gt;As a developer, your online presence speaks louder than your resume. Your portfolio is a calling card. It needs to make a great first impression, showcase what you can do, and inspire confidence in your potential.&lt;/p&gt;

&lt;p&gt;Projects are the core of your portfolio. To stand out, you need well-crafted, intriguing, unique projects.&lt;/p&gt;

&lt;p&gt;That's what this post is about - choosing great projects for your portfolio.&lt;/p&gt;

&lt;p&gt;We're going to look at the three types of projects that you build throughout your learning journey. They serve a different purpose for building and showcasing skills.&lt;/p&gt;

&lt;p&gt;But not all of them belong in your portfolio. So after digging into examples of each project type, we'll look at whether they're portfolio-worthy and why.&lt;/p&gt;

&lt;p&gt;Quick note: &lt;strong&gt;these aren't specific project scenarios&lt;/strong&gt;. I'm not going to tell you what to build. Instead, we'll look at the types of projects you should build, how they're different, and why it's important to build them at various points in your journey.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Belongs in a Portfolio
&lt;/h2&gt;

&lt;p&gt;Hiring managers and interview panelists don't spend more than a couple minutes looking at a portfolio. Two reasons: 1) They don't have much time to evaluate you or your projects, and 2) most portfolios look the same (short bio, a few stock photos, links to some clone sites).&lt;/p&gt;

&lt;p&gt;So in most cases, the portfolio evaluation is about two things: "Does the portfolio exist?" and "Is there anything off in the design or content of this portfolio so I can disqualify the candidate?"&lt;/p&gt;

&lt;p&gt;You've got a split second to grab their attention before they form an opinion about your skills, and if they're not hooked, potentially move on to the next candidate.&lt;/p&gt;

&lt;p&gt;As a result, your portfolio should be simple and functional. Introduce yourself and your work. Include your contact information and your professional interests. Make the design crisp and with personality, but professional. And make sure it loads quickly and works across browsers.&lt;/p&gt;

&lt;p&gt;And include the right kinds of projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Three Projects Types
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Projects for Practice&lt;/li&gt;
&lt;li&gt;Projects for Evidence&lt;/li&gt;
&lt;li&gt;Projects for Experience&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Projects for Practice&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Objective&lt;/strong&gt;: Focus on reinforcing foundational concepts and exploring new technologies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Solidifies core programming concepts.&lt;/li&gt;
&lt;li&gt;Introduces a broad range of technologies and frameworks.&lt;/li&gt;
&lt;li&gt;Provides a safe environment to make mistakes and learn from them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You haven’t really learned a skill until you're able to apply it to solve an emerging problem. The way you get there is by practicing a specific skill or set of skills over a period of time in different contexts, with increasing complexity.&lt;/p&gt;

&lt;p&gt;Intentionally practicing a specific set of skills deepens your understanding and writes knowledge to long term memory.&lt;/p&gt;

&lt;p&gt;Practicing over time strengthens your ability to call up the skill when you need it. They say practice makes perfect - it’s because repetition helps you do things well and have more control over what you’re doing.&lt;/p&gt;

&lt;p&gt;Obviously this isn't the most attractive type of project, so you may be tempted to skip smaller practice projects and move on to building something meatier. But if you skip practice, you risk not truly understanding the foundations, and how tools work under the hood. Without solid fundamentals and more situational experience, it's hard to know when to use the right tool for the job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Include in Portfolio&lt;/strong&gt;: No&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Practice Problems&lt;/strong&gt;: Short, situational coding problems to help you sharpen your skills. This can be a single feature of a website (e.g. styling a form) or some sort of math or logic problem. Some courses include practice problems: Scrimba, Udacity, and Codecademy are the best at this. FreeCodeCamp is also pretty good, though their problems are fairly guessable. ChatGPT is also pretty good at coming up with practice problems. Give it a scenario like “an event planning website” and ask it for practice problems on whatever topic (e.g. styling a form, passing parameters between React components, control flow in Python)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tutorial-based Projects&lt;/strong&gt;: Follow along with detailed tutorials to build applications. This introduces you to new tools and libraries and helps you learn to apply these tools in new situations. But don’t code along, &lt;a href="https://dev.to/brian_curricular/the-right-way-to-use-tutorials-ffk"&gt;there’s a better way&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Algorithm Challenges&lt;/strong&gt;: Take on coding challenges on platforms like LeetCode or HackerRank to sharpen your problem-solving skills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clone Projects&lt;/strong&gt;: Rebuild existing applications or websites. This helps in understanding how certain functionalities are implemented. But don’t just clone any site - ask ChatGPT for ideas of applications you might build to practice certain skills, and then look for websites to clone.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;2. Projects for Evidence&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Objective&lt;/strong&gt;: Create projects that test and demonstrate your development abilities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Proves that you can work on real-world software.&lt;/li&gt;
&lt;li&gt;Refines your skills set to solve real world problems.&lt;/li&gt;
&lt;li&gt;Helps you spot additional areas to work on.&lt;/li&gt;
&lt;li&gt;In some cases, exposes you to the dynamics of working within a team.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Evidence projects act as tangible proof of your skills and dedication. Employers aren’t going to take your word for it that you know how to build applications. You have to have something to show for it.&lt;/p&gt;

&lt;p&gt;At the same time, evidence projects help you measure your skill level and uncover gaps.&lt;/p&gt;

&lt;p&gt;The best way to see how your project stacks up? Get feedback from more experienced developers. Have them check your architecture, your systems design decisions, and your implementation.&lt;/p&gt;

&lt;p&gt;Evidence projects are one of our main focus areas at Curricular; real-world projects that help developers see how their skills stack up.&lt;/p&gt;

&lt;p&gt;Once you're confident and can crank out evidence projects, you're ready for professional development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Include in Portfolio&lt;/strong&gt;: Yes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of Projects&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Personal Website/Portfolio&lt;/strong&gt;: Yes, your portfolio counts as evidence, particularly of your design / frontend development skills. At the end of this post, I have more tips for making a great portfolio website.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;End-to-End Applications&lt;/strong&gt;: Develop applications that show the full range of what you can do. These could be passion projects or apps you wish existed. The more real-world you can make these projects, the better. If you need ideas, again you can consult ChatGPT. Or you can browse some of the portfolio project prompts on Scrimba, Udacity, or Codecademy - you won't get the full requirements, but enough to see the domain and problem, and you can do some additional research to flesh out the requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hackathons and Coding Competitions&lt;/strong&gt;: Participate in hackathons to experience the pressure of delivering a working prototype under time constraints. The bonus is you're typically provided a fairly detailed prompt, so you can focus on understanding the problem and devising a solution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automate Something Repetitive:&lt;/strong&gt; I have a friend who just graduated from a bootcamp who was annoyed with having to write tons of cover letters, customizing them for each company. So she integrated with ChatGPT to input her resume and a few details about the company and voila, out came a well-written cover letter. She ended up sharing the app with several of her classmates as well, which transformed this into a “skills experience” project. Who do you think was hired first from her cohort?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note: You might be tempted to think clone projects are evidence projects. But clone projects are practice, because you’re basically following a guide of what someone else created. They're like a better tutorial. Solving a problem that nobody has solved, or at least taking a new approach to solving a problem, is far superior to cloning someone else's solution, especially for a portfolio. We can debate this in the comments.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;3. Projects for Experience&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Objective&lt;/strong&gt;: Use your skills to solve real world problems for real users.&lt;/p&gt;

&lt;p&gt;Note: these project don’t mimic real world scenarios; these are &lt;strong&gt;actual production projects with users&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add to the most important part of the resume: experience&lt;/li&gt;
&lt;li&gt;Builds user focus - understanding client requirements and delivering accordingly, and iterating based on feedback and emerging needs.&lt;/li&gt;
&lt;li&gt;Potential for income&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Companies are significantly more likely to hire someone who has worked or is working professionally. That's why CS programs push internships - internships are actual professional experience.&lt;/p&gt;

&lt;p&gt;If you want to stand out to employers, find ways to work professionally. Experience projects are far superior to evidence or practice projects. &lt;/p&gt;

&lt;p&gt;This goes for your resume and your examples during the interview process. Every hiring manager I've spoken to has said the same thing: experience shipping production applications is essential.&lt;/p&gt;

&lt;p&gt;Who were your users? What were their problems? How did you solve them? Those are the key questions you should be able to answer. And you should be ready for follow ups like what approaches you considered, why you chose particular tools to build your solution, what tradeoffs you had to make, and how you might improve it in the future.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Include in Portfolio&lt;/strong&gt;: Yes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of Projects&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Freelance Projects&lt;/strong&gt;: Take on freelance projects that match your skill level. This could range from developing websites for local businesses to joining a freelancing site like Upwork, or taking on a bounty on Repl.it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Internships or Entry-level Projects&lt;/strong&gt;: Work in a real development environment, even if the role is unpaid or at a super entry level. You might try to find a local business with a software-related problem to solve (nearly all local businesses have these problems; you may have to talk to several until you find one willing to accept a solution, and even then it will probably be complimentary).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contribution to Open Source&lt;/strong&gt;: Contribute to open-source projects. Your commits serve as a tangible contribution to real-world software. There are projects for nearly every language and framework, and often there will be issues logged “good first issue” - a great place to start.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How do you know you're ready for an experience project?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Complete a few evidence projects. If you can solve challenges in new situations, and feel confident you can explain why you made certain decisions, you should move on to experience projects.&lt;/p&gt;

&lt;p&gt;If you're still not sure if you're ready, find a more experienced developer and ask them to review your code and give you feedback on ways to improve. Ask them to treat it like a professional code review and to beat up your code.&lt;/p&gt;

&lt;p&gt;Again, this is how we treat code reviews for evidence projects at Curricular. The bar to become a professional developer is high. You've really got to know your stuff. Developers who pass our projects have cleared a significant hurdle. And they come out of the project experience with specific actionable takeaways for how they can improve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion - Building an Outstanding Portfolio
&lt;/h2&gt;

&lt;p&gt;Successfully launching a career in tech involves a blend of learning, demonstrating, and applying your skills. &lt;/p&gt;

&lt;p&gt;By engaging in projects for skill development, creating evidence of your skills, and gaining real-world experience, you'll position yourself as a valuable asset in the tech industry.&lt;/p&gt;

&lt;p&gt;In the end, what makes the perfect project portfolio?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Updated: include only your greatest projects. As you gain more experience, those projects should replace your evidence projects. Discuss what you're working on now.&lt;/li&gt;
&lt;li&gt;Polished: Make sure all the links work. If your applications are hosted, they should still run. Use a design system, and try to make it look timeless.&lt;/li&gt;
&lt;li&gt;Professional: Some personality is good, but don't overload it with details about your personal interests. Limit the number of hobby / niche projects, unless those hobby projects are dev tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you found this helpful, check out more resources at &lt;a href="https://curricular.dev/"&gt;curricular.dev&lt;/a&gt;. We're building a library of projects (practice projects and evidence projects) to help developers master any technical skill.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>portfolio</category>
      <category>webdev</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>What kinds of projects belong in a developer portfolio? 🚀</title>
      <dc:creator>Brian G.</dc:creator>
      <pubDate>Thu, 01 Feb 2024 15:22:00 +0000</pubDate>
      <link>https://dev.to/brian_curricular/what-kinds-of-projects-belong-in-a-developer-portfolio-4mge</link>
      <guid>https://dev.to/brian_curricular/what-kinds-of-projects-belong-in-a-developer-portfolio-4mge</guid>
      <description>&lt;p&gt;As a developer, your online presence speaks louder than your resume. Your portfolio is a calling card. It needs to make a great first impression, showcase what you can do, and inspire confidence in your potential.&lt;/p&gt;

&lt;p&gt;Projects are the core of your portfolio. To stand out, you need well-crafted, intriguing, unique projects.&lt;/p&gt;

&lt;p&gt;That's what this post is about - choosing great projects for your portfolio.&lt;/p&gt;

&lt;p&gt;We're going to look at the three types of projects that you build throughout your learning journey. They serve a different purpose for building and showcasing skills.&lt;/p&gt;

&lt;p&gt;But not all of them belong in your portfolio. So after digging into examples of each project type, we'll look at whether they're portfolio-worthy and why.&lt;/p&gt;

&lt;p&gt;Quick note: &lt;strong&gt;these aren't specific project scenarios&lt;/strong&gt;. I'm not going to tell you what to build. Instead, we'll look at the types of projects you should build, how they're different, and why it's important to build them at various points in your journey.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Belongs in a Portfolio
&lt;/h2&gt;

&lt;p&gt;Hiring managers and interview panelists don't spend more than a couple minutes looking at a portfolio. Two reasons: 1) They don't have much time to evaluate you or your projects, and 2) most portfolios look the same (short bio, a few stock photos, links to some clone sites).&lt;/p&gt;

&lt;p&gt;So in most cases, the portfolio evaluation is about two things: "Does the portfolio exist?" and "Is there anything off in the design or content of this portfolio so I can disqualify the candidate?"&lt;/p&gt;

&lt;p&gt;You've got a split second to grab their attention before they form an opinion about your skills, and if they're not hooked, potentially move on to the next candidate.&lt;/p&gt;

&lt;p&gt;As a result, your portfolio should be simple and functional. Introduce yourself and your work. Include your contact information and your professional interests. Make the design crisp and with personality, but professional. And make sure it loads quickly and works across browsers.&lt;/p&gt;

&lt;p&gt;And include the right kinds of projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Three Projects Types
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Projects for Practice&lt;/li&gt;
&lt;li&gt;Projects for Evidence&lt;/li&gt;
&lt;li&gt;Projects for Experience&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Projects for Practice&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Objective&lt;/strong&gt;: Focus on reinforcing foundational concepts and exploring new technologies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Solidifies core programming concepts.&lt;/li&gt;
&lt;li&gt;Introduces a broad range of technologies and frameworks.&lt;/li&gt;
&lt;li&gt;Provides a safe environment to make mistakes and learn from them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You haven’t really learned a skill until you're able to apply it to solve an emerging problem. The way you get there is by practicing a specific skill or set of skills over a period of time in different contexts, with increasing complexity.&lt;/p&gt;

&lt;p&gt;Intentionally practicing a specific set of skills deepens your understanding and writes knowledge to long term memory.&lt;/p&gt;

&lt;p&gt;Practicing over time strengthens your ability to call up the skill when you need it. They say practice makes perfect - it’s because repetition helps you do things well and have more control over what you’re doing.&lt;/p&gt;

&lt;p&gt;Obviously this isn't the most attractive type of project, so you may be tempted to skip smaller practice projects and move on to building something meatier. But if you skip practice, you risk not truly understanding the foundations, and how tools work under the hood. Without solid fundamentals and more situational experience, it's hard to know when to use the right tool for the job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Include in Portfolio&lt;/strong&gt;: No&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Practice Problems&lt;/strong&gt;: Short, situational coding problems to help you sharpen your skills. This can be a single feature of a website (e.g. styling a form) or some sort of math or logic problem. Some courses include practice problems: Scrimba, Udacity, and Codecademy are the best at this. FreeCodeCamp is also pretty good, though their problems are fairly guessable. ChatGPT is also pretty good at coming up with practice problems. Give it a scenario like “an event planning website” and ask it for practice problems on whatever topic (e.g. styling a form, passing parameters between React components, control flow in Python)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tutorial-based Projects&lt;/strong&gt;: Follow along with detailed tutorials to build applications. This introduces you to new tools and libraries and helps you learn to apply these tools in new situations. But don’t code along, &lt;a href="https://dev.to/brian_curricular/the-right-way-to-use-tutorials-ffk"&gt;there’s a better way&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Algorithm Challenges&lt;/strong&gt;: Take on coding challenges on platforms like LeetCode or HackerRank to sharpen your problem-solving skills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clone Projects&lt;/strong&gt;: Rebuild existing applications or websites. This helps in understanding how certain functionalities are implemented. But don’t just clone any site - ask ChatGPT for ideas of applications you might build to practice certain skills, and then look for websites to clone.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;2. Projects for Evidence&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Objective&lt;/strong&gt;: Create projects that test and demonstrate your development abilities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Proves that you can work on real-world software.&lt;/li&gt;
&lt;li&gt;Refines your skills set to solve real world problems.&lt;/li&gt;
&lt;li&gt;Helps you spot additional areas to work on.&lt;/li&gt;
&lt;li&gt;In some cases, exposes you to the dynamics of working within a team.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Evidence projects act as tangible proof of your skills and dedication. Employers aren’t going to take your word for it that you know how to build applications. You have to have something to show for it.&lt;/p&gt;

&lt;p&gt;At the same time, evidence projects help you measure your skill level and uncover gaps.&lt;/p&gt;

&lt;p&gt;The best way to see how your project stacks up? Get feedback from more experienced developers. Have them check your architecture, your systems design decisions, and your implementation.&lt;/p&gt;

&lt;p&gt;Evidence projects are one of our main focus areas at Curricular; real-world projects that help developers see how their skills stack up.&lt;/p&gt;

&lt;p&gt;Once you're confident and can crank out evidence projects, you're ready for professional development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Include in Portfolio&lt;/strong&gt;: Yes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of Projects&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Personal Website/Portfolio&lt;/strong&gt;: Yes, your portfolio counts as evidence, particularly of your design / frontend development skills. At the end of this post, I have more tips for making a great portfolio website.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;End-to-End Applications&lt;/strong&gt;: Develop applications that show the full range of what you can do. These could be passion projects or apps you wish existed. The more real-world you can make these projects, the better. If you need ideas, again you can consult ChatGPT. Or you can browse some of the portfolio project prompts on Scrimba, Udacity, or Codecademy - you won't get the full requirements, but enough to see the domain and problem, and you can do some additional research to flesh out the requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hackathons and Coding Competitions&lt;/strong&gt;: Participate in hackathons to experience the pressure of delivering a working prototype under time constraints. The bonus is you're typically provided a fairly detailed prompt, so you can focus on understanding the problem and devising a solution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automate Something Repetitive:&lt;/strong&gt; I have a friend who just graduated from a bootcamp who was annoyed with having to write tons of cover letters, customizing them for each company. So she integrated with ChatGPT to input her resume and a few details about the company and voila, out came a well-written cover letter. She ended up sharing the app with several of her classmates as well, which transformed this into a “skills experience” project. Who do you think was hired first from her cohort?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note: You might be tempted to think clone projects are evidence projects. But clone projects are practice, because you’re basically following a guide of what someone else created. They're like a better tutorial. Solving a problem that nobody has solved, or at least taking a new approach to solving a problem, is far superior to cloning someone else's solution, especially for a portfolio. We can debate this in the comments.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;3. Projects for Experience&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Objective&lt;/strong&gt;: Use your skills to solve real world problems for real users.&lt;/p&gt;

&lt;p&gt;Note: these project don’t mimic real world scenarios; these are &lt;strong&gt;actual production projects with users&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add to the most important part of the resume: experience&lt;/li&gt;
&lt;li&gt;Builds user focus - understanding client requirements and delivering accordingly, and iterating based on feedback and emerging needs.&lt;/li&gt;
&lt;li&gt;Potential for income&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Companies are significantly more likely to hire someone who has worked or is working professionally. That's why CS programs push internships - internships are actual professional experience.&lt;/p&gt;

&lt;p&gt;If you want to stand out to employers, find ways to work professionally. Experience projects are far superior to evidence or practice projects. &lt;/p&gt;

&lt;p&gt;This goes for your resume and your examples during the interview process. Every hiring manager I've spoken to has said the same thing: experience shipping production applications is essential.&lt;/p&gt;

&lt;p&gt;Who were your users? What were their problems? How did you solve them? Those are the key questions you should be able to answer. And you should be ready for follow ups like what approaches you considered, why you chose particular tools to build your solution, what tradeoffs you had to make, and how you might improve it in the future.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Include in Portfolio&lt;/strong&gt;: Yes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of Projects&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Freelance Projects&lt;/strong&gt;: Take on freelance projects that match your skill level. This could range from developing websites for local businesses to joining a freelancing site like Upwork, or taking on a bounty on Repl.it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Internships or Entry-level Projects&lt;/strong&gt;: Work in a real development environment, even if the role is unpaid or at a super entry level. You might try to find a local business with a software-related problem to solve (nearly all local businesses have these problems; you may have to talk to several until you find one willing to accept a solution, and even then it will probably be complimentary).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contribution to Open Source&lt;/strong&gt;: Contribute to open-source projects. Your commits serve as a tangible contribution to real-world software. There are projects for nearly every language and framework, and often there will be issues logged “good first issue” - a great place to start.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How do you know you're ready for an experience project?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Complete a few evidence projects. If you can solve challenges in new situations, and feel confident you can explain why you made certain decisions, you should move on to experience projects.&lt;/p&gt;

&lt;p&gt;If you're still not sure if you're ready, find a more experienced developer and ask them to review your code and give you feedback on ways to improve. Ask them to treat it like a professional code review and to beat up your code.&lt;/p&gt;

&lt;p&gt;Again, this is how we treat code reviews for evidence projects at Curricular. The bar to become a professional developer is high. You've really got to know your stuff. Developers who pass our projects have cleared a significant hurdle. And they come out of the project experience with specific actionable takeaways for how they can improve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion - Building an Outstanding Portfolio
&lt;/h2&gt;

&lt;p&gt;Successfully launching a career in tech involves a blend of learning, demonstrating, and applying your skills. &lt;/p&gt;

&lt;p&gt;By engaging in projects for skill development, creating evidence of your skills, and gaining real-world experience, you'll position yourself as a valuable asset in the tech industry.&lt;/p&gt;

&lt;p&gt;In the end, what makes the perfect project portfolio?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Updated: include only your greatest projects. As you gain more experience, those projects should replace your evidence projects. Discuss what you're working on now.&lt;/li&gt;
&lt;li&gt;Polished: Make sure all the links work. If your applications are hosted, they should still run. Use a design system, and try to make it look timeless.&lt;/li&gt;
&lt;li&gt;Professional: Some personality is good, but don't overload it with details about your personal interests. Limit the number of hobby / niche projects, unless those hobby projects are dev tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you found this helpful, check out more resources at &lt;a href="https://curricular.dev/"&gt;curricular.dev&lt;/a&gt;. We're building a library of projects (practice projects and evidence projects) to help developers master any technical skill.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Fit Learning into a Busy Schedule 🚌👩‍💻🎪</title>
      <dc:creator>Brian G.</dc:creator>
      <pubDate>Wed, 24 Jan 2024 13:16:00 +0000</pubDate>
      <link>https://dev.to/brian_curricular/how-to-fit-learning-into-a-busy-schedule-3dnn</link>
      <guid>https://dev.to/brian_curricular/how-to-fit-learning-into-a-busy-schedule-3dnn</guid>
      <description>&lt;p&gt;At Curricular, we spend a great deal of our time learning, since we review and test dozens of courses every month.&lt;/p&gt;

&lt;p&gt;But we also spend time learning new skills.&lt;/p&gt;

&lt;p&gt;Currently, I'm trying to learn more about using AI for life and business - training and optimizing models, automating pipelines, and more.&lt;/p&gt;

&lt;p&gt;How's it going? I've learned a lot, but I've been swamped with other stuff, so I'm a bit behind where I wanted to be.&lt;/p&gt;

&lt;p&gt;So this post is for me as well as for you - I need to take my own advice. Hopefully this post helps us all make significant progress towards our goals.&lt;/p&gt;

&lt;p&gt;While no single bit of advice can help everyone in every situation, here are a few strategies for fitting learning into a busy schedule.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisite: Know Your Priorities
&lt;/h3&gt;

&lt;p&gt;In 15 years in the developer education industry, I've seen one thing consistently separate learners who stay on track and those who don't.&lt;/p&gt;

&lt;p&gt;Priority.&lt;/p&gt;

&lt;p&gt;If you don't prioritize learning, it doesn't happen. It's the same for people trying to break into the industry as for professional devs adding more skills to get promoted.&lt;/p&gt;

&lt;p&gt;So before trying to fit learning into your schedule, it's best to check in on your priorities. Where does learning stack up against everything else going on in your life? And I mean everything, from work to family obligations to exercise to sleeping to Netflix. &lt;/p&gt;

&lt;p&gt;I'm not suggesting learning should come before things like sleep, family, and work. But you should at least take inventory of all the things competing for your time, attention, and energy. And assess how important those things are for you in your life.&lt;/p&gt;

&lt;p&gt;If your learning goal is making a career transition, you might find you need to make some pretty significant sacrifices. When I was with the coding bootcamp App Academy, I met hundreds of students who were basically putting their life on hold to learn software development, and making agreements with the people in their lives to make space for the intensive program. But with life-changing results on the line, it's an investment they and their families and friends were willing to make.&lt;/p&gt;

&lt;p&gt;Again, that's not for everyone. But the prioritization exercise is probably the biggest step you can take to find time for learning. &lt;/p&gt;

&lt;h3&gt;
  
  
  Audit Your Schedule
&lt;/h3&gt;

&lt;p&gt;Now that you've done one exercise identifying everything competing for your time, and the priority of those things, it's time to look at how much time everything takes.&lt;/p&gt;

&lt;p&gt;The goal here is to surface how much time you have for learning, and cutting a few lower-priority things in order to make space for learning.&lt;/p&gt;

&lt;p&gt;Overall, a time audit will give you a good idea for exactly how much time you can realistically budget for learning.&lt;/p&gt;

&lt;p&gt;If you want to be hardcore, you could do an in-depth &lt;em&gt;calendar study&lt;/em&gt;, where you chart how you spend time for a few weeks. That's everything from sleep to work to commuting to meals to Netflix. All of it goes on the calendar.&lt;/p&gt;

&lt;p&gt;There are apps that can help you do this automagically. I've typically used a simple method: setting an alarm for every hour during the day, and when the alarm goes off, I spend 1-2 minutes to log how I just spent the previous hour (during the evening, I logged my time once or twice). &lt;/p&gt;

&lt;p&gt;Visualizing where your time actually goes can be eye-opening. You'll probably notice you spend a lot of time on unplanned stuff. But you'll also probably find several blocks in your schedule that could be repurposed into learning time in future weeks.&lt;/p&gt;

&lt;p&gt;Depending on your life situation and your learning goals, you might find that you need to re-prioritize some things to make space for learning. What you're really hoping to find are those things that are low priority but that you spend lots of time on. Replace as many of those with learning as you can.&lt;/p&gt;

&lt;p&gt;You might also find that there's not currently any space for learning in your schedule; that you can't cut anything you're spending time on. If that's the case, it's ok. This might not be a season where you can invest in learning, or at least for a significant amount of time.&lt;/p&gt;

&lt;p&gt;Again, when looking for things to cut, be sure to leave time for wellness. Exercise, cooking, leisure, and sleep are all important parts of wellbeing. Don't sacrifice the essentials for the sake of learning - otherwise you'll burn out, and the results will be worse than not spending the time learning.&lt;/p&gt;

&lt;h3&gt;
  
  
  Microlearning and Time Heisting
&lt;/h3&gt;

&lt;p&gt;Long focused learning blocks on your computer are a must, especially for practicing programming and synthesizing multiple concepts. &lt;/p&gt;

&lt;p&gt;But microlearning (and learning on the go) can be a great for making some incremental progress on individual concepts.&lt;/p&gt;

&lt;p&gt;We're living in a golden age of flexible learning, with podcasts, books (physical and digital), blogs, tutorials, livestreams, as well as courses.&lt;/p&gt;

&lt;p&gt;A 10-15 minute blog post or YouTube tutorial can help you grasp the basics of concepts. And often it's easier to find 15 minutes than to find an hour. Most of these formats can be consumed on your phone, while you're commuting or on lunch break.&lt;/p&gt;

&lt;p&gt;And if you're able to convert the time commuting, at lunch, or waiting for your coffee order into progress towards your learning goals, you can consider it a time heist - time you had to spend waiting for something anyway.&lt;/p&gt;

&lt;h3&gt;
  
  
  Appointment Learning
&lt;/h3&gt;

&lt;p&gt;If you're like me, prioritizing learning means getting it on my calendar, as an appointment. The time is marked busy and I can't schedule over it. &lt;/p&gt;

&lt;p&gt;If I don't treat learning that seriously, I'll find some other way to spend the time (let's face it, probably on social media or Netflix).&lt;/p&gt;

&lt;p&gt;The goals here are 1) to make sure I take the time to learn and 2) to make learning a consistent habit. Skills are like muscles - if you don't use them consistently, you have a harder time building them up and maintaining them.&lt;/p&gt;

&lt;p&gt;For best results, try to schedule your learning for when you’re at your best. Are you a morning person or night owl? That's your best time to learn.&lt;/p&gt;

&lt;p&gt;When scheduling your learning, don’t overdo it. Start out with something that's easy to accomplish and can help you build momentum.&lt;/p&gt;

&lt;p&gt;If you’re planning to learn full time or for large chunks, spend some building up to that schedule. Try learning for a little bit every day, like 1-2 hours in the afternoon. Then build up to longer stretches a few times per week.&lt;/p&gt;

&lt;h3&gt;
  
  
  Check in and Iterate
&lt;/h3&gt;

&lt;p&gt;Plan to iterate on your learning schedule. Life happens, so keeping the same schedule isn't realistic.&lt;/p&gt;

&lt;p&gt;When starting out with a learning plan, give yourself a week or two with and then do a quick check-in. Ask yourself is this sustainable or do I need to adjust right away? And then check-in every few weeks after that.&lt;/p&gt;

&lt;h3&gt;
  
  
  Block Out Distractions to Maximize Learning
&lt;/h3&gt;

&lt;p&gt;Sometimes the best way to optimize your schedule for learning is to optimize your learning blocks.&lt;/p&gt;

&lt;p&gt;Consider learning in the same location or space. For me, going to a specific place for studying gives me a kind of muscle memory - when I'm in this place, this is what I do. A short commute helps as well. I like to walk to a nearby cafe, which helps me clear out all the noise from work so I can focus on learning.&lt;/p&gt;

&lt;p&gt;If my library was closer, I'd probably walk there.&lt;/p&gt;

&lt;p&gt;During my learning time, I have my phone face down and on silent. I close whatever browser windows I'm not using for learning. I hit Focus mode on iOS, usually for 1 hour. There are apps that can help with this; for me, the act of deliberately closing everything out helps me focus on learning.&lt;/p&gt;

&lt;h3&gt;
  
  
  Destination Learning
&lt;/h3&gt;

&lt;p&gt;Now I'm going to contradict myself a bit here.&lt;/p&gt;

&lt;p&gt;Earlier I mentioned it's good to build up to long blocks of learning. While that's true, it can also be good to schedule an extended block of learning and just go for it. You're not likely to burn out from a short sprint.&lt;/p&gt;

&lt;p&gt;So this technique is to book a learning vacation: a dedicated weekend or week to take a break from everything else and just focus on learning. &lt;/p&gt;

&lt;p&gt;Just be aware that if you do plan a getaway, you might find yourself with a new set of distractions. So don't choose somewhere too awesome, with lots of activities you want to do.&lt;/p&gt;

&lt;p&gt;Obviously this technique is geared more towards taking a small but significant step forward in your skills. If you're in the midst of a longer learning journey, this can be helpful for focused practice time, like working on a portfolio project.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Do You Think?
&lt;/h3&gt;

&lt;p&gt;Have you tried any of these techniques or other things to make progress on your learning goals? Let me know in the comments.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>learning</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The Right Way to Use Tutorials</title>
      <dc:creator>Brian G.</dc:creator>
      <pubDate>Wed, 17 Jan 2024 15:30:00 +0000</pubDate>
      <link>https://dev.to/brian_curricular/the-right-way-to-use-tutorials-ffk</link>
      <guid>https://dev.to/brian_curricular/the-right-way-to-use-tutorials-ffk</guid>
      <description>&lt;p&gt;This post is primarily aimed at developers early in their coding journey, in particular self-learners trying to break into the industry.&lt;/p&gt;

&lt;p&gt;This is advice I wish I had when I was starting out.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h2&gt;
  
  
  There's a right way to use coding tutorials and a wrong way to use coding tutorials.
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this post, I'll explain what this means.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Wrong Way to Use Tutorials
&lt;/h3&gt;

&lt;p&gt;The wrong way? Coding along with a tutorial, copying what the teacher is doing.&lt;/p&gt;

&lt;p&gt;I'm guilty of this. I've done it countless times. And in a pinch, I still do it, just to solve a problem and get something out the door.&lt;/p&gt;

&lt;p&gt;Why is this wrong? When you code along with a demo, you're not learning how to code. You're learning stenography. &lt;/p&gt;

&lt;p&gt;If you get into this habit, you'll probably struggle to build something on your own. And that's how you end up in tutorial hell - dependent on tutorials but unable to use what you're learning.&lt;/p&gt;

&lt;p&gt;I'm not saying avoid tutorials. Tutorials are actually great. I mean, think about it: you can find a tutorial to learn just about anything coding-related, many of them for free. That's a good thing. &lt;/p&gt;

&lt;p&gt;But the trouble is, tutorials are just a resource. They're incomplete on their own. &lt;/p&gt;

&lt;p&gt;In school, you have homework and tests. While annoying, they're actually designed to check for knowledge, deepen memory encoding and recall, and translate knowledge into skills.&lt;/p&gt;

&lt;p&gt;That's why we fall into the trap of coding along. Without an assignment, we try to skip to translating seeing into doing.&lt;/p&gt;

&lt;p&gt;And don't get me started on copy-pasting the code from a tutorial without even reading/watching it. Let's just all agree that we've done it in the past, we might occasionally do that in the future, and give ourselves a pass.&lt;/p&gt;

&lt;h3&gt;
  
  
  A better way to watch tutorials: Consume, Summarize, Practice
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Consume
&lt;/h4&gt;

&lt;p&gt;Watch/read straight through the tutorial, taking notes. I recommend taking written notes rather than typing. Some studies have suggested that taking written notes helps with long term recall, because the physical act of writing forces you to slow down and actively engage with the material. &lt;/p&gt;

&lt;p&gt;While taking notes, try to avoid writing down every single step. Generally speaking, with programming you're not trying to learn a precise step-by-step process, but rather techniques and strategies for solving problems, and how these techniques work.&lt;/p&gt;

&lt;p&gt;You should also pause/rewatch if something is confusing. Unlike a live lecture, recorded media puts you in control of the experience; use these controls to your advantage.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Summarize
&lt;/h4&gt;

&lt;p&gt;Next, write a short summary description of the tutorial.&lt;/p&gt;

&lt;p&gt;This process checks to make sure you understood the tutorial at a high level and remember the essentials.&lt;/p&gt;

&lt;p&gt;Feel free to reference your notes at this stage. This isn't a test, this is translating what you've watched into your own thoughts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2b. Check Your Summary&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After completing your summary, watch/read through the tutorial again to grade your summary and fill in any missing gaps.&lt;/p&gt;

&lt;p&gt;At this point, you should have a detailed description / step-by-step guide in your own words, which you can use for future reference. Congratulations, you're no longer dependent on the tutorial.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Practice
&lt;/h4&gt;

&lt;p&gt;Next up, you're going to practice your newly-learned skills by creating an assignment for yourself.&lt;/p&gt;

&lt;p&gt;Write down the basic requirements of the assignment. List all the things the program in the tutorial actually does. You're trying to make a list of acceptance criteria for your assignment - what does your program need to do to replicate its functionality?&lt;/p&gt;

&lt;p&gt;Next, complete your assignment. You should be re-creating the program from the tutorial from scratch.&lt;/p&gt;

&lt;p&gt;During your practice, avoid looking at your notes unless you're completely stuck. Instead look at the program specs from your assignment and try to figure out the best solution.&lt;/p&gt;

&lt;p&gt;The goal is the output / solution, so don't worry about getting each step right.&lt;/p&gt;

&lt;h4&gt;
  
  
  Bonus Practice
&lt;/h4&gt;

&lt;p&gt;If you really want to go to the next level, create a second assignment where you change up some of the requirements.&lt;/p&gt;

&lt;p&gt;Because applying what you know in a new situation is the best way to sharpen your skills.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Do you use a similar system for learning? Do you take written notes or type them out? I want to hear from you what's worked.&lt;/p&gt;

&lt;p&gt;And if you found this helpful, head over to &lt;a href="https://curricular.dev/?ref=devto&amp;amp;src=tutorials"&gt;curricular.dev&lt;/a&gt;, check out our developer learning guides where we recommend the top courses to learn in-demand topics, and sign up for our mailing list. Also, if you're on Twitter/X, &lt;a href="https://twitter.com/curricularhq"&gt;let's connect&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Stay tuned for more in this series, the Developer's Learning Toolkit.&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>learning</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Which Skills Are Essential for Junior Full Stack Developers? ✅ 👩‍💻</title>
      <dc:creator>Brian G.</dc:creator>
      <pubDate>Tue, 09 Jan 2024 14:32:00 +0000</pubDate>
      <link>https://dev.to/brian_curricular/which-skills-are-essential-for-junior-full-stack-developers-30b9</link>
      <guid>https://dev.to/brian_curricular/which-skills-are-essential-for-junior-full-stack-developers-30b9</guid>
      <description>&lt;p&gt;At Curricular, my team and I spend hours researching, reviewing, and recommending the best ways to learn development skills. You can check out our learning guides at &lt;a href="https://curricular.dev/guides/?ref=devto&amp;amp;src=fsskills"&gt;curricular.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As part of our research, we decided to compile a list of the skill areas that are needed to work professionally as a Fullstack Developer, mostly independent of frameworks or tooling. This is the sequel to our previous post about &lt;a href="https://dev.to/brian_curricular/which-skills-are-essential-for-juniors-front-end-developers-4lhm"&gt;the skills Frontend Developers need&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And now I'd like your feedback. &lt;/p&gt;

&lt;h2&gt;
  
  
  About the List of Essential Skills for Junior Fullstack Developers
&lt;/h2&gt;

&lt;p&gt;My team interviewed a bunch of senior developers, sifted through a lot of the readily-available online advice, and debated with one another to produce this list.&lt;/p&gt;

&lt;p&gt;Our goal is to help aspiring fullstack developers understand which technical skills are most important to prioritize, in order to excel as a Fullstack Developer and meet or exceed your teammates' expectations.&lt;/p&gt;

&lt;p&gt;Of course, learning never stops, and some skills are important to acquire as you gain experience as a junior developer. So we've separated skills into a &lt;strong&gt;Foundational List&lt;/strong&gt; and a &lt;strong&gt;Growth List&lt;/strong&gt; with new and Junior Fullstack developers in mind. &lt;/p&gt;

&lt;p&gt;The items in the Growth list are things that a Junior developer would not be expected to handle alone, right out of school, on a team.&lt;/p&gt;

&lt;p&gt;Within each, the knowledge areas have been categorized into domains: &lt;strong&gt;UI Design &amp;amp; Interactivity&lt;/strong&gt;, &lt;strong&gt;Frontend Servers&lt;/strong&gt;, &lt;strong&gt;State Management&lt;/strong&gt;, &lt;strong&gt;HTTP Request / Response&lt;/strong&gt;, &lt;strong&gt;API Development&lt;/strong&gt;, and &lt;strong&gt;Databases&lt;/strong&gt;. These are somewhat loose domains meant to help you consider skills based on their main purpose. &lt;/p&gt;

&lt;p&gt;Often the skills cross into multiple areas, so don't take this as a strict classification; placing a skill in one domain versus another doesn't mean that it precludes the others.&lt;/p&gt;

&lt;p&gt;Of course, these are technical skills. There are additional nontechnical skills you'll need in order to excel, like teamwork, creativity, problem solving, pair programming, and estimation. Those are also left off at this point.&lt;/p&gt;

&lt;p&gt;I'm excited to hear your feedback!&lt;/p&gt;

&lt;h2&gt;
  
  
  Foundational Skills
&lt;/h2&gt;

&lt;h3&gt;
  
  
  User Interface Design &amp;amp; Interactivity
&lt;/h3&gt;

&lt;h4&gt;
  
  
  HTML
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Syntax&lt;/li&gt;
&lt;li&gt;Elements&lt;/li&gt;
&lt;li&gt;Attributes&lt;/li&gt;
&lt;li&gt;Document Structure&lt;/li&gt;
&lt;li&gt;Properties&lt;/li&gt;
&lt;li&gt;Events&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  CSS
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;IDs and Classes&lt;/li&gt;
&lt;li&gt;Dynamic Layouts and Responsive Design

&lt;ul&gt;
&lt;li&gt;Flexbox&lt;/li&gt;
&lt;li&gt;Grid&lt;/li&gt;
&lt;li&gt;Variables&lt;/li&gt;
&lt;li&gt;Media queries&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Frameworks - advantages, tradeoffs, and basic usage

&lt;ul&gt;
&lt;li&gt;Tailwind&lt;/li&gt;
&lt;li&gt;Bootstrap&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  JavaScript
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;DOM Lifecycle&lt;/li&gt;
&lt;li&gt;Browser event loop&lt;/li&gt;
&lt;li&gt;Event listeners&lt;/li&gt;
&lt;li&gt;Callbacks&lt;/li&gt;
&lt;li&gt;DOM Manipulation&lt;/li&gt;
&lt;li&gt;Async/Await&lt;/li&gt;
&lt;li&gt;Promises&lt;/li&gt;
&lt;li&gt;A JavaScript framework or library

&lt;ul&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Angular&lt;/li&gt;
&lt;li&gt;Vue&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Frontend Servers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Static Site &lt;/li&gt;
&lt;li&gt;Server-side Rendering&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Version Control
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Git and GitHub basics (clone, fork, branch, merge, pull request, conflict resolution)&lt;/li&gt;
&lt;li&gt;Writing good commit messages&lt;/li&gt;
&lt;li&gt;Protecting sensitive information&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  State Management
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Global State
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Frameworks and Patterns (e.g. Redux)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Local State
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Prop Drilling&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  HTTP Request / Response
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Protocols&lt;/li&gt;
&lt;li&gt;TCP/IP &amp;amp; IP Addressing&lt;/li&gt;
&lt;li&gt;Route&lt;/li&gt;
&lt;li&gt;Headers&lt;/li&gt;
&lt;li&gt;Payload&lt;/li&gt;
&lt;li&gt;Status Codes&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  API Development
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Backend Programming
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Fundamentals of a backend language and framework

&lt;ul&gt;
&lt;li&gt;JavaScript with Node &amp;amp; Express&lt;/li&gt;
&lt;li&gt;Python with Django or Flask&lt;/li&gt;
&lt;li&gt;Ruby with Rails&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  API Servers
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Ports&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Database Interfaces
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;ORMs&lt;/li&gt;
&lt;li&gt;ODMs&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Routing
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;REST&lt;/li&gt;
&lt;li&gt;SOAP&lt;/li&gt;
&lt;li&gt;GraphQL&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Databases
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Database Schemas and Models
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Relational

&lt;ul&gt;
&lt;li&gt;Tables&lt;/li&gt;
&lt;li&gt;Joins&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Non-relational

&lt;ul&gt;
&lt;li&gt;Documents&lt;/li&gt;
&lt;li&gt;References&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Data Manipulation
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Reading&lt;/li&gt;
&lt;li&gt;Writing&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Queries and Mutations
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;SQL basics&lt;/li&gt;
&lt;li&gt;NoSQL basics&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Database Management Fundamentals
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Reliability&lt;/li&gt;
&lt;li&gt;Efficiency&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Additional Topics
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Project Organization
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Dependency Management&lt;/li&gt;
&lt;li&gt;Source code kept separate from compiled code&lt;/li&gt;
&lt;li&gt;All tests contained in their own folder&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Web architecture
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;MVC&lt;/li&gt;
&lt;li&gt;Microservices&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Website hosting, delivery, and deployment
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Cloud Computing Essentials &lt;/li&gt;
&lt;li&gt;Cloud Platform Essentials (AWS, Azure)&lt;/li&gt;
&lt;li&gt;Containerization (Docker)&lt;/li&gt;
&lt;li&gt;Continuous Delivery and Continuous Integration&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Software quality
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Writing clean code&lt;/li&gt;
&lt;li&gt;Testing and Test-driven development&lt;/li&gt;
&lt;li&gt;Debugging strategies&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Growth Skills
&lt;/h2&gt;

&lt;p&gt;Generally, in most contexts, juniors will start working on support and some small contained features, with an increase in complexity as they acclimate and gain experience.&lt;/p&gt;

&lt;p&gt;Some skills juniors will want to add in order to continue progressing include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Accessibility&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Authentication and Authorization&lt;/li&gt;
&lt;li&gt;Messaging / Message Bus&lt;/li&gt;
&lt;li&gt;Caching&lt;/li&gt;
&lt;li&gt;Enterprise Languages and Frameworks

&lt;ul&gt;
&lt;li&gt;Java with Spring and Spring Boot&lt;/li&gt;
&lt;li&gt;C# with .NET / ASP.NET&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What Do You Think?
&lt;/h2&gt;

&lt;p&gt;Have we missed anything critical that you'd expect from a junior fullstack developer? Are there any skills on this list that you're surprised about? Or confused about? Let me know in the comments.&lt;/p&gt;

&lt;p&gt;And if you're an aspiring full stack developer interested in learning these skills, check out our guide to &lt;a href="https://curricular.dev/quickstarts/fullstack_quickstart/?ref=devto&amp;amp;src=fsskills"&gt;the best fullstack programs and learning resources&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>fullstack</category>
      <category>beginners</category>
      <category>learning</category>
      <category>discuss</category>
    </item>
    <item>
      <title>We Tested 40 Python Courses. Here Are the Best. 👨‍💻🚀</title>
      <dc:creator>Brian G.</dc:creator>
      <pubDate>Fri, 05 Jan 2024 19:45:00 +0000</pubDate>
      <link>https://dev.to/brian_curricular/we-tested-40-python-courses-here-are-the-best-1jb1</link>
      <guid>https://dev.to/brian_curricular/we-tested-40-python-courses-here-are-the-best-1jb1</guid>
      <description>&lt;p&gt;At Curricular, my team and I spend hundreds of hours every month reviewing courses and programs from around the web to recommend the very best. Our goal is to help developers cut through the marketing hype, make quick and confident buying decisions, and get the most from their time and money.&lt;/p&gt;

&lt;p&gt;You can check out all our learning guides at &lt;a href="https://curricular.dev?utm_source=devto&amp;amp;src=Pythonguide"&gt;curricular.dev&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We spent several hundred hours meticulously testing and reviewing several dozen Python courses from various vendors around the web. Here are the absolute best online Python courses available right now.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;We independently test and review every course that we recommend. If you purchase a course we recommend, we may earn a commission. Our team includes developers and learning experts who have worked at most of the major learning platforms, but we don't have active employment relationships with any.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Our Top Pick
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kJhrGrVQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://curricular.dev/assets/images/platforms/udacity.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kJhrGrVQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://curricular.dev/assets/images/platforms/udacity.png" alt="Udacity's Full Stack Developer Nanodegree" width="400" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Udacity's &lt;a href="https://imp.i115008.net/Qyv4WY"&gt;Full Stack Developer Nanodegree&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;$249 per month | 4 months at 10-15 hours per week&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The best self-paced Python course money can buy. It's expensive, but well worth the cost for the quality of instruction and the quality of feedback on your work. The emphasis on practice exercises and real-world hands-on projects are standout features.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why It's Great
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Emphasis on Hands-on Learning&lt;/li&gt;
&lt;li&gt;Frequent Practice&lt;/li&gt;
&lt;li&gt;Graded Portfolio Projects&lt;/li&gt;
&lt;li&gt;Earning an Industry-Recognized Credential&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Read Our Full Review at &lt;a href="https://curricular.dev/quickstarts/python_web_quickstart#udacity_python"&gt;curricular.dev&lt;/a&gt;
&lt;/h4&gt;




&lt;h2&gt;
  
  
  Runner Up
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4sQMIdpJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://curricular.dev/assets/images/platforms/cs50.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4sQMIdpJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://curricular.dev/assets/images/platforms/cs50.png" alt="edX's CS50 Web Development with Python and JavaScript" width="400" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  edX's &lt;a href="https://www.edx.org/learn/python/harvard-university-cs50-s-introduction-to-programming-with-python"&gt;CS50 Web Development with Python and JavaScript&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;$199 for certificate (free to audit) | 30-40 hours&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The gold standard for online courses provides the best way for programmers to learn basic Python and how to build web apps with Django and PostgreSQL.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why It's Great
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Aimed at Novice Programmers&lt;/li&gt;
&lt;li&gt;Combines Lectures &amp;amp; Homework Challenges&lt;/li&gt;
&lt;li&gt;Polished Course Materials&lt;/li&gt;
&lt;li&gt;Certificate Available&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Read Our Full Review at &lt;a href="https://curricular.dev/quickstarts/python_web_quickstart#cs50_python"&gt;curricular.dev&lt;/a&gt;
&lt;/h4&gt;




&lt;h2&gt;
  
  
  Another Great Option
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J7FXha8S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://curricular.dev/assets/images/platforms/appacademy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J7FXha8S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://curricular.dev/assets/images/platforms/appacademy.png" alt="App Academy Open's Python, Flask, and SQLAlchemy" width="400" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  App Academy Open's &lt;a href="https://www.appacademy.io/course/app-academy-open"&gt;Python, Flask, and SQLAlchemy&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Free | 40 hours&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Solid free option for learning professional-grade Python web development.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why It's Great
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Aimed at Novice Programmers&lt;/li&gt;
&lt;li&gt;Learning Without Videos&lt;/li&gt;
&lt;li&gt;Frequent Practice Throughout&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Read Our Full Review at &lt;a href="https://curricular.dev/quickstarts/python_web_quickstart#aaopen_python"&gt;curricular.dev&lt;/a&gt;
&lt;/h4&gt;




&lt;h2&gt;
  
  
  Another Great Option
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f0ae0y3b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://curricular.dev/assets/images/platforms/codecademy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f0ae0y3b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://curricular.dev/assets/images/platforms/codecademy.png" alt="Codecademy's Build Python Web Apps with Flask Skill Path" width="400" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Codecademy's &lt;a href="https://www.codecademy.com/learn/paths/build-python-web-apps-flask"&gt;Build Python Web Apps with Flask Skill Path&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;$29.99 per month | 10 weeks at 10 hours per week&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A solid option for learning to build web applications with Python and Flask, with engaging hands-on practice and a few challenging projects.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why It's Great
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Emphasis on Hands-on learning&lt;/li&gt;
&lt;li&gt;Getting Started Quickly (No Config Required)&lt;/li&gt;
&lt;li&gt;Includes Practice Projects&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Read Our Full Review at &lt;a href="https://curricular.dev/quickstarts/python_web_quickstart#codecademy_python"&gt;curricular.dev&lt;/a&gt;
&lt;/h4&gt;




&lt;h2&gt;
  
  
  Another Great Option
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JzHGl0Cp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://curricular.dev/assets/images/platforms/educative.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JzHGl0Cp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://curricular.dev/assets/images/platforms/educative.png" alt="Educative's Become a Flask Developer" width="400" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Educative's &lt;a href="https://www.educative.io/path/become-a-flask-developer"&gt;Become a Flask Developer&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;$25 per month | 18 hours&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Great option if you want to learn without videos, and curate your own Python and Flask learning path from a disparate set of materials.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why It's Great
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Gets You Up to Speed Quickly&lt;/li&gt;
&lt;li&gt;Solid Resource for Ongoing Reference&lt;/li&gt;
&lt;li&gt;Emphasis on Learning by Doing&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Read Our Full Review at &lt;a href="https://curricular.dev/quickstarts/python_web_quickstart#educative_python"&gt;curricular.dev&lt;/a&gt;
&lt;/h4&gt;




&lt;h2&gt;
  
  
  Another Great Option
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--y5r00NPm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://curricular.dev/assets/images/platforms/freecodecamp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--y5r00NPm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://curricular.dev/assets/images/platforms/freecodecamp.png" alt="FreeCodeCamp's Scientific Computing with Python Certification" width="400" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  FreeCodeCamp's &lt;a href="https://www.freecodecamp.org/learn/scientific-computing-with-python/"&gt;Scientific Computing with Python Certification&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Free | 30 hours&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This leaning path combines Dr. Chuck's excellent "Python for Everybody" course with autograded coding problems.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why It's Great
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Beginner-friendly&lt;/li&gt;
&lt;li&gt;Expert-led Learning&lt;/li&gt;
&lt;li&gt;Frequent Practice Throughout the Course&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Read Our Full Review at &lt;a href="https://curricular.dev/quickstarts/python_web_quickstart#freecodecamp_python"&gt;curricular.dev&lt;/a&gt;
&lt;/h4&gt;




&lt;p&gt;I hope you found this list helpful. If you did, check out our learning guides at &lt;a href="https://curricular.dev?utm_source=devto&amp;amp;src=pythonguide"&gt;curricular.dev&lt;/a&gt; and sign up to get them via email.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Avoid Tutorial Hell: Choosing Great Learning Resources 🧠</title>
      <dc:creator>Brian G.</dc:creator>
      <pubDate>Sat, 30 Dec 2023 16:22:00 +0000</pubDate>
      <link>https://dev.to/brian_curricular/avoid-tutorial-hell-choosing-great-learning-resources-215c</link>
      <guid>https://dev.to/brian_curricular/avoid-tutorial-hell-choosing-great-learning-resources-215c</guid>
      <description>&lt;p&gt;After setting learning goals (see my &lt;a href="https://dev.to/brian_curricular/crafting-better-learning-goals-5b4e"&gt;previous post&lt;/a&gt;), you're ready to fire up YouTube and start learning, right?&lt;/p&gt;

&lt;p&gt;Not so fast! ⚠️&lt;/p&gt;

&lt;p&gt;There are many excellent free or inexpensive learning resources out there. But frankly, there's also a lot of garbage out there.&lt;/p&gt;

&lt;p&gt;It's easy to get stuck in tutorial hell - the endless cycle of watching tutorials without being able to actually do anything with the knowledge. It's critical to do some research and find the right courses, books, or tutorials.&lt;/p&gt;

&lt;p&gt;And yet, while the internet is full of recommendations and reviews, I've found you also have to be careful taking someone's advice. Most reviews are way too short ("good course, five stars") and lack helpful context. Most of the time, you don't know someone's learning goals, prior knowledge, or how they supplemented their learning.&lt;/p&gt;

&lt;p&gt;That's why I created &lt;a href="https://curricular.dev/"&gt;Curricular&lt;/a&gt;, to help developers find great courses, with trustworthy recommendations backed by in-depth research and testing.&lt;/p&gt;

&lt;p&gt;Our goal is to help 1 million developers level up their career.&lt;/p&gt;

&lt;p&gt;At Curricular, we &lt;a href="https://curricular.dev/guides/"&gt;curate lists of the best courses&lt;/a&gt; to learn any technical skill. Our recommendations come from hours of research and in-depth testing, and we write detailed reports about our methodology and findings. &lt;/p&gt;

&lt;p&gt;We also provide free personalized learning recommendations (seriously - ask us anything, we're glad to help).&lt;/p&gt;

&lt;h3&gt;
  
  
  Choosing a Great Course
&lt;/h3&gt;

&lt;p&gt;Here are some lessons from our course evaluation framework to help you choose a great course.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A great course is one that's built intentionally using the right teaching methods / learning styles for the material, is taught at the target student's level, and delivers its stated objectives.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When choosing a course, you should look for the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;was the course created for someone with my learning goals and current level of knowledge?&lt;/li&gt;
&lt;li&gt;does the course list tangible learning outcomes?&lt;/li&gt;
&lt;li&gt;does the course seem to promise too much? (e.g. "everything you'll need to become a professional developer!" -- avoid at all costs)&lt;/li&gt;
&lt;li&gt;does the course offer hands-on practice opportunities - either in-browser coding or solo practice projects?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Where possible, you also want to evaluate the instructor. First, you want to make sure they know what they're talking about. Are they qualified to teach the material? You want to see that their explanations are clear, and that in demonstrations, they show you how things work, rather than just tell you how they work. Look for samples you can preview, and reviews that talk specifically about their expertise.&lt;/p&gt;

&lt;h3&gt;
  
  
  Don't Ignore the Prerequisites
&lt;/h3&gt;

&lt;p&gt;Before starting a course or tutorial, make sure you’re ready. Check the prerequisites and evaluate your skill level.&lt;/p&gt;

&lt;p&gt;If you don't have the right prerequisite knowledge, you might struggle to learn the topic.&lt;/p&gt;

&lt;p&gt;For example: lots of people want to learn React. It's still one of the hottest libraries. But if you're not solid with JavaScript foundations, you're going to have a hard time learning React, since so much of React is writing plain old JavaScript.&lt;/p&gt;

&lt;p&gt;This might be tough to hear. We all have limited time to learn. And how do you know when you know enough to move to the next concept?&lt;/p&gt;

&lt;p&gt;I'm not saying you have to feel solid with every prerequisite that you find. If that were the case, we'd never get anywhere.&lt;/p&gt;

&lt;p&gt;But at the very least, be aware of a course's prerequisites and be honest with yourself about your comfort level with the concepts. If you're feeling fuzzy about too many of the prerequisites, you may need a bit more practice before getting started.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mix and Match and Supplement with Solo Practice
&lt;/h3&gt;

&lt;p&gt;Very few courses offer literally everything you'll need to master a topic - that is, to get to professional proficiency with a language or framework.&lt;/p&gt;

&lt;p&gt;That's why most of our recommendations at &lt;a href="https://curricular.dev/"&gt;Curricular&lt;/a&gt; are learning paths rather than single courses.&lt;/p&gt;

&lt;p&gt;You should plan to take several courses (or books) to learn a topic.&lt;/p&gt;

&lt;p&gt;And you should also plan to supplement with a practice project to solidify your knowledge. What I mean by this is take on a project without guidance; build something yourself using the technologies you've learned. Practicing with a solo project will test your skills and show you where you need to keep studying.&lt;/p&gt;

&lt;p&gt;And try to get feedback on your projects from a more experienced developer. They'll help you spot areas for improvement and where you've missed best practices.&lt;/p&gt;

&lt;p&gt;Unfortunately, very few courses and platforms offer grading or feedback on projects, with Scrimba and Udacity being the main exceptions.&lt;/p&gt;

&lt;h3&gt;
  
  
  More Tips to Level Up Your Learning
&lt;/h3&gt;

&lt;p&gt;Be sure to follow the rest of our series - The Developer's Learning Toolkit - for more tips on how to get the most from your learning.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://dev.to/brian_curricular/crafting-better-learning-goals-5b4e"&gt;Crafting Better Learning Goals&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Avoid Tutorial Hell: Choosing Great Learning Resources (THIS POST)&lt;/li&gt;
&lt;li&gt;How to Fit Learning into a Busy Schedule&lt;/li&gt;
&lt;li&gt;Celebrate Your Learning Progress (and Your Bugs)&lt;/li&gt;
&lt;li&gt;Learn, Build, Teach: Taking Your Learning to the Next Level&lt;/li&gt;
&lt;li&gt;Should You Really Learn in Public?&lt;/li&gt;
&lt;li&gt;Regaining Momentum After a Learning Break&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;-Happy Learning and Coding!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>learning</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Crafting Better Learning Goals 🎯 👩‍💻</title>
      <dc:creator>Brian G.</dc:creator>
      <pubDate>Sat, 30 Dec 2023 10:23:00 +0000</pubDate>
      <link>https://dev.to/brian_curricular/crafting-better-learning-goals-5b4e</link>
      <guid>https://dev.to/brian_curricular/crafting-better-learning-goals-5b4e</guid>
      <description>&lt;p&gt;If you don't define where you're going, how are you going to get there?&lt;/p&gt;

&lt;p&gt;Many junior or aspiring devs I talk to only have a loosely defined goal for why they're learning something. While the high level goal might be in place (e.g. "getting a full time job"), the motivation to learn a specific topic (DS&amp;amp;A) tends to be driven by anxiety, imposter syndrome, or even a known skills gap.&lt;/p&gt;

&lt;p&gt;Sometimes we hear people talking about a hot language or framework and think “I gotta learn that” and we jump right into tutorials.&lt;/p&gt;

&lt;p&gt;Taking the time to write down your goals will help you choose the right learning resources, the right level of intensity for your training, and will help you stay on course once you begin.&lt;/p&gt;

&lt;p&gt;A few questions to consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How does learning this skill fit into your broader career goals?&lt;/li&gt;
&lt;li&gt;What do you hope to be able to do with the skill(s)? Here you want to visualize success, and list as many things as possible. For example, if you're learning DS&amp;amp;A, are you hoping to be able to solve any LeetCode challenge? Interview with more confidence? Write more efficient programs?&lt;/li&gt;
&lt;li&gt;At what level do these skills need to be (conversational, junior practitioner, professional, senior)? &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Answering these questions will help you choose tutorials and courses more effectively, and to measure your progress against your learning.&lt;/p&gt;

&lt;h3&gt;
  
  
  Define SWBATs
&lt;/h3&gt;

&lt;p&gt;If you really want to level-up your learning, take this exercise a step further and pair your high level objectives with some tangible, action-oriented target outcomes.&lt;/p&gt;

&lt;p&gt;One tool that great teachers use when writing learning objectives is creating SWBATs. This acronym means “students will be able to” and it’s the prefix of a short sentence describing a student's capabilities after taking a course (or reading a book or article).&lt;/p&gt;

&lt;p&gt;Some of my SWBATs for this article include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Students will be able to articulate high level learning goals tied to their near-term career objectives.&lt;/li&gt;
&lt;li&gt;Students will be able to write well-formed SWBATs for their personal learning plan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's ok if you're not 100% sure of everything - after all, you're not expert in the topic area. But this exercise will encourage you to do some preliminary research about the topic to understand what people are doing with it in the real world. &lt;/p&gt;

&lt;p&gt;As you're crafting this list, consider tapping into the wisdom of the crowd. Ask a developer community for advice and ideas for how to measure your proficiency in the skill.&lt;/p&gt;

&lt;p&gt;And you can always add to your list of SWBATs as you know more. That's one of the paradoxes of learning: the more you learn, the more aware you become of other topics you need to learn.&lt;/p&gt;

&lt;p&gt;One added bonus to completing this step: you're creating a way to assess your skills. If you're able to do everything listed in your SWBATs, you're probably ready to move on.&lt;/p&gt;

&lt;h3&gt;
  
  
  More Tips to Level Up Your Learning
&lt;/h3&gt;

&lt;p&gt;Be sure to follow the rest of our series - The Developer's Learning Toolkit - for more tips on how to get the most from your learning.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Crafting Better Learning Goals (THIS POST)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/brian_curricular/avoid-tutorial-hell-choosing-great-learning-resources-215c"&gt;Avoid Tutorial Hell: Choosing Great Learning Resources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;How to Fit Learning into a Busy Schedule&lt;/li&gt;
&lt;li&gt;Celebrate Your Learning Progress (and Your Bugs)&lt;/li&gt;
&lt;li&gt;Learn, Build, Teach: Taking Your Learning to the Next Level&lt;/li&gt;
&lt;li&gt;Should You Really Learn in Public?&lt;/li&gt;
&lt;li&gt;Regaining Momentum After a Learning Break&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;-Happy Learning &amp;amp; Coding!&lt;/p&gt;

</description>
      <category>learning</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>7 Courses To Help You Master CSS in 2024 🏅🚀</title>
      <dc:creator>Brian G.</dc:creator>
      <pubDate>Wed, 20 Dec 2023 19:12:00 +0000</pubDate>
      <link>https://dev.to/brian_curricular/7-courses-to-help-you-master-css-in-2024-3n6o</link>
      <guid>https://dev.to/brian_curricular/7-courses-to-help-you-master-css-in-2024-3n6o</guid>
      <description>&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%2Fcurricular.dev%2Fassets%2Fimages%2Fsubjects%2Fcss.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%2Fcurricular.dev%2Fassets%2Fimages%2Fsubjects%2Fcss.png" alt="Learning CSS in 2024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Learning CSS Foundations&lt;/li&gt;
&lt;li&gt;Learning Intermediate CSS&lt;/li&gt;
&lt;li&gt;Learning Advanced CSS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At Curricular, my team and I spend hundreds of hours every month reviewing courses and programs from around the web to recommend the very best. Our goal is to help developers cut through the marketing hype, make quick and confident buying decisions, and get the most from their time and money.&lt;/p&gt;

&lt;p&gt;You can check out all our learning guides at &lt;a href="https://curricular.dev/guides/?ref=devto&amp;amp;src=cssguide" rel="noopener noreferrer"&gt;curricular.dev&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Whether you're just starting out with CSS, looking to solidify your foundations, or leveling up as a professional front end developer, these are the best self-paced CSS courses and programs for every budget (even free) and learning style.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;We independently test and review every course that we recommend. If you purchase a course we recommend, we may earn a commission. Our team includes developers and learning experts who have worked at most of the major learning platforms, but we don't have active employment relationships with any.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning CSS Foundations
&lt;/h2&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%2Fvom2u2emuwc3q9absvvq.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%2Fvom2u2emuwc3q9absvvq.png" alt="Scrimba's interactive screencast format is terrific for learning"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Scrimba's &lt;a href="https://scrimba.com/learn/htmlandcss/?coupon=curricular-dev" rel="noopener noreferrer"&gt;Learn HTML and CSS&lt;/a&gt; and &lt;a href="https://scrimba.com/learn/responsive?coupon=curricular-dev" rel="noopener noreferrer"&gt;Learn Responsive Design&lt;/a&gt; - Our Top Pick to Learn CSS Foundations
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;$39 per month | 25-30 hours to complete&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;These are two of the most impressive beginner-friendly HTML and CSS courses available. Well made, effective, engaging, and a lot of fun.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why It's Great
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Beginner-friendly&lt;/li&gt;
&lt;li&gt;Aimed at aspiring professionals&lt;/li&gt;
&lt;li&gt;Emphasis on learning by doing&lt;/li&gt;
&lt;li&gt;Option to start with a free course&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Scrimba's approach involves learning the concepts by building functional websites. Each tutorial builds one upon another, and applies increasingly advanced concepts as you progress.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://scrimba.com/learn/htmlandcss/?coupon=curricular-dev" rel="noopener noreferrer"&gt;Learn HTML and CSS&lt;/a&gt; course curriculum is available for free, while the &lt;a href="https://scrimba.com/learn/responsive?coupon=curricular-dev" rel="noopener noreferrer"&gt;Learn Responsive Design&lt;/a&gt; course requires subscription. A Pro subscription also gets you a completion certificate, full access to the community, and peer code reviews on your projects.&lt;/p&gt;

&lt;h4&gt;
  
  
  Get these courses at &lt;a href="https://scrimba.com/allcourses?coupon=curricular-dev" rel="noopener noreferrer"&gt;scrimba.com/allcourses&lt;/a&gt;
&lt;/h4&gt;




&lt;h3&gt;
  
  
  Frontend Masters' &lt;a href="https://frontendmasters.com/learn/css/?ref=curricular" rel="noopener noreferrer"&gt;CSS Path&lt;/a&gt; - Runner Up For Learning CSS Foundations
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;$39 per month | 20-25 hours to complete&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Solid on-ramp to CSS, going from the basics to professional-level CSS, with a particularly strong emphasis on real-world frontend development.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why It's Great
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Expert teachers&lt;/li&gt;
&lt;li&gt;Real world insights&lt;/li&gt;
&lt;li&gt;Workshop format makes you feel like you're there&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Frontend Masters has some incredible instructors in their CSS path, coming from the front lines of some of the world’s top startups and tech giants.&lt;/p&gt;

&lt;p&gt;The courses are broken up into focused deep dives on particular topics, so you'll get a thorough understanding of techniques like animations, variables, responsive design, and more.&lt;/p&gt;

&lt;p&gt;We really liked that each of the courses is chock-full of practical application and real-world scenarios. You'll learn incredibly valuable real-world CSS tips and avoid rookie mistakes.&lt;/p&gt;

&lt;p&gt;And the recent addition of the CSS Projects course has brought some much-needed hands-on practice to the platform. The workshop gives you project prompts and then walks through the instructor's solution.&lt;/p&gt;

&lt;h4&gt;
  
  
  Get this learning path at &lt;a href="https://frontendmasters.com/learn/css/?ref=curricular" rel="noopener noreferrer"&gt;frontendmasters.com&lt;/a&gt;
&lt;/h4&gt;




&lt;h3&gt;
  
  
  Codecademy's &lt;a href="https://www.codecademy.com/learn/paths/learn-how-to-build-websites/?ref=curricular&amp;amp;src=cssdevto" rel="noopener noreferrer"&gt;Build a Website with HTML, CSS, and GitHub Pages&lt;/a&gt; - Another Great Option for Learning CSS Foundations
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;$25 per month | 25-30 hours to complete&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Solid hands-on option for learning how to design, build, and deploy simple websites.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why It's Great
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Beginner-friendly&lt;/li&gt;
&lt;li&gt;In-browser Coding Exercises&lt;/li&gt;
&lt;li&gt;Hands-on Learning&lt;/li&gt;
&lt;li&gt;Frequent Practice&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The course material is almost entirely comprised of short readings and coding exercises to teach you each concept. This keeps your hands on the keyboard from the first lesson.&lt;/p&gt;

&lt;p&gt;Each section of the course includes a hands-on project, most of which include detailed step by step instructions. The scenarios for these projects aren't always the most relevant to professional web development, but are typically engaging and illustrate the core concepts well.&lt;/p&gt;

&lt;p&gt;The path wraps up with a capstone project where you have to apply all the skills you've learned to design and build a landing page for a school, given a set of wireframes. This fairly meaty project will definitely put your skills to the test.&lt;/p&gt;

&lt;h4&gt;
  
  
  Before You Buy
&lt;/h4&gt;

&lt;p&gt;This path combines the Learn CSS course and Intermediate CSS courses, which are available for free. But if you subscribe and take this path, you also get access to some guided projects, practices, and the capstone project.&lt;/p&gt;

&lt;p&gt;Most of the hands-on projects are guided, with step by step instructions. This means they're not terribly challenging, so you may reach the capstone project and find it takes a while to adjust to writing CSS without guidance.&lt;/p&gt;

&lt;h4&gt;
  
  
  Get this course at &lt;a href="https://www.codecademy.com/learn/paths/learn-how-to-build-websites/?ref=curricular" rel="noopener noreferrer"&gt;codecademy.com&lt;/a&gt;
&lt;/h4&gt;




&lt;h3&gt;
  
  
  FreeCodeCamp's &lt;a href="https://www.freecodecamp.org/learn/2022/responsive-web-design/?ref=curricular" rel="noopener noreferrer"&gt;Responsive Web Design&lt;/a&gt; Path - A Great Free Option to Learn CSS Foundations
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Free | 25-30 hours to complete&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;If you’re brand new to programming, this is a great starting point for learning the basics, especially since it's free. After getting up to speed with the basics, you should consider moving to another more robust solution grounded in real world application.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why It's Great
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Hands-on learning&lt;/li&gt;
&lt;li&gt;Beginners&lt;/li&gt;
&lt;li&gt;Getting started quickly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This learning path starts with the basics and covers the essentials of designing and coding websites through a series of guided projects. After completing this path, you’ll understand various aspects of web page styling, including modern techniques like variables and pseudo-classes. You'll get lots of practice making web designs responsive and accessible.&lt;/p&gt;

&lt;h4&gt;
  
  
  Before You Buy
&lt;/h4&gt;

&lt;p&gt;Many of the challenges are actually quite simple to game or guess at, because the reading gives away too many clues. We would prefer to see more difficult challenges built into the curriculum in order to help students build skills along the way. You may want to take on some additional challenges at Frontend Mentor, CodePen, or 100 Days of CSS to practice the concepts as you’re learning them.&lt;/p&gt;

&lt;p&gt;Some of the projects aren't quite real world. So if you're looking to launch a career as a frontend web developer, make sure you continue with some independent projects that follow a real-world scenario.&lt;/p&gt;

&lt;h4&gt;
  
  
  Find this learning path at &lt;a href="https://www.freecodecamp.org/learn/2022/responsive-web-design/?ref=curricular" rel="noopener noreferrer"&gt;freecodecamp.org&lt;/a&gt;
&lt;/h4&gt;




&lt;h2&gt;
  
  
  Learning Intermediate CSS
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Frontend Masters' &lt;a href="https://frontendmasters.com/learn/css/?ref=curricular" rel="noopener noreferrer"&gt;CSS Path Electives&lt;/a&gt; - Top Pick for Learning Intermediate CSS
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;$39 per month | 25-30 hours to complete&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;A solid series of expert-led workshops that take you from the foundations of professional-level CSS to equip you will the skills to become a frontend leader.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why It's Great
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Code-along workshops&lt;/li&gt;
&lt;li&gt;Expert teachers&lt;/li&gt;
&lt;li&gt;Real world insights&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With this path, you'll dig into more advanced topics in CSS, like creating SVGs and building design systems.&lt;/p&gt;

&lt;h4&gt;
  
  
  Get this learning path at &lt;a href="https://frontendmasters.com/learn/css/?ref=curricular" rel="noopener noreferrer"&gt;frontendmasters.com&lt;/a&gt;
&lt;/h4&gt;




&lt;h3&gt;
  
  
  Scrimba's &lt;a href="https://scrimba.com/learn/designbootcamp?coupon=curricular-dev" rel="noopener noreferrer"&gt;Learn UI Design&lt;/a&gt; - Runner Up to Learn Intermediate CSS
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;$39 per month | 10-15 hours to complete&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Excellent deep dive into professional-level CSS topics. Solid combination of topic coverage, learning experience, instructor quality, and delivery of learning outcomes for aspiring frontend developers.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why It's Great
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Expert instructor&lt;/li&gt;
&lt;li&gt;Emphasis on learning by doing&lt;/li&gt;
&lt;li&gt;Projects with peer code reviews&lt;/li&gt;
&lt;li&gt;Learn both techniques and design best practices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you like learning by building projects and want lots of hands-on practice, you’ll love this course. Scrimba’s methodical approach to teaching concepts means you’re practicing something hands-on right after learning it, and then putting everything together into a project.&lt;/p&gt;

&lt;p&gt;In this course, you'll build three real-world projects, including &lt;/p&gt;

&lt;h4&gt;
  
  
  Get this course at &lt;a href="https://scrimba.com/learn/designbootcamp?coupon=curricular-dev" rel="noopener noreferrer"&gt;scrimba.com&lt;/a&gt;
&lt;/h4&gt;




&lt;h2&gt;
  
  
  Learning Advanced CSS
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Josh Comeau's &lt;a href="https://css-for-js.dev" rel="noopener noreferrer"&gt;CSS for JS Developers&lt;/a&gt; - Top Pick for Advanced CSS
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;$399 (PPP available) | 40 hours to complete&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A gold-standard learning experience that covers essential concepts along with advanced CSS topics, and goes deep into how CSS works through written and interactive tutorials.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why It's Great
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Multi-format tutorials keep the course engaging&lt;/li&gt;
&lt;li&gt;Excellent explanations&lt;/li&gt;
&lt;li&gt;Supplemental resources covering numerous topics&lt;/li&gt;
&lt;li&gt;Aimed at professionals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This course is specifically tailored to professional JavaScript developers (familiarity with React, Angular is a must) to help solidify key concepts in CSS and take your knowledge to the next level.&lt;/p&gt;

&lt;p&gt;Throughout the course, Josh uses a variety of formats, from in-depth written tutorials with interactive examples, to exercises and interactive quizzes, and guided projects.&lt;/p&gt;

&lt;p&gt;It's an incredibly polished, highly intentional curriculum. While it's certainly a high-end learning option, if you're serious about getting great at CSS, and are already proficient with JavaScript, this course will take your skills to the next level.&lt;/p&gt;

&lt;h4&gt;
  
  
  Get this course at &lt;a href="https://css-for-js.dev" rel="noopener noreferrer"&gt;CSS for JS Developers&lt;/a&gt;
&lt;/h4&gt;

</description>
      <category>css</category>
      <category>beginners</category>
      <category>learning</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
