Junior Software Engineer
The engineering team at Root strives to be one of the most transformative engineering teams ever. We’re changing the way that car insurance works. We’re competing with companies that have been around for a century and comprise a $200B industry—and we’re doing it with an astonishingly small team.
Our tech stack includes:
Ruby / Rails backend, RSpec for testing
Javascript / React Native frontend, Mocha for testing
Small amounts of native iOS and Android
Deployment to AWS ECS using containers
Buildkite for CI
We recently raised the largest VC round ever for an Ohio technology company:
Our team excels at delivering software to build Root’s products: presently, mobile apps and a backend platform for personal auto insurance. We’ve shaped our team and our way of working around this. Our engineering team would not be the most transformative team at building a mobile operating system. We’d be quite bad at that. We’re exceptionally good at building the type of software that is necessary to invoke change in the insurance industry.
For more information on engineering at Root see https://eng.joinroot.com/
We divide the areas of responsibility for engineers into three major areas:
Technical: The skills and knowledge that make up an engineer’s basic problem-solving toolbox.
Planning and Execution: The ability to plan and execute assigned work beyond basic technical solutions.
Working with Others: The ability to work effectively with other engineers and people in other functions.
What we look for in junior software engineers:
Technical Skills
- Excellent command of basic programming skills.
- Solid knowledge of 1 to 2 languages; familiar with others.
- Experienced with at least one common programming paradigm.
- Basic understanding of client-server architecture and web technologies.
- Fluent usage of version control tools.
- Basic knowledge of databases and SQL.
Planning and Execution
- Writes clean, functional, well-tested code.
- Completes medium pre-planned tasks in an efficient manner, making changes that touch multiple aspects of the application.
- Follows existing patterns and aims for consistency with the rest of the code.
- Able to take on small unplanned feature work and bugfixes.
- Starts understanding and taking business goals into account when making implementation decisions.
Working with Others
- Provides good feedback on other teammates’ work in code reviews
- Works with the engineering lead and teammates to answer questions about their work
- Understands and implements feedback from peers into own work