Five years ago I came back to Spain after a year studying in Sweden. I still had one year ahead of college to get my degree but I was already feeling I wouldn't be able to make it. University was keeping me from doing – and learning – things I really liked, it was like driving with the brake pedal down.
By that time I had a spare room in my old flat in Madrid, it was little and without A/C but it could fit a couple of desks. I convinced my friend Jose to start "doing something", to build a company for making money doing things we really loved. He came up with the name Diacode, we bought the domain and a couple of desks and we started meeting everyday in that little room.
It's been a long ride since then, and practically everything has changed during that time, here is the story.
Culture: embracing remote work
Nine months after we started in my old flat and after getting some traction with bigger and better projects we decided to rent a cool office in Madrid. It was our first office so we wanted to find something cool. We finally decided for one that had a swimming pool in the roof, is there anything more cool than that? The office was cool but paying 1000 € / month for an office probably wasn't the smartest decision possible.
Despite of having a great time in the office, Jose started pitching me with the idea of remote work. The office was quite far from his home and the university campus (I finally dropped out from college but he decided to finish it). With time I realized that what Jose was propossing made sense, but by that time I wasn't a fan of the idea, I really liked our office and playing ping pong everyday.
At the end of 2012 things got complicated so we decided to leave the office to reduce costs. A few days later Jose left the company to focus on finishing colleague.
Without office and being alone I spent a few months working from home, freelancing under the name of the company – I must admit that was tough. Finally I convinced Victor, our current CTO, to join me in a new adventure for Diacode. Victor had previously worked for Diacode for 3 months when we had the office, but he's not from Madrid and he didn't like the experience of living in a big city. So it was clear: I was forced to embrace remote work.
It was hard at the beginning but we quickly found the way to make it work. We designed the new Diacode around the idea of remote work – and it worked.
People: growing up to 5
With our new remote culture we open ourselves to projects from anywhere in the world. Victor and me did a month long trip to San Francisco and got some clients there. Things started to go well again and we couldn't handle all the work we had.
We were needing more devs so we did our first remote hire: Ricardo. He was the perfect match for us: a talented developer who happened to be passionated about surf – as you probably know, the best surf places are not usually "tech hubs", so remote work made a lot of sense to him: he could live in a small town in Asturias, next to the beach, while keep crafting code for clients anywhere in the world.
Bruno was a promising developer who I met in Wayra, he didn't have previous experience with Ruby but I knew he would be able to learn fast (as he did). His previous experience working in a design oriented startup has been very valuable to our team.
Artur was our first non Spanish hire. Hiring him meant we had to switch all our internal communications to English, but the effort definitely paid off. We all have improved our English skills and language is not a barrier for us anymore, we can work for clients anywhere in the world and we can hire people anywhere. He's now based in Poland but previously he spent a few months travelling through India while working remotely.
We don't have plans to hire more people in the near future, we like being a small company. Being small makes it easier to optimize for personal work life balance and we're not forced to accept low quality projects just to keep the payroll.
Tech: from PHP to Rails and React
When Jose and me started Diacode we both were PHP developers for many years. We were working with CodeIgniter and Doctrine, but by that time PHP felt like it was close to its end of life cycle. I had some experience with Django, a Python framework, so we gave it a shot in a couple of projects. However Jose was very attracted to the Ruby world, in particular to the Ruby on Rails world. I'd say he was probably more attracted by the Rails community, which was way more "agile" oriented compared to the PHP one, rather than the technology itself. In any case, it seemed like something "cooler" so we went for it.
We did a few tests projects with Rails and got surprisingly good results. So we keep doing Ruby until today. Ruby also introduced us to other interesting concepts such as testing (TDD / BDD), user stories, Scrum, etc.
Recently, as web applications have become more complicated, we've observed how Rails lacks a bit of power for the front-end aspect of the work. With the help of Ricardo, we're now experiment with different flavors of React.js integrations into our projects and I have to say we have pretty much the same feeling we had when we tried Rails 4 years ago.
Money: from fixed budgets to hourly rates
The first project we built in Diacode was a simple ecommerce site for a friend. We charged him 50 € – the whole thing. Every time we got a new project we basically doubled our rates. With the increase of rates projects also got more complicated and time consuming.
After 8 or 9 months since we founded the company we got a project where the total budget was around 30,000 €. At that time it seemed like a HUGE amount of money. That project was basically the reason why we rented our office. However that was probably the hardest and longest projects I've been involved in my life. As the budget was fixed, we spent uncountable amount of hours negotiating over what features were included in the budget and what didn't. We struggle to meet the deadlines and meetings with the client became a nightmare. We were involved in this project for more than 2 years and a total amount of around 35,000 €. Believe me, that money doesn't pay the hours we committed to this project.
With that lesson learned we realized we had to radically change our approach to billing, client communication and project management. We switched to hourly rates and daily (mandatory) hangouts with clients. It was hard to sell at the beginning, but once a deal was closed we could sleep much better knowing that, no matter what happened, we wouldn't run into a new infinite loop of extra hours to meet a deadline without being paid for it.
Today our hourly rate starts at 50 €. The same amount we charged for our very first project. However it is not all roses in the hourly rate land, we also made mistakes and despite of having an hourly rate deal we still have a client who owe us $32,000. The lesson learned there is that we should stop working after an invoice is unpaid for more than a week.
In the future we may experiment with weekly invoicing, as counting hours is not something we like to do, but until then is the safest way we've found to avoid shooting ourselves in the foot.
Marketing: open source and talks
In these years we learned the importance of having a strong presence in the development and startup community. That's why we're doing a bigger effort on releasing open source projects and giving talks in meetups and conferences.
We still have to improve on this aspect and dedicate more time to write in this blog and share with you all the things we're steadily learning.
For the next months we'll be focusing on improving our new Rails & React stack. We're looking forward for Rails 5 and seeing what we can do with ActionCable. We may play with other technologies such as Elixir and Phoenix – we love Ruby, but we're not married to it.
We would also like to experiment with something we call development capital, where we basically would invest our time into a project we like in return of a combination of cash and equity. It's a model we haven't tested yet but we think it could work very well for promising startups.
On the other hand, we are doing a big effort on TLKR.io, our very first product – as in not for a client – which started as a WebRTC experiment and now we expect to grow and make successful. We really believe that WebRTC can change the way people learn and practice languages.
As a note aside I want to say thank you to all those friends and family who have been supporting us during these 5 years, during the good times and specially the tough ones. Also thank you to all the clients we had in these 5 years for trusting our team for your projects. Diacode wouldn't have be possible without you.