Brett Owers
← All Projects

JavaScript Challenges

Archived

October 1, 2018

A collection of coding challenges completed during bootcamp — LeetCode-style algorithm problems and FreeCodeCamp exercises. A training ground for learning to think like a programmer: decomposition, pattern recognition, abstraction, and step-by-step logic.

Purpose

Periodic coding challenges during bootcamp to build the foundational problem-solving muscle. LeetCode sharpens competitive reasoning under constraints. FreeCodeCamp builds structured web development fluency. Together they teach you to think in patterns, not syntax.

Stack

JavaScriptAlgorithmsData Structures

What I Learned

  • An algorithm is just a set of steps that solves a problem. A recipe is an algorithm. Sorting a hand of playing cards by scanning left to right and inserting each card into position — that is insertion sort. The academic mystique is unearned. The practical value is not.
  • LeetCode is a platform with thousands of ranked coding problems. FreeCodeCamp is a free curriculum that teaches web development through progressive challenges. LeetCode is the gym. FreeCodeCamp is the apprenticeship. Both ended up in this repo.
  • Thinking like a programmer is really four skills working together: decomposition (break big problems into small ones), pattern recognition (this problem looks like that problem), abstraction (ignore irrelevant details), and step-by-step logic (walk through the process before jumping to code)
  • The patterns that actually matter: hash maps for O(1) lookups — the most useful data structure in daily programming. Two pointers for scanning sorted data. Sliding windows for processing subarrays efficiently. Recursion for self-similar structures (trees, nested data). These are not interview tricks — they are production tools.
  • Writing pseudocode before real code is not a beginner crutch — it is a professional discipline that separates clear thinkers from people who debug for hours
  • Companies use algorithmic interviews because they test reasoning under constraints and edge-case handling. The argument against: they reward memorization and disadvantage people without time to grind. Both arguments are correct. Learn the patterns, not the specific problems.

Key Insights

  • The patterns from coding challenges show up everywhere in real engineering: hash maps power caches, sliding windows power rate limiters, recursion powers every tree traversal in every codebase. The drills feel artificial until you realize production code is built on the same primitives.
  • AI agents can now solve most LeetCode problems faster than humans. This does not make algorithmic thinking obsolete — it makes it more important. The engineer directing an AI agent still needs to recognize which pattern applies, evaluate edge cases, and understand performance implications. You cannot review what you do not understand.
  • The gap between a bootcamp graduate and a confident engineer is not frameworks or syntax — it is comfort with ambiguity. Coding challenges build that comfort by presenting hundreds of small problems where you start with no idea and end with a working solution. That repetition rewires "I don't know how to do this" from panic to process.
#JavaScript#algorithms#data-structures#LeetCode#FreeCodeCamp#coding-challenges#bootcamp#problem-solving#technical-interviews#recursion#hash-maps

This post was composed through a conversation between Brett Owers and Claude Code (Anthropic). The content reflects Brett's recollection of each project and the lessons drawn from it. Some details may be approximate or omitted — the purpose is to paint an honest picture of a software engineer's development over time, not to serve as a precise historical record.