I recently had a chat with one of our software engineers — Carlos — to better understand how he became a Go developer and what projects he’s been working on since joining Geckoboard.
From gaming to distributed systems to football, here’s Carlos’ story.
Tom: Carlos, tell us a bit about yourself!
Carlos: Hello! I’m Carlos. I’m from Brazil and work as a Software Engineer here at Geckoboard. I moved to the UK just over a year ago. I’m a big football fan so after Brazil, England seemed the next best place to be!
How did you first get into development?
I’m quite unusual. I didn’t learn to code until I went to university. I thought Computer Science looked interesting so I just enrolled.
Really? Not even a little bit of programming before?!
Nope — I saw the course and thought “I can do that.”
That was quite a brave move.
I didn’t really think of it like that.
I’ve always enjoyed playing video games and was curious how they were made. But even then I never thought “Oh, I’m going to learn how to program.” I didn’t have the resources, like the internet, or a lot of free time to be able to teach myself.
Only when I picked what course to study at university did I give it more thought. I applied, got my spot, and that was it!
Do you have any regrets?
No. Even though I didn’t really know what to expect, I quickly realised this was exactly what I wanted to do. After university a lot of my classmates decided they wanted to get into management, but I loved coding. No regrets!
What would you have done if you hadn’t picked computing or programming? Did you ever consider anything else?
I thought about Engineering — Civil Engineering specifically. I find it fascinating how they build huge structures like bridges, stadiums, and buildings.
Speaking of stadiums, I know you’re big into football. I heard you were pretty good at FIFA?
The game? Yeah, I used to be really into FIFA. I was in the top division but I wouldn’t call myself a pro. I consider myself a “reasonable gamer.”
I think you’re just saying that so you can still hustle people!
[Guilty look] I wouldn’t do that!
Okay. Back to Geckoboard. Why did you join? Were you specifically interested in using Go?
No, I was intrigued by Go, but what mostly attracted me to Geckoboard was my desire to work on distributed systems. I was keen to apply what I’d studied in distributed systems.
I’d mostly done Ruby before, but taught myself Go to try and ease my way into this new world.
I read a lot about how companies were using Go for dealing with distributed systems because it’s good at handling concurrency and parallelism. It works well if you want to build something robust and reliable. Now I really like Go because it’s more straightforward than other languages. Unlike Ruby, you don’t have to think, “Oh, there’s this trick that might be happening.”
Great! Tell us more about these distributed systems at Geckoboard, then.
One of the main challenges we have at Geckoboard is fetching our customers’ data from the various services they use — lots of API requests — so they can display it on their dashboards. We’ve broken this down into many different services.
We have applications for querying third-party APIs on behalf of our customers, scheduling recurring queries so their metrics are always up-to-date, as well as a storage and caching layer that we use to minimise the amount of data we need to request each time.
There’s a lot you have to think about. I really like how challenging it is.
What’s the project you’ve been working on?
Since I joined in April 2017 I’ve been working on our new data platform.
Our old way of integrating with different services’ APIs wasn’t as scalable as we wanted. It was taking too long to build new integrations and maintain old ones. It also didn’t allow us do all the clever performance optimisations we wanted.
We kicked off the project just as I started, so I’ve been working on it from the start.
Geckoboard has to figure out what requests it needs to make to third-party APIs in order to show the visualisation that the user wants. Our approach is modelled on how databases work — internally we’re using something that looks a lot like SQL. So we’ve built this query planner that kinda “understands” the structure of an API, which means it can translate from our query language into a bunch of API calls, filters, and transformations, which ultimately return the data that the user wants to see. The query planner is generic and can work across many different types of integrations, which makes adding support for new APIs a lot easier.
There’s a whole bunch of stuff around this, though, like setting up a schedule for how often the data should be refreshed, and being smart about storing and caching data so that the charts don’t take forever to load.
What’s been the biggest challenge?
Probably data storage and caching! With our integrations, customers have the ability to select what data they want — metrics, filters, time ranges, etc. We then construct a query plan to get this data. When someone adds a new visualisation to their dashboard, we try to minimise the amount of extra data we need to fetch. This makes it faster and avoids us hammering APIs.
It’s not as simple as ordinary storage and caching though. We’ll often have some of the necessary data, so we have to identify what we already have and fetch only the extra info we need.
What does your average day look like at Geckoboard?
I usually arrive just before our daily team stand up at 10:00. Everyone gives an update on what they did the previous day and what they’re going to do today.
When it’s time to pick up something new, I check what stories we have in Clubhouse. Once a week we talk through and plan the next week’s work.
The development process is one of the really appealing things to me about Geckoboard. When I was checking out Geckoboard before joining, I read a post we wrote on why we use Clubhouse instead of JIRA. I like that we’re very direct and don’t have endless meetings.
I also prefer Kanban to Scrum. I didn’t like Scrum’s point based system. You would say “we have 20 points for this sprint” and there wouldn’t be enough points left to pick up the next most important thing. So you’d just pick up the next thing that fit. That felt very weird and pointless.
The bulk of most days is coding, which I really like. We ship continuously. I’ll usually do a couple of code reviews each day, too.
As well as our planning meeting, we developers often get together to discuss the details of “How are we gonna do this?” or “Do you think this approach is sensible?” It’s very lightweight and just when we need it.
That’s pretty much it!
What are your favourite things about working at Geckoboard?
I really like our processes and the general environment. It’s straightforward. You don’t have a lot of pointless meetings and discussions that don’t go anywhere!
I also really like the stage of the company. It’s not so big you end up stuck on some small isolated part of the application. You still get to see everything. But it’s also established — you’re not starting from scratch.
During my first week after moving to the UK I had my induction with Paul, our CEO. He talked about the company’s culture — that he wanted this to be a great place to work. Often when your hear that (at least in my experience), it’s just PR bullsh#t. But at this point I’d been working for Geckoboard remotely for a couple of months and I knew it was true!
Everybody is friendly. When you have a problem, you can ask anyone and everybody is willing to help. This is essential given the problems we’re trying to solve!
How are you finding London?
Cloudy. Cloudy and rainy…
No, it’s okay!
It’s very different, especially coming from Brazil. I wasn’t used to not seeing the sun for a long time, but now I’m used to it. I don’t really care, but it’s funny when I tell friends in Brazil, “It’s sunny today.” They respond, “Oh, you say it like it’s kind of like a miracle.” And I’m like, “Yeah, it is a miracle.”
The football matches make up for it though. I’m a big sports fan and go to almost every home game. Actually, I go to every single home game. Basically every fortnight there’s a home game at Wembley, so I go there a lot. A lot!
Who do you support?
Tottenham? Why Tottenham?!
[Looks slightly embarrassed]
A long time ago, maybe 2004, I was playing a video game where you were a manager of a football club. I wanted to have a challenge so I picked a club on the Premier League that wasn’t great. I saw this one, Tottenham, and I thought, “Yeah, let’s go with them.” I started liking them more, and that’s why I decided to support them.
But they are much better now! (Tottenham are currently 5th in the Premier League!)
One last question, is there anything you would want to share with somebody thinking about applying to Geckoboard as a Go Developer?
You should definitely apply! We have some really exciting and varied development challenges ahead of us. Even better, the team and culture are great so you will also have fun.