I’ve recently been working on a new project at work where I’ll be trying to hire some folks to build a team. The first step has been to write the job description. I thought it would be interesting to expand on what I’m looking for as something of an easter egg for those candidates that do some googling before we chat.
First off, as this is a new team, I’m hoping to get off on the right foot and start building the foundations of a diverse team. I was in a meeting the other day with one of our senior tech leads who is a woman. She mentioned how throughout her career she had the burden of influencing others, rather than people simply trying her suggestions. I thought this was really sad as she is an incredibly smart and kind person. At the same time, I imagined her frustration always being tasked with crafting the argument to persuade her own team members. I’ve had a few rare situations where I couldn’t trust my audience to assume the best and it was awful. With a new team coming together, I want to be exceptionally clear that each team member will have a voice and I’d like to build a team with a diverse set of voices.
As for actual skills, we’re looking for a Full Stack Developer. I understand this can be a loaded term, but I haven’t been able to come up with something better that summarize the set of skills, so I’m going to go with it. My personal definition of a “Full Stack Developer” is someone that has built websites and had some exposure to most of the technologies involved making the actual site happen. For example, if you did a lot of UI work and updated REST API endpoints on the backend, then that certainly qualifies. Maybe you’ve done a lot of small websites for clients and did everything from writing some PHP, setting up Nginx and MySQL and added some JavaScript widgets. You might be someone who primarily does UI work in JavaScript and implements designs in HTML and CSS, but play with your own website in Node.js. All the above I’d say are great “Full Stack” experience. You might also notice that I mentioned UI aspects in all these scenarios. We’re going to be supporting our UI, hence the mention.
Beyond being a Full Stack Developer, you should be someone is interested in different languages and ecosystems. This is not a hard requirement because it is really hard to dig in an learn a bunch of languages deeply. But, if you’ve really dived into one language ecosystem and have some familiarity with others, and most importantly, find the differences interesting, then that is a good thing. We use a lot of different languages and technologies, with each having its own “scene” (to take a word from my DIY punk youth). We’ll be working towards writing code in all these languages and need to be able to dive into these different repos and ensure the code fits in. I’ll go ahead and say that I’m certainly this sort of person. While I probably am most comfortable in Python, I enjoy diving into JavaScript, and Ruby while also programming in Go. To be clear, this doesn’t mean you’ve done professional work in many different languages. It means that you should be interested learning more, and most importantly, not be a language zealot that thinks other languages are inferior. It is OK to have a favorite, just as long as other technologies aren’t put down to place your favorite on top.
Along similar lines, one specific thing I’d like to see is appreciation for tests. The reason being is that different languages have different facilities for writing tests. Ruby has a very rich ecosystem for testing. Python is another with some great testing tools. Go has testing built in, but interestingly enough, I’ve seen a lot of Go coders avoid certain classes of tests that you’t write in Ruby of Python. The reason likely stems from Go being a statically compiled language that offers some type safety, but more likely, the mocking and injection you get in Ruby and Python is simply more difficult in Go! I say all this because my goal for this team is to learn to become experts in this sort of thinking. How can you refactor code to make it easy to manage features and inject functionality safely over time? I’m hoping this sort of deep understanding of managing code, as often seen through testing, resonates as something you enjoy or would like to learn more about.
One other thing I’d like to see is an interest in data driven decision making. You don’t need to be a data scientist or statistician, but experiences where you’ve work towards using data convince or drive decision making is certainly a plus. If that is something that hasn’t happened in your experiences, but it is something you want to do, then this is a fantastic opportunity to learn! We can teach you.
Finally, my last requirement is cultural. You need to be empathetic. We are a remote company and it is critical that you can put yourself in someone else’s shoes, even though they may not be wearing any. We have people on teams solving hard problems and working hard to make an impact, yet it is unlikely you’re going to see it past an occasional Slack message. This makes it really easy to take things the wrong way in discussions or say the wrong thing. To combat this aspect, you should be really empathetic towards those you work with, both on your team and within the company.
The position is for an IC2 and that means we’re looking for someone who has been working for a couple years. This is a remote team with very little travel (ie for team offsites). I’ll be posting the job page when it is available, but feel free to reach out to me if you’re interested or have questions!