This month, we’d like to introduce you to Emad. Emad is a backend engineer. He joined Blacklane in February 2017.
Where are you from, and what is your minimum viable autobiography?
I am from Egypt, a small coastal city called Port Said. It’s the entrance to the Suez Canal from the north. As for me, I studied most of my life in my city, got my computer science degree from Suez Canal University in Ismailia (another city on the canal), and worked in Cairo for a couple of years, first as a full stack developer, then I went into a more specialized role as a backend engineer.
Why did you decide to leave Egypt? How does working there compare to working in Germany?
I decided to leave Egypt in the first place because the companies there aren’t multicultural, so I was not exposed to a lot of cultures. That’s an advantage here. Second, the political atmosphere in Egypt and the economy aren’t good and are getting worse, especially for someone working in the technology sector.
Working in a multicultural place has advantages and disadvantages. The advantages are that you are exposed to different perspectives and you come up with really diverse solutions if you are trying to attack a problem. In Egypt, most of us have the same culture, background, very likely the same education, compared to here. It’s more of a limited perspective. But also, this kind of diversity can lead to misunderstandings. If you are telling a joke in Egypt, for example, your colleagues will understand it, because it’s the same culture, and you know the references. In a multicultural place, it’s different. Also, in Egypt, you are maybe two hours away from your family. Here, it’s harder. You can only visit them two or three times a year if you are lucky.
Not a lot of local companies in Egypt make the exit to another market outside of Egypt or the Middle East. If you are working for a startup in Germany, your company has already exited into other markets. Blacklane itself has actually started to expand into the Middle East. You get to work in bigger markets, too, with bigger data and bigger problems. I like the challenge of working with bigger problems. It challenges you to push your skills. But if you’re just working for a company making content websites, it doesn’t push your skills farther. It’s a natural advancement in your career path to look for bigger companies with bigger problems.
When did you realize you wanted to write code for a living?
Well, in my childhood, I had a dream of becoming an inventor, building new machines and changing people’s lives. In high school, you have to make up your mind about which path you’ll take, and I had two options at this time: working on my painting skills, as I was more or less interested in illustrating, sketching, sculpting and the like, and the other path was getting into computers and coding. Working with computers was more attractive to me. It seemed like the modern way of being an inventor.
So the natural step was to study computer science, and as I grew more interested in it, I started to build stuff for fun, and before I knew it, I had my first freelancing job, then my first part-time job while I was in the university, then full time jobs after I graduated. So every step was natural in its time.
What brought you to Blacklane?
Blacklane has an interesting business with a lot of interesting problems and challenges, especially for a backend engineer. The environment is relaxed, and there is the potential for skills growth and career advancement. So as soon as a recruiter suggested the position for me, and I went through the interviews and discovered the nice team Blacklane has on the floor, it was natural to join them.
What do you think could be improved about the company?
We have a lot of room for improvement in our infrastructure, how we build our services, and how our systems can be decoupled from one another. From a management perspective, maybe we should think about rotating teams between projects and rotating people between teams. When you’re in one place for a long time, you get into a comfort zone you don’t want to leave. You are afraid to leave it. Keeping yourself on your toes makes you more active and less afraid of taking risks. It also pushes you to improve your skills.
As a developer, how do you feel about living and working in Berlin?
For me, it’s extremely comfortable, the culture and principles people live by is suitable for me. Also, there are always meetups and startups everywhere. It feels like Silicon Valley here, so if you’re the kind of guy who wants to talk about programming or a sci-fi novel you read a couple of days ago, or you want to attend a meetup about your favorite technology, it’s definitely the place to live.
Why do you enjoy staring at a screen for hours and hours every day, manipulating symbols that tell a machine what to do?
It’s what comes out of it at the end. Whatever I’m doing on that screen solves a problem for someone. That creation that comes out of all this typing we’re doing for hours fascinates me, it’s a product of both science and creativity, that affects thousands and millions of people that interact with it. It’s always tested and always under pressure and getting better constantly. I dare to say it’s like a living creature that evolves.
How do you find working on a team versus working alone?
Well, both have their own advantages and disadvantages. It boils down to what you prefer, what works for you and makes you comfortable for a long time. I couldn’t work alone for a long time, I feel isolated and start doubting my skills. Interacting with a team every day shows you your true self. It shows you your skill level and where you should push yourself next, so when I have the choice I will always work with a team.
Do you have any favorite languages, technologies, or frameworks? What do you like about them? Are there any that you secretly despise?
I always aim for two principles: simplicity and consistency.
Simplicity to me is that your code should be understandable – both as a solution and as an implementation for that solution. You can always come up with a clever solution that no one understands why it solved the problem, and you can also come up with a simple solution that is implemented in a twisted and obscured way, so it’s a challenge to have a simple solution and a simple implementation, as well.
And consistency for me is solving the same problem in the same way as we did in other parts of the same project. As usually there is more than one person working on the same project, it is tempting to use different solutions to solve the same problem, as every developer has a personal point of view. So I prefer to be always consistent and follow other people’s footsteps if it was implemented in a different place. I either implement it the same way or change all the old solutions to match the new one. That produces a homogeneous project that lowers the barrier for new contributors and makes the project in general simpler and approachable.
I usually like technologies that promote these ideas. The Go programming language, for example, is following these principles. Ruby is also a language that advocates creativity, but the code is always readable and humahuman-friendly
lking about things that I don’t like, it’s over-engineering. As our field of work encourages creativity, it’s common that people get into a creative mode and produce a beautiful project, but then they are the only people on earth who understand it, leading to hard-to-maintain code. Being creative is a good trait, but code maintainability shouldn’t be the cost.
What are your favorite kinds of problems to solve and why?
Two kinds of problems. The first one includes a lot of data that you need to digest in order for patterns to emerge and to find useful information. For example, I have a side project where I’m aggregating newspapers from 22 countries and then trying to find out information from this data. That’s the first problem. The second thing is programmer challenges, like in Hackerrank, Project Euler, ACM-ICPC. These kinds of websites give you progressively more difficult challenges, and you have to solve them with some programming language of your choice. They try to challenge you intellectually. So that’s also something that interests me. I enjoy solving them.
There is a third thing, actually. A new thing. I recently became more interested in peer-to-peer networks. Not the blockchain, but building these networks. It’s a technology that’s been around for a long time, and it has the potential to revolutionize a lot of applications. Most people go for the client-server solution without thinking. We take it for granted these days, but actually, peer-to-peer networks can be a solution for a lot of problems for a much lower cost than a client-server architecture. And it has a lot of smart ideas for communicating and exchanging data. It’s a totally different way of exchanging information, but most people just don’t see it.
What are you looking for in a company when you’re considering a job? What is most important to you, and what is least important?
I like to solve problems. I look for interesting problems that challenge you intellectually. Another factor is the team. I have seen some extremely smart guys that are just too hard to deal with, so I like to work with nice and honest people who are approachable and like to share their knowledge.
When I joined Blacklane, there were two reasons. My team was nice to me in my interview. So was the CTO. The second thing is that the business is interesting. There is a lot of data you can process to get more information to help users. We can optimize our products with this information to make more profits for drivers and make the user experience more comfortable. There’s always more research we can do using this data and always ways to improve our solutions.
What role do developers have in the world, do you think? Are we just passive code robots, or do we have responsibility for the impact of our work on society?
As I mentioned earlier, I see programming as a modern way of being an inventor. You don’t need materials or chemicals to work with, it’s a cheap and a very approachable way to invent a new thing.
As for social responsibility, I believe our field was advanced an order of magnitude faster when people adopted the open source approach. Now we can build new stuff and show it to people. They can, in turn, use it to build other, bigger stuff that solves bigger problems. Collaboration is not optional anymore. As for how we should collaborate, it’s different for every person. Some people prefer to write a book, share their code on GitHub, speak at conferences, give workshops for free, or be a mentor for a small number of people, so everyone has their own way to give back to the society of developers.
If we are talking about society in general, I believe that we are faced with very complicated social problems while we’re working as software engineers. Decisions made in one popular application can affect an enormous number of people. Adding one feature to your application can change its users’ lives for better or worse, so we have to be aware of that social responsibility at all times as it’s a hidden part of what we do, but often we don’t see it clearly.
If you could change one thing about Ruby development, what would it be and why?
Ruby is a very good language, but it clearly trades off performance with developer productivity. I can’t say it’s a bad thing, but having the option to tune the amount of that trade-off may be a good idea, so maybe a simple idea like turning off metaprogramming in favor of code generation could open the door for a compiled version of Ruby that could be extremely fast. That could also fragment the community, so it’s a double-edged sword, I guess. That’s maybe the only idea that comes to my mind.
What is it like working in a different country, and culture, than the one in which you grew up?
It’s fascinating. I like it when you’re telling your colleagues about your country, and they are doing the same. There is something that feels good about knowing other cultures, how people live, the similarities and differences with how you saw life before. It’s truly fascinating.
What do you imagine about your future? Where do you see yourself many years from now, and what do you hope to have accomplished?
Five or six years ago, I imagined myself having a very successful company in the technology sector, building a huge project that millions of people would use in their daily lives and that improves their lives. Now, I think that the “company” part doesn’t have to be part of the dream. Building a product that millions of people use does not have to be combined with a company. For me, my future is still about building something useful for people that millions of people use. This is kind of my life dream. I don’t have to be rich, but I have to be useful.
At Blacklane, we have a diverse and growing engineering team. Every month, new faces appear among us, often adding to the long list of countries that are represented here. We started this interview series, because we wanted to give our developers an opportunity to tell us about their background, share their interests, and answer the question, “How did you end up at Blacklane?” We figure everyone has a story to tell, and since Blacklaners come from all over the world, and more and more work all over the world, it’s fascinating to hear about what brought them to our company.