I’ve previously written about using deep work to build and strengthen your skills as a developer. Here’s a speech I gave on it recently.
This past week as I continued learning about algorithms and data structures, I jumped into wrapping my mind around time complexity. Making this video was hard, but worth it. Given the task of trying to explain time complexity to someone else, I become determined to truly understand the fundamentals of the topic and attempt to convey it in a simple way. Here’s my shot at it. Time complexity! And I finally know what big-O notation really means.
What did I explain well in this video? What could I have explained better?
“You are an engineer? Really?”
She’s nearly six feet tall with long blonde hair. When she tells someone what she does, their reaction is almost always the same. Disbelief.
She’s a senior software engineer. She’s my sister and she’s sometimes mistaken to be my twin. So when I got my first job as a developer, I knew to expect the same reaction when asked what I do.
A few years ago, an engineer appeared in a recruiting ad for her company and there was an outpour of responses doubting whether she was truly an engineer. How could an attractive woman be an engineer?! This sparked the hashtag #iLookLikeAnEngineer, with hundreds of female engineers posting pictures of themselves. As if to say, hey, we exist!
With so few women working in tech and with so many people being shocked when you do, it’s easy to feel imposter syndrome as a female engineer.
Yet there’s an upside of imposter syndrome. A way for it to push you forward.
When I started coding, I felt like a fraud. I’m not supposed to be here, I thought. Girls aren’t supposed to code. I expected that nothing about coding would come ‘naturally’ to me.
So, I decided to work my ass off.
I expected to have to work harder and for longer. I expected to fail a lot and to keep going. I expected that each new coding concept would be tough to learn, but that I could learn it if I just kept going. I anticipated that I would feel stupid, but I knew I could understand anything if I kept at it.
Because I felt like an imposter, I became determined to get better.
I developed a grit that I didn’t have before.
This is the upside of imposter syndrome. You can use it as fuel to push yourself.
For software engineering positions, there’s always “Computer Science degree required” in the job description. What I’ve found is that people don’t actually care if you have a degree. Yet most engineers I’ve talked to do like having the requirement of computer science degree. Why?
Computer science graduates usually have a foundational knowledge of algorithms as it’s part of their college curriculum. So the desire behind a CS degree requirement is just having a really good understanding of algorithms and data structures.
I could go back to college and spend three years and $60k sitting in an environment that doesn’t suit my learning style. Or I could deep dive into teaching myself algorithms and data structures. I’ve found tons of free textbooks on learning about Algorithms. I’ve found websites like CodeFights.com where you can practice writing algorithms that you’ll see in interviewing challenges, and I’ve found several video lectures of entire courses on Algorithms by MIT, Harvard, and Princeton. There are hundreds of online resources and textbooks on algorithms. If you’re a self-taught programmer and you really want to learn about Algorithms, the resources available to do so are endless.
I’ll be posting a video every other week about what I’m learning. Some of the first topics will be different kinds of algorithms, big-O notation, elementary data structures like heaps, stacks, and queues, ect. The first video is above.
I wake up early in the morning. I already decided to get up early, but my brain says just five more minutes. I begin to negotiate. Okay, five more minutes, but then I really do need to start my day. Five minutes pass. Maybe ten more minutes… Well, it’s already been five minutes, so another ten… I end up staying in bed longer, struggling to decide when I’ll finally get up.
What if I just got up?
My brain always wants to keep me safe and comfortable. Sometimes this means it will try to keep me in bed. Other times it means it will try to keep me from going after something I really want. My brain is scared and tries to talk me out of it.
The problem is when I decide to compromise and listen. My brain says you could do this next month. Next month really works better for me. Yet next month my brain will bargain with me again, and because I’ve already caved once, it will be harder not to once more.
Stop negotiating with your brain. It’s a practice that Tony Robbins talks about frequently. When you decide to do something, do it.
Don’t compromise. Get out of bed the moment you decided to, regardless of how many times your brain points out how relaxing it is to stay. Make yourself do what you decided, in spite of your brain telling you that you don’t feel like it, can’t do it, must do it another time. Start telling your brain that what you’ve decided on isn’t up for dispute. Train yourself to just do stuff anyways.
“I don’t negotiate with my mind. There’s no negotiation with myself. When I say ‘do it’ … I do it.” -Tony Robbins