June 16, 2023 — 10 min read
How Hannah Went From Cognitive Science to Software Engineering
Hannah is an incoming Full Stack software Engineer at Amazon, having navigated her way into tech without a traditional background transitioning from cognitive science to computer science.
Notion: I use it all the time to take notes of new concepts and keep a schedule
IntelliJ: IDE when I use Java
VS Code: IDE when I use other languages
Iterm: I prefer Iterm over Terminal
Hi, my name is Hannah and I will be starting my full-time offer as a full-stack software engineer at Amazon this coming October. I have a non-cs background so for those of you who are trying to break into tech without a traditional computer science background I share lots of tips on my page!
Can you share a brief overview of your journey into software engineering and how you transitioned from cognitive science?
During my time studying Cognitive Science at UCLA, I was able to explore computer science through elective courses. However, as I was about to take my very first computer science class, I got so nervous. I was so worried that I might fail. So to ease my worries, I joined a coding club called "LikeLion" at my school (there’s about 15 colleges in the US that have this club).
"LikeLion" is this awesome coding club created by a famous engineer in Korea. It's basically a free bootcamp for college students, and I had heard so many good things about it beforehand. Once I became a part of the club, I became friends with a bunch of amazing people who supported me throughout my coding journey and made the whole experience super interesting.
Cognitive Science majors often pursue career paths as either product managers (PMs) or UI/UX designers. Before realizing my passion for engineering, I initially worked as a PM in a startup club at my school.
However, I soon realized that engineers are the ones who bring incredible ideas to life, making their role indispensable. I aspired to be someone who actively builds and creates products and that’s when I started to look for ways to become an engineer.
Did you face any challenges in the early stages of your transition? If so, how did you overcome them?
Yes, haha! I believe that the initial phase of learning coding can be the most challenging because we lack prior experience in this domain. For example, if you have learned biology before, it becomes easier to grasp concepts in chemistry. While they are different, the learning experience and methodologies are somewhat similar. However, coding is a whole new ballgame compared to the core subjects we study in school, making it a significant hurdle for me.
To overcome this difficulty, I decided to completely shift my mindset and accept the fact that coding requires a unique approach to learning. It took me quite some time to realize this, but once I accepted the distinctiveness of coding, I found that the best way to learn was through hands-on experiences. Instead of taking extensive notes, I began writing and experimenting with actual code on integrated development environments (IDEs). This shift allowed me to engage with coding more actively and effectively.
Can you share any valuable resources or practices that you used to learn coding and software engineering principles?
I share this a lot through my contents but my top recommendations for learning full-stack knowledge is CS50x (python/Django) and React
How did you prepare for the software engineering interview at Amazon, especially considering your non-traditional background?
Coming from a non-traditional background and also being an international student, it was really tough. I realized that if I wanted to stand out among thousands and millions of resumes, I needed a very strong resume and top-notch coding skills. So I started working on professional level projects.
One project that really stole the spotlight and had interviewers asking me all sorts of questions was when I launched my very own startup and managed to secure a $30k in funding. Besides this project, I worked on 3 other major projects at a professional level. Through these projects, I proved to myself and others that being a software engineer
In your opinion, how should one ideally prepare for such high-level interviews, particularly those coming from non-traditional backgrounds?
I don't necessarily believe that non-traditional students need to approach interview preparation differently. However, it's essential to ensure a solid understanding of data structures and algorithms, which might be areas where you lack knowledge. I personally found solving LeetCode questions from the "Blind 75" list super helpful. Whenever I encountered challenges with specific concepts, I watched YouTube tutorials.
I usually wake up around 8 a.m. and get ready for the day. I aim to arrive at the office by 9:00 to 9:30 a.m. Once I settle in, at around 10:30 a.m., we have our daily standups. During this time, our team discusses the work accomplished the previous day and plans for the tasks at hand. It's an opportunity to seek assistance or feedback from team members if needed. These standups typically last no more than 30 minutes. Around 12:30 p.m., it's time for lunch.
As the day progresses, there are usually a mix of debugging sessions and meetings, keeping me occupied until around 6:00 p.m. When I log off, I typically head home to relax and unwind. Reading books is one of my favorite ways to recharge during my downtime.
What's your approach to continuous learning in the fast-evolving tech industry? How do you stay up to date?
Working in tech is all about continuous learning. To keep up with the fast-evolving industry, it's important to enjoy the learning process and never tire of it. Having a supportive company or community that shares a passion for learning can make it even more exciting so don’t forget to work on your network! They can motivate and inspire each other while keeping everyone updated on the latest tech developments.
When starting in tech, actively participating in professional networks is a great way to stay up to date. Attending conferences, webinars, and workshops not only provides valuable learning opportunities but also allows you to connect with experts, engage in discussions, and gain insights into emerging technologies and best practices. It's a fun and effective way to grow in the field!
People with non-CS backgrounds often face the misconception that breaking into the tech industry is harder for them. However, I strongly believe that this is a misconception. I have personally seen enough people successfully enter the tech field without a formal computer science degree.
What sets them apart is their preparation, particularly in terms of learning data structures and algorithms—the essential components of technical interviews. They understand the significance of data structures and really be well prepared.
Could you share any advice for self-taught programmers or those who are looking to transition into software engineering without a CS degree?
I cannot stress enough the importance of building projects! Creating meaningful and functional projects not only enhances your hands-on experience but also boosts the strength of your resume. It's beneficial to form a solid team that can provide mutual motivation and work together on projects. By doing so, you'll make significant progress and reach your goals sooner than you think.
How do you handle imposter syndrome, if it ever affects you, considering your unconventional path into tech?
I believe imposter syndrome is something that affects everyone, so I never attributed it solely to my unconventional path into tech. However, I do experience it frequently. I often catch myself thinking, "Why did it take me so long to debug this?" or "Why didn't I notice this sooner?" Sometimes, I feel inadequate and question my abilities. But then I look around and realize that others also face challenges, particularly early on in their careers.
Now, I've started reframing these moments as valuable learning experiences. Instead of dwelling on them, I try not to be too hard on myself and focus on the lessons I can glean from the situation. It's about embracing the process of continuous improvement and growth.
What aspects of cognitive science do you miss, and do you ever see them intersecting with your current role?
I believe that cognitive science knowledge is highly relevant in coding, and it's something I apply regularly. The insights I've gained from studying psychology have proven to be incredibly valuable in my work. For instance, understanding human cognition plays a crucial role in designing user-friendly interfaces. By incorporating cognitive principles like mental models and attention mechanisms, we can develop software that's intuitive and enjoyable to use. It's all about creating an experience that aligns with how our minds work and enhances user satisfaction.
Looking back, I wish I had started working on projects and gaining hands-on experiences sooner. I know I keep repeating the importance of projects, but honestly, I cannot emphasize it enough.
Lastly, could you share what the future holds for you? Are there any exciting projects or learning opportunities on the horizon?
I'm currently working on a super cool project specifically designed for college students. I can't spill all the beans just yet, I’m trying to release it by August.
Apart from that, I'll be keeping working on my content creations. I'm thinking about putting together an ebook! It'll be a great opportunity for me to share more specific knowledge with the community. So if you are interested and have specific knowledge of what you want to learn on, send me dms!
Thanks for reading! Subscribe below to receive new articles, tech news and job opportunities directly to your inbox!