Learn, Teach

SOCi R&D Values and Principles

Job #1 is to learn; job #2 is to teach

In the knowledge economy, the first job for each and every one of us is to learn - we’re learning about new technologies, new customer problems worth solving, new market opportunities, we’re learning how to work better with each other. But having learned something doesn’t mean the job is done - we have not achieved an outcome until we’ve taken our knowledge and passed it onto the next person. A product manager who learns about a customer problem hasn’t achieved an outcome until they are able to describe it to an engineer who can actually do something about it.

We innovate on behalf of our customers

Results of an organization only exist outside the organization that produces them. Writing a piece of code isn’t a result; getting it merged isn’t a result; even getting it deployed isn’t a result. Only when a customer is able to achieve a business outcome of their own have we achieved results. We thus measure our success not through activities, but true customer outcomes, the results that our customers are able achieve using our technology.

We build the right things, right

At SOCi, first, we ensure that we are working on the most valuable problem by performing significant amount of product discovery through customer conversations, usage data analysis, market analysis and domain expert conversations - the biggest waste would be to build something nobody needs!

We pay for quality as early as possible

Quality has to be paid for at some point in the process; the earlier we’re able to pay for it, the cheaper it is to achieve it. If we wait for a customer to report a bug to us, we’ve incurred a significant cost - negative customer sentiment, rework of code, re-testing and re-deployment. We could pay for quality during integration / release testing - but it would still lead to significant rework and aborting of a release, disrupting teams, release plans and requiring rework. We could pay for quality by having a QA team, yet that will still require rework and context switching between new work and past work coming back from QA.

When engineering starts considering the solution, we look for innovative ideas through the use of new available technologies; we pay for quality by upfront architectural design diagrams and flow charts to ensure we account for all use cases. These are driven by engineers, and reviewed by management - a bottom up approach. We practice TDD and mob programming to ensure highest quality software.

Mob Programming - A Whole Team Approach

Nobody loves context switching between tickets or spending hours reviewing other people’s code. We recognize that software development is and has always been a team sport. Mob programming is the next evolution of former practices such as Pair Programming and XP. In mobs, we have 3 engineers working in real-time together on a zoom call, on the same ticket, from beginning to completion. Furthermore, the rule is that code has to go through someone else’s hands - one engineer is the Navigator, driving the solution forward, one engineer is the Typist, writing it up, and the third is Support, doing research on the side or watching for errors in thinking or implementation. Every 10 minutes, the team rotates the roles - the Navigator becomes Typist, the Typist becomes Support and Support becomes the Navigator. Through rapid iterations, the team achieves a joint “flow” state where high-quality, innovative solutions flow from minds to the screen. Mobs stay together even if projects change, so you build a great team dynamic for long-term success.

Product Development Process

We believe best products can only be created through a strong partnership between Product, Design and Engineering.

Product Management

  • Product Discovery

  • Competitive Analysis

  • Market Research

  • Industry Expertise

  • Customer Interviews

  • Sales Pipeline Analysis

  • Support Volume Analysis

  • MVP Definition

  • Prioritization

Product Design

  • User research

  • Usage analysis

  • Journey Mapping

  • Prototyping

  • User testing

  • Interaction Design

  • Visual Design

Engineering

  • Architecture & flow diagrams

  • TDD

  • Mob Programming

  • Vertical Slices

  • Test Matrices

  • Static code analysis

  • Sophisticated CI/CD

  • Daily deployments

  • Selfless

    The SOCi team works selflessly and tirelessly to deliver value and maximize our customers’ marketing efforts.

  • Overachievers

    We’re not satisfied until we have exceeded our customers’ and our own expectations.

  • Customer Centric

    We solve complex problems and navigate obstacles so our customers can excel.

  • Innovative

    SOCi is a technology company wrapped in a customer service organization. We’re able to innovate because we listen to our customers.