My name: Andrew Dryga
Company name: Hammer Corp.
Country: Austin, TX, USA
Company info and history: we are helping businesses to sell their goods online by using online advertisements and text messages.
About the job
Job title: Senior Software Engineer
Position or remote work: Remote
Salary range: 60-80$/hour+. Budget-wise we are flexible and value you can bring is the most important thing.
Qualifications or experience required:
We are looking for experienced, pragmatic engineers that can deliver products on all stages of their lifecycle: communicate with business, design how it should work, write code, deploy it to production, and maintain it.
In terms of technology, our current stack is Elixir, PostgreSQL, RabbitMQ hosted on GKE. Infrastructure is managed using Terraform. Culture-wise you should be self-sufficient and more interested in business value rather than indefinitely perfecting the code making it more complex.
Doing some front-end work is a plus, we are using SSR with a minimal amount of JS so that every engineer on a team can add a button without waiting for a separate team to add an HTML tag. ML is also a huge plus because we have a place where we can save our company $$$ with proper usage of it.
What a successful job applicant will be working on:
- Elixir + ML to build a chatbot that responds at least as good as a human would. We answer millions of messages per month for our clients (we answer all inbound messages for thousands of dealerships and forward leads only when they ready to buy a car, more info at https://www.hammertime.com/). Having a bot that can answer on 5% of messages with high confidence with space of future improvement would be a huge $$$ win for us.
- Delivering large platform that will allow businesses to communicate with their customers in the same way as they do offline (speaking with real people, having sales rep where and when a customer needs it, not otherwise). We need help both on Elixir back-end and Elixir-powered SSR front-end.
- Building from scratch one of the products in our backlog (car search app, b2b vehicle marketplace, etc.)
- Implementing a new billing system to replace existing one written in Ruby or migrating some other smaller parts to shut down legacy infrastructure.
- Maintaining our 7-years-old Ruby+Elixir legacy codebase we are trying to get rid of for two years already .
About the interview process
Send your application to firstname.lastname@example.org. It can be a CV or just a description of your experience, what you love and hate to do, your success and failures. Please, don’t optimize for recruiters, we are all engineers so be direct and don’t use keyword volume optimization :). When you write about your past experience please tell us what exactly you were responsible for as part of that job.
We will review all applicants, pick the ones that have the most relevant experience and schedule calls with them. Overall, I’ll do my best to have just one call for the interview itself and to give you an answer on the call or shortly after it. We are not in a rush looking, I would prefer hiring great engineer that will stick with us for a while rather than hiring 5 that won’t.
Hiring is a collective decision here.
Who you would work with
Right now we have a small team of 4 engineers (we joke that we have more products than hands), everyone has 10+ years of experience, everyone with their own tech and business background. So we have a very good experience of how to build stuff and, more important, from our past failures, how not to build it. We all are very welcome, with a good sense of humor. (It’s a requirement ). We are trying to make work fun whenever we can. We are also trying to be extremely proactive in solving issues or suggesting improvements that can make our company more successful.
Business people are also super awesome, our CEO is a serial entrepreneur that knows how to crack walls and how to build dynamic companies that can adjust to changes. There is a lot you can learn from that. And our sales can sell anything we work on even before it’s deployed.
How we work
Overall, I would call our process controlled chaos optimized to bring value to the business. We are also trying to build a culture of transparency inside the company.
We use Slack to communicate with occasional calls when we need them. There is just one required weekly call with engineers to chat about the last and next weeks or to take some group decisions.
We don’t have a work schedule but we need to overlap with each other (we are in CST/GMT+2 timezones) and deliver work we are responsible for. Setting expectations for your work is key here. Working hours are billed using a time tracker.
We use Pivotal as our issue tracker to track delivery progress and we all responsible for maintaining it. We have code reviews. We have good test coverage and CI/CD to staging, promoting to production is a manual command. We don’t write design documentation, because design documents reduce development velocity (you need to change them every time to keep up to date, otherwise it’s a mess). We are trying to write good code that is easy to maintain (sometimes I fail to do so ). We don’t have product/project managers, we all are managers for ourselves. We would take good care of you but we won’t motivate or baby-sit you, we all responsible for our own emotions and if you don’t like something - speak up and we will find a way to fix it.
We just use common sense for rest and readjust when we need.
For us, it’s more important to get a great engineer that can bring value on board rather than settings some virtual limitations on who we can work with. So please ask questions I’m open to giving you all information needed.