View profile

Day #13: Implementing a linked list, hash tables & hash collisions, and imposter syndrome in tech!

Puppy Nomadic
Puppy Nomadic
On Day 3 of CodeSmith, we spent most of the day learning basic data structures: stacks, queues, linked lists, hash tables, and binary trees.
With our partners, we implemented a few of these data structures. Kevin and I were able to implement a linked list in JS and a hash table, though we stumbled a little with resolving hash collisions in a hash table by storing the multiple values as nodes in a linked list. Grateful for the help of CS Fellow Simon Chen.
Tonight’s Algorithm Group was really lovely! Mariko, Tarikh and Joey presented their various solutions to the Maximum Subarray problem on Leetcode: It made me so happy to see Tran and Victor’s faces again :) Miss everyone!

What I Learned Today
Morning Exercises: Fizzbuzzbazz (Hack Hour)
Prototyping Arrays (Skillbuilder)
Lecture 1: Data Structures: Data Types & Composite Objects (Jared Lewis)
Lecture 2: Imposter Syndrome (Katrina)
Lecture 3: Intro to Git (Aiden)
Implementing a Linked List
Actually, a linked list was not so difficult to implement! I think the first time the concept is presented, it takes a moment to digest the abstract idea and just write it out in code. But this exercise was actually fairly easy:
function LinkedList() {
this.head = null;
this.tail = null;
function Node(val) {
this.value = val; = null;
// adds node to end of list
LinkedList.prototype.push = function(value) {
// creating a new node
let endNode = new Node(value);
// if head & tail is null
if (this.tail === null) {
this.tail = endNode;
this.head = endNode;
} else {
// adding a node to the end of list = endNode;
// reassigning the tail pointer
this.tail = endNode;
// returns true if value is present in the list
LinkedList.prototype.contains = function(val) {
let currentNode = this.head;
// while loop to iterate linkedlist
while (currentNode !== null) {
//otherwise check if this.head.value is equal to val
if (currentNode.value===val) {
return true;
currentNode =;
return false;
Imposter Syndrome
We had a cohort conversation about imposter syndrome today. I have to say this has been the most difficult part of my prior experiences in the tech industry. After Per Scholas, I really struggled with my first software engineering job at a startup. I also struggled with my data engineering job at Revelio Labs. It can be intimidating to work with people who have multiple advanced degrees in the subject where you only have a few weeks of bootcamp education. I was in over my head, and mostly didn’t know how to ask for help when I got stuck, for fear of appearing stupid.
I wrote a little bit about my intense struggles with imposter syndrome here, and why I quit my first developer job:
Jared, one of the TA’s, said that the hardest part of coding is actually emotional management. I couldn’t agree more. Next time around, I hope to build a stronger support system with fellow CodeSmith grads, to make sure we can all help each other succeed during our first year make-or-break year on the job.
Algorithm Group
Tonight’s algorithm group was really lovely! I am running out of energy to write more today.
Here’s a post on Kadane’s Algorithm and Dynamic Programming, related to our challenge:
Kadane’s Algorithm — (Dynamic Programming) — How and Why does it Work? | by Rohit Singhal | Medium
And here is our algorithm for next Wednesday:
🚀 Problem of the week🚀
Did you enjoy this issue? Yes No
Puppy Nomadic
Puppy Nomadic @puppynomadic

Let's pull each other up by our Bootstrap.js 🪴 👩🏻‍💻 🦮

=== Journey of software craftsmanship ===

{"Formerly": ["nonprofit community organizer", "teacher", "researcher", "government director"],
"Future": ["software engineer", "web3 dev", "developer advocate", "technical program manager"]

In order to unsubscribe, click here.
If you were forwarded this newsletter and you like it, you can subscribe here.
Created with Revue by Twitter.