guide
  • Introduction
  • Guiding Principles
    • Mission Statement
    • Conflict Resolution Process
  • Operating Model
    • Working Together
    • Holacracy
      • Meetings
      • Specific Roles
      • Terms and Definitions
      • Finer Points
      • Holacracy-Asana Key
    • Getting Things Done
      • Daily, Weekly, Monthly, and Annual Reviews
      • GTD-Asana Key
    • Transparency
    • Language
    • Budgeting
    • By Department
      • Engineering Operations
  • General Guidelines
  • Employment Policies
    • Equal Opportunity Employment
    • At-Will Employment
    • Code of Conduct in the Community
    • Complaint Policy
    • Drug and Alcohol Policy
    • Vacation, Holiday, and Paid Time Off (PTO) Policy
    • Supplemental Policies for Remote Employees and Contractors
    • Supplemental Policy for Bonus, Commissions, and other Performance-based Payments
    • Supplemental Policies for Hourly International Contractors or Workers
    • Supplemental Policies for Hourly International Contractors or Workers
    • Disputes and Arbitration
  • Benefits and Perks
    • Health Care
    • Vacation, Holiday and Paid Time Off (PTO) Policy
    • Holiday List
  • Hiring Documents
    • Acknowledgement of Receipt
    • Partner Proprietary Information and Inventions Agreement
  • Engineering Wiki
    • Code Snippets
      • Front End Code Snippets
    • Setup
      • 1: Overview of development using Audienti
      • 2: How to setup your dev environment on Docker
      • 2a: Setting up on our cloud your dev server
      • 3: Connect to Production using the VPN
      • 4: Import data into your development environment
    • Deployment
      • Docker based deployment of back end (manual)
    • Culture
      • How our development team works
      • Code Best Practices
    • Tips
      • Setting up a new development machine
      • Importing data to Development environment
      • GIT workflow and work tracking
      • Using Slack
      • Using Rubocop
      • Our Code Standards
      • General suggested best practices
      • Tracking your time
      • Naming Iterations
    • Migrations
      • Postgres
      • ElasticSearch
      • Redis
    • Database and System Maintenance
      • Redis Howtos
      • Elasticsearch HowTos
      • Postgres HowTos
      • Administration recipes
      • App maintenance crash course notes
    • Front End
      • 2016 Plan
      • Deploy
      • Assets
      • SearchLogic
      • How to create UI components
      • OMA Standard Tables
    • Monitoring and Alerting
      • Monitoring Systems
      • Monitoring individual controller actions
      • Get notified when a metric reaches a certain threshold
      • Instrumenting your models using Oma Stats
      • Configuring Graphite Charts
      • Tracking your results with StatsD
      • Logging Fields
      • Updating Kibana Filtering
    • Testing
      • Coverage
      • Elasticsearch mapping config synchronization
      • Testing Gotchas
      • Rspec Preloader
      • Test Best Practices
    • Models
      • Backlinks
    • Queueing and Worker System
      • Queueing and Job Overview
    • Processors
      • Rebuilding Spot Instances
      • Deploying processors
      • Running processors in development
      • Reverting to the previous build on a failed deployment
    • Processors / Opportunity Pipeline
      • Opportunity Pipeline
      • Diagram
    • Processors / Enrichment Pipeline
      • Diagram
      • Clustering
    • Processors / Backlink Pipeline
      • Diagram
      • Backlink Pipeline external APIs
      • Backlink pipeline logic
    • Processors / Automation Pipeline
      • Diagram
      • Automation Pipeline Overview
      • Agents
      • Running in development
    • Messaging and Social Accounts
      • Overview
    • API
      • Audienti API
    • Algorithms
    • Troubleshooting
      • Elasticsearch
    • Big Data Pipeline Stuff
      • Spark
    • Our Product
      • Feature synopsis of our product
    • Research
      • Backend framework comparison
      • Internet marketing Saas companies
    • Code snippets
      • Commonly Used
      • Not Used
    • Miscellaneous
      • Proxies and Bax
    • Legacy & Deprecated
      • Search criteria component
      • Classes list
      • Target Timeline
      • Twitter processor
      • Asset compilation
      • Test related information
      • Interface to EMR Hadoop jobs
      • Mongo Dex Indexes to be Built
      • Mongodb errors
      • Opportunity pipeline scoring
      • Graph Page
      • Lead scoring
      • Insights
      • Shard keys
      • Setting up OMA on local
      • Clone project to local machine
      • Getting around our servers in AWS
  • Acknowledgements
  • Documents That Receiving Your First Payment Triggers Acknowledgement and Acceptanace
Powered by GitBook
On this page
  • Standing Meetings
  • Meeting rules
  • Daily Agenda
  • Weekly Agenda
  • Culture
  • Product owner
  • Development process
  • General
  • Commits (good practice)
  • Deploying to production
  • Tickets
  1. Engineering Wiki
  2. Culture

How our development team works

PreviousCultureNextCode Best Practices

Last updated 7 years ago

Standing Meetings

  • Daily meeting at 830a Eastern time USA Monday Through Thursday. Attendance is "flex" mandatory.

  • Weekly All Hands meeting at 10am Eastern time USA on Friday. Attendance is "flex" mandatory.

Meeting rules

  • If you can't make it beforehand, try to give a summary to the team in slack on what you're working on. Send to your manager, and to the #engineering channel.

  • Meetings begin promptly at their scheduled time. If you can't make it, people won't wait on you.

  • Meetings follow a standard agenda if they are a standing meeting. Our goal is to make these meetings as short as possible.

Daily Agenda

  • Each member of the team goes around and states: 1) What they got done yesterday, 2) What they're going to get done today, and 3) Anything blocking them to get done.

  • Coordinate other meetings that need to happen for the day

  • Sign off

Weekly Agenda

This is stored in Google Docs. It is available .

Culture

  • Ask for help when you’re lost. Not asking questions is considered a failure. You know you’re on your own and you need to take an initiative, and when no one can help you move forward. At that point still ask for opinions that might help you understanding the problem and make a decision.

  • Not providing help when asked to is also considered a failure.

  • Build good work, strive for good quality, but not perfect quality. Perfect takes 5 times as long.

  • Write as LITTLE code as possible, as the easiest code to maintain is the code we don't write.

  • Don't build capabilities we don't need yet. Don't over-engineer the solution.

  • Write unit tests while developing, but then write a "real" test that is more integration like for your actual check in/pull request. Comment out your unit tests as they burn time in the CI suite, but leave them in for documentation and dev testing purposes.

Product owner

  • Product owner will organize tickets into a weekly iteration

  • Other people can create tickets, and they will be prioritized

  • Product owner owns building the iteration in a way that it's achievable

Development process

  • We will not scope tickets to larger than 1 week timeframe. Each week, all the tickets should be able to be done. If it can’t be closed in a week, it’s not a ticket, it’s a project.

  • If you have a question, you have the task to get to the person and get your question answered. You are still responsible for your delivery of the ticket in its iteration.

  • If you can’t get something done in the estimate supplied, you have the responsibility to provide feedback and update the estimate. It is not the estimator’s job to come to you and ask.

  • When a pull request gets issued, its your job to get it into production. It will create a card on the board.

General

Every Monday we decide what to work on that week (iteration) and commit to deliver it by Friday, when we report it in front of the other company members at the all hands meeting. Complete delivery is not obligatory, but we tend to do our best. If we finish everything we planned, we can take more stuff in.

Commits (good practice)

  • write ticket numbers into commit messages

  • be descriptive, but keep it short

Deploying to production

  • When someone gets something ready for code review, another developer will review it

  • When approved, it will get merged into master

  • We push the front end every Monday AM CET, and more often as needed. Once this is done, everything in the DONE column is archived/closed

Tickets

Bug reports

Tickets about bug reports should be defined in the IS/SHOULD structure with mandatory screenshots, links or even screen recordings.

------------------------------- <example>-------------------------------

Title: Clicking on comments under mentions leads to blank page

http://app.omamatic.com/projects/1022/insights/mentions

[attached_image.png]

IS:
Clicking any of the comment links under "content you should read and repost" leads to a blank table.

SHOULD:
Clicking on the comments should lead you to a “Inventory” tab, where results are filtered by the clicked url.

------------------------------- </example>-------------------------------

Enhancements/Feature

  • should be defined at the most

  • should be descriptive

  • give examples, designs, etc

-------------------------------<example>-------------------------------

Title: Filters area should be moved under the tabs

All the filters sections, like here -> http://app.omamatic.com/projects/1022/insights/analytics 

[attached_image.png]

Filters should get moved from the current filters section to section under tabs. 

Additionally:design/wireframes should be providedwhole idea should be defined

-------------------------------</example>-------------------------------
here