(This story is part of the weekly assignments for my internship at Nearsoft. I hope that some of the insights I learned this week can help others in their learning journey. Previously: Contributing to Open Source : Week 6)
The weeks before a race or the month before an important interview. Those in-between moments helps us work harder towards our goals. Now, after almost 4 months of Resetting my mindset, Building Something From Scratch and Contributing to Open Source it’s time to prepare for the final test. This month, I’ll continue with the Your Personal Brand phase, where I’ll work on my communication skills, build my resume and prepare for real technical and non-technical interviews.
Here’s some of the things I’ve practiced and learned this week:
Data Structures and Algorithms
To improve problem-solving skills, it’s important to first develop and increase the toolkit of solutions you will use to solve those problems. In programming, data structures and algorithms provide a great toolkit. A mentor once told me: “Data structures aren’t meant to store data, they are meant to organize data.” This means that by using different data structures we change the framework in which we work and this allows to build more elegant, time and memory efficient solutions.
As far as Algorithms, it’s important to also include Sorting and Searching algorithms into our mental toolkit in order to better tackle and solve problems.
Cracking the Coding Interview
Solving any problems requires to have a clear structure and framework before starting to code. This was one of my goals for this week. Some important details to take into consideration when solving a problem are:
- Understanding of the problem
- Expected Output or Return
- Data structures and Algorithms that fit the problem model
- Time and Memory Complexity
The last detail uses Big O Notation to better understand the operations and memory resources that our code uses. This is a valuable toolkit as it allows us to build solutions that solve the problem in the best possible way (also avoiding bugs.)
This month, I’ll continue practicing problem solving by doing precisely that: solving problems. So far, it’s been exciting and sometimes frustating but all of the times I’ve learned something.