Interview by Thomas Peham
July 4, 2016
Photos by Dan Taylor
Ramzi Rizk is one of the co-founders of EyeEm, a photo community of 18 million photographers around the world.
Before starting EyeEm, he was a PhD candidate in information systems and was pursuing an academic career. When he dipped into the tech startup scene, Ramzi followed his passion of building and creating software products.
Now as the CTO of EyeEm, Ramzi is responsible for most of the technology behind EyeEm. Working out of Berlin, Germany, Ramzi’s passion is all about photography.
Share this interview:
Thanks so much for your time Ramzi! Could you please tell us a bit about yourself?
I'm Ramzi, and I am one of the founders of EyeEm and the company's CTO. EyeEm is a community and a marketplace for passionate photographers.
We’ve grown into a community and marketplace with around 18 million photographers all over the world. Over the last couple of years, we also built some of the most advanced computer vision technology, focused on automatically categorizing photos and surfacing the best content.
We celebrate photography.
We help them become better photographers. We do interviews, masterclasses, events, and we do a lot of physical exhibitions and other things around photography.
So, you’ve created a lot of community activities around your product?
Yes, it's a community in the purest sense of the word. It's not a community in the sense of a social network. It's really about celebrating photography while becoming a better photographer.
To do that we had to develop world leading computer vision technologies.
We have a big R&D team that focuses on doing two things. One is understanding what is in a photo.
We can recognize up to 20,000 different individual concepts in a photo, from the concrete, like a dog, boy, or car, to the compositional negative space, symmetry, blurred background, to the very abstract notions, like happiness, loneliness, escapism, fear, love, passion.
And on the other side we have developed deep learning models, that can understand quality.
We can look at a photo, and we can understand whether it's a beautiful photo or not, whether it's a photo that will resonate with the community or not, whether it's a photo that will sell or not.
We do this to automate the process of taking photos and making them available commercially.
All with our vision to index all photos in the world.
Last year alone, 2 trillion photos were shared. That’s more than in the entire history of mankind before.
What role does the new app The Roll play in that strategy and vision?
We built this deep learning technology to understand imagery. And to understand imagery we can't just understand photos that people actively share to EyeEm. We have to understand photos that are shared elsewhere too.
We have to understand photos that are stored on your cloud storage, on Dropbox, we have to understand photos that are on your camera, and so on, and so forth.
More content helps us to become better at understanding what's in the photo, and understand the quality of the photo. And it helps us to index the world's photos.
Could you give us some insights on your organizational structure and how you built up your engineering and development teams?
Sure, it's very simple. There were four of us who founded EyeEm. Florian, our CEO has a business background and a big interest in photography. Lorenz also has a business background and was more focused on innovation. Gen comes from the design world working for the leading design agencies in the world. And since I have an engineering background, it was very clear how to split the roles. When we started I was doing iOS, Android, and web development. Basically, I was doing everything development-related. As we grew our initial hires were all engineers.
The engineering team now consists of approximately 30 people and there are two engineering heads. One person heads the backend team and another person heads the R&D team. The third team still reports directly to me.
When talking with other CTOs I have the feeling that there's no standard role definition. How do you interpret your role as a CTO in your company?
A year and a half ago I started writing an article about my job description. I think it's quite indicative that I haven’t managed to finish it yet.
I'll tell you what I don't do, that's a little easier.
I don't actively develop any longer, and I miss it a little bit. I do manage the engineering team and I make sure that they have everything they need to do the best job they can. I make sure they have what they need to push the technology vision of the company. I also make sure that we focus on quality and we’re not just building features without building a solid, stable infrastructure.
So, one of the big roles is to manage people and push the vision of the company.
Another responsibility is hiring. I’m still actively involved in hiring. Both with the screening process, as well as with the outward focused role of speaking at conferences.
As a co-founder I do have some other responsibilities, such as supporting the fundraising process or interacting with other people and exchanging knowledge.
I also think a lot about our internal processes and how we work. I work closely with the product team to make sure that our organization has a cross-functional approach and a mutual understanding of product, design and engineering.
Could you give us some insights on what brought you into software development and how you ended up as one of the co-founders at EyeEm?
I studied computer science, focusing less on the computer science-y stuff and more on the software development stuff. I’ve always enjoyed just building software, and so I did my bachelor’s and my master’s degree in software development.
I started doing my PhD in information systems, focusing on the intersection of technology, economics and sociology, with my main focus on privacy. That was my main research point, not from a technical point of view, but more from a theoretical one.
At the same time I wasn’t that attracted to the world of academia any longer. It felt that I wasn’t impacting anything. At some point I stopped my job at university, but still did my research and started to work in startups.
I joined a small startup as CTO for a little while, then left to join another company where I was offered to build up their mobile and web units. I did that for a while and that's where I met one of my co-founders.
One night, the four of us got together and we started talking about photography.
I've been taking photos since I was six and it's been absolutely my passion. And all of us love photography.
So as we started speaking about this idea of doing mobile photography exhibitions, and building something around it. I brought in some of the ideas that I've been working on in a different space, and we literally spent a night just white-boarding and talking. And at the end of it were like, "We have a business. Let's go and do this."
Would you recommend other people interested in software development to study or to get practical experience first?
It really depends. I've seen both sides of it.
Personally, I've always had some sort of hacker approach to things.
I have the feeling that I should have paid more attention in school.
If you want to go into a specific field, it’s not that easy to just learn it ad hoc. Particularly as we are now doing a lot of machine learning, and a lot of deep learning. You need a very, very strong mathematical foundation. To a certain level it’s a very research heavy field.
If you're looking into software developments per se, a degree might be relevant, but to me it's not.
The nature of education has changed quite a bit over the last few years and it’s changing even more. Chances are high that things you learn at school and the technologies you use, will be out-dated when you leave school.
Could you share some challenges you faced over time at EyeEm?
There is still code in our system that was written five years ago, which is kind of crazy.
You have to learn how to balance improving existing stuff, and building new stuff at the same time.
In the very beginning the backend team was just me and one other developer. We spent the entire Christmas late at night manually entering private IP addresses to scale up, because we had nothing set in place.
Today, you would do things differently, but the challenges you face are also different. Five years ago some things weren’t just there.
I think one technical challenge for me was changing the mindset to understand how R&D works.
As a developer experiencing a problem, you have a route to the solution.
One plus one equals two. And you can get the machine to calculate one plus one faster, or you can get it to calculate it more elegantly. You can do it in PHP or in Java, but one plus one equals two.
That’s the mindset of how we build software.
One plus one equals two.
If you go into machine learning, suddenly you’re faced with statistics. It's no longer the case. One plus one is equal two in 85% of the time with the recall of 95%, right?
Sometimes it's equal banana. It’s not something you can just take and fix.
Could you give us some insights on how testing and bug tracking at EyeEm looks like?
Of course we do continuous integration, but honestly we don’t have a 100% test coverage. We have unit tests, we do behavioral tests, and we have automated test suites on the client-side as well. Especially on mobile clients.
For CI we use Jenkins and just recently we started using Bitrise for building on our mobile clients. We use Crashlytics to track client crashes on iOS and Android. For automated testing we have a bunch of different frameworks, with which we experiment with.
At that point our QA team of two people is relatively small. At the moment we’re moving a lot of the testing done by the QA team to the development team.
And those two QA people are attached to the development team?
From the organizational structure the QA team reports to me. We have a QA lead and a QA engineer, they both report to me.
One of them focuses mostly on web, the other on mobile. The QA team sits with the teams they work with and they also go to their standup meetings and join their sprint planning.
I think a lot of times QA is a bit of an afterthought. Therefore you always need to ensure that you test and track new software properly. I try to enforce that QA are the gatekeepers.
That’s something we struggled with in the past.
Has there been any great resource which provided value to you as a CTO, which you would recommend others to check out?
This is something I struggled with. In many cases you stop programming pretty quickly, because you need to make sure that things works.
At some point Stack Overflow was my absolute best friend. I did not necessarily care a lot of times about learning, as I cared about building something that works really well and that works quickly.
As I’ve been involved with the management side of our business (like project management, team management and processes) I’ve looked into numerous books, but I can’t say there’s just one particular one out there.
Personally, I’ve gotten a lot of help from other CTOs who have been through certain challenges. And talking to other people is something I really try to do, as it helps me to evolve in my role as well.