Below is an article originally written by Kahne Raja, Lead Engineer at PowerToFly Partner Stash, and published on March 26, 2018. Go to Stash's page on PowerToFly to see their open positions and learn more.
- Cracking the Coding Interview by Gayle Laakmann McDowell
- Clean Code: A Handbook of Agile Software Craftsmanship by Uncle Bob
- Extreme Programming Explained by Kent Beck
- Stash Invest Careers. Join us!
If you love clean code and you want to help disrupt the fintech industry, then look no further!
Recently, we here at Stash have upped our recruitment game. Over the past few months, I've seen the company double with an outstanding crew of new engineers who truly care about what they do and how they do it. We are dealing with scale issues on all fronts and we need your help!
The mission at Stash is clear. Build financial systems that work for everyone — not just the wealthy.
It's a big challenge and we have a long way to go. A big part of that is growing the team with the right people.
As an engineer at Stash myself, I regularly host technical interviews. Here are some of my notes on what it takes to pass our first stage code pairing challenge.
Back to basics.
Interview preparation takes weeks… even months. Do it in batches and do it well. Enjoy the nostalgia. Enjoy the beauty of math.
Your regular tech work life patterns and practices are important but quite often they are not so helpful when doing interviews. Here are some ideas to help you prepare for the engineering interview at Stash:
- Read Cracking the Coding Interview by Gayle Laakmann McDowell.
- Read Extreme Programming Explained by Kent Beck.
- Watch as much Uncle Bob talking about SOLID principles as possible.
- Ask a friend to test you at a whiteboard over lunch.
- Choose a language and get comfortable with it (without an IDE).
Our first line of code.
When I sit down with you to pair online @coderpad, this is what I am looking for:
- A focus on data structures and algorithms.
- At least one passing unit test.
- A simplification of complex ideas.
I want you to start by slicing off a single conditional in two to three lines of code. Something we can compile, run, test, and discuss.
Example challenge: Leap Year.
Problem statement: write a function that returns true or false depending on whether its input integer is a leap year or not.
If we can get to this place within a few minutes, that is a great start! We should then be able to complete a number of variations within 10 to 20 lines of code.
Try to avoid spending too much time on the following:
- Web app / CRUD design patterns like Controllers and Repositories.
- Database structures and persistence strategies.
- Language comparisons and platform specific features.
After each interview, I assess candidates on the following metrics. Ability to think on your feet, communication, critical thinking, creative problem-solving, debugging, speed, management of competing priorities, organizational skills, and test driven.
Following this initial online code pairing session, you'll be invited in for a half day session with a number of colleagues.
At Stash, extreme programming and solid principles are at the heart of what we do. We move fast and embrace change.
Please don't hesitate to hit me up on twitter — @kahneraja. I'm always happy to help a candidate get ready for an awesome new career at Stash.
Below is an article originally written by Katie McKew, a DevOps Engineer at PowerToFly Partner JOOR, and published on September 24, 2018. Go to JOOR's page on PowerToFly to see their open positions and learn more.
Interviewing is a two-way street: a good interview process should be designed to ensure that both the candidate and the hiring committee have all the information they need to make the right decision. As someone who has (literally) been on both sides of the table in the interview process at JOOR, I can say confidently that our interview process is as much about getting to know you as it is about showing you us. When you interview at JOOR, we try to show you as much of us as possible!
If you're curious about how the interview process works at JOOR, I hope this post answers your burning questions — and if not, reach out to us!
Who are the interviewers?
We want you to meet the people you would be working with on a day-to-day basis! For that reason, technical interviews for engineering positions are conducted by our engineers. The non-technical interviews are conducted by people from other teams you'd be working closely with as an engineer at JOOR, like Product and QA. You'll also get a chance to meet managers, team leads, and potentially some C-level team members (depending on availability) who can tell you all about higher-level company initiatives.
What are the stages of the interview process?
1. Initial contact
Whether you reach out to us first or we reach out to you, you will be in contact via email with someone from our Talent Team throughout your interview process. They will work with your schedule and those of JOOR interviewers to coordinate the best times to meet. If you have any questions during the process, your Talent contact is the one to ask!
2. Phone screen — 30 minutes
Our hiring team will schedule a quick 30-minute phone call to chat with you about your background, your current team structure, your tech stack, what you're looking for in your next opportunity, as well as logistical things like when you would be able to start and any other special considerations. We spread this responsibility across the team so all engineers are trained to conduct phone interviews and are expected to eventually help with this step.
3. Video technical screen — 1 hour
The next step is a video call over Google Meet with an engineer on our team who will spend time diving into your technical experience and do a short coding exercise. The coding portion is done on an online tool called Coderpad, so there is no local setup or preparation required on your end. The goal here is to double check that you're comfortable coding, not to quiz you or trick you. You can pick whatever language you want to solve the problem, so no need to study up something in particular.
4. Onsite interview — about 3–4 hours
The onsite interview (which we've lovingly termed the "Power Day") is the best stage of all because you get to visit our office and meet more lovely people working throughout JOOR! The onsite visit involves a series of interviews, each with 1–2 people from various teams. After each interview you'll have an opportunity to ask questions (and to take a quick break!).
- Problem solving — 1 hour: You will meet with an engineer and talk about nerd stuff! Your interviewer might ask you to describe the technical details of a challenging project you've been involved in along with theoretical problems to work through. This gives us an idea of what it would be like to work with you on a problem, and see how you approach problems and talk through your thought processes and questions. This might be an architectural design question that you sketch out on our whiteboard-covered walls, or a function that you pseudocode. We haven't gotten around to installing a linter and compiler in our walls, so stylistically and syntactically correct code is not a requirement. We also won't waste your time by asking you to implement binary search, so don't worry about digging up your college algorithms class notes.
- Pair programming — 1 hour: You'll meet with another engineer and do some hands-on coding in a sort of informal "pairing" session. Again, the goal for is for us to experience what it's like to work with you and to let you show off your coding chops. We have a couple different coding challenges and we try to pick the one you'll be most comfortable in based on what we gathered about your experience from the previous interviews. We provide a laptop that's all set up and ready for you to code away!
- Tech culture — 30–45 minutes: In this interview you will meet with people from other teams at JOOR, like Product and QA, who will be able to tell you about the product, the project management workflow, and how our cross-functional teams collaborate on a day-to-day basis. They might ask you to describe your team structure and workflows at your current company.
- Management — 30 minutes: Finally, you'll meet with a manager or lead who will be able to answer whatever questions you might have about tech team priorities, higher-level company initiatives, or JOOR in general. This is your time to use to interview us, since we know the best candidates are picking the companies just as much as companies are picking candidates.
Oh geez, an interview that lasts 3–4 hours?!
We know it sounds like a lot — but we promise you'll get plenty of opportunities for breaks and water/coffee/snacks!
What are the technical interviews like?
None of the exercises are designed to trick you or stump you. We just want to make sure you're comfortable working through problems and being hands-on with the code if you're applying for a software engineer position! For all the technical interviews, we like to hear clear explanations of your approach and your thought processes while working through the problems. As mentioned above, the ability to rote memorize and regurgitate algorithms on-demand is not a requirement. We're totally fine with and encourage googling things during the coding exercises, like we all do while doing non-interview coding. What's more important for us to see is your ability to break down problems, deal with new incoming requirements, and collaborate with others.
What should I wear and bring to the onsite interview?
Wear what you're comfortable in; our office dress code is casual. You don't need to bring anything except yourself and your questions!
How long until I hear back after the interview?
After the onsite interviews have wrapped up, everyone involved in your interview process circles up at the end of the day to discuss everyone's feedback. Once the panel has come to a decision, we try our hardest to get back to you with feedback within 1 business day of your interview. Sometimes things pop up that alter this but we try to move at startup speed since we know the interview process is stressful enough already. We're also growing fast so will want to get you onboard as quickly as possible!
I got an offer! What now?! Why should I choose JOOR?
Hopefully you got all your questions answered during your onsite and you have NO DOUBT that you would love to work here! But just in case, here are a few bonus tidbits to help set JOOR apart from other companies you might have offers from.
Get to learn all the things!
When you start out, your manager will work with you to place you on a pod where you'll have the most room to grow and succeed, taking into account what you want to learn and practice. All of our pods within the engineering team are fullstack, so even if you're strictly backend you would get opportunities to be exposed to some React, or learn Django even if you're mainly frontend. Throw some GraphQL, iOS, Docker, Kubernetes, and Postgres in the mix and you'll find a world of learning opportunities all over the stack!
Experiment with a pod rotation
Generally we aim to have a balance where engineers stay on pods for a few months to get to know the same set of co-workers, but folks also move around to get a chance to work on different sides of the product and code base. We also have been experimenting with having new hires start on pods that are totally new to them. For instance, maybe you have never done DevOps before, so start there! On DevOps you can get a high-level perspective on the infrastructure of our platform and get familiar with the tools and dev environment you'll be working with as an engineer. Always wanted to try your hand at building mobile apps? Great, do a rotation on the iOS stack and work there for a bit to try it out. We hire people who can pick things up quickly and love to learn, plus we aim to make sure people don't get pigeonholed.
Culture of communication
In your first 1:1 meeting, your manager will pass on constructive feedback that came out of the interview process we laid out here to let you know what we are excited about and what we had concerns about. This feedback serves as a reference point for your growth (if we ultimately hired you, you can trust nothing will be too shocking!), and helps outline paths towards improving and best contributing your skills to the team. All this is part of our belief in a culture of transparent communication, which you'll find everywhere from our monthly all-hands meetings with our CEO Kristin to our daily open-attendance standups. It's kinda weird when you think about it: when you start at most companies they never tell you their concerns up front, but will still have them in the back of their minds and be evaluating for your improvement on those things. Let's change that and give everyone honest feedback from the start so they can hit the ground running.
That's just a few of many perks of working on the engineering team at JOOR, but if you want to learn even more, come interview with us — we would love to meet you!