Software Engineer, Audience at Factual
Factual is hiring both senior and junior developers for software engineering positions on our company's Geopulse Audience team.
The Audience product is a petabyte-scale application that interprets tens of billions of new mobile device location signals every day, for the purpose of producing rich geographic and behavioral analysis.
Our challenges are novel and varied, and range from the coordinated ingestion, cleansing, and annotation of our inputs, to debiasing and large-scale data analysis, to delivery across a wide range of customers, formats and platforms.
In this role, you will have the opportunity to work with experts in the field, on a high-visibility project with direct impact on the success of Factual.Requirements
Professional experience in one or more of the following:
- Spatiotemporal data processing. We use a combination of industry-standard tools and custom libraries to efficiently represent, partition, and store geospatial information. Our biggest challenges happen where theoretical considerations meet real world data.
- Big Data / MapReduce. For data processing and storage, we primarily use Hadoop, and invest our effort here in finding the right approaches to sorting, managing pipelines, serialization/deserialization, and the integration of batch and real-time processing.
- Performance tuning, especially on the JVM. On the opposite side of our big data challenges are the code paths that are executed millions of times per second. Here we leverage a combination of flame graphs, wrk2 and other benchmarking tools, and YourKit / VisualVM profiling to maintain performance even as we grow in scope and scale.
- Management of Java teams and large Java codebases. As Factual continues to grow, we're focusing on establishing the right processes around design and architecture, coding best practices, and effective methodologies as they relate to Java software development.
- Degree in Computer Science or related field
- Experience with AWS, especially running distributed workflows and managing costs.
- Experience with dynamic JVM languages. Although much of our code base is written in vanilla Java, we make extensive use of more dynamic languages (in our case, Clojure) as our not-so-secret sauce for rapid prototyping, quick analytics, and iterative experiments.