In this podcast Shane Hastie, Lead Editor for Culture & Methods spoke to Lukáš Hermann about collaboration with universities, internship programs and growing leadership skills.
Key Takeaways
- University research and private sector work are often not well aligned
- One way to improve the engagement is for private companies to communicate the areas they are struggling with
- Internship programs bring fresh perspectives and new ideas into existing teams
- Mentors support the learning and help instil good habits
- Internship should go beyond technical competency into people and leadership skills
Subscribe on:
Transcript
Shane Hastie: Hey folks, QCon London is just around the corner. We'll be back in-person in London from March 27 to 29. Join senior software leaders at early adopter companies as they share how they've implemented emerging trends and best practices. You'll learn from their experiences, practical techniques and pitfalls to avoid, so you get assurance you're adopting the right patterns and practices. Learn more at qconlondon.com. We hope to see you there.
Good day, folks. This is Shane Hastie for the InfoQ Engineering Culture podcast. Tonight for me and this morning for our guest, I'm sitting down with Lukas Hermann. Lukas is the VP of technology at MANTA, and is based in Prague in the Czech Republic. Lukas, welcome. Thanks for taking the time to talk to us today.
Lukáš Hermann: Shane, thank you for having me here.
Shane Hastie: Probably a good starting point is who's Lukas?
Introductions [01:03]
Lukáš Hermann: Okay, so as you mentioned, I'm VP of technology at MANTA. I'm based in Prague, Czech Republic, where we have our largest development center. I graduated in software engineering at Charles University in Prague and during my studies, I focused on compilers and component architecture.
I started to work for Czech company and thanks to my interest in compilers, I got to a project where one of our customers tried to figure out how their data flows through their data warehouse, to make their development more agile and also to resolve data incidents faster. And it quickly became clear, that without understanding what code used to move data in their environment does, could be real tedious manual work, or the results won't be accurate.
And at the same time, we realized that this is exactly something where our colleagues from university that did the research on compilers could help. And this problem is also something unique for that particular customer, but it might be also interesting possibly to any larger company that works with data. So therefore, we use that opportunity to apply for funding provided by Czech government, that enables to connect companies solving real problems with universities doing complex research. We got that funding and therefore, there was a time to develop something useful and also to find our first customers abroad. And from that time, I was leading a small team of internal developers and student and I was also talking to our potential customers to find out what they need. And before the government funding successfully ended, we found out that what we built had a big potential and we decided to spin off to create an independent company and to find also private funding and customers ourselves. And six years later, after several rounds of investments, I lead an international 70 person engineering team, building the best data learning solution on the market. And just like at the beginning, I'm still in charge of the cooperation with universities.
Shane Hastie: The reason we got together is to talk about this collaboration, cooperation with universities. So, tell us a little bit about what has been described as the one-year interview.
Identifying collaboration opportunities between universities and private companies [03:16]
Lukáš Hermann: So, as I mentioned, yeah, we started as a research project closely working with universities. And from the nature of what we do there, there are many open topics to explore. So, what we do at each year, we create a list of research topics based on issues that we encountered, or ideas in our roadmap that are complex enough for final theses. It might be anything from new approaches, how to analyze code, through metadata processing, optimization, to effective data lineage, visualization layouts, whatever we need to solve. And we present these topics to students at university events or through our university colleagues that teach them. And from that, we get a list of candidates that are interested in one or more topics. Some are interested in bachelor thesis, some in master thesis disease, and even in some team software projects.
So then, when we evaluate all the candidates in our interview process to assist their knowledge and potential and motivation, and we select some of them for our internship program. And from that point, basically we help the students to find their official thesis supervisor at the university. And we also assign one of our developers, usually a leader of the team that invented the topic. And we ensure that basically, these guys are ... meet regularly during the whole project. So, the results are aligned with expectations both from the university and also from our side.
At the beginning, we give students lot of time to learn about our product and about the topic because these topics are quite, quite complex. So they get literature and documentation that is related to their topic. And when it's clear what the problem they are going to solve and what are the possible approaches, we led the topic to be officially assigned at the university. And from that point, they have usually six to nine months to work on further analyze this design, implementation, testing documentation. It's like all the work is done by them, but us helping them.
And for the whole time, they're part of one of our development teams. So, they have the same rituals, like standups, code reviews, so they can learn how the whole development process works. And once they're close to the end, we make sure that they have enough time to work on the text of their thesis and pass all the exams at the university, evaluate with them how the cooperation went and what are their possible extensions of their work if they stay as regular employees? It's so good that it brings us the tight connection with universities, always getting fresh ideas from the current research. We can also reach out to students even before they start thinking about having a job. Students can work on the thesis that will have some impact and won't end just in their libraries. They don't have to look for another job that is not connected with their interests because these internships are paid, so they can learn how the real software development look like. And if they don't want to continue with us, then they already have better position on the job market thanks to their experience.
Shane Hastie: One of the things that I've heard that has been commented on internship programs, is often the interns bring the very academic perspective, which is useful, but they don't bring the discipline and rigor and quality that a commercial product needs. How do you bridge that gap?
Research is done while being part of the development team [06:43]
Lukáš Hermann: Yeah, that's a very good question. So, from the very beginning, all the students really participate in all the processes within the development team. So, all the code that they produce needs to go through code reviews by more senior developers. And so, they ensure that the code that they produce is a good quality. And that's not only about the code, but also about their design, about the way how they prepare tests. So, everything is always under the review, so we ensure that the quality meets our standards.
Again, sometimes those topics are more like research topics or prototypes. So basically, what the code is produced will not be used then in production because it's basically just trying to find a solution to some algorithm or to some problem and then it's rewritten for the production usage. But if the code is good quality, we can even use it in production.
Shane Hastie: You mentioned that you allocate them a mentor or somebody senior in the organization, that's obviously taking time out of these people's days. How do you ensure that they do provide the level of support that somebody learning needs?
Mentors support the learning and help instil good habits [07:50]
Lukáš Hermann: So, all the mentors has the same nature of providing this mentorship to the students. So, they have the same goal that they understand that there are lot of research topics that their team don't have time for. So, they know that the students will help them to focus on one of the topics that they can solve as a team, and the investments in them will pay off. So, they know, "Okay, so if I invest this amount of hours in the student, he has the whole focus on that topic for the whole year. So, at the end would be something useful for my team so that they are ready to invest that time."
Shane Hastie: Tell us a story. Tell us the story of one of your interns, how've they worked out, what's happened?
The story of one intern [08:32]
Lukáš Hermann: Yeah, so one example of a student, his name is Andre. He started at MANTA on his bachelor thesis on one of our scanners that analyzes data flows in one of the reporting tools that we support. And when he was working on that scanner, he realized that there was one part of the technology that used complex language to describe data movement, that we really didn't count at the beginning because it was some kind of reporting tool. And we thought, Okay, it would be easy for bachelor thesis. But he was not afraid.
He learned how it could be analyzed and he succeeded. And after he finished it, the bachelor thesis, I liked it, I liked the topic, he spent some time improving the scanner, making it part of our product. And the next academic year he was about to search for a topic for a team software project that was needed at the software engineering program that he studied.
At that point, we were looking for a new team that would help us to analyze actually Python, which was gaining popularity among data scientists. And with our help, he was able to find like four other students that were interested in having the software project and he became a leader of the team, even very young leader. And after one year, they were able to develop a good working prototype, to successfully defend that project at the university. And then he continued working on this scanner and now he's working on one of the topics actually for his master thesis. And he's still involved in testing of this scanner, also with our customers.
Shane Hastie: So, he's stayed effectively ... is he still an intern or working towards his masters, or is he a full-time employee?
Lukáš Hermann: Yeah, so he's still working for his masters, but he's already like full-time because again, his master thesis connected to what we do. So basically, he could be like full-time and working on his master thesis.
Shane Hastie: What's the overhead, what's the cost to the organization of doing this?
There is little actual cost to the organization [10:24]
Lukáš Hermann: Since basically what we do really requires the research, we would need to do something like that even if we don't use students. We would need to start working with some researchers. And we also do that, we work with some researchers at the universities that help us to solve those topics that are hard to find a solution for them. So, we already do that, so we don't see it as a inefficiency. We think that there are many things that we will develop and it won't work. We would need to try it, try it again. So, we see it as a foundation of what we do. The problems that we solve are not easy, nobody's solved that before. So, we count with this nature. And obviously there are only some teams that are working on research projects, there are different teams working on something, let's say more standard in the development process, and they don't have these inefficiencies.
Shane Hastie: If an organization wasn't in the bleeding edge of research, would it be worth their while, do you think?
Finding the right match of research and work for your organization [11:18]
Lukáš Hermann: I believe that what they need to do first, is really to try to identify the topics that might be interesting for researchers and students. So, if they have such topics, and it might be really anything, like from optimization of some algorithm that they use to make a better performance or scalability, or maybe they're thinking about some new product feature, maybe connected to machine learning, AI or whatever, and that they're not sure if they want to really invest in that, they just want to explore if there are possibilities, how to solve this problem. If they identify such topics, they can contact the universities that perform research in those topics that are close to what they need, and they should try to establish the partnership with them.
So, it's always ideal to start with the researchers that might be interested in those topics. And once you find those and then find it interesting, then you need to find ways how to present these topics to students. And ideally, it starts with those researchers who are most also the teachers of those students. So, they have the best contact with them and they can convince that this topic is interesting, something worked, investing their time. And also, you can present these topics at that job first. But definitely, going through teachers have better effect.
And then if you really think that maybe that product branch might be something where you want to invest for longer time, you can even try to level up that cooperation with the university and either create some research program together with them, funded solely by your company. Or maybe you can even look for some incentives or initiatives from government or other parties, that want to support this, the cooperation between industry and universities.
Shane Hastie: Stereotypically, academics want to be above the commercial realities. How do you inspire them to take an interest in the commercial world?
Encouraging researchers to focus on commercial challenges [13:12]
Lukáš Hermann: Yeah, it's true that our researchers often want to be in their own bubble, let's say, but well, there are a lot of them that are pleased by the way that, "Okay, this is something that is not only doing research for research but actually something useful." And what they also like is some kind of real use cases, some real world scenarios, or also data from the real war scenarios. For example, if their research is focused on code analyzers, they can download the code from GitHub, from open source projects, but these are not the real world scenarios in industry. So, we can bring them data from industry that they can work on and they explore, "Okay, so my solution was working on this small pieces of code, but would it work on large enterprise application?" And without this corporation, they wouldn't have any opportunity to get this real world data.
Or another example would be research and graph databases that we also do. Again, they can play with some models, semantic models and so on. But again, we can give them real world data from customers describing their systems. And it's much more fun to work with real world problems than something that you made up.
Shane Hastie: Thinking about careers and growth and so forth. You used the example, I think his name was Andre, who ended up in a leadership position of a small team team. Did you give him any leadership skills training?
Ensuring interns build leadership and people skills as well as technical skills [14:38]
Lukáš Hermann: Yeah, that's definitely necessary. We have a program for team leaders that they can use and also, managers that help them to grow into this position. Obviously, it's something different to really lead the research program, and then to lead the whole development team. So, this is still a little bit different, but we really want to encourage people to, no, don't be afraid of leading and deciding.
Shane Hastie: And how do you grow leaders in your organization?
Lukáš Hermann: That's always hard and especially for a company as we are, we are a young company, really fast growing. So, it's a combination of finding already good leaders on the market that would fit into our philosophy, which is the one way. And the second way, is try to grow people that are inside our organization, but it takes time. So, it's always about identifying those people that are interested in that and then providing them all the support to become a good leader.
Shane Hastie: And what does that look like? What does that support play out as?
Supporting people to become good leaders [15:42]
Lukáš Hermann: So, it's about trainings, it's about mentorship and coaching from leaders that are already within the company for a longer time, teaching them all the processes, supporting them with the way, how they plan, how they work with people. And it's always, let's say incremental. So, they will be responsible from the beginning for everything that a team leader is doing. They start with smaller projects, maybe tech leading at the beginning, and then we add more things to that. Okay, so now you need to also be responsible for a plan. Now you need to be responsible also for performance review and so on. So, it's always incremental process.
Shane Hastie: What are the biggest challenges for leaders in the software environment today?
Lukáš Hermann: I believe that the biggest challenge is that you are somehow in the middle. So, you already have some responsibility for people, you need to hear them, you need to provide them all the support. And on the other hand, you have the responsibility to your managers that everything in the team work well. And if not, then you need to work on that with them. So, it's a quite hard position, I believe, especially for good programmers, good technicians, and now they're in this position that requires a different skillset.
Shane Hastie: And as an industry, how do we grow? How do we mature? How do we build better leaders for the future?
Lukáš Hermann: Yeah, so definitely, it's about constant learning. You need to be able to provide them the support to learn and also the support for changes. So they know, "Okay, so now I see it in this way, but maybe this works for now, but maybe in future something else will work." And especially with the growing organization, you need to change almost every year. You need to adapt. So, you need to be open to all the changes, to all the advises or all the experience from outside. And also, to accept that if you change something, you might fail and you might be wrong direction, but you need to identify it quite soon and try to learn from your mistakes.
Shane Hastie: Learning from mistakes is hard.
Lukáš Hermann: Yeah, it is hard.
Shane Hastie: Where do you think we're going as an industry? What's the future?
Thoughts on the future of software engineering [17:51]
Lukáš Hermann: What's the future? Maybe I'm now a little bit impressed by the Chat AI that was released just last week. We were playing with that in our team for a week and we were thrilled by what it could provide. So that question was like, "Okay, so is a programmer someone who lose their job because any AI could do that?" It made us thinking about what is to be really good programmer. It's obviously not just writing some code that someone already wrote. It's always about the creativity, the innovation, the new ways of thinking. And that's the only way how we can, as a programmers, how we can survive that, that we will be still more creative than this AI.
Shane Hastie: Lukas, some really interesting thoughts. Great to see bringing young talent in and ... Well, I'm making an assertion that most of these people you're bringing in are young, but bringing new talent into the industry and growing them within your organization and giving them a foothold and a starting point. If people want to continue the conversation, where can they find you?
Lukáš Hermann: So, thank you very much for the whole conversation. It was so a pleasure for me to talk to you. And if you want to contact me, just use my LinkedIn profile, it will be the best way.
Shane Hastie: Wonderful. And we'll make sure that that's included in the show notes. Thank you so much.
Lukáš Hermann: Thank you. Have a nice day.