Problem Solving: Introduction

Problem Solving: Introduction

Like a woodcutter who must keep his axe sharp, so does a programmer who must keep his mind sharp.

ยท

2 min read

Introduction

Hello, Hello ๐Ÿ‘‹ It's been a while since I last added something to my humble blog ๐Ÿ˜„

This time, I am not teaching, but rather documenting my learnings, hoping that I become ready for FAANG-level thinking or hopefully helping whoever reads this. I am starting pretty simple here to get my hands going with the writing, so let's dive deep!

Let's start with the "Why"

What's with the nerdy approach? Why start with theories when you can jump straight to the problems?

Because you're not going to be interviewed to solve a weird problem that is hard to be read and understand, let alone solve, you're here to communicate how your brain ticks, and if its ticking is good at solving problems or it will bail out if it hit a roadblock and start calling for help?

So instead of calling it 'nerdy' or 'academic', I like to call it strategic, so let's see our options

First things first

My first thing to focus on is some pointers I did fail at in couple of interviews I had in the past when it came to Problem Solving

I messed up at two things...

  1. How to break the problem down into small problems
  2. Communicate my thoughts to my interviewers

But solving the problems was never the deal breakers

When I returned to my mentor and asked him where did I go wrong, and shouldn't be intensive study of System Designs and Architecture be sufficient...

To me, they were... ๐Ÿ˜‚

but his answer was really insightful, they're both two skills that feed each other, but they're completely different when training them

and his advice was to learn about data structure first, read about it a bit and understand them, then start solving your way to the hard problems, solving only 1 easy problem a day until you can find yourself comfortable

So, I curated some rough headlines I would study and write about so it can enforce the learning

Sources we need first for a solid foundation on what we need to solve problems

And... TADA! ๐ŸŽ‰

  1. Learn about Data structure, and what are they?, in a basic and simple manner
  2. Learn about complexity and measuring it, memory-wise & processing-wise
  3. Learn about Big O Notion
  4. Learn about Logarithm
  5. Start dissecting the Data Structures into categories of...
    1. Array
    2. Linked Lists
    3. Hash Tables (or Dictionaries)
    4. Stacks & Queues
    5. Strings
    6. Graphs
    7. Trees

In the next blog post, we will start with what are Data structure

ย