Engineering

18F Engineering is responsible for delivering high quality, robust, open source software. We also evangelize best practices relating to software testing, scalability, operations, security, and agile development.

Collectively, we’re experienced in a wide variety of technologies including Python, Ruby, server and client-side JavaScript, Go, C, relational and schema-less databases, ETL pipelines, version control, testing frameworks, machine learning, and more. See the skill tags for everyone in Float.

Documentation

Our Engineering Best Practices guide has details about Git, code reviews, and more. You might also enjoy the open source archives on the blog.

Communication

If you have any questions, find us on Slack in #dev, #g-frontend, #g-devops, #infrastructure, #wg-cybersec, or #wg-opensource.


Joining the Engineering team

Welcome to the 18F Engineering team — we’re happy you’re here! We’ve compiled tips to help you get started. We’ll update this guide as we receive feedback, so don’t be shy to share your thoughts.

Checklist

Follow the Engineering checklist during your first week.

Please note that you might not have much assigned work during your first few weeks here. That’s okay and expected. If you’ve gotten all the government onboarding items done and a project still hasn’t landed, the Engineering team has a long list of internal projects that aren’t funded but that will help us work better together. Talk to your faciltator (more on that below) to learn more.

Who we are

Members of the Engineering team come from all over: major technology companies, startups, civic nonprofits, other parts of government, and news outlets. Collectively, we’re experienced in a wide variety of technologies. You’ll probably be able to find someone to help you with whatever question you have.

Structure

As per the org chart, 18F Engineering is itself composed of smaller, “engineering teams,” each organized by a facilitator. While most engineers at 18F work in cross-functional project teams, the facilitator engineering teams serve as small communities of practice to encourage cross-pollination that might not otherwise occur in a large, distributed team.

Facilitator teams occasionally meet to:

  • Workshop tech talks (in preparation for a wider team talk or speaking engagement)
  • Demo projects
  • Collaboratively solve architecture/programming problems
  • Improve 18F’s hiring (group resume review, interview practice)
  • Engage in discussions and feedback sessions
  • Introduce members to one another!

These activities are largely meant to increase cohesion across Engineering.

Facilitators

The Facilitators assist the Supervisors in the supervision of a smaller set of engineers (3-8). For an individual engineer, their Facilitator is the member of the engineering leadership team that they form the closest relationship with, and meets with them regularly 1-on-1. The Facilitator acts as an on-boarding buddy for new engineers. Facilitators run regular team meetings for their engineers to build community and support outside the context of project work. Facilitators act as advocates for their engineers, passing questions and concerns up the leadership chain as necessary and communicating upcoming changes to their facilitation groups. They participate in and contribute to the mid-year and end of year performance evaluations, though the Supervisor is ultimately resonsible for them. Facilitators work together with Supervisors to ensure that the engineers are succeeding, growing, and producing quality work, and that the chapter has a positive and inclusive culture.

Facilitators are selected through nominations and interviews according to team needs. While there is no additional compensation for being a facilitator, it’s an opportunity to help make team members’ time at 18F great. The facilitator checklist is useful for facilitators who have a new employee coming on board their team.

Supervisors

The Engineering Supervisors are responsible for the direct supervision of a set of engineers. Duties include hiring, on-boarding, project staffing, mentoring, training, supervision, and off-boarding of those engineers. Supervisors conduct the mid-year and end of year performance evaluations for the engineers reporting to them, with help from the Facilitators. Supervisors do other HR functions such as approving SF-182s, telework agreements, ALOHA requests, and the like. Supervisors delegate some duties to the Facilitators, but remain ultimately responsible for the engineers reporting to them. Supervisors work together with Facilitators to ensure that the engineers are succeeding, growing, and producing quality work, and that the chapter has a positive and inclusive culture.

Supervisors are selected through nominations and interviews according to team needs. While there is no additional compensation for being a supervisor, it’s an opportunity to help make team members’ time at 18F great.

Director

The Director of Engineering is Holly Allen, and she is responsible for the Engineering Chapter. The Director represents the chapter on the Senior Management Team of 18F, is responsible for the strategic planning of the chapter including hiring approach, capacity planning, and expanding the impact of the chapter and engineers’ work. The Director guides the work of the Functional Leads (backend, frontend, ops, security, diversity) to ensure alignment with strategy and each other. The Director has as direct reports the Engineering Supervisors, and acts as mentor, coach, and guide to their work. The Director is ultimately responsible for the success of the chapter in the context of the 18F mission and organizational priorities.

The Director was selected through nominations and interviews. While there is no additional compensation for being a director, it’s an opportunity to help make team members’ time at 18F great.

Functional Leads

Engineering also has six functional leads: backend, frontend, devops, data, security, and diversity. Collectively and separately they work to make our engineering practice better by improving documentation, project oversight, training, hiring, onboarding, and making us a diverse and inclusive organization.

Leadership and facilitators

See the org chart.

FAQ

What is expected of me regarding time tracking and how I spend my time?

The default template for 18F engineers is to be committed to a single project full-time, which means 32 hours a week. If you’d like a different arragement, for example to work on multiple projects part-time or something else, please speak with your facilitator.

Your project commitments should be captured in Float. On a typical week the number of hours you work on your project will match what is marked in Float. Your remaining time is intended for general meetings, like the weekly all hands, and working group or guild participation. If you don’t have enough project work to fill 32 hours, please let your facilitator know.

All 18F staff track their time in Tock. Learn more in the Tock guide. While cost recovery is an important organizational goal, internal non-billable projects are important as well. Engineers needn’t worry about how many billable hours they work, but rather how many project hours.

I’m interested in working on a different or additional project. How can I do that?

Your facilitator is responsible for making sure you have the right amount and kind of project work. However, you’re encouraged to get involved in finding projects you’re interested in. To do this:

  • Review projects in the staffing-and-resources repository. The issue threads will have lots of extraneous information, but look for issues tagged with the Engineering chapter. If you find a project you’re interested in, comment on the issue or talk to your facilitator.
  • Look out for Project Q&A invites in your inbox and on the 18F Events calendar. These sessions get together product/engagement leads from projects in need of engineers. They will give you some information on the project and a chance to ask questions.
  • Watch the #eng-projects channel in Slack.
  • Talk to your facilitator.

How can I become an interviewer or resume reviewer?

Thanks for wanting to participate in hiring! In order to review resumes, GSA requires that you be a Subject Matter Expert (SME), which involves a small amount of training. You don’t need to be a SME to be an interviewer.

To do either or both, please get in touch with Esther Chang.

How can I participate in a technical evaluation for projects in intake?

Tech eval requests are posted in the staffing-and-resources repository. Look for any tagged with the Engineering chapter. Comment on the issue to express your interest.

I have an idea for a project we should pursue. How do I make it a reality?

You’re encouraged to identify areas where government can be made better and participate in identifying agency partners.

  • There is a monthly Great Pitch that OCSIT/18F hold that awards seed funding to projects. Watch out for emails about these, and see the pitch application template.
  • #seeds can help you find out what funding options are available if Great Pitch isn’t a good match.

How can I move from another part of 18F into engineering?

Are you already a member of 18F and interested in moving into the Engineering Chapter? Hooray! Here are some steps to follow:

  1. Talk with a member of the Engineering leadership team (a facilitator, supervisor, or the director). Express interest with your Supervisor. Let’s make sure this move is a possibility.
  2. Someone from Engineering will review your relevant work, for example any software you’ve written for 18F projects, to understand whether your level of software development expertise is appropriate to join Engineering, or suggest ways you could develop that expertise.
  3. You’ll have a meeting with someone from Engineering leadership to review the expectations of being in Engineering, review the appropriate performance profile, and talk about a development plan to improve software skills, if appropriate.
  4. Your current Supervisor, your new Engineering Supervisor, and yourself will agree on a transition date.

Rituals

Most of the Engineering team works on a mix of partner agency projects and internal initiatives. As you’d guess, everyone’s weeks look a little different. That said, there are recurring weekly meetings and commitments we all have on our calendars.

  • Monthly tech talks. See the 18F Events Calendar or sign up for a talk.
  • Once a week (ideally): meet with your facilitator. Once a week or less frequently, depending on your preference, you’ll have a short check-in with your facilitator at a time that’s convenient for both of you.
  • Once a week (ideally): meet with your Engineering team. Once a week, you’ll meet with your (roughly) eight-person team to conduct various activities designed to bring your team together and share knowledge.

Engineering on Slack

General

#dev, #infrastructure.

Tools

#django, #docker, #elasticsearch, #git, #go, #hardware, #javascript, #mac, #meteorjs, #nodejs, #python (and #learnpython), #ruby.

Guilds and working groups

#g-accessibility, #g-frontend, #wg-api, #wg-code-reviews, #wg-cybersec, #wg-opensource, #wg-testing.

Facilitator groups

#eng-cronus1, #eng-chumanjalaal, #eng-voyager1, #spaceball1, #eng-apollo, #eng-bellatrix, #eng-eagle5, #eng-leadership.

Everything else

#bdd, #eng-projects.

Mailing lists

Tools

Here are some common tools we use, how we use them, and how you can get access to them. If you can’t find the information you need in the chart below, get in touch with your design lead; they’ll be able to point you in the right direction.

And one more thing: before you start using any new tool that asks for access to files/browser data, please check the full list of approved tools. If what you want to use isn’t there, you’ll need to ask #infrastructure first. New tools often create hard-to-anticipate security problems.