Skip to content

Software Engineer

Remote
  • Chicago, Illinois, United States
$107,000 per yearCivic Information

Excellent Benefits

Insurance

Medical, dental, vision, disability (long- and short-term), term life, and AD&D.

Paid time off

All of our employees receive federal holidays off, two weeks of paid winter break, and 15 vacation days per year.

Retirement plan

CTCL will match employees’ 401(k) contributions dollar-for-dollar up to 4% of their salary which is fully vested.

Employee allowance

Up to $1400 per year towards professional development, materials, and equipment.

Flexible hours

Our core work hours are 12 pm to 4pm Central Time, Monday-Thursday. Outside of those required hours, our employees may choose how to schedule the rest of their working hours.

Medical and Dependent Care FSA

Employees may set aside pre-tax dollars for medical and/or dependent care expenses.

Job description

Description

Starting Salary: $107,000

Location: Remote in the United States

Expected Start Date: Early January 2025

Deadline: October 21, 2024 or until we hit our cap of 350 applications, whichever is earlier. Apply early!


The Center for Tech and Civic Life’s (CTCL) Civic Info programs help organize the country’s civic information and answer voters’ most pressing questions like, “What’s on my ballot?”, “Who represents me?”, and “What are the responsibilities of my elected officials?” for federal, state, and local levels of government.


Our north star is that access to such civic information allows communities to develop lifelong civic engagement habits, resulting in governments that are more reflective of their communities. These communities include voters who are newly eligible, have limited English proficiency, live with disabilities, or are from communities that are impacted by the digital divide or historical disenfranchisement due to race.


This is an entry-level position. We’re looking for a Software Engineer with an interest in civic engagement to join our small tech team and someone who is willing to grow alongside it. This position will work across all aspects of Civic Info Department’s technical stack, partnering with our Research, QA, and Partnerships Teams to develop internal tools to improve the quality of our work and datasets, and to meet the needs of our external partners. Below is a list of responsibilities that a Software Engineer will be expected to own over the course of their tenure at CTCL. However, as an entry-level Software Engineer, you will only have some of the following responsibilities, but will have the opportunity to take on additional responsibilities as your expertise grows:


Responsibilities

Standardize and publish core project datasets

  • Transform candidate data and elected officeholder data into various machine readable formats including CSV, XML, or JSON.

  • Publish data to partners on the Apache-based static server and CTCL’s Civic Info API. Work with Project Managers during the release process and troubleshoot any issues.

Provide support to the Research/QA teams and external partners

  • Provide basic technical support to Research/QA teams and partners. Address user issues and errors that arise and impede normal use of internal software tools and access to published datasets, and implement any solution as needed. Data collection is a year-round effort, and there may be need for on-call support during major election periods.

  • Manage the Github issue board for prioritization and address issues according to priority, investigating and troubleshooting more critical features with Engineering staff. Update support tickets in a timely manner.

  • Collaborate with Project Managers on tools and processes to help better measure impact of core projects, to track various internal metrics, and on any quality of life/user-facing improvements to internal software tools. Seek feedback and input on the design of any new features.

Maintain and improve existing technical infrastructure and systems

  • Manage and update the database, which includes multiple schemas and complex queries involving jsonb columns. Manage asynchronous tasks using Celery.

  • Streamline internal workflows, focusing on reducing command line dependencies and improving documentation. Address and resolve issues with legacy code, including migrating jQuery and HTML components to React. Develop and maintain the Flask backend and React frontend.

  • Help eliminate technical debt through refactoring, updating, and maintaining existing code to enhance performance and maintainability, including basic security maintenance of packages (pip, npm).

Assist and consult on process development, internal product management, and streamlining workflows

  • Collaborate with Engineering staff to map out internal product development timelines. Regularly provide updates about internal product development timelines to Civic Info staff.

  • Research tools and techniques that can help improve processes and workflows and put the Engineering team on a more sustainable footing. Help develop best practices for the team.

  • Document work thoroughly by adding in-code comments and contributing to user-facing documentation. Review and create documentation for existing features with the goal of minimizing overall technical debt.



Job requirements

Qualifications

A successful candidate for the Software Engineer position will have some basic development skills, be a good collaborator, and have a familiarity with CTCL’s mission. Since this is an entry-level position, we are looking for a candidate who is willing to grow within our organization. Even if you aren’t sure you’re qualified, but are excited about the position, we encourage you to apply!

While no candidate will possess every skill, they will have some of the following technical skills:

  • General development experience. You have experience with problem-solving and debugging. You have proven experience writing, testing, and maintaining code in one or more programming languages (Python preferred).

  • Database management experience. You have a good understanding of relational databases, including schema design and some experience in SQL and working with complex queries.

  • Experience with version control tools. You have some experience with version control systems, like Git, Github or similar collaborative systems to manage repositories, commit changes, and track project history.

  • Backend development experience. You have some experience in backend development and best practices and some knowledge of authentication and authorization mechanisms, like key management.


While not required, a promising candidate will have these bonus skills:

  • Familiarity with geospatial data in any context (even outside of elections)

  • Familiarity with AWS or other cloud computing platforms, including virtual machines, networking, and databases.

  • Experience with Flask or a similar Python web framework


In addition, successful candidates will have most of the following personal attributes:

  • Strong communicator and collaborator. You know how to effectively communicate technical concepts, both verbally and in written communications. You thrive in a team environment and lean into collaboration when designing and building tools and processes, identifying and solving problems, and creating technical documentation.

  • Strong sense of curiosity and attention to detail. You take delight in problem-solving – immersing yourself in thorny technical problems and brainstorming solutions. You are able to make sense of different standards of information, discern patterns, and find some order through mess.

  • Strong initiative. You propose new ideas and are eager to participate in discussions. You are proactive about raising issues and coming up with solutions. You are able to stay motivated to produce excellent results when the work gets tedious.

  • Sound judgment. You’re able to balance different projects with different timelines, and know when to ask for help when you need it. You practice discretion when dealing with sensitive information and when adhering to non-disclosure agreements.

  • Reflectiveness. When working on a project, you identify parts of the process that work well and parts that need improvement, and provide constructive feedback during team debriefs. You are reflective about your own strengths and weaknesses and seek to continuously improve.

  • Eagerness to learn. You are committed to continuous learning and increasing your knowledge. This includes learning about American politics, elections, and election administration. This also includes learning about new tools, development languages, and technology.


Growth Opportunities

We stay curious and persistent as the landscape of election administration shifts in the United States. To adapt to new challenges and invest in the excellence of our team, all positions at CTCL provide opportunities for continued education and improvement, with a focus on professional growth opportunities related to the scope and complexity of your work, specialized knowledge, independence, and leadership.


CTCL is proud to be an Equal Opportunity Employer. We encourage people of all races, colors, religions, national origins, sexual orientations, genders, sexes, ages, abilities, branches of military service, and political party affiliations to apply.


To Apply

Hiring decisions shouldn’t be rushed, and we want to make sure we hire the right candidate. Therefore, our job application process consists of five stages in order to give us the best chance to evaluate applicants for the role:

  1. Complete a short application form and upload your resume. Please do not submit a cover letter. (Only applications submitted through this form will be accepted; materials submitted via email will not be considered.) This should take no more than 30 minutes.

  2. If you meet our criteria, you will be invited to demonstrate your coding ability in a basic skills test.

  3. If you pass, you will be invited to an initial interview with our Senior Program Manager and/or the Technical Projects Manager. This will be scheduled for 30 minutes.

  4. If the interview goes well, you will be invited to demonstrate your abilities in a more collaborative coding challenge that will closely mirror the types of work you can expect to do on the Civic Information team.

  5. Finally, the last round will be a panel interview with the Technical Projects Manager, Software Engineer, and Senior Program Manager. This will be scheduled for 60-90 minutes.

or