This week we launched the new C++ Nanodegree program, designed to teach students the industry-relevant programming skills to code robotics, self-driving cars, media platforms, servers, and fast-performance applications! We’re excited about this new program and thought our students might be, too. David Silver, head of Udacity’s School of Autonomous Systems, reached out to one of our Self-Driving Car Engineer Nanodegree program (SDC) graduates, Jeremy Cohen, to get an idea of how he uses C++ in his work as an Artificial Intelligence and Self-Driving Car Engineer.
David: Hello Jeremy, you completed our Self-Driving Car Engineer Nanodegree program last year and it’s contributed to some career changes in your life, could you tell us a bit about that?
Jeremy: That’s correct. I think it’s important to give a bit of context around my education experience. I live in France, and here, when you decide that you’re interested in engineering, you are given a couple of education and career paths to choose from. In my case, after high school, I enrolled in engineering school, with a focus on computer science. I enjoyed my studies, and during the last six months, I took part in an internship to gain industry experience. Unlike in America, many of these internships begin with managerial roles. I spent a year or so working as a project manager for an artificial intelligence banking initiative.
It was going well and I felt proficient in my role, but I had this growing feeling that I wasn’t actually proficient in the technology that I was managing. I could manage the project deadlines and lead our team to the next step, but I wasn’t able to speak the technical language, understand the concepts, or review the code we were implementing.
I started to research avenues to gain more technical skills to supplement my university and project management background. I considered going back for another degree, but even that didn’t seem like the way to gain current industry-relevant skills. In talking with my brother about the situation, he said: “Go check out Udacity, they offer the type of skills you’re looking for.”
I landed on udacity.com, watched a video about the new Self-Driving Car Engineer Nanodegree program and immediately knew – this was what I had been looking for. It didn’t force me to spend another year at school, was self-paced, and would allow me to grow in skills I needed. I applied for the program within 30 minutes.
How was your experience within the Nanodegree program?
It was exactly what I hoped it would be. The content was challenging and informative, especially the computer vision project. I built a firm understanding of how computer vision worked and where it could be implemented in my field of study. In fact, right after I finished Term 1 [out of 2 Terms], I decided to go ahead and try to find a job. I applied to numerous software developer roles and ended up landing a job as an Artificial Intelligence Developer and Computer Vision Engineer.
I was thrilled – within just one term, I had transitioned out of project management and into a developer role! I was actually using the computer vision skills I had acquired with Udacity to create prototype algorithms for object detection using Microsoft HoloLens.
My new company was impressed with my Nanodegree program enrollment and allowed me to continue working on Nanodegree projects while at work. I continued to steadily progress within the program and built my skills to apply to my current job.
Your progress through the Nanodegree program was in tandem with career growth, is that right?
Yes. In the midst of learning these new skills, I started to blog about my experience. There is so little autonomous vehicle content in the French language, so I thought this would be a great way to reinforce my learning and share information with my home country. I even went so far as to create a Youtube channel, where I could personally share my learnings. Between blogging and updating my LinkedIn/Resume as instructed by the Udacity Careers Team, I began to receive a lot of attention from recruiters. So much so, that I decided to accept another opportunity. I then understood that being able to present your skills is as equally important as being able to acquire them.
That’s great! Is your new role more focused on the autonomous industry?
It is. I am currently working as an Artificial Intelligence and Self-Driving Car Engineer, at a company focused on creating autonomous shuttles. It’s very exciting stuff and supported by some big industry names like Renault. While I had the initial skills to land this role, my learning remains continuous. I am constantly reading about new technologies and techniques. In particular, I find myself going back to the SDC Slack channel and community to learn about industry research and fellow alumni’s projects. In fact, I find myself seeking out information, doing a bit of research, and then applying it to my work the following day. Learning is intrinsic to my everyday job.
Much like yourself, we’re always looking to create programs that are relevant to the industry. Last week, we launched the C++ Nanodegree program, is this relevant to your work?
Absolutely, I couldn’t imagine an autonomous car driving with another language than C++. Its performance, reliability, and connection to hardware makes it the go-to language when talking about self-driving cars.
Where do you interact with C++ the most?
Self-driving cars have four main components:
We often see Computer Vision, which is a part of perception, as something mostly comprised of the Python language. But, in fact, when I was working as an Artificial Intelligence Engineer, utilizing computer vision, I realized that a lot of Python libraries were actually C++ libraries wrapped. For example, Yolo (You Only Look Once) is a popular algorithm for object detection coded in C, not in Python. OpenCV is also made of C++.
Other tasks are more robotic, they require direct interface with multiple sensors and are used to locate the car accurately or steer the vehicle with the right proportion at the right moment. To enact this type of accuracy and precision, one uses C++.
Do you see C++ as an integral language for your job or future aspirations?
Yes. It’s fairly understood that C++ is harder to learn than Python and even harder to master. A lot of people simply don’t make that effort and stick with the languages they already know. When we recruit Self-Driving Car Engineers, having C++ skills and experience with ROS (Robot Operating System) makes all the difference. If someone is willing to put in the time and effort to learn C++, it’s highly valuable in the autonomous industry.
Is there any other advice you would offer?
I encourage you, take the opportunity to learn something new. I went from a managerial position to a Self-Driving Car Engineer, working on the latest and greatest technology with industry leaders. I believe a lot of people go down the managerial path, initially, because they fear their abilities to code, and possibly see management as a more comfortable approach. In my experience, you can be a skilled engineer and a great manager but it’s hard to make that transition from project management to a technical role. We’re in an era where you’ll need to speak technically and know how to program for many tech-related jobs.
Congratulations, Jeremy, on achieving your new career path. Thank you for sharing your experience with self-driving cars and, especially, how you use C++ in your daily work.
To learn more about this language and obtain the skills that Jeremy mentioned, please visit the C++ Nanodegree program page.