Autonomy is one of our core values. Accordingly, we trust you to use our flexible schedule to manage your own time. Instead of micromanaging and throwing up a lot of controls, we want you to create the environment you need to do your best work.
Our office environment is important to us. It’s full of energy, and you will find team members there no matter when you come in or leave. While we expect everyone to spend most of the week in office, there is freedom to work remotely. We have several engineers who work from home twice a week, and we totally support that.
Our team receives 20 days of PTO a year, 5 sick days, and 12 paid holidays. We also cover up to 5 days of bereavement annually and up to 5 days of jury duty leave. And that is just what is on paper. When life happens, we are here for you. We recently had an employee suffer a terrible jaw injury. The message from every aspect of the company was to take all the time they needed to focus on their health. We know life happens, and supporting you is at the crux of our culture.
We have a great environment for parents. We start by offering 10 weeks of paid parental leave. And with our flexible schedule and high level of autonomy, it’s easy to find a balance between work and life.
We run cross collaboration teams, so here is a snapshot from three of our frontend teams working in different areas. Team 1: Our primary goal this year is to mature our micro-frontend infrastructure. We're building a component library on top of a shiny new design system. Storybook is the foundation for our FE design system. We're playing some of our BFF (BE For FE) with GraphQL. We're paying extra attention to performance and stability, and building observability and automation with DataDog and Cypress. We rely heavily on React and have little to no FE legacy codebase. Team 2: We'll be looking to improve our UX across the Platform, and continue adding value to the platform by exchanging manual work we've been doing for our customers with platform functionality. Team 3: We're working on our Realtime Support platform that connects our customers and our helpdesk agents through chat. We’ll be thinking about how this platform will scale in the future, and improving every component - ticketing, chat technology, identity management, and resolution automation. We run cross collaboration teams, so here is a snapshot from three of our backend teams in different areas. Team 1: We are wrapping up a migration from Ruby/Heroku to Python/AWS/AWS Lambda this year. The list of services we've got on Production that's already based on these technologies is growing fast. We're using RDS, Dynamo, and Redis, to solve our data storage and caching needs, choosing the right solution for each problem. In 2019 we've experimented with Node and Go, and believe polyglot programming can play an excellent role if you use it at the right spots. We rely on SNS and SQS for cross-service data hydration, and continue to improve our AWS infrastructure to serve our growing scalability needs. Team 2: This year we're looking to bring full visibility into our platform by redoing our device management infrastructure, incorporating frameworks such as OSQuery and Kollide Fleet. We're also looking to improve our capabilities in gathering and presenting data on other aspects of IT such as network, security & compliance, and SaaS licensing. Team 3: The main challenge is to build a next-generation real-time support solution. We're looking at serving our customers through multiple chat technologies, as well as other modes of communication. When we provide IT support to our customers, there are several needs and goals. We need to understand what the problem is. We need to assign the right level of technician. And we need to provide automated solutions to common requests. The focus, consequently, is on two fronts: one is building a communication-agnostic platform, through solutions such as a chat middleware (Python, AWS Lambda) and some API integration such as with Slack API and MS Teams. On the issue-resolution front, we're focusing on a series of services that can replace manual work with a series of integrations both with device management software (Jamf, Kaseya) and with various SaaS APIs. There’s no shortage of work to be done within SRE! On the tech front, this year we are looking to migrate from Ruby on Rails (Heroku) to Python on Lambda (AWS), improve the architecture of our serverless cloud infrastructure, and improve the reliability and scaling capacity of our MDM-as-a-service offering (which is expected to grow by about 10x over the next two years). To do this, we are employing infrastructure-as-code tools such as Terraform and Serverless Framework to manage Heroku and AWS resources (Lambda, RDS, SQS, and EC2), and developing new technical solutions for de-coupling infrastructure and resource management from the development chain. Perhaps even more important than the technical stuff, a continuing focus for our team will be practicing SRE at the cultural level. While tooling is certainly important, what separates SRE from “DevOps” is a certain mindset that everything can (and should) be measured, and those measurements should be used to give continuous feedback on service reliability to everyone in the company. With our brand-new SRE team, we are helping to encourage this mindset within engineering at every level of our stack and the infrastructure it runs on. This will require significant effort in building and improving observability, monitoring, alerting, and incident management processes, along with all the technical bells and whistles that come along with it. The Data Team is responsible for laying the foundation for a data-driven product culture at Electric. In 2020, a big emphasis for us is partnering with the product and design teams to improve the way we capture and structure data in our product, so that we're set up to pursue machine learning opportunities in the future. We also play a role in each feature development cycle, ensuring clearly-defined metrics are available for everything we build, and that the insights we need to make decisions are at our fingertips. To support all of the above, we rely on a modern data stack, including Redshift, dbt, Airflow, Segment, Stitch Data, and Periscope. Our most pressing data engineering challenges involve making sure we can deliver timely and accurate insights despite the complexities of our distributed microservice architecture.
We run a 2-week sprint Scrum. We share best practices and a general framework, but each team can customize their practice based on what works best for them. Our typical cycle is grooming, planning, stand-ups, and retros. Technical debt and platform improvement are baked into our sprint work. It's budgeted on a regular basis, and you don't have to fight for it. About 20% of the work we do sprint to sprint is dedicated to off roadmap work.
Our teams just finished a deep analysis of what was working and not working with our agile processes and we've greatly optimized our process and tooling. Our focus this year is on tighter MVP slicing, and pre-established iteration on all sizable projects, so that we ensure feedback loops have the space, time, and resourcing, to be executed. And, we are experimenting with basic scrum-of-scrums for cross-team communication.
Our big 3 are unit testing, integration testing, and contract testing. Individual teams are in charge of the quality of the components they own. And, as a company we are working to share best practices, tests, and results.
Contract testing is key for us, and we are working to expand our coverage. The reason why this methodology is key is because one could never cover all the use-cases of each service with automation - it would be heavily time-consuming, and there will always be forgotten cases. But with contract testing we ensure that every use case that is actually being consumed (as opposed to theoretically possible) is covered and protected against regression.
We've also established integration testing with Cypress as a middle ground between unit tests and acceptance tests, allowing us to test business-critical scenarios while still mocking certain elements and keeping to high performance execution.
Teams are free to deploy to Production as they see fit. We trust our feature flagging system to allow for Continuous Delivery, and we work with business teams to expose customers to new functionality as necessary.
A totally anonymous way to ask questions before you apply.