Description

With a workforce of over 30,000 people, and opportunities in more than 1,000 different job categories, the City of Philadelphia is the sixth largest city in the United States and one of the largest employers in Southeastern Pennsylvania. As an employer, the City of Philadelphia operates through the guiding principles of service, integrity, respect, accountability, collaboration, diversity and inclusion. Through these principles, we strive to effectively deliver services, to resolve the challenges facing our city, and to make Philadelphia a place where all of our residents have the opportunity to reach their potential. 

The Office of Innovation and Technology (OIT) oversees most major technology projects for the City of Philadelphia. We use technology to help City employees do their work better and to serve residents in getting what they need from City government.

As the central technology office in the 5th largest city in the nation, our portfolio includes critical applications that enable residents to pay taxes and fees online, look up a loved one in jail or prison, find after-school activities in their neighborhood, and more. Most new applications have been built on modern technology stacks and hosted in the cloud, but many older applications are running on legacy frameworks and on-premise servers.

As a Senior Software Engineer, you’ll join a newly reimagined devops team tasked with modernizing our digital portfolio. You’ll work with other developers to reimagine, replace, or migrate existing applications, and design and build new ones. You’ll help us embrace devops tools and processes to reduce time spent on manual testing, deployments, server upgrades, and troubleshooting outages, to enable us to treat applications as products and continuously improve them based on feedback from our users.

You’ll join a city government that has the largest GitHub organization among cities (github.com/cityofphiladelphia), work in the open, and leverage open source tools and cloud infrastructure to improve the experience of interacting with city government online.


The vision for this position involves multiple roles:

As a problem solver, you will:
  • Meet with stakeholders from city departments to understand business needs and translate those into technical requirements.
  • Help us decide the fate of older applications by understanding their purpose and utilization, as well as the wider landscape of applications and technical direction of the department.
  • Challenge assumptions, and consider whether it makes more sense to build a new application, combine with another, change the process, use off-the-shelf software, etc.

As a software developer, you will:
  • Collaborate across-teams with designers and product managers.
  • Develop web applications (the full stack).
  • Use and keep up with modern software development best practices.
  • Help develop the cloud infrastructure to support our applications.
  • Dive in to the code of legacy applications to reverse engineer them, and sometimes to make changes to them so we can keep them running until we replace them.
  • Help support the production applications and cloud infrastructure, including troubleshooting issues or outages outside of business hours when necessary (this is rare and you’ll share this responsibility).

As a senior team member, you will:
  • Mentor other software developers.
  • Implement devops tools and processes to support new and existing applications.
  • Take initiative to make improvements: whether to software architecture or to the way we collaborate as a development team.
  • Provide technical advice to other teams/projects.

Skills and responsibilities

Competencies:

Adaptable.
Perhaps you’ll need to augment a tool with a shell script when you really want to rewrite it in Python, but we’ve got more pressing priorities. Or perhaps timelines shift and we have to cut features from a release. We expect you’ll be able to professionally deal with changing environments.

Self-directed. Given broad direction, you can prioritize your work and allocate your time and resources effectively. Just as important, you know when to ask for help and aren’t afraid to do so.

Systems-thinker. You can envision how a particular feature may affect other, unrelated parts of the project.

Excellent communicator. You can communicate technical nuances in plain language with partners of varying technical background and write documentation clearly enough that someone who’s never met you could use it.

Initiative taker.
You take action to improve a situation without waiting for explicit instructions, and you seek new and improved techniques/technology to work better.

Collaborative.
You recognize the importance of other people being able to work with what you create - and wanting to work with it - and avoid building in a silo.

Delivery-oriented
. You appreciate the value of “minimum viable product” and know how to dig yourself out of “rabbit holes” to meet goals and deadlines.

Knowledge of:
  • Server-side programming languages such as Python, Ruby, .NET Core, or Node.js
  • Command line and shell scripts
  • Web application security concerns and ways to mitigate them
  • Git, or similar version control systems
  • SQL, and usage of relational databases such as PostgreSQL, Oracle, MSSQL
  • Amazon Web Services
  • Server administration
  • Containers
  • Automated test/deployment pipelines
  • API design and development
  • Web fundamentals - Javascript, HTML, and CSS
Enthusiasm for:
  • Clean code” and readability
  • Open source
  • Tinkering with new technologies, and keeping up with the industry
  • Reverse engineering
Bonus:
  • Interest or experience with infrastructure as code like Terraform or Cloudformation

Details

  • Location:
    Philadelphia
    ,
    PA
  • Deadline: n/a

Qualifications

Minimum qualifications

You should have at least 5 years  of experience developing and maintaining software including:
  • Server-side programming languages such as Python, Ruby, .NET Core, or Node.js
  • Server administration
  • Cloud infrastructure setup and maintenance
If you don’t quite have 5 years of software development experience, you can count experience in another senior role with transferable skills like mentorship or project management.