Hi, Minko, please tell our readers who you are and what you do.
My name is Minko Gechev. Currently, I'm dividing my time between San Francisco, California, and Sofia, Bulgaria.
I'm working as a senior developer programs engineer in the Angular team at Google. This position is a mixture between a software engineer and a developer advocate. It allows me to talk to hundreds of developers who're using Angular and work with our engineering team on improving the development experience of the framework and the tooling we provide.
Previously I co-founded Rhyme.com, which recently got acquired by Coursera.
My main focus for the past few years has been building tools for developers. When my primary focus was working on Rhyme, in my spare time, I developed different tools for static code analysis of Angular and Go projects.
I'm very passionate about providing intelligent tooling to developers that can help them build fast, delightful experiences.
I read that you got introduced to web development in 2007, and just a few weeks after, you created your first website for the TV show "Perfect Strangers." What made you start programming, and when was the moment you knew you wanted to become a developer?
I've always been fascinated by computers, but I did not believe that "mortals" can write software for them. This perception changed when I got in high school. I was in a class specializing in mathematics and computer science.
Before that, I was on a crossroad if I should pursue a career as a software engineer or an astrophysicist. My achievements during these competitions and the passion I experienced while building new things directed me to the path I’m on today.
In 2013 you wrote AngularJS Style Guide that got translated to 13 different languages and got over 75 external contributors. How did you come up with the idea?
I was sure that this is a spam message, but still, I decided to give it a chance and scheduled a call with the CEO of the company. He made me an offer and suggested to start working together on the 1st of April. This seemed even more suspicious. A job with a Silicon Valley-based startup with a state date the April's Fools Day? Anyhow, the offer turned out to be legitimate, and eventually, we co-founded Rhyme.com together.
For building their web app, I decided to use AngularJS. It was a well-established technology, but I didn’t find any articles or documents with best practices on using it. This is how I decided to draft a list of best practices that I discovered while using the framework. A few days after that, I published the original version of the AngularJS style guide. It reached out the front page of HackerNews. It looks like it filled a gap because more and more people started contributing to the project, translating it into 13 different languages.
You’ve been a massive contributor to the Angular community since the beginning of your development career, which paid off, and you got invited from Google to join the Angular team. How did you feel when you found out about it?
The Angular team got interested in working with me after I developed codelyzer. Back then, Jeff Cross, who's currently the CEO of Nrwl, first invited me to join as a contractor and later to go through the Google’s interview process. I can’t explain how excited I was. I had the opportunity to work with some of the best software engineers!
This happened on ng-conf 2016, where I presented "Automated Angular Style Checking with Codelyzer". Around that time, I started working closely with the venture capital company, Learn Capital, and they invited me to move to Silicon Valley. Because of constraints set by my work visa, I wasn’t able to continue contracting with the Angular team. I was also very excited about building my own company, so I decided to hold the Google interview for later.
This is how I ended up as a co-founder and CTO at Rhyme.com. I hired the engineering team in Sofia, Bulgaria, and developed most of the critical modules of the product. Working on the platform for a couple of years, I decided to pursue a career in the Angular team. About a year ago, I went through a series of interviews and officially joined Google. Now Rhyme.com is part of Coursera, after an acquisition which happened in August.
Initially, while working on Rhyme, I thought that joining Google will be far less dynamic compared to the startup world. It turned out the opposite. The web is growing fast, and luckily we have a fantastic community that is constantly building new tools and producing excellent content. I'm so excited about being part of that!
A lot of front-end developers have a clash between Angular and React. Both powerful frameworks. What’s your take on this?
I find this very pointless. Both technologies have their strengths and weaknesses, and most post out there which try to compare them don’t capture this. For example, I often see the statement "Technology X is faster than technology Y." Very rarely, I see rational arguments behind such statements. In what context technology X is faster than Y? Are we discussing a time to interactive or how quickly the framework reflects changes in the data model to the view?
You are now the Senior Developer Programs Engineer at Google. Tell me about your role, and what is your main focus?
As I mentioned above, my role involves a mixture of software engineering and collecting feedback from the community. It’s fantastic to collaborate with all the smart and talented people in the Angular community, after being part of it for more than 6 years.
For example, one of the projects that I've been working on recently is ng deploy. This is an initiative to enable the best practices of serving your Angular application by providing automatic deployment to trusted cloud platforms directly via the Angular CLI. On the Angular side of things, I worked on the design and the implementation of this feature. Later, with Firebase, Microsoft, and Zeit, we worked on implementing plugins for their platforms. Additionally, I worked with few fantastic people from the Angular community - Johannes Hoppe and Santosh Yadav, who developed plugins for GitHub pages and Netlify.
Another unique opportunity when working at Google is having direct access to specialists in different areas. Since I started working in the Angular team, I collaborated with folks from Chrome, v8, TensorFlow, Bazel, and much more! It's fantastic to brainstorm solutions to problems that aren't solved yet and move the web forward by doing so!
An essential aspect for us, in the Angular team, is to collect feedback from the teams that are using our product. We’re fortunate to have Angular as the most popular front-end framework at the moment. Over 1.5k projects are using it - from smaller apps like the Web UI of Messages for Android to giant applications like Google Cloud Console.
What is Avocode?
It’s an all-in-one tool for teams that want to code and collaborate on UI design files 2x faster.
Some people tend to criticize the hiring process at Google. It is preferred to hire a Software Engineer who can rotate binary trees on a blackboard over the one with a track record of production-ready (open-source) code. What do you think about this?
Creating a successful open-source project does not guarantee that an engineer is capable of working on robust engineering solutions that can scale with hundreds of millions of users. Often hobby projects get popular not because they are high quality, but because there’s a need that they fill well. Still, maintaining an open-source project is an indicator of familiarity with the technologies it uses. Even if the project follows the best engineering practices, we don't have the guarantee that the maintainer has the qualities required to work efficiently in a team.
The interview process in Google is not about memorizing an algorithm and reproducing it mindlessly on the whiteboard. For example, all the questions I got during my interviews were practical. I’ve often had to solve similar problems while working on Codelyzer or on some of the more advanced modules of Rhyme.com. Most of the problems on a Google interview have an obvious, inefficient solution that the interviewee should iterate over to optimize.
Another important aspect is how to approach the interview. This is definitely not obvious and requires some practice. Many people think that when the interviewer gives them a problem, they should immediately come up with an optimal solution; otherwise, they’ve failed.
On the contrary, the interviewer is trying to work together with the interviewee and understand their thought process. This way, the interview is not only about solving the problem, but also showing that you can work in a team.
What do you like to do when you’re not working?
I like walking down the beautiful streets of San Francisco and discovering hidden local gems.
What’s an interesting or fun fact about yourself we wouldn't find on your social media?
As of today, I've been doing karate for twice as long as I've been programming!