Entry-level Software Engineer

Philadelphia (Temporarily Remote), PA /
Geospatial Application Team /
Azavea is a technology firm based in Philadelphia that uses geospatial data to build software and data analytics for the web. As a B Corporation, our mission is to use advanced geospatial technology for positive civic, social, and environmental impact. Most of our work deals with local governments, non-profit organizations, and academic or federal research projects. We build custom web applications, perform geospatial analysis, and contribute to open source projects. Our engineers work across the technology stack, from modern browser-based front-ends to robust service-based backends residing on scalable infrastructure. Find out more about careers at Azavea here.

We are looking for an entry-level Software Engineer who is passionate about building applications that will have a positive impact. Ideal candidates are interested in public service, but not necessarily in working for a government or a non-profit organization.

We’re excited about what we do, we’re growing, and we hope you will join us.

Skills & Requirements
As an entry-level Software Engineer on the Geospatial Applications team, we expect that you will already know how to write code in at least one programming language, and will have had some exposure to software development tools. You’ll also work with dedicated mentors to further learn the skills of the trade, and will gain real-world experience by working on an existing team to develop custom web software for our clients. 

Lately, we’ve been developing tools to conduct remote tree inventories and manage high-resolution medical imagery (which has more overlap with spatial data than you might expect). We also do a fair bit of work in the civic space. Our team maintains DistrictBuilder, an open-source, collaborative redistricting tool that will support redistricting after the 2020 Census, and the Cicero API, an Azavea product which provides access to a comprehensive database of elected officials and legislative districts.

Our applications are mostly written in JavaScript or TypeScript (React, Angular) and Python (Django), but we use many other technologies from time to time. Almost all of our work revolves around maps and spatial data. If you haven’t worked with spatial technology before, don’t worry—many of our colleagues hadn’t when they joined us.

What you'll do:

    • Collaborate with other engineers to write backend and frontend code for both external and internal projects.
    • Work with an engineering mentor to design and complete a training program to help you establish a solid foundation for your software engineering skills. This is expected to include: online coursework, client or product work, pair programming, a "breakable toy" project, weekly one-on-ones, interaction with other teams, and monthly assessments.
    • Develop your mastery of software engineering tools such as source control, editors, containers, and virtual machines.
    • Respond to feedback from other engineers via code review, and internalize engineering best practices.
    • Engage in multidisciplinary work that applies an agile process.
    • Contribute to both a growing company and to the open source communities that support our work.

You should:

    • Be able to write and debug code in at least one language, preferably Python or Javascript.
    • Have an understanding of the function of core web technologies (HTML/CSS/JS) and the role that they play in web applications.
    • Be familiar with at least one database system, preferably PostgreSQL or MySQL.*
    • Be familiar with command-line environments.*
    • Have excellent communication skills, both verbal and written.
    • Be interested in working with small teams on meaningful projects.

    • * We don't expect you to have worked extensively with these technologies.

Additional experience we find valuable (but not required):

    • Familiarity with open source or commercial GIS software like Leaflet, Mapbox GL JS, PostGIS, or ArcGIS Server.
    • Experience with a GitHub based workflow that includes pull requests and code reviews.
    • Delivering and operating applications using cloud platforms such as AWS, GCP or Heroku.
    • Working with virtualization technology or containers.
    • Making technical decisions and owning outcomes.
You’ll notice that we don’t cite a specific type of experience or a Computer Science degree as requirements. We are primarily looking for people who are excited about our mission and are ready to begin a software engineering career (including people who are changing careers). If you think this description fits you, even if your experience doesn't match up perfectly with the technologies we've listed, we encourage you to apply. We do not use automated resume screening technology, and our employees review all applications that we receive.

A note on hiring during the COVID-19 pandemic 
Due to regulations in Philadelphia, and our concern for the health and safety of our team, we will be conducting all interviews remotely for the foreseeable future. While this position is on-site, and the majority of our staff generally work out of our Philadelphia office, we have transitioned the entire company to remote work. If the office remains closed at the time of hiring, we have made arrangements for remote on-boarding, including shipping relevant materials and a laptop to the new hire’s home. We are fortunate to have invested in meaningful work-from-home tools and processes over the years, and have been able to continue providing a secure, flexible, and safe work environment for all of our colleagues. We ask for your patience as we adapt our hiring process as well, and are happy to answer any questions or concerns about the process.  

Office and Benefits
Our Philadelphia headquarters is located in a brightly lit office on the 5th floor of a converted factory building in the Callowhill neighborhood, a short walk from Center City, the Reading Terminal Market, and SEPTA subway and regional rail stations. For bicyclists, we have in-house bike parking, showers, and lockers. The office itself is assembled as an open office plan with many smaller rooms and flexible spaces for team meetings and concentration time. You get your own desk with a Linux workstation or Apple laptop and extra monitors. We have flex-time to deal with personal stuff, and most people work a 40 - 45 hour week on a regular schedule. After the first six months, our staff can also spend up to 10% of their time on an open source, professional development, or R&D project. Past 10% time projects include experiments with machine learning, React Native, and various forms of serverless processing with Amazon Lambda.

We offer a salary commensurate with skills and experience and a benefits package that includes:
- Fully subsidized health care, dental care, prescription plan, including for spouse/partner and children
- Fully subsidized life and long-term disability insurance, plus voluntary short-term disability insurance
- Medical reimbursement plan to cover what the health insurance does not
- Retirement plan with matching percentage
- Almost 4 weeks paid vacation plus additional paid sick/personal time off
- Family and medical leave
- Flexible work schedule
- Paid parental leave
- Child care subsidy
- Paid time off for voting and volunteering
- Education assistance plan
- Student loan assistance
- Public transit and biking reimbursement plans
- Monthly guest lectures with lunches on the company
- 10% time for research or learning projects
- Profit-sharing bonus plan
- Financial transparency through an open book policy
- Kind, capable and thoughtful colleagues

We welcome qualified candidates from all walks of life and value diversity in our company. We prohibit discrimination based on race, color, religion, ancestry, national origin, sex, sexual orientation, gender identity or expression, age, veteran status, military service, disability unrelated to job requirements, marital status, or domestic partner status.

Below we have provided additional clarification for the Code and Writing Sample Questions on the Application.

Code Sample Question (optional)

Please supply a code sample that best reflects your work as an engineer. Put another way, use a code sample that you’re proud of, or took you awhile to get into a working state.

This is valuable to us because it provides an objective way to assess your ability to write code in the real world. We find that writing code under real-world conditions (adheres to user requirements, works within an existing codebase, makes use of modules written by others, etc.) has an interesting way of forcing unexpected decisions and tradeoffs to be made.

This could be submitted as a direct link to a merge request or a source control management patch hosted by an online paste tool (GitHub Gist, CodePen, JSFiddle, etc.).

Please submit a small amount of code, such as a single function implementation or a medium-sized changeset. Large changesets or entire projects are more difficult for us to review, especially if they were created collaboratively.

This question is optional because we know that not all candidates for an entry-level position will have existing code that they are able to share.

Writing Sample Question

Please supply a technical writing sample.

This is valuable to us because we are asked to write a lot, and we value clear and concise communication. Many of our interactions with colleagues (merge request descriptions, issue comments, Slack chats, etc.) and clients (emails, proposals, contracts, etc.) happen through written communication.

Below are some examples:

- A blog post on a technical issue
- A technical architectural document
- A block comment from your source code
- A comment on a mailing list or forum

If you are unable to share any existing technical writing samples, please submit a short sample responding to one of the following prompts:
- Describe a process, technology, language, framework, concept, or technique that you've learned recently.
- Describe a tricky bug that you've encountered and how you approached debugging it.
- Describe a challenging technical problem you've faced and the solution you ultimately chose.
- If you are submitting a code sample, describe what it does and any noteworthy tradeoffs you had to make during the implementation process.

Clear and concise answers are better than long ones. The text field for submission has a pretty sizable character limit, but please try to keep your submission to 300 words or less.

The deadline for this application is February 1, 2021.