DEV Community

Marcell Lipp
Marcell Lipp

Posted on

I am working as a software developer on autonomous driving, Ask Me Anything!

Top comments (26)

Collapse
 
marlonjcloete profile image
marlonjcloete

Hi Marcell, hope you are doing well, don't know if you are still active on this platform, but I would like to pick your brain about autonomous driving.

I am a software development student from South Africa, I'm not studying towards a computer science degree rather I'm at a private college that provides practical software training and I get national certificates and international ones as well provided I pass the exams. So far I've covered Python, HTML, CSS, JavaScript, SQL Server, Java and C#. From what I'm reading C++ seems like the main language you need to know for this industry. I finish my studies in June 2022, I don't know if I can go into that field as a junior developer, but it really has peaked my interest and is something I would like to consider. If you could give me any advice on how to get started I would appreciate it alot. What can I do know to prepare myself? Also I see Nvidia has a lot of job openings for this type of role, what other companies should I be looking at, especially in Germany as well?
Thank you.

Collapse
 
rlxdprogrammer profile image
Marcell Lipp

Hi, sorry for the late reply.
Yes, you realized it properly, the main language is C/C++, Python is an advantage. So these are the languages you should learn first. Next to that it's a good idea to learn a bit about robotics.
Regarding companies: there's a a lot of them, like: Bosch, Daimler, BMW, Tesla etc. Practically any OEM. As a beginner you have a better chance to join a smaller company.

Collapse
 
marlonjcloete profile image
marlonjcloete

No problem, and thanks for getting back to me I really appreciate it. One thing I also read up on was the mathematical aspect, especially for AI. I have long since forgotten my high school math and the calculus and algebra I did at University when I left school. How important is it that I know these concepts if I want to be a self driving car engineer?

Thread Thread
 
rlxdprogrammer profile image
Marcell Lipp

There are different roles in such projects. In case of some of them it's not that necessary, but I you'd like to be really good there, then it's better to fresh up your knowledge.

Thread Thread
 
marlonjcloete profile image
marlonjcloete

Alright, thank you. Do you have any advice on which projects I should focus on for my portfolio, to get a job in this industry.

Thread Thread
 
rlxdprogrammer profile image
Marcell Lipp

It costs some money, but I can really propose you the Self Driving Cars nanodegree of Udacity. That gives a really good overview on this domain.

Thread Thread
 
marlonjcloete profile image
marlonjcloete

Ah, okay. At this moment it won't be possible for me to do that, but thank you for answering my questions. For now I'll look for some free resources if there are any.

Collapse
 
conectionist profile image
conectionist • Edited
  1. Are you ever stressed about the fact that one tiny mistake you make could potentially cost (actual) lives?
  2. To what degree would you feel responsible if a car using the software you wrote would be responsible for an accident?
  3. How rigorous is testing done on your project? (both dev testing and QA testing)
  4. Do you have automation testing? If so, how reliable are your tests?
  5. Do you ever submit code that has known issues (regardless of severity) just to meet deadlines?
  6. How do you handle ethical issues, such as the trolley dilemma?(iflscience.com/editors-blog/trolle...) Is there a special (legal) team that gives you requirements/tasks in this sense? What if you disagree with them (morally)?
Collapse
 
rlxdprogrammer profile image
Marcell Lipp

Hi,

I try to answer all your points:

  1. Basically how these systems and the development is designed it can not be the mistake of only one developer: there are code reviews, there is something called functional safety component, there are multiple levels of tests. So if something is happening that should be the mistake of multiple people. On the other hand of course such things can still happen. But as per now a lot of people are dying in traffic accidents I would be already happy if this number could be strongly decreased by autonomous driving, even if this number will never reach 0.

  2. As I already mentioned it could be never the responsibility of only one developer, it must be a mistake of multiple people. But if so, of course I'm somehow responsible for that. As it is now: in case of most of the driving assistant systems, like emergency brake assistant it is mentioned, that they are not working 100% sure, but also they are strongly decreasing the number of accidents. It's like I'm driving my car on a daily base and of course there's the risk that I'm causing an accident, still I'm doing it.

  3. Right now the most of such projects are still in research phase. That means the cars will be driven only by test drivers, who did certain driving courses before. In this phase the testing is not so strict. In case of safety critical systems going into serial development there are a lot of restrictions on the process, on reviews, on testing on code and on system level. And for safety cases there are even software tricks, like to processors are calculating the same with two different algorithms and if the results are not the same the system is changing into an error state and a lot of other different things.

  4. There are automated tests as well on different levels: unit tests, software in loop, hardware in loop. They are trying to cover all cases, but of course issues can always happen. There is manual testing on the top of that.

  5. Since this topic is still in research mode, yes. But it is always documented what parts are still not working properly and such software should never be published. There are so called software releases which are tested properly.

  6. The whole requirement engineering is a separated team, they are braking the high level requirements and use cases on smaller, component level requirements. So me as a developer I'm never taking such decisions. And as it is right now, the development is really concentrated on more common use cases, like overtaking, handling traffic lights, changing lanes properly and so on. In this phase such corner cases are not really analysed yet. On the other hand in such (really rare) situation you as a driver of a car needs to make you own decision as well. Have you ever thinking about what would be your decision in such a case?

Collapse
 
conectionist profile image
conectionist • Edited

Thanks for taking the time to answer all my questions. It probably took you a while to write all those answers :)

I just have 3 things to add:

  • "In this phase such corner cases are not really analyzed yet" - corner cases that are deferred for later usually end up at the bottom of a backlog and will be forgotten by time. While that usually works for "regular" software, I would opt for a more rigorous approach in your case, since the software you're developing is, quite literally, a matter of life and death.

  • "you as a driver of a car needs to make you own decision as well. Have you ever thinking about what would be your decision in such a case?"

That's precisely the problem. When it's my decision and my decision alone, then it's on me.

But when a fully autonomous car makes a decision like that, then I'm not ok with living with the guilt of a decision I didn't make.
That's why these moral issues are so delicate and should be analyzed thoroughly before implementing anything.

  • "So me as a developer I'm never taking such decisions"

Just some friendly advice, be very careful with that.
You may think that "you're just following orders", but that exactly what the developers from Volkswagen thought when they wrote the software that tricked the pollution tests. And one them went to jail for that: bbc.com/news/business-41053740.

Thanks again for taking the time to answer my questions.

Best of luck in the future!

Collapse
 
sususub profile image
susu-sub

hello right now, I just start to find a job after the graduation. And I got an interview for the position software developer for testing system on autonomous driving. But I am confused and had no experience before. So could you take some time to help me about what kind of things or skills I need to prepare for this job interview. I have already searched a lot but still not so clear about this job. For a new graduate, can you give me some advice about that. sooooo thank you in advance.

Collapse
 
rlxdprogrammer profile image
Marcell Lipp

Hi, it is difficult to answer your question without a job description, because it can have several meaning. Based on its name it is supposed to be some the development of a simulation or test automatisation tool. So it is like normal tool development. But it is unclear which language/technologies are they using.

Collapse
 
sususub profile image
susu-sub

Hi, thanks again. Since the company is located in Berlin and the main language used here is c++. Referring to the job description, the responsibilities of this job is to develop modular software to secure driver assistance systems. The tasks also include analyzing the requirements with the team and design the architecture and interfaces. It is also required for this job to integrate hardware, such as sensors for detecting the environment, and software systems like for recording data and web service. All the development is completed in agile team. For the requirement of applicants, experience about ADTF or ROS is ideal necessary.

Lot of new things seems to me. Can you give some tipps.

Thread Thread
 
rlxdprogrammer profile image
Marcell Lipp

Well, then it sounds rather like to work on the real AD code.
It requires a complex knowledge, but since you are a junior, I hope the expectations are also like that.
What you can do:
-Read about scrum
-Read through everything what you know about c++ (especially topics like smart ptrs, templates, virtual classes)
-Go through this ROS tutorial: wiki.ros.org/ROS/Tutorials

Thread Thread
 
sususub profile image
susu-sub

thanks a lot. It really gives me a instruction to prepare for.

Collapse
 
bingla profile image
Pierre Nilsson

How are the vehicles programmed to behave if they loose one or more sensors while in motion/driving?

For example: if a autonomous car loses its front facing camera, can it take appropriate action without intervention from the driver?

Collapse
 
rlxdprogrammer profile image
Marcell Lipp

First of all the different sensors can replace each other in some cases. Like for example in case of heavy rain you can not rely on camera, but the radar/lidar is enough etc.
On the otherhand in case of sensor errors, the system is going into a so called degradation mode, it's up to the type of the degradation it is either introducing some limitations into the functionality, or disabling it. In the second case of course as far as possible the car is bringing itself into a safe state, like stopping.

Collapse
 
vinitpa36634422 profile image
Vinit Pandey

How can i become an autonomous vehicle engineer if my current age is 15 years

Collapse
 
rlxdprogrammer profile image
Marcell Lipp

Hi,

It is difficult to give a clear answer, because this area is changing extremely fast.
One thing is sure: software has a more and more important role in this field.
So the only thing I can suggest is to learn programming as much as you can. Go to the university and study something connecting to programming (computer science, computer engineering, software engineering) and then apply to automotive companies. I think this will be the right way. Good luck!

Collapse
 
phantomread profile image
phantomread
  1. What programming language do you use ?

  2. How big is your team and what are the members of your team.

  3. Do you use agile? e.g. scrum

Collapse
 
rlxdprogrammer profile image
Marcell Lipp
  1. Mainly C++, but for prototyping and tooling Python is used as well
  2. It is really a huge project with over 100 engineers working on that, with very different roles: system engineers, product owners, software engineers, test engineers etc.
  3. Yes
Collapse
 
faraazahmad profile image
Syed Faraaz Ahmad

I have a feeling that if an autonomous car is built to work in extremely crowded and not very well defined roads, it would work anywhere better. How far from reality am I?

Collapse
 
rlxdprogrammer profile image
Marcell Lipp

I'm not sure if I understand you correctly. But of course the city scenarios are the most complicated ones. But there can be some other tricky situations as well: difficult weather conditions (fog, heavy rain, snowy road surface) or for example a road construction.

Collapse
 
jonathanhiggs profile image
Jonathan Higgs

What do you think will be the timeline before autonomous cars become commonplace on the roads? And, how long do you think before the majority of cars are autonomous?

Collapse
 
rlxdprogrammer profile image
Marcell Lipp

Here I'm a bit pessimistic. Most of the companies are planning the first serial production for the upcoming 5-7 years, but I think it will take a bit longer. But once it will be introduced I think it will become quite fast popular and since most of the new cars today already have most of the sensors (they have front camera, back camera, radar, ultrasonic sensors) only the software needs to be changed strongly I don't expect too high prices. On the other hand there are different levels of autonomous driving. Features like highway pilot or traffic jam assistant are already almost perfect.

Collapse
 
tonycasti profile image
TonyCasti

I love to do work in IT field How To Make Someone Miss You