<?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: Sophie Weber</title>
    <description>The latest articles on DEV Community by Sophie Weber (@sophie_weber_21).</description>
    <link>https://dev.to/sophie_weber_21</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4173147%2F476a49fe-abd6-49e6-9277-4346ac070934.png</url>
      <title>DEV Community: Sophie Weber</title>
      <link>https://dev.to/sophie_weber_21</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sophie_weber_21"/>
    <language>en</language>
    <item>
      <title>I Stopped Watching Coding Tutorials and Started Building Projects</title>
      <dc:creator>Sophie Weber</dc:creator>
      <pubDate>Fri, 09 Oct 2026 10:50:06 +0000</pubDate>
      <link>https://dev.to/sophie_weber_21/i-stopped-watching-coding-tutorials-and-started-building-projects-48mj</link>
      <guid>https://dev.to/sophie_weber_21/i-stopped-watching-coding-tutorials-and-started-building-projects-48mj</guid>
      <description>&lt;p&gt;I used to think I needed to finish more coding tutorials.&lt;/p&gt;

&lt;p&gt;Before I could start building something on my own.&lt;/p&gt;

&lt;p&gt;Whenever I wanted to learn a new programming concept, I looked for a tutorial and followed along. If the instructor explained JavaScript functions, I practiced functions. If they built a website, I followed the same steps and tried to get the same result.&lt;/p&gt;

&lt;p&gt;Everything made sense while I was watching.&lt;/p&gt;

&lt;p&gt;The problem appeared when I tried to start something from scratch. I wasn't always sure what to write first, how to structure the code, or how to fix an error without searching for the exact solution.&lt;/p&gt;

&lt;p&gt;That made me question my learning process.&lt;/p&gt;

&lt;p&gt;Maybe I didn't need another long course. Maybe I needed to build something small and figure out what I didn't know along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Difference Between Following Code and Writing It
&lt;/h2&gt;

&lt;p&gt;A simple to-do list is a good example of how different these two experiences can be.&lt;/p&gt;

&lt;p&gt;The basic idea sounds straightforward: display a list of tasks, let users add new ones, and allow them to remove completed items.&lt;/p&gt;

&lt;p&gt;But building it independently raises several questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How should I store the tasks?&lt;/li&gt;
&lt;li&gt;How do I get the user's input?&lt;/li&gt;
&lt;li&gt;How can I update the page when a task is added?&lt;/li&gt;
&lt;li&gt;What should happen if the input is empty?&lt;/li&gt;
&lt;li&gt;How do I prevent the application from behaving unexpectedly?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A tutorial might answer all these questions for me. Building the application myself forces me to think about them.&lt;/p&gt;

&lt;p&gt;I might understand what an array does when someone explains it, but using an array to store tasks, remove a particular item, and update the displayed list requires a different kind of practice.&lt;/p&gt;

&lt;p&gt;Following a solution helps me understand an idea. Building my own solution helps me practice applying it.&lt;/p&gt;

&lt;p&gt;That distinction changed how I approached programming.&lt;/p&gt;

&lt;h2&gt;
  
  
  I Started With Smaller Projects Instead of Big Ideas
&lt;/h2&gt;

&lt;p&gt;It's tempting to begin with something ambitious, such as an online store, a social media platform, or a complete productivity application. However, these projects can introduce too many unfamiliar concepts at once.&lt;/p&gt;

&lt;p&gt;I find it more useful to start with a problem that has a clear outcome.&lt;/p&gt;

&lt;p&gt;For example, a basic expense tracker could include just five features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enter an expense description.&lt;/li&gt;
&lt;li&gt;Enter an amount.&lt;/li&gt;
&lt;li&gt;Add the expense to a list.&lt;/li&gt;
&lt;li&gt;Calculate the total.&lt;/li&gt;
&lt;li&gt;Reject invalid entries.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's enough to practice JavaScript functions, arrays, objects, conditions, and user input.&lt;/p&gt;

&lt;p&gt;I would leave databases, authentication, charts, and complicated styling until the main functionality works.&lt;/p&gt;

&lt;p&gt;I also look for inspiration outside traditional programming tutorials. For example, ClothingRIC designed an Impulse Buying Tool for shoppers, which is an interesting example of how a digital tool can address an everyday problem.&lt;/p&gt;

&lt;p&gt;An idea like that could inspire a beginner project: a simple application that asks users a few questions before making an unplanned purchase and helps them think through their decision. Building a basic version would involve collecting input, applying conditional logic, and displaying a result.&lt;/p&gt;

&lt;p&gt;The point isn't to recreate an existing tool. It's to identify a real problem and explore how programming could help solve it.&lt;/p&gt;

&lt;p&gt;A useful beginner project doesn't need to be original or complicated. It needs to give you something meaningful to build and improve.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Building a Small Project Actually Teaches You
&lt;/h2&gt;

&lt;p&gt;Consider this basic JavaScript function for adding an expense:&lt;/p&gt;

&lt;p&gt;const expenses = [];&lt;/p&gt;

&lt;p&gt;function addExpense(description, amount) {&lt;br&gt;
  if (!description.trim()) {&lt;br&gt;
    return "Please enter a description.";&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;if (!Number.isFinite(amount) || amount &amp;lt;= 0) {&lt;br&gt;
    return "Please enter a valid amount.";&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;expenses.push({ description, amount });&lt;/p&gt;

&lt;p&gt;return expenses;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;console.log(addExpense("Lunch", 12));&lt;br&gt;
console.log(addExpense("Transport", 5));&lt;br&gt;
console.log(expenses);&lt;/p&gt;

&lt;p&gt;This isn't a complete expense tracker. It doesn't include a user interface or save data between sessions. However, it's a useful starting point for experimentation.&lt;/p&gt;

&lt;p&gt;Try changing the inputs.&lt;/p&gt;

&lt;p&gt;What happens if the description contains only spaces? What if the amount is negative? What if you pass "12" as a string instead of the number 12?&lt;/p&gt;

&lt;p&gt;These questions reveal how the code behaves and where additional validation might be necessary.&lt;/p&gt;

&lt;p&gt;You could then add a function to calculate the total:&lt;/p&gt;

&lt;p&gt;function calculateTotal(expenses) {&lt;br&gt;
  return expenses.reduce(&lt;br&gt;
    (total, expense) =&amp;gt; total + expense.amount,&lt;br&gt;
    0&lt;br&gt;
  );&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;console.log(calculateTotal(expenses));&lt;/p&gt;

&lt;p&gt;Now you have another concept to explore: the reduce() method.&lt;/p&gt;

&lt;p&gt;Instead of memorizing it in isolation, you can understand why it is useful in a real situation.&lt;/p&gt;

&lt;p&gt;That's what makes project-based learning valuable. The goal isn't simply to make the code run. It's to understand why it works, test its limits, and improve it.&lt;/p&gt;

&lt;h2&gt;
  
  
  I Learned to Debug Before Searching for the Answer
&lt;/h2&gt;

&lt;p&gt;Debugging is one of the most useful skills a beginner can develop.&lt;/p&gt;

&lt;p&gt;When code doesn't work, immediately searching for a complete solution can feel like the fastest option. But doing this every time can leave you dependent on answers written for someone else's problem.&lt;/p&gt;

&lt;p&gt;A more useful process is to investigate the error first.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reproduce the problem.&lt;/strong&gt; Try to make the error happen consistently.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Read the error message.&lt;/strong&gt; Identify the relevant line and check what the message tells you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Inspect the values.&lt;/strong&gt; Use console.log() or a debugger to see what your variables contain.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Change one thing at a time.&lt;/strong&gt; This makes it easier to understand which change affects the result.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test the fix.&lt;/strong&gt; Check the original problem and other inputs that could cause similar issues.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For example, if an expense total is incorrect, I would inspect the stored amounts before rewriting the entire function. Perhaps an amount was stored as a string, an invalid entry was accepted, or the calculation used the wrong property.&lt;/p&gt;

&lt;p&gt;The important lesson is that an error provides information. It reveals a difference between what you expected and what your program actually did.&lt;/p&gt;

&lt;p&gt;You don't need to solve every problem without help. You need to develop the habit of understanding the problem before accepting a solution.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How I Use Tutorials Without Getting Stuck in Tutorial Mode&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I don't think tutorials are a waste of time. They are useful for learning unfamiliar concepts and seeing examples of good programming practices.&lt;/p&gt;

&lt;p&gt;The difference is how I use them.&lt;/p&gt;

&lt;p&gt;Instead of following an entire course before attempting a project, I break the project into small tasks and look up the concepts I need for each one.&lt;/p&gt;

&lt;p&gt;When working on an expense tracker, for example, I might learn how filter() works when I need to remove an expense, or how local Storage works when I want to save data between browser sessions.&lt;/p&gt;

&lt;p&gt;After studying an example, I close it and try to implement the feature myself.&lt;/p&gt;

&lt;p&gt;If I get stuck, I return to the documentation or tutorial for a specific explanation. Then I test my understanding by changing the example or applying the concept somewhere else.&lt;/p&gt;

&lt;p&gt;I use the same principle with AI coding tools. Instead of immediately requesting a complete solution, I ask for an explanation or a hint.&lt;/p&gt;

&lt;p&gt;A useful question isn't just, "Can you fix this code?"&lt;/p&gt;

&lt;p&gt;It's, "Why does this function return the wrong result, and how can I identify the problem?"&lt;/p&gt;

&lt;p&gt;That question encourages understanding rather than blind copying.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Seven-Day Coding Challenge You Can Actually Finish
&lt;/h2&gt;

&lt;p&gt;If you're spending more time watching coding videos than writing code, try this simple challenge.&lt;/p&gt;

&lt;p&gt;Day 1: Choose a small project and list three essential features.&lt;br&gt;
Day 2: Build its basic structure.&lt;br&gt;
Day 3: Implement the main feature.&lt;br&gt;
Day 4: Add input validation and error handling.&lt;br&gt;
Day 5: Test different inputs and fix bugs.&lt;br&gt;
Day 6: Improve the code and add one useful feature.&lt;br&gt;
Day 7: Write a README explaining the project and what you learned.&lt;/p&gt;

&lt;p&gt;Choose a project that matches your current level. A calculator, notes app, expense tracker, or simple API-powered application is enough.&lt;/p&gt;

&lt;p&gt;Don't measure success by how complicated the project looks. Measure it by whether you can explain the code, identify its limitations, and make changes without following a tutorial line by line.&lt;/p&gt;

&lt;p&gt;If you finish early, try rebuilding one feature without looking at your original code. This gives you a practical way to check what you've understood.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Takeaway
&lt;/h3&gt;

&lt;p&gt;Learning to code can become frustrating when you spend hours studying but struggle to apply what you've learned.&lt;/p&gt;

&lt;p&gt;The answer isn't necessarily to stop studying. It's to give yourself more opportunities to practice.&lt;/p&gt;

&lt;p&gt;Choose a small problem. Build a basic solution. Test it, break it, debug it, and improve it. Use tutorials and documentation when they help you move forward, but don't let them make every decision for you.&lt;/p&gt;

&lt;p&gt;You will make mistakes, and some simple features will take longer than expected. That's part of learning to work through problems rather than just recognize familiar code.&lt;/p&gt;

&lt;p&gt;You don't have to finish learning programming before you start building projects. Building projects is one of the ways you learn programming.&lt;/p&gt;

&lt;p&gt;Start with something small enough to finish, and let your next question come from the code you're actually trying to write.&lt;/p&gt;

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