Introduction
Hello world, fellow humans. If your pursuing a degree in STEM, and you’re still unsure what would you want to do, my story might interest you. I’m Kacper and come from Poland. From a young age, I was always a curious person, drawn to building things, solving puzzles, and understanding how the world works. Initially, I channeled that curiosity into video games, particularly sandbox and strategy games, where I could shape and control entire worlds. However, my interest soon shifted towards programming. What captivated me about coding was the accessibility and creative freedom it offered—unlike other fields of engineering, where you're bound by physical components or waiting for materials, programming only requires a computer and your time. It’s a powerful tool that allows you to create impactful solutions with nothing more than code and determination.
My career journey took a unique route, beginning not in data science, but in mobile development. While pursuing my bachelor's degree at the University Science and Technology in Wroclaw, I developed a deep interest in exploring the potential of mobile devices, particularly within Apple's ecosystem. This led me to specialize in mobile development, and during my freshman year, after completing a few side projects, I secured an iOS Software Engineer position at a software company that offered comprehensive mobile app development services.
During my master’s studies, I became fascinated by artificial intelligence and machine learning, particularly their applications in robotics and self-driving technologies. This newfound passion inspired me to shift my focus. A year after completing my degree, I decided to leave my position as an iOS engineer and pursue a research opportunity at comma.ai, where I earned a spot by solving a technical challenge. This marked the beginning of my transition into AI and machine learning.
At comma.ai, a company dedicated to solving the self-driving challenge, my role as a Research Engineer involves maintaining the offline testing infrastructure for the openpilot driver assistance system. This includes developing tools for replaying individual processes within the system and managing a 3D simulation environment to evaluate the performance of the driving model that powers the driving experience. Additionally, I oversee the compute and training infrastructure utilized by my team and the analytics and metrics collected from thousands of users, ensuring the data is effectively utilized to enhance and refine the system.
Data Science Fellow
career options
With expertise in Software Engineering, Computer Science and Machine Learning there are many career paths one can take. Here are some options:
Develop, test, and maintain software applications or systems. Collaborate with cross-functional teams to design scalable and efficient solutions, ensuring code quality and software reliability.
Design, develop, and maintain responsive web or mobile applications. Focus on delivering user-friendly interfaces and optimizing performance across different devices and platforms.
Build and maintain infrastructure for computing, training, and data collection that supports research teams. Ensure high performance and usability of tools essential to AI research, optimizing workflows for researchers.
Design, implement, and deploy machine learning models. Collaborate with data scientists to optimize algorithms and integrate models into production environments for scalable AI solutions.
Data Science Fellow
skills
What are the main hard skills you use on a daily basis in your current job?
I apply my strong expertise in Python and the Linux operating system to develop and maintain key components of Openpilot, an open-source driver-assistance system. My experience with C and C++ is crucial for writing lower-level code in resource-constrained environments, enabling efficient processing of real-time sensor data and vehicle control over CAN.
My job involves creating reusable tools for the use of my team members. Design of Application Programming Interfaces means to create and implement interfaces that allow different tools, services, and libraries to communicate effectively, playing a crucial role in system integration, supporting research efforts, and driving product development.
As a member of the research team, I use my expertise in machine learning and neural network training, including dataset preparation and analysis and also a strong background in math and statistics. I developed these skills during grad school and through personal side projects.
Testing is essential for identifying bugs early, improving code design and reliability. Therefore, the ability to write testable, maintainable code and familiarity with various testing methodologies is very important. Also, strong understanding of continuous integration (CI) pipelines to ensure smooth testing and deployment processes, crucial for maintaining software reliability and performance.
What are the main soft skills you use on a daily basis in your current job?
The ability to analyze complex issues and devise effective solutions. This is essential for a software engineer to debug code, optimize performance, and create efficient algorithms.
Clear communication skills help convey technical ideas to both technical and non-technical stakeholders. This is crucial for collaborating with teams, explaining code functionality, and documenting processes.
The ability to think critically and find solutions without relying on external help. This allows software engineers to tackle challenges autonomously and drive progress without needing constant guidance.
Kacper
’s personal path
Tell us about your personal journey in
Data Science Fellow
:
My career path in tech began through the connections I made at university. Shortly after starting my studies, I joined a couple of clubs that aligned with my interests at the time—one focused on mobile development and another around Java. These early explorations helped me discover what I was passionate about. Over time, I realized it’s never too late to pivot, which is exactly what happened when I shifted from mobile development to machine learning.
The hiring processes I encountered were typically similar across companies: a hiring challenge, followed by one to three rounds of interviews covering both behavioral and technical aspects, and finally a meeting with a team lead or founder. My advice to anyone starting out is to first gain some experience, whether through internships or personal projects. Most importantly, take the time to explore different technologies and areas in the industry—you might find something that excites you, just as I did.
The way I landed my current role was a bit unconventional. I had been following the company’s work for years—watching their videos, reading their blogs—and one day I came across a hiring challenge that caught my attention. The challenge was unique because it addressed a real-world problem the company faced. The goal was to write an algorithm that performed better than their existing one. I spent two weekends working on it and ended up with a reliable solution.
I didn’t expect much since I wasn’t from the US and had no professional experience in machine learning. To my surprise, my submission scored among the top and I was invited for an interview. The process involved three interviews, covering cultural fit and technical problem-solving. I eventually received an internship offer, which later turned into a full-time position. Despite having never been to San Diego or the US before, I took the leap—seizing the opportunity to pursue my career goals and explore a new part of the world.
What would you tell your younger you regarding building your current career?
Looking back, I’d tell my younger self to dive into exploration without hesitation. Don’t be afraid to experiment with different technologies, projects, or areas of interest. The world of software development offers endless opportunities to try new things, and now is more accessible than ever.
Along the way, remember that failure is a natural part of this journey. Every experiment won’t work out perfectly, and that’s okay. Each setback is a chance to learn and improve. Don’t fear failure—instead, see it as a steppingstone that helps you grow and refine your skills. The more you experiment, the more you’ll realize that failure isn’t the end; it’s just another part of the process that leads to success.
Final thoughts & tips
As you begin your journey in tech, remember that it’s okay not to have everything figured out. The industry offers endless opportunities to explore, experiment, and grow. Don’t be afraid to take risks, fail, and learn from those experiences. Stay curious, build projects, and embrace unexpected opportunities—they often lead to the most rewarding paths. Trust the process, keep pushing forward, and you’ll find your way to a fulfilling career. Good luck!
Resources to dig in more
LeetCode
Site to practice your problem-solving skills.
Build your own X
Github repository containing links to step-by-step guides how to re-create popular technologies.
Hackernews
Popular online community focused on technology, startups, and programming, where users share and discuss relevant news and topics.