Clarity

Senior Software Development Engineer

Clarity

International, Anywhere; 100% Remote

March 23, 2022

Summary

We’re looking for experienced software engineers to work on our global network of air quality and climate monitoring. Clarity sells low-cost devices that measure the environment and pollution in the air. These devices relay data into a global network that monitors air quality to solve big health and climate challenges. Your work will help bring cleaner air to the world.

We’re looking for several friendly, competent developers who want to write good code and make a difference in the world. You might be front-end strong, back-end strong or full stack. We care more about what you are capable of than what you’ve already done.

The Company

Clarity is a globally distributed organization with headquarters in Berkeley, CA. We are empowering the world to reduce air pollution. We do that by making it possible to measure and understand air pollution issues and then take action.

Today, when cities or industrial facilities want to measure air quality, they have to spend a lot of money on expensive equipment, installation and maintenance – to get the accurate data needed to attack air quality problems.

Clarity has a better approach. With many low-cost devices spread over a geographic area, our customers can perform hyper-local monitoring where information is relayed into the cloud and then flows into web based tooling to drive analysis and decisions.

We envision a world where novel sensing technology, IoT and cloud computing simplify air quality measurement, enabling cities and industrial facilities to scale up the number of monitoring sites and take data-driven action. Our Sensing-as-a-Service solution for air quality is currently deployed in over 60 countries and is changing how municipalities and industrial facilities approach air quality.

Our Team



We are a diverse group of engineers, scientists, and makers – motivated by doing something good in the world. We have software engineers around the world and a  hardware team centered in Berkeley. We care about staying current with technology, continually improving ourselves and applying best practices in our daily engineering.

On a given day, the software team might be team-designing a slice of capability from a web front-end through to microservices hosted in AWS, or figuring out a better way to aggregate a time-series of data coming from many points around the world, or just working quietly on separate functional areas that will come together later in the week. Or just laughing and telling stories during a daily virtual meeting.

Because we work closely together, we care about empathy, helping, and making ourselves better engineers



Our Tech Stack



We’re primarily in AWS. Getting the right architecture is important.

The front end is Node.js / React. Our users interact via a full-featured web app and RESTful APIs. There are some older web apps in Angular that we are moving away from.

The back end is crafted as an event-based data pipeline and microservices. We use a lot of AWS services, High volume / high reliability data flows through Kafka and processing is primarily serverless. We prefer Python for the back end services. There’s a lot of Chalice-based lambdas (and some older container-based deployments on ECS and Fargate).

How We Work



The team is truly distributed around the world. We have people on four continents. We find time during our days to work together via video and peer-programming. We use the usual remote collaboration tools. Everyone has a nice home setup. We usually have a daily touch base, Monday through Thursday.

We use a Kanban-ish board to manage our work and frequently adjust the work as we convert the unknown into the known. There’s a strong documentation ethic – you have to write things down when you are remote. We don’t just write things down once, we curate the online documentation so that it is actually useful.

We have typical modern software practices: GitHub integrated with Travis for source control and CI. Code review. Automated test. Promotion from development through to a production environment.

We stay abreast of what’s new and evaluate technologies that look like they will be helpful, with an experiment to prove that they are ready for prime time. We believe that everyone on the team has something to learn and something to teach. We together manage the competing needs of shipping fast and shipping well-built.



You



You’ve already coded in more than one language. Developers understand your code. You can work in someone else’s code and find a bug. You have 6+ years of professional experience that will allow you to have an informed opinion about the right design for a technical problem.

You’ve comfortable in the basics of computer science, data structures, complexity, state/stateless, domain modeling, coherency & distributed processing. You are not afraid to search the web to learn technical details, work with APIs, compose networking, or set up infrastructure.

You understand that there’s a big difference between code that just works in the happy case and code that is production-worthy when things go wrong. If you’ve already built large production systems, you’ll be using that experience and leading on design/build. If you haven’t,  you’ll be learning quickly.