Introduction
Hello, I am Yuan from China, currently a software engineer at a tech startup in Silicon Valley. Before stepping into the field of Computer Science I changed my major twice from Electronical Engineering to Statistics to finally find out what I like to do in my career. After receiving my bachelor’s degree, I interned at an e-commerce company where I learned what programming can do in a real-world business.
I decided to join a tech startup company in Silicon Valley after graduating from college. I have been working as a backend engineer here for three years. I work across multiple services including core product, payment, email and notification. On a daily basis, I work closely with product managers, front-end engineers and the AI team, designing scalable systems, writing robust code, testing and releasing product features.
Looking back at all the factors that lead me to pursue the career of a software engineer, one of the most important factors is the courses I took. Specifically, the data structures course laid the foundation for my interest in software development. This course introduced me to the essential building blocks of programming: data structures like arrays, linked lists, stacks, queues, trees, and graphs, as well as algorithms for sorting, searching, and optimization. What captivated me the most was the way these concepts could be applied to solve real-world problems efficiently. I was fascinated by the idea that the choice of data structures and algorithms could significantly impact the performance and scalability of software applications.
Additionally, the course emphasized problem-solving and critical thinking. It wasn’t just about writing code; it was about understanding the underlying principles that make software robust and scalable. The challenges and the process of debugging and optimizing algorithms honed my analytical skills and taught me to approach problems methodically. Now I’m more than happy to share these learning experiences with the students who are in the situation I used to be in.
I am excited to join The Build Fellowship and contribute my knowledge and experience to students seeking to succeed in Computer Science and Software Engineering.
Computer Science Fellow
career options
There are various career paths in the field of Computer Science and Software Engineering:
Designs, develops, and maintains software applications. They write code, test software, and work on various stages of the software development lifecycle.
Focuses on the visual aspects of a website or application. They use languages like HTML, CSS, and JavaScript to create user interfaces and ensure a seamless user experience.
Works on the server side of applications. They handle logic, database interactions, user authentication, and server configuration.
Designs, builds, and deploys machine learning models. They work on the practical implementation of machine learning algorithms, systems and data pipelines.
Conducts advanced research to develop new artificial intelligence algorithms and models. They focus on exploring theoretical aspects of AI, running experiments to evaluate findings, publishing findings in academic journals, and collaborating with experts to push the boundaries of what AI can achieve.
Works at the intersection of software development and IT operations. They automate and streamline the integration and deployment processes, aiming to improve collaboration and productivity.
Computer Science Fellow
skills
What are the main hard skills you use on a daily basis in your current job?
Coding with Python in daily work, implementing new features, testing, troubleshooting and debugging. Optimizing code performance and efficiency.
Designing APIs (Application Programming Interface) and data models that support product features. Integrating with client side and dependent teams via robust API. Designing efficient data models that are reliable and scalable as product iterates.
Collaborating on large code base with other engineers by using version control tools e.g. GitHub. Managing release and deployment.
What are the main soft skills you use on a daily basis in your current job?
Effective communication is vital for collaborating with team members, discussing technical concepts with non-technical stakeholders, and documenting your work clearly. Being able to explain complex ideas in a straightforward manner and actively listening to others ensures smoother project execution and helps in resolving issues promptly.
Backend development often involves identifying and addressing complex technical issues. Strong problem-solving skills allow you to think critically, analyze situations from different angles, and come up with efficient and innovative solutions. This skill helps in debugging, optimizing code, and finding ways to improve system performance.
Startups are fast-paced environments where requirements and priorities can change rapidly. Being adaptable means you can quickly adjust to new tools, technologies, and workflows. It also involves being open to feedback and continuously learning and improving your skills to keep up with the evolving demands of the industry.
Yuan
’s personal path
Tell us about your personal journey in
Computer Science Fellow
:
Before entering college, I made up my mind to study engineering or a science major since I had an interest in mathematics and logic, and applying theory to solving real-world problems has always been rewarding to me.
I started my academic journey with an Electronical Engineering major, which involves a lot of computer fundamentals and circuits. The hardware part did not interest me much, so I changed my major to Statistics. I learned various statistical theories and a good amount of practice on running simulations and experiments. As I dug deeper into the practical side of Statistics, coding played more and more vital roles, I made another jump to major in Computer Science and it turned out to be a great fit. It has a perfect balance between theory and practice.
As I accomplished good scores in all courses at school and thought securing a job after graduation would be a natural and easy move. It turned out to be extremely hard to get an interview and for the few opportunities that I was given I failed all of them. I reflected on the process and started a study plan for job hunting. From resume, timed coding challenge, side projects, to behavioral questions, I worked very hard on every step in the hiring process.
I searched for some example resumes online and watched a few YouTube tutorial videos to write myself a good resume. Then I registered on some of the job-hunting platforms such as LinkedIn and Handshake, set up my professional profile, filter and apply for the intern and entry-level jobs. As I applied for companies, I kept track of the process including company names, interview stages and results on a Google sheet. The keys of getting an interview are improving your resume and applying for as many companies as you can.
The next stage is preparing for the interview. I set up a study plan to finish 200 Leet Code problems in the first round to cover all categories in data structures and algorithms. I also had a document to track every problem I solve and specially noted down the ones I think are interesting and challenging, so that in later rounds I can quickly go back to the document to refresh my memory. I also spent time practicing my oral English and communication for both technical problems and behavioral questions. After one year of hard work, submitting hundreds of applications, I finally got an internship offer and a few full-time offers after.
After the internship, I decided to join a tech startup company in Silicon Valley after graduating from college. I have been working as a backend engineer here for three years. I worked across multiple services including core product, payment, email and notification. On a daily basis, I work closely with product managers, front-end engineers and the AI team, designing scalable systems, writing robust code, testing and releasing product features.
What would you tell your younger you regarding building your current career?
If I were to talk to my younger self, I would suggest to him the following: Focus on the Fundamentals – logic, algorithms, data structures and system design. Trust the process - practice makes perfection. Don't Fear Failure: Failure is a part of learning. Don’t be afraid to make mistakes. Learn from them and move on. Each failure is an opportunity to grow and improve. Focus on Soft Skills: Technical skills are important, but don’t neglect soft skills like communication, problem-solving, and adaptability. These are essential for working effectively with others and advancing in your career. Lastly, believe in yourself and never quit.
Final thoughts & tips
The journey is not easy, with lots of challenges and discouragements. Even after you get a job, the battle is still ongoing. Continue to learn in the real world. Try to build a strong portfolio: Showcase your skills and projects through a well-organized portfolio. Build your reputation in your working environment.
Resources to dig in more
LeetCode
Exact problems that you will get in a technical interview.
Algorithms by Jeff Erickson
An algorithm textbook that covers most practical algorithms.
YouTube
Search mock coding interviews and software engineer resume.