Reframing the Way I Think

kathleen wang
4 min readJan 20, 2021
from https://www.pexels.com/photo/neon-signage-2681319/

In the weeks leading up to my first day of data science bootcamp, I skimmed a book called Think Python. In the first chapter, the author writes:

“The goal of this book is to teach you to think like a computer scientist…The single most important skill for a computer scientist is problem solving. Problem solving means the ability to formulate problems, think creatively about solutions, and express a solution clearly and accurately.”

Problem solving. “Problem solving is fun and not too hard”, I thought, “Programming is the more difficult part, so I should focus on that.”

But as the bootcamp went on, and as I did more practice problems on my own, I realized just how wrong I was.

For my first project in my data science bootcamp, I was given data about how students performed on the SATs across the United States and across school districts in California. We were asked to to come up with a problem statement and use the exploratory data analysis and data cleaning techniques we learned in our first couple weeks to answer our problem statement and give a short 5 minute presentation about our findings.

The most difficult part of the entire project was trying to think of the problem to solve. I’m usually really good at finding answers to problems that other people present to me, but often struggle with figuring out how to ask the right questions myself. After many hours of Googling and reading articles about the SATs, I finally probed around the data to see if there were any interesting correlations and then framed a question around what I found. Get the answer first, and then ask the question.

Kind of like Jeopardy.

Once I just dove into the data, everything fell into place. I finished the project in time but I felt I had wasted too much time reading. I felt that I didn’t have enough time to do all the correlations and comparisons and make all the graphs that I wanted.

But those hours were not wasted. I learned that I just have to jump right in, and that the answers are in my data, not anywhere else.

The practice problems that I do on my own are also fraught with these time consuming “lessons”. I’ll just keep doing what I know over and over again, and each time I don’t get any closer to the solution. Then I’ll finally give in and look at solutions that others have posted online and I just find what I think are the most creative things that I would never have thought of myself.

For instance, I was working on a CodeWars challenge called Valid Parentheses. Long story short, the challenge wants you to figure out if a set of characters has parentheses that close properly. They would give you a random string and there could be any other character in there along with parentheses.

I wrote for loops in for loops in for loops, I stripped the lower case characters out, just to find that in their tests they have commas, apostrophes, and upper case letters. The more I worked on it, the more convoluted my code became.

I ended up finding the solution here:

He used a counter, in which he both adds AND subtracts.

I’ve used counters countless times before in class and in practice problems, but I’ve always used them to count up. My brain learned “coding counters go up” and didn’t make the connection that they can go down until I saw someone else do it.

I have too many other examples of tricks and strategies that seem obvious in hindsight, that I only just recently learned. It’s been a really eye opening and humbling experience for me to relearn how to think. I’m learning to break down my thoughts into chunks of code that a computer can understand (“It’s a pair of parentheses! It just is!). Learning how to think differently is a really slow process, but definitely the most rewarding part of my journey into the field of data science.

--

--