I had the great privilege to interview Eli Cortez, co-founder of Neemu, one of Brazil’s top e-commerce tech company, which today powers search and recommendation engines of the biggest e-commerce websites in the country. Eli received his PhD from the Federal University of Amazon, winning the award for best Computer Science thesis in Brazil. Afterwards, he moved to the USA to work at Microsoft as an applied researcher.
Univserity, Neemu, then Microsoft Research
WLAD: Hi Eli! Tell us about your background as a programmer. What did you research and work on?
ELI: I received my PhD and co-founded Neemu with four friends and four professors. I worked at Neemu in 2009–2013. Then in 2013–2014 I worked at Microsoft Research as a visiting researcher; it was like a postdoc for a year. From 2014 onwards, I am still working at Microsoft, but in a product group. Specifically, I’m in the Sharepoint/OneDrive team as an applied researcher. It’s a research team that applies machine learning and data science here at Sharepoint and OneDrive.
WLAD: In your opinion, what is the most import ability for a programmer to have, and how do you develop it?
ELI: I have a strong background in research, as I received my bachelor’s, then my master’s degree, then my PhD, all in a row non-stop, so maybe my opinion about programming isn’t the most relevant one. Nevertheless, considering my experience in the field, both in research and product teams, I think it’s important for a programmer to know how to solve problems, regardless of the programming language used to implement the solution. I think knowledge of algorithms is necessary. You need to have an extensive and well based knowledge of algorithms to solve problems. A programmer should also know what the implementation and running costs of the algorithm are, what are tradeoffs involved in the choice of an algorithm A, B or C for a given problem.
I think these are some of the most important abilities for programmers to have. Besides, another subjective ability, that I think is very important, is to be humble when you don’t know. Go find the answer in an external source such as the Internet, or in many cases, let go of your pride and ask your colleague by your side how it’s done. I think that it’s not embarrassing to not to know how to do it. The real embarrassment is to shut down, not admitting you don’t know and instead, thinking that not knowing is a problem.
WLAD: What was the biggest mistake you made when programming a system? How did you fix it? What would have prevented the mistake?
ELI: That’s a bit hard for me to say. I did early prototypes mostly in my academic years, and one of the biggest errors I always made, and ended up making many times during my bachelors, masters and PhD, was to build programs thoughtlessly, without thinking about the specifications, and without thinking about code reuse and organization. Many times, I would code just to meet the specific demand of the hour and in the end, I had to rewrite my code many times if I wanted to change A, B or C. Many times, after a few weeks, I couldn’t even understand what I had implemented earlier, so I think this is a big problem we end up facing while studying.
In the business scenario at Neemu and here at Microsoft, I can’t remember any big problems I caused. Most of the time especially at Neemu, we worked with problems that had a huge impact. Neemu was a commercial search engine working online, so we were always extremely cautious, always including rollback mechanisms, etc, testing it a lot before deploying it live, so I don’t remember any big problems caused by me.
Education in the University
WLAD: What do you think about formal education in the university? Do you think it really prepares a programmer? What are its good points, and how is it lacking?
ELI: To be honest, I think that college education, well, I’m not sure if we can put that in the interview, because I can only speak about one university, I’ve spent most of my life at the same university. Today, looking back, I think it was bad, not considering a few good disciplines I got from devoted professors. You know, we have problems with our teachers. Since it’s a public education system, some teachers, career teachers, are not really devoted to their students. In short, I don’t think my education was good.
Not only because of the professors, but also because I think we enter the university, at least I did, with the mindset that it’s not necessary to put in too much effort, especially after receiving a few good grades. I feel I could have been better and more dedicated. One way to overcome this is to bring in more practical aspects in stochastic modeling, or even in networks, for example. We knew that these disciplines have practical applications, but we didn’t see any practical examples, or realistic applications. They could motivate the students more by showing realistic applications and developing partnerships with others in the industry. I think this kind of stuff can better motivate and deepen a student’s knowledge.
One thing I have noticed in North America (the USA and Canada), and this is a huge difference with Brazil, is that while getting a Bachelor’s Degree, people have the opportunity to get internships to get to know how the industry works. I think this helps a lot. It can help you figure out if you want to be a computer science professional with lots of knowledge and focus on a specific field, or if you just want a regular job. In Brazil, we don’t have this chance because the university ends up distancing a lot from the industry and from real products, so at least for me, there is a huge gap between what you learn at the university and what you need to do and know when you are out there in the real world.
North America vs. South America
WLAD: You have experience working in Brazil and in the United States. What are the main differences in the work environment? What do you miss the most from Brazil being in Redmond?
ELI: It’s very hard to compare, because in Brazil, I had an academic career, and then I worked in a company which I co-founded, so that was a reality. Now I’m working here at Microsoft as an employee. First I was in a startup in Brazil, so it was a much more heterogeneous environment, I had a leadership position in the startup, I took part in meetings, and the office was an open plan. I prefer the way things are here, we have real offices, with each engineer in his or her office. I think communication in Brazil is a bit better, but here we have a lot more to process. In a way this is good, it helps you to follow a methodology, but sometimes it distances you from people. It’s a big company here.
I think what I miss the most from Brazil are my friends and family. I think a big difference between working in Brazil and working here is that you have the opportunity to be in touch with all kinds of people, and this is a very enriching experience, in the sense that you can see what the reality is in other parts of the world. This is a multicultural place, so you see the reality from people with completely different backgrounds, and it’s a great experience. You can hang out with brilliant people, as well as not so brilliant people. I think the opportunity to work with all kinds of people is something we have here. It can happen in other places too, but we have a lot of that here.
Another difference that I feel is that in the United Stated in general, the worker, related to economic and social issues, is much more valued, in the sense that the society as a whole, not only the companies, understand that the worker can make a difference, an impact. And people here agree that you don’t have to overwhelm yourself with work, working 24 hours a day to make a decent living. In the US, I’m reassured of this. I know I can work with absolute certainty, that if I do a good job, I won’t need to be corrupt or immoral to have a proper life and be able to provide for my family, to have a car, or a house. Unfortunately, I think that reality is increasingly further away in Brazil.
Working on Microsoft Research
WLAD: Tell me about your job. What exactly are you working with currently?
ELI: Regarding my job, I cannot give a lot of details. What I can say, on a higher level, is that I work in the Sharepoint and OneDrive products. I work with applying machine learning to help resolve several problems, such as time series analysis, and all other kinds of problems that arise in cloud computing systems. One thing that I wanted to say is something that I should have said in the beginning. Everything that I’m saying here, Wlad, it’s good to clearly state, expresses only my opinion, and in no way expresses the opinion from Microsoft, my boss, or anyone else in here, so the liability of everything I’m saying here falls only over me, ok?
WLAD: Sure. What do you like most about working at Microsoft Research?
ELI: Well, what I like most about working in Microsoft, and in Microsoft Research is the opportunity to work with different people with real and challenging computational problems. They are the kind you don’t get to see or learn about at the university. Here it’s on a higher scale. You are living with really smart people from all over the world, and you have the opportunity to collaborate with brilliant people, people who have won awards in computer science, and even Turing Awards. We have Turing Awards here at Microsoft! So you have the opportunity to hang out with these people and watch their presentations, so it’s an environment of intense learning, and I value this a lot.
WLAD: If you have to hire a programmer, what are the factors that you would consider?
ELI: Well, I’ve been through a lot of interviews in the last two years. If I had to count, maybe I interviewed with over 12 places, let’s see. I had a few interviews at Microsoft, LinkedIn, Facebook, Google, AT&T Research, Yahoo Labs, Katar Research Institute, etc. I’ve received a few proposals from Microsoft, Google, AT&T, Katar, but I didn’t get any proposal from Yahoo. I didn’t pass LinkedIn, and I quit Facebook’s process in the middle because I already had a better proposal to work here.
So looking back at the countless interviews I had, and also the times I interviewed people, I think the important thing to look at in the candidate is the capacity to solve problems, how well rounded and proactive he or she is, and besides that, something that is very important, something I try to capture when I interview, is how well the person would adapt in the team he or she wants to work on, if the person is easygoing, active, or if it’s a closed person, or an arrogant person, I think it’s important to take all that in consideration. I’ve already interviewed two or three people in the months I’ve been working here.
WLAD: What are you currently studying regarding information technology or computer science?
ELI: Everything related to data science, such as manipulating large datasets and dealing with a lot of statistics. I think this background is lacking in most computer scientists. My statistics and probability background is very bad, and machine learning involves a lot of this. One of my job’s objectives is to take important actions, working with actionable items, so for making this decision you must be sure, and first perform trustable experiments. So that’s what I’ve been studying, a lot of data science.
WLAD: What’s your favorite programming language for hacking and small projects? Why?
ELI: My favorite scripting language is Perl, with was the first one I learned. I fell in love with it because it’s very easy and very powerful. It’s super easy to do anything from it. But there is a problem with it and it’s that it’s easy to get lost in Perl, not understanding your own code. I’ve been using Microsoft C# a lot at work, and I find it to be very smooth to create programs easily and fast. It looks a lot like Java.
Coding and Music
WLAD: Do you think music helps programmers code better? Do you listen to music while programming? What kind of music?
ELI: Regarding music, sometimes I listen to it. I think it helps to code. But I’m a person who gets distracted very easily, so if its music I already know, I end up getting lost in the lyrics, trying to sing along. So usually when I’m coding, I stay in silence. When I play some music, I think 80% of the music I listen to is Christian Pop/Rock. I let some light music play in the background, but not very upbeat, something light like Switchfoot ,I don’t know if you know them. I like something light just to get in the swing of things.
WLAD: How did the idea behind Neemu emerge? In the earliest stages of the startup, what represented a bigger challenge, programming or other stuff (marketing, funding, etc)?
ELI: The initial idea behind the startup wasn’t mine. My other colleagues had the idea and started it, and invited me along. At the time, I was starting my PhD and they asked me if I wanted to join in so, I said, “Why not?” I took this as an opportunity to do something different with my friends. So I did not have the grand idea of building Neemu. In the beginning, we started to make a website only to compare prices of e-commerce stores, and we kind of split the work like this. One person handled scrapping offers, one person did the data extraction, one person classified the data, and another created the website’s front end. We spent like one year at this, creating and perfecting this system.
What was the greatest challenge? Well, we had a decent system, very reasonable, fully automated, and we only had to maintain it when things broke, like when a wrapper or scraper broke. But the website had no audience, and there was no funding to help advertising the business, it spread only by word-of-mouth, and our word-of-mouth was quite weak. While we had no funding, I was occupied with getting my Ph.D. The other founders were also busy with other tasks, so only one person was in the business full-time, and we had no money to pay salaries, we had nothing. A tipping point at Neemu’s history happened when we decided to stop doing the website, and instead provide this technology we had developed, to scrape, search, recommend, extract, and try to sell all of this as a service to other companies. At this time, we ended up having a great opportunity to sell this type of service, and things took off from there.
WLAD: You won the award for best PhD thesis the year you graduated, while also co-founding a successful startup. What’s the secret for this enormous degree of success?
ELI: I wouldn’t say enormous degree of success. I believe I did have success, and the main secret was first the will of God, who put me in this place, gave me the opportunity to do this, and secondly, I had a lot of support from my family, from my wife, and my parents, during my entire career from Bachelors to Masters to Ph.D. Third, this is more related to work practice, I had the opportunity to work with fantastic people, both at the startup and during graduate studies, my advisor, my friends who founded the company with me, who are still working there. I think this team is the key to the success.
It gets a bit cloudy and they end up saying, “Oh, you won the award alone.” but the award was earned not only by me, but by my advisor and by all the others who helped me in my thesis, people that worked with me, masters and undergraduate students. Regarding the startup, as you know, I’m only one of the co-founders, so I’m only responsible for a part of the success, all the rest is credited to many other people, mainly my colleagues from college, and the other people involved, the partners.