WHEN I WORKED ON A PROJECT: When switching microprocessors!
Hi again from sunny Croatia. Spyrosoft’s natural environment is dynamic. New clients and projects coming all the time. That means we have many opportunities to learn new things and grow in expertise. So this time, on the topic of sharing knowledge, join me in meeting Vice ?ivkovi? , our Senior Model Based Developer.
What to say about him? He loves board games. He often stays after work with other co-workers for a game or two. For a few years, he was an assistant to the professor at the Faculty of Engineering and Computing, moulding young minds. And during his career, he even worked on the famous Nevera hypercar. Let’s see what advice he has prepared for us.
Vice, you're an established expert and a very successful engineer. Did you expect this when you were a child? Was any of this in your dreams and wishes?
Vice: I don’t consider myself that much of an expert; I think I still have much to learn before I can call myself an expert. However, I am trying to do my best to learn and expand my expertise. When I was a child, I had a lot of different dreams, for example, to become an astronaut or a race car driver, but none of them really stuck for a long time, except my fascination with building things. This mainly came from playing with many different sets of Lego bricks. I think, in a way, this (and influence from my dad, who is an electrical engineer) resulted in me becoming an engineer. With time, this kind of work became my dream and wish. As a result, I started working on the Nevera hypercar and even had the opportunity to ride in it on a test track, which, in my mind, counts for the race car dream.
As an assistant professor at the Faculty of Engineering and Computing, have you ever felt that your students understand they are the future creators of world-leading technology? How did you keep these young minds in your class inspired?
Vice: From my experience working as a teaching assistant, I would say that students are aware that they need to follow future trends in technology and they are all very eager to bring about new change and to use modern methods, and to be at the forefront of the technical landscape. I welcome this mindset though the opportunities for this are not as easy to come by as all of us would like them to be.?
I was mainly doing laboratory coursework and helping smaller teams of individual students with bachelor's and master's degree projects, so my main way of inspiring them was to try to instill in them an engineering method of solving problems and a critical thinking approach to all their work. This was primarily secondary work during my thesis, so I was pleasantly surprised in how much I enjoyed this experience because I never saw myself as the professor/teaching type. Later in my career, I had an opportunity to work with one of the students I helped during different projects, and it was great to see that I could help her become the great engineer she was.
Staying on the subject of sharing valuable experiences, did you face any interesting challenges recently?
Vice: There are different challenges that I think would generally be interesting from a technical or practical standpoint. For example, implementing advanced control methods from research papers in code and verifying them or modifying a control feature to enable different vehicle behaviour of a car on a test track, but I would like to talk of a challenge that was much more interesting because of what I learned from it.
The challenge was that we needed to transfer the software implementation of a feature to a different microprocessor than the one we had the feature running on. The main challenge was that no one on the team had experience with the environment used for this processor, nor did they know how to compile all the necessary libraries and code components for it. Additionally, there was limited information available online about the environment, and documentation was scarce. Fortunately, a much simpler example had already been created, which we used as a framework. I got the issue assigned to me with, of course, support from other team members if needed. This issue was particularly striking to me, as it was not within my area of expertise and seemed like it might never be resolved.
领英推荐
How often does this kind of task arise when switching microprocessors? What was the first step?
?
Vice: It depends on what solutions you are using for the code generation and flashing on the microprocessor itself. If you are using a third-party solution that covers this specific microprocessor, then this kind of issue wouldn’t arise or at least wouldn’t arise in this scope. But generally, these kinds of issues happen quite often if you provide a software solution to the customer and the customer is the one that provides the hardware. On the other hand, if you provide a complete solution with hardware, then this issue can be avoided. Of course, this is much harder to do and requires much larger investments and effort. The first step, and in my opinion, this should always be the first step, was to get a clear overview of the goal or definition of what is done for the task. After that, you should focus on breaking the problem down into smaller parts and enabling each part individually.
?
Would this be an example of how the KISS principle is applied?
Vice: Well, in a way, yes, because a different and complicated approach would be to try to make everything work at once from the beginning. If you break down the problem into small steps that you can implement and verify one by one, it is much easier to find specific bugs, and you have a better sense of progression. This way, you also get feedback more easily, and your goal changes from one large final one to a series of smaller ones that are easier to focus on and solve.
?
The second key to the solution to this challenge, in my case, was persistence. I had to try numerous approaches and sometimes divide the small steps into even smaller ones. I spent nearly two weeks working on this, debugging step by step, studying the simpler example, and consulting with colleagues. In the end, the implementation worked. Through this task, I learned a great deal about a field I previously knew little about. It served as an excellent example of how persistence is sometimes the primary requirement for solving problems.
?
What steps do you recommend for someone who feels stuck and unable to make progress?
Vice: My recommendation is to first talk to your colleagues and ask for support; a lot of time, a fresh set of eyes sees an obvious solution that you have missed because you are already too focused on something else or just too frustrated or exhausted to see it. In the same way, a short break can help you refocus and find a solution that you are missing. My final recommendation would be to be persistent, as I had to be in the mentioned challenging situation.
?
This is often the hardest thing to do, especially when you don't get any positive feedback on your efforts. I think this can be especially hard in any job, but this is the kind of situation an engineer can often find himself in. Sometimes, you just need to invest more hours and effort to solve a problem. The hard part is when this is a new situation, and there is no way of knowing how much time this will take. So, as hard as it can be, just stay persistent and ask for support from within the team, and you will be surprised how often when progress starts to appear, it continues, and you really quickly get a solution. Then, when you look back on the problem, it seems much smaller!
Vice, thank you for sharing the experience. And I wish you luck on new projects. All of you who would like to learn more about Croatian sites and open positions, visit our pages of Zagreb and Osijek.