Frequently Asked Questions
You have changed a lot from company in the last years
Yes. I code since I was 5 y.o., invented the first messenger in 1996, I worked as Contractor creating e-Commerces in C and Linux, after permanent as Linux responsible in an ISP with 19 y.o. and then I worked for multinationals until I launched my Start up in 2004. Due to the crisis many of my customers closed leaving pending bills with me, few others big companies did a contract with me for a year, I did the required investments, and then they just told me that with the crisis they had to cancel those compromises… few others simply didn’t pay (Spain’s law is not like USA’s law, you’re really screwed against contractual breaches and nonpayment). My relatives also had some economic problems, so I decided to close my company and work as Freelance.
I had to choose between saving my Start up or my family, and I choose saving my family, with all the personal weight that fell over me.
Those were tough times. I was working in the most difficult things, the kind of things that other people can’t do, impossible projects with impossible timings, and so I was much better paid than average. As for many companies it was an important effort, we agreed to reduced periods of time very focused, to address their problems. So I concentrated for short periods from one month to a year, into fixing their stuff, security, assembling a Team or releasing a new version of their product, and then leaved for another company. (That’s why I once I was CTO for less than a month, for example).
I was working for companies that know that I’m worth it, and that a week from me is better than a year from the average person. I was working many hours and they were very successful collaborations.
Usually I extended my collaboration, even if I had better offers, to ensure their product was ready. And I really needed the money, I’m not gonna lie. I was under very heavy economic pressure and would work for the banks, but I preferred to be a bit screwed if helping good guys that needed me. I was well aware of that many companies would had close without my help, and they succeeded amazingly.
In that period, did you want to join a company as Permanent for a long-term commitment?
Yes. I wanted it, but it was not possible for several reasons.
1) I had many offers, but my economic needs were higher than the salaries they could pay for a Permanent role
2) Even the offers for working in Dublin, London, Germany, etc… were insufficient
Having in count that I had to rent a place to live, etcetera… and continue paying my bills, mortgage, etc in Barcelona, the increment of salary of the relocation was not attractive enough.
3) But even if some of the offers I negotiated as CTO in Germany, or in Asia were for more than USD 250,000$ I felt my family needed me there, and when Facebook invited me to Menlo Park for a SDM position, a friend of mine committed suicide and I met the girl I thought it could be the love of my life. So I feel compelled to stay in Barcelona, working remotely for some international companies and travelling for not more than 2 months in a row (Edinburgh has good memories)
I considered few Permanent and Contractor offers but intermediary agencies really screwed it up every time. (Examples: For Perm. I remember a very nice company in Germany were I was the only one who passed the tests, and the company wanted to invite me to see the offices and meet the Team in order to convince me, and the recruiters wanted me so bad to accept, that they lied to me telling that the hotel was arranged and leaved me without hotel in Berlin!!. For Contractor: a multinational really wanted me for their headquarters in Brussels, the placement agency told me to start in a date, so I bought the flight, and having it for sure from the company the placement agency tried to get more and more money until the multinational broke the deal. I lost my money).
3) I scared CTOs
I came from working for a bank, for an insurance company, for vokswagen as Head of a Department, solving heavy technical issues that nobody else could, having my own Start up were I did wonderful things, I had created the first Messenger in 1996…
CTOs really got scared of me. They were afraid of me being given their position in few months. And I’m talking also about companies owned by Dell, for example, as my colleagues inside explained me the CTO being nervous about me being better than him. Disappointing.
That was really sad, but it was clearly confirmed in several cases.
I though that this only happens in Catalonia and Spain, but it also happened to me in the USA. My colleagues inside those companies explained it to me.
In certain moments I had difficulties because I was not being hired because I was too good for every position. Overqualified they would tell. Even multinational for DevOps position chicken run when I created my own MySQL Proxy Cache and Debugger. In a certain moment I had a lot of economic pressure so I had to camouflage myself, like a ninja, as just a proficient Senior Developer and keep my mouth closed. Did my code well, ignored the wrong architecture, and look nowhere else, only to intervene advising not to go that way if I saw clearly that the company was going to have severe problems or huge money losses due to the code of one my colleagues or a wrong deployment, security issues (like in a bank I worked, and other places not following PCI compliance as they should).
4) Big players
I was contacted by Facebook and Amazon, both for Senior Manager positions, I passed all the tests with them and so I was invited to final round interviews in Dublin with Amazon, and in Menlo Park (Silicon Valley) with Facebook. Amazon wanted me to be SDM (Sofware Development Manager in Amazon is like being CEO+CTO+Product Owner+Team Lead), Facebook wanted me be a Manager of a Production Engineering Team (Production Engineering is a hybrid software/systems group that ensures Facebook’s services run smoothly and have the capacity for future growth) so Leading a Team of Web Developers and ensure that their developments have the needed quality and adherence to the Hardware platform (its complexity is not trivial).
I was working 12 hours per day, also weekends, when this happened and I was invited with really few time in the case of Facebook, I had no time to prepare.
In the case of Amazon, I passed all the interviews (Management, Functionalities, programming, Systems, Scaling, Linux, Algorithms), but I was told by a boss in Philadelphia, that the project was too easy for me and that I would be bored quickly. As long as I know they promoted internally.
In the case of Facebook interviews went super-good (Systems, Scaling, Management…) but I failed in one: a sorting algorithms interview, where the Chinese Engineer only knew Java/C (I was told I could do the tests in any language I wanted) and we had sort of problems of communication. I was not understanding if she was talking about Collections, Linked Lists or Arrays, and when I drawn in the board to clarify and asked “is that what you want?” she told me “yes”, but after 15 minutes she came “no, no, no this is not what I want”. This happened three times to me and ran out of time. When finally we understood each other, in the last minute, I suggested quickly several solutions but she wanted me to write the algorithm on the board and we had no time.
I could had passed that if only I had three days to prepare myself. Algorithms in Java are not something you practice when you work 99% of your time in PHP webs. You use efficient built in the language methods, but you don’t implement a heap sorting from the scratch. Working in web requires other skills, as you must server the web / json / files to the users as fast as possible, take care of security, ensure page start rendering asap, ensure it works in all the devices, that they cannot click before the events are set, or that users double-clicking will not raise events twice, create an architecture that Scales, implement caches and fast Databases response…
So in web you’ll never implement an algorithm involving sorted and unsorted, different size arrays, where you can’t use additional memory because, that you’ll have prepared that before in another layer, you will not sort an array while you have a web or mobile user waiting.
Or if you need something with high performance to be used on web with PHP I program an extension in C. But I do once in a year. There I had to Lead a PHP web Team in FB, so I was not prepared to reply to that low-level sorting algorithms questions, if only I had known that I would be asked to build sorting algorithms from the scratch in other languages, I would had passed those tests.
But I would had passed the test if not was for the communications problems. The Engineer told me that I can’t access the items by index, so I thought she was not talking about an Array but a Collection or Linked List.
Now I always program algorithms in Java and C part of my time, so my skills are always sharpen. In fact I invented csort, a sorting algorithm much more efficient than quicksort and I wrote an article comparing performances of many languages that had a lot of traction.
I really loved meeting the people at Facebook and Amazon. They were really clever. I speak with some of the best Engineers in the world at the same level, I really enjoyed, and many of them told me that they have learnt from me several things that they will use in Production. (You’re challenged to propose solutions for problems at big scale, that you never before imagined, and they really loved my proposals )
I did an important economic and personal effort for me at that time travelling to those places, and I believed in both companies, so I felt sad and disappointed by the final result. But one has to be honest, even if it’s not hired.
I knew I would had improved their solutions a lot, but I’m happy that I’m helping many Start ups and I see how I bring the difference. My last success has been fixing the problems of a platform written in phantomjs and nodejs, and made it really scale using PHP, and had the satisfaction that sales from the company raised 300% in just two days. That’s what I do: I help people, I build things that matter, I do my magic to fix problems that no one else can fix.
Would you commit to a long-term project?
Sure. If the company / project is interesting. I like to grow things in the long term.
Have you worked in other countries?
Yes. But I have been few time working in foreign countries for companies there. I’ve spent time in Edinburgh, London, Munich, Hamburg, Dublin, Barcelona or USA but doing short meetings, or working for a month there, and most of my time I was working remotely for companies in other places.
Have you worked remotely?
Yes. I’ve been working remotely a lot. Mostly for companies in Europe. I’ve been working from Barcelona, or from different countries in Europe. When I was in the States I was also helping an European company.
That was much before COVID-19, so WFH is very natural for me. At some point Engineers are the only ones that have not gone nuts with the lockdown. ;) Just kidding.
What’s your opinion on managing international Teams?
Depending on their nationality Difficult. I’ve been managing people from Belarus, Pakistan, India, South America and cultural differences are huge.
I’ve seen incredible things: people telling “yes yes yes” and not doing as promised, people lying, people getting drunk in the sofa and being rude though Skype, people creating parallel companies to compete with their employer, teams were only one is working and the team lead keeping all the money, software sent as final that had bad quality even for an alpha, having 10 tech guys not very good and one single Senior saving everything at the very last moment, solutions provided not caring about user interface…
My best experience is with Bulgarian and Romanian tech people.
I’ve not managed directly people in Israel or in Ukraine, but I’ve positive feedback from colleagues. The same people gave me bad feedback from China.
Outside this, USA, Canada and Europe are similar, but most other countries are totally challenging by the cultural differences. What is common for them is not acceptable for us, and what for us is an standard or something required is totally optional for them.
You worked for several companies at the same time
Yes. It depends on the conditions we arrange.
For Contractor collaborations, with part-time and flexible time, normally we agree that I’ll dedicate x hours to the company and the rest of my time I’ll be free to work for others.
I’m also advisor of several companies, and this takes really few hours per month.
I also work in exclusivity.
What kind of companies are you interested on?
Companies that improve the world, make the world a better place, or that build products that help people.
I do not work for porno, casinos, or betting sites.
What is the best chance to hire you?
1) If you have a good product, that helps the world.
I don’t want to work for porno, casinos, betting sites, tobacco or alcohol companies, slot machines… even if they pay 40% more than average. I also don’t want to work in countries that don’t respect the Human Rights, or don’t see the women as equal to the men.
In general I want to work to make a better world, and I don’t like the kind of companies that take advantage of the weaknesses of the people.
2) Tell me transparently what do you need from me
3) Arrange an interview with enough days in advance, be sure to tell me what you’ll be interested to talk about and how many time would you need. If you want to benchmark me in a certain technology tell me, I know a wide range, and I tend to have in memory only what I used recently. And be sure there is an Engineer. Best companies use an Engineer to evaluate promising candidates. That demonstrates that you have interest and that you understand that Engineers deserve Engineers, and that is the best way to understand how they think and why they do the things.
4) Invite me on-site. Carry on with the flight and the hotel. We can do one day interviews, but this is not cool. Ideally we can work together for three days in real problems so you get to know me for real, and I can know you. Don’t forget to show me the office. If you show me city and we go to nice restaurants is a plus. :)
5) Introduce me Amazing Engineers. Over everything I love to talk with clever people.
6) Make me a generous offer, think that I get very good offers every week and I leave everything behind, and a relocation package.
7) Make things easier for me.
Find me a nice house near the office, or nice not so near and provide me a car and parking, provide me flights to home monthly.
Find me nice gyms near…
We had an interview and you just didn’t mention all the amazing things you have done
Sure. It happens me a lot. In my culture people that does a lot is seen as a menace, and people that explains a lot about themselves as arrogance.
I’m also “over-powered” and this is not accepted by average people in Catalonia. I do not want to make my colleagues feel bad, so in the first minutes I detect their level, and I try not to make them feeling uncomfortable exceeding their level too much.
Some times it plays against me. A multinational rejected me because all the Team said I was good and they liked me, but no one said I was a super-champion that they need desperately to hire. I was being nice to my possible future colleagues.
Also I do not give so much importance to what I did, I value what I do in the present, so I tend to forget those project.
With enough time and a coffee or beer I can explain about when I created a messenger in 1996 with some features not yet nowadays being implemented by competitors, or howI wrote a web browser that translated youtube to Catalan -before google added my language to their official supported languages- about my C++ multithreading program that compares performance across Cloud providers instances, my in-memory NoSQL solution, 2D and wired games I wrote in Java, tools I wrote in Assembler, a very fast e-Commerce I created in 2004, a Portal Software much faster anyone else I created in 1999 etc…
The thing is, if you show me your problems I’m sure I can fix them today.
What’s your opinion on the clauses that tell that all your code and inventions -also that done in weekends- will belong to the company?
I would go binary and say that I can’t accept that. Are deal breakers. But I have to admit I was a bit more practical.
I work a lot with Open Source, I help projects, and I create Open Source projects. And that clauses are simply unacceptable. I don’t think any really good Engineer likes to accept that.
With Amazon, Facebook… they have these rules, but you can talk about that, as you can be contributing to Open Source.
When I decided that it was my time to work again for big multinationals, and to move abroad, we arranged a section in the contract mentioning all my previous creations (Software, Algorithms…) and specifically allowing me to contribute to certain Open Source projects, publish in my blog, to write books… So I found a balance.
When I told you the numbers of unique visitors my company has, you was not impressed. Why?
At certain point scaling is easy. We have a lot of tools that make it easy: load balancers, front web servers, databases, specially NoSql databases that scale exponentially resilient to server failures without data-loss, NoSql in-memory engines… also tools to speed up for different countries, like CDNs, you can artistically architect the application to have amazing caches so reducing the number of servers needed drastically, like an artisan, etc…
I have been leading projects that were deploying to many different cloud providers, and to many instances, and I have been leading, architect, building, scaling and growing projects -mix of Software architecture and Hardware architecture- that where serving 10,000,000 API responses per day and also 350,000 objects per second. Using heterogeneous technologies.
For years I was carrying a laptop with me everywhere, once in the middle of dinner in a restaurant, something kaboom, and I put the plate aside, put the laptop over the table, and fixed it. When a CEO relies on me and the company loses thousands of dollars per minute the service is stopped, I try my best to do well and avoid interruptions. Is not only the CEO trusting me, in some cases there are many families getting their salaries from the success of the company. Some companies competing in a aggressive market. So I really pushed hard to not let them down. I also helped small companies, but with great success, and I would do anything required to grant the survival and success of the company, from coding, fixing bugs, teaching the Team, migrating from Azure to AWS, go at midnight to fix one broken Server, chase a bug for 14 h in Production that will save millions yearly to the company…
So it is really difficult that I won’t be able to help you, and no, I’m not impressed easily. :)
You’ve been CTO and Leading Teams. Would you feel comfortable in an Engineering position?
Yes, if the project is interesting enough yes.
I prefer to be on charge, so I can ensure that things are well done.
But I can work as Engineer in an interesting project as long as I have a very good boss.
I’m updating this line as in December 2019 I chose an Engineering position in Blizzard and I’m super happy to be one more among my amazing colleagues.
I have so much fun helping everybody and interacting with our infrastructure, learning new things, discussing with very wise and knowledgeable and nice Engineers, and the company treats us so well, that I don’t want to change, honestly.
You prefer Development or Systems?
I love Development and Systems. And I think people should be good in both.
In fact companies like Amazon or Facebook treat the incidents in Hardware and bugs in Software as the same thing, an issue in the platform.
I work regularly as DevOps fixing bizarre problems that involve a strong knowledge on Software Development and strong knowledge on Systems.
But if you ask me, I love a bit more Software Development. I love creating things.