Description
AEM (Advanced Environmental Monitoring) is the global leader in innovative mission critical weather, wildfire and water monitoring and intelligence solutions. We aim to be the world’s essential source for environmental insights – enabling decisive action and positive outcomes for our customers and their constituents. Our family of innovators offers world-class hydrometeorological technologies and services, including sensors, dataloggers, telemetry, and advanced analytics and software. Our technology and services empower the communities and organizations to survive – and thrive – in the face of escalating environmental risks.
Our software development teams maintain the creative spirit of a startup, while enjoying the benefits of a somewhat larger organization. We are comprised of fast paced, cross-functional, Agile scrum teams that love to collaborate, encourage curiosity, and continuously ship improvements that create better solutions for our customers worldwide.
AEM is seeking experienced software developers who are passionate about helping to improve the planet and who are excited to support their colleagues in their growth as they develop and progress towards achieving their professional goals. As we gather environmental information in real-time from our worldwide networks of sensors, we will be turning this data into actionable intelligence that meteorologists use to make predictions and to help people stay safe based on environmental insights. If you’re someone who has developed applications using Java with Java Spring & JavaScript and knows how to take on and overcome complex scaling issues while also being comfortable working with other technology frameworks – come join our team!
Job Responsibilities:
Provide technical leadership for teams building new features
Enhance existing software, tools and experiences to help delight customers by extending our application capabilities
Architect and lead efforts to design and build new APIs, web services and microservices while supporting the worldwide operations of AEM's cloud-based & on-premises environmental monitoring and meteorological solutions
Design, develop and operate various portions of our applications
Work on our full software stack along with our team of iOS, Android, and Front End, Back End Engineers, and academic researchers to evaluate new tools and technologies, build prototypes and extend the capabilities of AEM's sensor networks
Collaboratively experiment, prototype, take risks and document your work while helping to build new applications, web services and tools used by AEM's product offerings
Requirements
Bachelor’s degree in Computer Science, Mathematics, or a related technical discipline, or equivalent relevant industry experience
10+ years’ experience writing performant code in more than one compiled programming language (i.e. Java or similar) using one or more frameworks such as Java Spring
5+ years of experience developing and deploying services on cloud-based infrastructure (i.e. AWS) on a large scale
Outstanding technical problem-solving, design, and coding skills
Hands-on use of scripting languages such as JavaScript, Python, or PHP to automate tasks or handle complementary backend/frontend logic
Passionate about building well-constructed software where security is built-in by design and have collaboratively designed complex software architectures as part of matrixed team
Understand the need for abstraction and separation of concerns while being thoughtful about where & when to apply it
Hands-on experience with Docker for containerization and Kubernetes for orchestrating deployments, and CI/CD pipelines
You are the paradigm of the “Full Stack Developer”; you wield various web presentation frameworks (i.e. Angular, Bootstrap, jQuery) with ease, and you often catch yourself thinking in JavaScript.
You understand what makes software testable and if needed how to refactor an application written by others to support being tested using an automated test suite of your own design. And you regularly use tools (ex. Junit) to ensure your code works as designed and is performant.
Knowledgeable about networking protocols (i.e. TCP/IP, UDP/IP, HTTPS) as well as having built applications that communicate using WebSockets
Understand the intricacies of web authentication such as sessions, API tokens, OAuth / OIDC, and JWTs. You automatically build your web applications to support single sign-on using a variety of identity providers.
Ability to communicate effectively & persuasively both in-person and in the written form
Adaptable, collaborative, and love eliminating ambiguity by figuring things out
Preferred Experience:
Experience developing applications for managing large networks of sensors, meteorology, or weather
Familiarity with GitHub Enterprise and scanning your code using static analysis tools such as SonarQube
Experience deploying applications to AWS using Terraform
Canadian Compensation Range: A reasonable estimate of the current salary range for this position is $95,000 - $120,000 CAD per year. Please note that the salary information is a general guideline only. AEM considers a wide range of factors such as (but not limited to) scope and responsibilities of the position, candidate's work experience, education, licensure and certifications, key skills as well as other market and business considerations when extending an offer. The disclosed range estimate has not been adjusted for the applicable geographic differential associated with the location at which the position may be filled.
This position will accept applications on an ongoing basis and will be closed once the position is filled.
AEM is an Equal Opportunity Employer.