In this series of interviews, we talk to an OutSystemer from the engineering team about their role, interests, and expertise.
When he’s not researching AI or software engineering, Miguel Neves can be found making a mean gin and tonic, playing video games, or experimenting with a polyphasic sleep schedule (trust us, it’s fascinating stuff). Here, he talks about the future of AI and how research scientists can help software companies innovate and increase their impact.
When did you know you wanted to become a software engineer?
I’ve been fascinated by computers ever since I saw one for the first time. I’m from Pico Island, in the Azores [a Portuguese nine-island archipelago in the middle of the Atlantic], so I guess I was about 10 or 11. It always amazed me how one box could do so many things. Growing up, one of my hobbies was playing computer games, and of course, I wanted to know how the machine ran them. So when the time came to choose a career path, it became pretty clear that I wanted to study software engineering.
But you had a career in academia first, right?
I completed my Ph.D. [in Information Systems and Computer Engineering] right after my master’s. During my doctoral years, I had the opportunity to work twice as an intern at Microsoft Research on both sides of the pond, in Cambridge and Seattle.
I’ve been working in automated reasoning since my master’s degree, and my doctoral thesis was about multi-objective optimization. Following graduation, I began working at OutSystems. My doctoral advisor introduced me to the company and commented that it would value my skills. Then, in the final year of my Ph.D., I went to the LxMLS (Lisbon Machine Learning School) event, and OutSystems had a stand there. I ended up speaking to João Nadkarni [AI engineer at OutSystems], who told me a bit more about the problems they were tackling in the AI team. I very much liked what I heard, and here I am.
What does a research scientist in AI do in a software company?
During your Ph.D., you’re learning to learn, and that is basically the work of a research scientist. While some engineering is involved, what I do at OutSystems is mainly research. I began by identifying patterns in code, a project that then evolved into code duplication. For example, when working with duplicated code, one of the most significant setbacks is time. In some cases, just identifying it takes a long time. So what do you do? As a researcher, you go back to the drawing board and widen your research: okay, what can I do to improve this, to make this efficient?
“Having a researcher is a tool that allows solving complex problems whose solution might not be immediately evident”
Can you give us a specific example?
One of the biggest challenges was running all factories’ processing in the Architecture Dashboard (now AI Mentor System) in half a day. I had to give it a thorough look and understand how it was wasting time. I managed to reduce it by each iteration until I hit a wall — I couldn’t lower it further without reducing accuracy, too. I tried to step out of my comfort zone and resorted to machine learning to automatically group similar action flows and lower the time.
However, what came into production was a different option because, following even more research, I found a better way to scale the solution. You have a set number of code segments, which can be huge — in this case, it comprised more than 13,000 flows, which meant 85 million pairs. No wonder it took so long! We paired our AI algorithms for code duplication detection with techniques from information retrieval. After I implemented it, it was super quick. From one day and a half, it now takes like half an hour without compromising accuracy.
It seems pretty obvious after the example you gave, but in your opinion, what are the advantages for software companies to hire research scientists?
There are so many advantages, especially for a company like OutSystems, which is at the forefront of software development and works in programming languages, an active research field. Having a researcher is a tool that allows solving complex problems whose solution might not be immediately evident as it involves a research effort. Traditionally, what you see in the tech industry is people using pre-made solutions, low-risk options, but this brings other issues and stalls innovation.
How do you see the AI industry evolving in the future?
For us, I see it evolving into an experience in which the development process becomes not so much about telling the computer how to do things but more like a conversation between the machine and the developer. It’s more about the developer saying to the machine, “I want to do this.” The computer then gives them a snippet to enable that action or shows examples or demos and generates code through AI to capture the developer’s intent.
“Even though my primary field of expertise is in AI, I like to think of myself as a software engineering researcher and programming languages researcher”
How do you keep up to date in this field?
I attend conferences, which I also do as part of my role as a research scientist at OutSystems. In my opinion, this is the best way of being on top of what’s happening, knowing the state of the art. I’ve been focusing not on AI conferences but mostly on software engineering and programming languages events. Even though my primary field of expertise is in AI, I like to think of myself as a software engineering researcher and programming languages researcher. If the best tool to solve a problem is not AI-based, I have no problem stepping out of my comfort zone and solving it with different approaches.
What’s your daily routine?
That is an interesting question because I significantly changed my daily schedule as part of a New Year’s resolution. Working from home is not an issue because I’ve been doing it since my Ph.D. days. But I used to work from around 10 a.m. until 6.30 p.m. or 7 p.m.
Now, I decided to try something I’ve meant to do for a long time: adopting a polyphasic sleeping schedule. Instead of sleeping throughout the night, I divide my sleep time into two major blocks, with a few awake hours in between. I use those late-night hours for work, and it’s been some of my most productive time ever. Since my team is asleep, there are no Slack notifications, no emails dropping in my inbox, no distractions, I don’t have to prepare for meetings, I’m 100 percent focused. I’ve been thoroughly enjoying this experience. I then wake up from my second sleep at 10 a.m. and work again until 4 p.m. — with a 30-minute break for lunch while I watch an episode of Rick and Morty. My main drive is to gain free time. I did the math: if I keep this schedule throughout the year, I will achieve an extra month of awake time in a year, which is a lot.
What do you plan to do with the extra time?
To finish a Unity Game Development course I enrolled in two years ago but never completed. And more time for hobbies and new skill sets.
What are your hobbies?
I’ve always loved to play video games ever since I was a kid, and board games came later. I’m also into 3D printing. I’ve been having loads of home improvement ideas for the kitchen, but it’s stuff I can’t find pre-made on the Internet. I have to model them myself and haven’t had the patience yet. But with more time, I hope to have the patience to work on the models I need. During the lockdown, I also began making cocktails, so one of the courses I might invest in is mixology.
What’s your specialty?
Okay, top three video games?
The first Dark Souls, Horizon Zero Dawn… Hmm, this should roll out of my tongue, but I’m hesitating. Okay, I’ll go with the first Halo.
Since we’re all working from home now, can we see your desk?
- Tea mug
- Microsoft Surface for Zoom meetings
- Gift mug (for display only)
- Widescreen monitor
- Office supplies
- My weapons of choice: Razer keyboard, mouse, headphones, and mousepad
- Work laptop
- Cup/mug placeholder
- Gaming tower
- Guardian of the tower: prevents Luigi (one of my cats) from jumping onto it and inadvertently shutting down the computer midgame.
Want OutSystems Engineering blogs delivered to your inbox? Click the Subscribe box below.
Interested in joining our team? Check out some of our open roles.