Skip to content
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
369 lines (184 sloc) 14.6 KB

How We Work Together

Sparkbox brings together great minds that advise, question, inform, and build all parts of a project. We never want to be a people with an attitude of "not my job." Therefore, we will always encourage individuals on a project to take responsibility for the entire project, providing value wherever a need arises, regardless of job title.

This document is meant to capture the typical responsibilities we accept when we are performing three particular disciplines on a project:

  • Managing the project

  • Designing

  • Developing

When We Manage a Project...

We Do Business Development

As we manage a project, we have a unique perspective and opportunity to develop our business while we develop the business of our clients. This is a balance, building mutually beneficial, valuable situations between Sparkbox and our customers as we...

  • Contribute to proposals and estimates for new business opportunities

  • Coordinate proposals and estimates of new work for existing clients

  • Manage handoff from our outreach team to the project team

  • Run discovery (when applicable)

  • Coordinate and/or write project briefs (when applicable)

  • Promote next project phase during current phase

  • Encourage the team to identify more ways Sparkbox can add value

  • Write case studies

We Manage Expectations

No other person has as broad and nuanced a project view as the project manager (PM). While the client and team may be invested and informed, the PM has the unique opportunity and responsibility to draw from the entire contributing landscape and provide appropriate context for each person involved in the project. We manage expectations so that each person involved in the project is equipped to perform at their best.

  • For the team working on the project

    • Listen to the team and establish trust

    • Make sure the team understands the project’s goals, constraints, and client background/expectations

      • Also communicate Sparkbox’s internal goals for the project (e.g. "this is going to be an important portfolio piece, because...")
    • Understand the work well enough to make informed decisions

    • Correct the team when their expectations don’t align with project goals and client expectations

    • Set the team up for success

      • Do whatever you can to unblock work

      • Protect team members’ time

      • Discuss team members’ time when billable expectations aren’t met

      • Provide team care when needed (order lunch, etc)

  • For the client

    • Listen to the client and establish trust

    • Understand their needs

      • Dig to the root of stated needs

      • Identify value we can deliver

      • Continue to dig throughout project

    • Understand the work well enough to know when the client needs to make a decision

    • When the client’s expectations don’t align with the project goals or the reality of the project’s timeline, scope, or budget, the client’s expectations need to be corrected ASAP, or the timeline, scope, or budget must change.

    • Help your point of contact look good

  • For Sparkbox

    • Provide regular project health updates

    • Expose risks to the ops team

      • How the project is impacting other projects

      • How the project is affecting our team

      • Whether our expectations are aligning with the client’s

    • Give and receive critique on project management practices and active projects

      • Help other project managers improve

      • Incorporate critique into your own projects or PM practices

We Manage the Work

While we want to empower and encourage self-motivating teams, our project managers are ultimately responsible for the work of our teams. As we manage the project, our goal is to facilitate the appropriate conversations and environments in which the team can best identify, prioritize, and execute the work. When this is happening, the team is able to drive much of the work with the project manager providing support and correction as needed. We can do this by...

  • Establishing a project cadence

    • Take into account Sparkbox norms and special project conditions

    • Communicate and facilitate cadence with the client and team

    • Own project management tools (like Basecamp, Zenhub, Jira)

    • Facilitate planning, definition, sizing, and prioritization of the work

  • Regularly updating the client (and project team) with project health

    • Work accomplished

    • Velocity

    • Work remaining

    • Confidence level in completing remaining work within budget and timeline

    • Options the client can take to increase confidence

  • Making sure that we are building the right thing

    • A combination of team recommendations, budget, timeline, and client expectations (includes our point of contact and any higher stakeholder that has authority over the project)

We Accept Responsibility for Team, Timeline, and Budget

Many Sparkboxers are involved in initial staffing, budget, and timeline conversations. However, a project manager assumes the ongoing responsibility for these aspects of a project’s health once the project begins. This is meant to ensure that these critical pieces of the project are being overseen by the person closest and most familiar with the project. As a project manager, one should...

  • Ensure that the project is and remains staffed appropriately

    • Work with projects and ops teams to identify appropriate team

    • Keep forecast updated as the project changes

    • Bring in design, technical, content, or UX direction at appropriate decision points

  • Own the project calendar

    • Understand, communicate, and drive toward deadlines

    • Schedule major team activities

    • Enable the team to schedule ad-hoc

  • Talk about money early and regularly

    • Establish that money is not a topic to be avoided

    • Budget updates should be included with all regular project updates

When we design a project... 🎨

We Conceptualize and Ideate

  • For the client

    • Do a responsible amount of research on industry and competitors to ensure that we’re armed with the right information before design begins

    • Create a visually appealing design language that accomplishes a project’s goals

    • Spend the appropriate amount of time exploring design concepts to ensure our suggested design concept is the strongest solution to the problem

    • Be responsible with performance based on client goals and audience (use of images, fonts, animation, etc.)

    • Provide value when a project pivots or a new idea surfaces

  • For Sparkbox

    • Create a UI solution that embodies the intent of UX work that has been done previously

    • Strive to achieve project deadlines, communicating early when those deadlines might be in jeopardy

    • Design animation/interactions early in project

    • Let PMs know status regularly and if more time needed as early as possible

    • Give valuable, honest design review feedback in design reviews

We Present Concepts Intentionally

  • Participate in the design review before concept is presented to client

    • Give valuable feedback in a respectful way

    • All team members serve to make the project better

  • Ensure before presenting to the client that the concept is buildable in time and budget

    • Make sure to involve the right people who can give input on the effort to build a design concept
  • Present design concepts to the client with a detailed explanation and reasons behind visual choices

    • Talk about the why, not the what

    • Reiterate the visual vocabulary

    • Discuss how the presented concept will help to accomplish the project goals

    • If the client doesn’t agree with our rational, we listen and take every effort to address their concerns

    • We believe it is acceptable and our job to respectfully push back when we feel strongly that a client suggestion is detrimental to the project, and give reasons why

  • Communicate/educate the client that end goal is browser

    • Different browsers render fonts, colors differently

    • May not show comps of every page

We Translate Concepts to Frontend Code

  • Ensure that the product is polished and refined before launch

  • Transfer ownership of assets

    • fonts, photography and help client make necessary typography and image purchases
  • Build with accessibility and performance in mind

  • Design modularly – keep reuse of code in mind when needed

  • Be available and involved in UI decomps to communicate design intent is carried through

  • As project progresses, provide alternate solutions to areas that can’t be built in time/budget

  • Help communicate the experience strategy with well articulated design concept notes

  • Hit deadlines set for the project

  • Help PMs know level of effort for outstanding Github issues, and break into multiple cards when necessary

  • Predict and communicate what will be hard to build and have a backup plan

  • Know when to compromise design where needed, know when to push back

We Share Design Learnings and Embrace Improvement

  • Educate others

    • Frontend Design apprenticeship

    • Workshops

    • Talks

  • Provide open source/side project help for developers

  • Give valuable, honest design review feedback

  • File organization/documentation

  • Actively participate in Design Retros

  • Accountability on side projects

When we develop a project... 🛠

We Plan, Prepare, and Provide Context

In support of planning, preparation, and context we feel a strong responsibility to...

  • Enable transparency, planning, and decision making with clients and each other through clear, available, and consistent communication of

    • estimates

    • work remaining

    • decisions

    • conflicting commitments

    • challenges

  • Facilitate team productivity by

    • creating software design artifacts needed to communicate plans and proposals

    • decomposing work into discrete, shippable, well written cards

    • providing respectful, constructive critique of designs, architectures, and other plans

    • seeking and providing timely feedback

    • being aware of and available to team members as reflected in your Forecasted hours

  • Assist informed project decision making by

    • being present and attentive in meetings

    • bringing multiple creative solutions for features and challenges

    • seeking out and being mindful of project constraints

We Create, Review, and Provide Feedback

In support of creating, reviewing, and feedback during a project we know it is essential to…

  • Empower discovery and productivity by recognizing, discussing, documenting, and adhering to cohesive Standards in naming, structure, setup, and location. Where possible, automate standards to avoid unintended drift.

  • Facilitate team productivity, growth, and awesome outcomes by

    • actively participating in pairing and collaboration both in-person, as well as, in online collaboration tools

    • creating and maintaining a clear and efficient project setup through automation and Readme’s

    • providing respectful, constructive critique of code, architecture, designs, and other project artifacts

We Pursue Quality, Usability, Beauty, and Sustainability

In support of quality, usability, beauty, and sustainability we feel a strong responsibility to…

  • Support high fidelity of design vision by

    • helping carry design forward as it meets the varied ecosystem of devices

    • advocating for the design vision with clients either directly or bringing in designers

    • pairing with designers to understand design vision and implement them effectively

    • giving valuable, honest design feedback, especially as it relates to implementation options, progressive enhancement, web performance, and project cost

    • recognizing and raising awareness of project areas that may not have had design attention

  • Support maintainability, resiliency, and quality of a codebase by

We Share Development Learnings and Embrace Improvement

In support of learning, teaching, and improving we recognize the importance of...

  • Leveling up our teammates, client teams, and clarifying our own understanding through in-project mentorship, pairing, and demos

  • Constantly replenishing the industry’s talent pool by actively participating in Sparkbox apprenticeships through office hours, pairing, responding to Slack questions, and presenting curriculum topics

  • Sharing our knowledge, expertise, and experience with the industry through workshops and presentations at conferences and meetups

  • Giving thoughtful responses on Pull Requests and Slack questions, such as:

    • offering references, explanations, and reasoning behind suggestions

    • phrasing alternatives as, "What if we do it like this?"

    • providing examples or pseudo code to help get your point across

    • sharing our learning experiences, processes, challenges, solutions and tools in a medium with longevity

    • updating the Sparkbox Standard with examples or other commonly used files or techniques, including an explanation of decisions

  • Be available for and present during pairing sessions

  • Consider, and often prefer, long form, shareable artifacts when a topic may be useful to a larger group

  • Enable experimentation, prototyping, learning, and discovery through

    • easy, reliable project setup to avoid budget killers

    • utilize timeboxes to avoid "spinning" and budget killers

    • being accountable on side projects

You can’t perform that action at this time.