In December 2018 Bitwala launched the world’s first crypto bank account; a fully licensed German bank account with a Bitcoin wallet and trading directly integrated. In the future, there’s going to be a ton of bank accounts with this kind of functionality and we are immensely proud to say that we are the first.
It was put quite well by Jörg, my co-founder:
As you can imagine, combining old money and new money into one account is no easy work, so who actually built this?
Who we are
Most of the people who work at Bitwala agree that the best thing about coming to work in the morning is the team. I think this is even more true for Engineering.
As of January 2019 we’re 9 developers and we’re looking to double our team by the end of the year. We hail from 8 different countries, each with different specialities and interests so it’s hard to put in words exactly what values unite us as a team, but here’s my attempt:
Quality — We’re building a bank. Not only a bank, but a crypto bank. Mistakes can be very expensive both financially and also in terms of trust. One big fuck up and it could all be over. In our previous products, tech debt had got to astronomically levels as we tried to pile on feature after feature. In our new product, code quality is a first class citizen and we dedicate story points to it in our sprints. Ok, we have to rush to meet deadlines sometimes, but we will always go back and clean up after ourselves. We all take pride in maintaining the quality of the codebase and take it to heart when temporary compromises have to be made.
Ownership — People at Bitwala care about what they do. Engineers feel responsible for their areas and the short and long term success of Bitwala and write their code accordingly. In practice, this means being aware of the larger impact of decisions and caring about tech debt. Sometimes business or management will push hard for something that will be good in the short run, but cause problems down the road. Engineers don’t ‘just do it’ but approach the task in the context of “what effect will this have on the codebase?” . This is invaluable. Without ownership, everything would fall apart.
Learning — we threw away our legacy code base in March 2018 and started with a clean slate. Most of us had collaborated on the previous product (a Meteor application — I started coding it when Meteor was still cool!) and had learned a lot of lessons. This time we were going to do things properly and, given that we didn’t have a product backlog established yet (it was blocked by legal) we invested a lot of time in familiarising ourselves and comparing new technologies with engineers researching an area then presenting it to the team. The result is we have a well-thought out, extremely modern stack and strong learning culture.
Democratic — we don’t have a top down “you have to use this architecture” approach. We truly have a flat hierarchy and new hires will be expected to contribute to the debate and decision making process as much as the veterans. That’s one piece of feedback we get from new hires: they felt like their opinion mattered and that encouraged them to take ownership.
How we work
At Bitwala, we’re using a variation on the squad and chapters approach. The TL;DR version is that we build cross-functional teams. Bitwala isn’t thought of so much in terms of Product handing off to Engineering, but a squad taking ownership of a particular product or feature group.
Currently, we have 4 squads:
- Customer acquisition — landing page, generating leads, championing the brand and message
- Cryptobank — web and mobile bank applications covering onboarding, digital banking, wallets and the trading interface
- Trading — a private api that fulfils the customer requests and the tooling that allows the traders to monitor the system
- STO — planning and executing the security token offering
The bulk of the developers work in the cryptobank and trading squads.
Bitwala uses scrum. We have an established product department (CPO + 3 product managers) who maintain a prioritised backlog and test features on staging.
Typically, after the sprint planning meeting there’s a second engineer-only follow up where we discuss the more complex tickets and ensure that we’re all on the same page.
Some of the tools we use:
- Jira for project management
- Gitlab for version control, CI/CD and code reviews (we’re using monorepo)
- AWS for hosting
- Confluence for documentation
- Slack for real time communication
Our stack
The list of technologies we use is always changing, but here is the core:
- TypeScript
- GraphQL
- React / React Native
- Node
- Mongo & Postgres
- AWS
Who we’re looking for
The kind of developer that we hire ticks three boxes:
1. Smart
We’re not building WordPress sites here… Combining crypto and fiat is a difficult task with very high stakes. We’re looking for clever people who can write good code and learn quickly. What we’re doing isn’t particularly easy, so if you struggle to pick up new technologies and concepts, this probably isn’t for you.
2. Adaptable
We’re a small team for what we’ve built and it has proven useful time and time again to be able to move resources around. We expect developers to work on a number of different projects and areas. This doesn’t mean you’re going to be changing contexts 3 times a day, but rather that we like people to become familiar with more and more over time to encourage collaboration and avoid knowledge pools
3. Cultural fit
The engineering team is a composition of smart and beautiful people who enjoy each other’s company and collaborating together to write awesome code. What we have is very special and it could easily be ruined by hiring the wrong person. The right person is someone who’s a team player, someone we want to teach and learn from.
What happens next
The interview process has 3 stages.
1. Introductory phone call
In a 15 minute call with HR, we get to know the basics about you:
- Professional experience
- What you’re looking for in your next job
- Familiarity with our tech stack
- Salary expectations / availability to start
We also give you the Bitwala pitch and the opportunity to ask questions.
90% move onto the next round
2. Coding challenge
We want to see your code! We ask developers to complete a 4 hour coding challenge (although if they finish earlier, that’s also OK).
The purpose of the coding challenge is to show your personality as a coder. The challenge itself is not technically that hard and for many developers, finishing it within four hours will be a piece of cake. Doing the challenge is one thing, but we’re really interested in how you do it. Based on their specialities, developers embellish in different ways e.g.
- Deploying the finished application
- Creating a beautiful UI/UX
- High levels of test coverage
- Demonstrating knowledge about our tech stack e.g. using a serverless architecture
But don’t get carried away! You won’t progress to the next round unless you’ve a) completed the task and b) have a high level of code quality.
Example task
Create an API which calculates how much your investment had been today if you had invested an arbitrary amount of dollars in bitcoin at an arbitrary date in the past.
E.g. If I had investested $1000 in Bitcoin on 8/2/2017, it would be worth $1628 dollars today.
Build a user interface for your API.
20% move onto the next round
3. Interviews
If you make it this far, we’re pretty serious about you! You will interview with our existing development team for 2 hours. The interview is split up into 2 sections:
Coding challenge
Things we ask:
- Talk us through how you solved the problem
- Why did you use that technology?
- If you had had 2 more hours, what would you have done?
- If you had to extend the functionality in this way, how would you do it?
We might ask you to do some pair programming in the interview. This may be scary, but it’s a great way to see what it’s like to actually work with you.
Technical knowledge / Career
Things we ask:
- What’s the toughest technical challenge you’ve solved so far?
- What’s on your learning list?
- Tell us about a side project
- What’s async / await and how would you use it?
- If you had to build a simple Reddit clone, which tables / collections would you use for the database and how would the relationship between them be?
Cultural fit interview
The team is Bitwala’s most precious resource and we want to make sure that we’re a good fit for you and you’re a good fit for us. You’ll have a chat with some Bitwala veterans or one of the co-founders (most often me 🤓).
We ask ourselves these three questions:
- Would I like to have a beer with this person?
- Am I excited to teach / learn from this person?
- Does this person believe in what we’re doing?
50% receive an offer
We typically move quite quickly and try to make an offer within 10 days of first speaking to a candidate.
Ready to join the team?
Get in touch via the careers page.