Coding Assessments as a non-Comp Sci Major

I was recently taking a coding assessment for a large, well-respected firm. I had procrastinated it as long as I could so that I could have some time to prepare for it. When I opened the test, it didn't seem too hard until I started working on it. I tried working on the brute-force solution to the first problem that made sense in my mind, but I couldn't put it in code. I couldn't remember certain Python syntax for dictionaries, more specifically, how to create a dictionary of arrays.

I had spent too much time on that initial problem, but it had passed a few test cases, so I called it good. The next problem was a debugging problem in a code base, and I just was unable to solve it. I eventually accepted my fate that I wouldn't be able to finish the test and clicked through the rest of the questions.

I asked Claude what the best solution for the first problem was, and it mentioned that the 'sliding door' method was best. I had never heard of that term before.

To someone who's studied computer science, this might seem straightforward, but my major is information systems. Since it's in the business school, we take a blend of business and technical classes, and not all the technical ones teach coding. I took a DSA class for my program that probably wasn't as in depth as a computer science data structures or algorithms class, but it definitely taught me the fundamentals.

I've also found myself struggling through DSA (data structures and algorithms) problems in general. Solving DSA problems takes a large mental tax on me, and I've spent hours working on random Leetcode problems feeling like I got nothing out of them. It's left me feeling hopeless that I wouldn't be able to get a technical job.

I eventually told myself there were two options for me: one would be to find a job that doesn't have as much technical requirements but forgo what I actually wanted to do, or I could double down on practicing DSA problems. I decided to double down.

Over these past few weeks, I've done a lot of research and have talked to some people in industry about how to make the most out of my study. Here are the things that I learned and have been implementing:

Study by topic

This was a little overwhelming at first because there are a lot of data structures and even more algorithms. I found that instead of choosing random Leetcode problems to instead use NeetCode 150. The problems are organized by topic so you can do one at a time. I know that Leetcode also has a feature to select certain problems, but I've found NeetCode 150 is better for me. By studying by topic, I've found that I can get better at fundamental problems that are tested more than other topics.

I haven't finished a ton yet, but I've found it's significantly more helpful than Leetcode

Neetcode also offers free solutions to the problems and presents them in a way that's easy to understand. The code is also written simply (unlike how AI sometimes answers my questions.)

Take notes

I've only been taking notes on things that I've struggled with. For example, I learned that in Python, there's several methods to create a dictionary containing lists.

my_dictionary_1 = defaultdict(list)
# or
my_dictionary_2.setdefault(["Apple", "Orange"]) # (value, default)

I made a note of this because it's fumbled up some problems needing hash maps. I do this so I can remember them better and reflect back on what my weaknesses are.

Only one language

Some advice that I heard is even if the job you're applying for uses a different language, it's ok to only study in one specific language. It's better to have deep understanding in one language than to have a shallow understanding in a spread of languages. You'll learn more concepts and remember syntax better. Also, when you do get the job, I think most languages are similar enough that the high-level concepts will transfer.

Don't spend more that 20-30 minutes on a problem

This has been a major help for me. When I put a time limit on a problem, I tell myself it's ok if I wasn't able to find an answer because I'm just learning. Next time I run across a similar problem, I'll be able to know how to approach it. When I spend less time, I also don't find myself getting exhausted studying for DSA problems.

After just a couple weeks of studying like this, I took another coding assessment for a different firm in a related field. As I worked out the problem and figured out what I needed to do, I felt so much about the syntax and was able to find an optimal solution to the problem that passed all of my test cases!

After I had finished I felt so proud of myself for being able to solve that initial problem and getting as far as I did on the second. I'm yet to hear back from the company, but they let me know they're reviewing my results, so I've interpreted that as no automatic rejection. :)

What's crazy to me is that it only took two weeks of consistent, focused practice to get to that point, which I would call great improvement. I'm still studying now as I continue to apply for jobs, but I finally feel that there's hope to get a job that I want.


On AI and coding assessments...

A question I've heard others say is do these coding assessments really matter anymore when AI is being used for coding now?

I've also seen posts that Google is changing their interview process so that candidates can use AI to assist them in the interview, although I'm sure they're not testing them on DSA questions anymore.

I believe that learning DSA problems are good and are still relevant. With how good AI has gotten, it's so easy to offload critical thinking and just vibe your way through coding. I think that by practicing DSA questions, you're exercising that critical thinking muscle and improving how you solve problems more generally.

In my experience, when I've used AI for these DSA problems, I've found that they create solutions that are just way too complicated. Whether that be some crazy list comprehensions or lambda functions, I just find the code unreadable and unintuitive.

This translates to AI working on real-life projects as well. I think a funny example of this is Anthropic posting how they've made a ton of performance improvements on Claude in the desktop and CLI. If you've been following Anthropic lately, you'd know that they've been heavily using AI to create their products. One Hacker News commenter said this about their blog post:

In other words, the solution to a lot of their problems is pretty simple, but AI will jump through hoops to find some sort of solution to the problem, even if it's totally illegible, unmaintainable, and inefficient.

I strongly believe that AI for coding, as it stands now, if not handled by someone who has a certain level of expertise, is going to produce buggy experiences, security issues, and inefficient solutions.

This is why it's so important to learn how to solve DSA problems—the fundamentals to coding efficient software.

After talking with industry professionals developing real software, even when they use AI, they run across problems that require some sort of data structure or algorithm.

Will AI get better so that it will be able to handle these problems in the future? Probably. All I know is that DSA is a great exercise for learning how to solve challenging problems and that it's necessary to produce efficient software.

Subscribe to Curiosidades by Ryan

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
[email protected]
Subscribe