Categories
Distributed Teams eCommerce Management Mobile

Managing @ TRR

(The RealReal : 9/16-9/17)

Execution

Provided research support around pre-IPO due diligence of SDLC metrics, teams’ productivity, and intellectual property

Shepherded months-long-overdue supply-side user acquisition feature into production (which had been built by third party vendor but then mothballed) by delegating to senior engineer for verification

Evaluated dev work towards long-term financial capitalization

Made introductions leading to offers for data science intern and candidate for Director of Estate Sales

Supported business’s most-important monthly accounting processes

Participated in Erlang and Elixir Factory 2017 and Google I/O 2017

Performed requirements analysis/discovery around 3rd party video chat solutions as a tactical way to increase supply-side engagement/retention

Proposed and shepherded build-out of Rules Engine POC (using Wongi) to simplify item pricing; abandoned because of time constraints

Hiring, Retaining

Led 21 Software and QA Engineers across seven web/mobile engineering teams (incl. in Russia, Canada, Central America) for:

  • web : Rails/vanilla JS/Resque/MySQL/ElasticSearch on Heroku
  • mobile: iOS and Android

Filled capacities of: Release Manager, (acting) Lead Engineer, Technical Recruiter, Scrum Master, Software Architect, Senior Engineering Representative (C-suite,) and Manager.

Partnered with HR to:

  • identify ways to plan direct reports’ performance improvements while effectively managing reports through direct communication and engagement when issues arise; crafting Performance Improvement Plans as necessary
  • start the engineering internship program in a bid to recruit highly-engaged, motivated potential future junior engineers; bringing on and coaching a female CS major from Columbia
  • to ensure diligence around off-boarding consultancy in favor of a more performant agency

Increased capacity by:

  • collaboratively establishing and tracking against 2017 objectives while engaging direct reports through periodic 1:1s as well as yearly performance reviews, including providing feedback as part of peripheral teams’ review processes
  • making introduction to highly-performant near- (Canada) and offshore (Russia) teams to augment local web teams while organizing and managing engineers and deliverables
  • fielding request to procure more resources on a Tuesday, re-established communication to previously-contacted near-shore agency immediately thereafter, and by Friday of that week, had a contract signed for two engineers to start two weeks later
  • facilitated Agile SDLC through leading standups, backlog grooming, commitment-based sprint planning, and retrospectives

Increased engagement by:

  • mentoring junior engineer in taking on time-sensitive accounting change having major impact to business and shepherded that effort to complete without bugs while meeting the deadline
  • organizing company-culture events for promoting team spirit (holiday party, cocktail contests, bowling, bocce, Exploratorium)
  • doing daily code reviews of teams’ PRs
  • drafted leveling plan

Continued search after multiple Lead engineer candidates ghosted/fell off the radar after offer; including the time after a candidate accepted job offer only then to inform us the day before he was to start that he had accepted another offer

Quality

Took over QA when QAE suddenly left; picking up Ghost Inspector, Runscope, and TestPad

Led eval efforts around Rainforest QA/on-boarding seasoned QAE replacement

Results

  • Led diverse co-located and remote web and mobile teams to deliver the user-facing experience for the premier luxury reseller.
Categories
Optimization

Optimizing @ TRR

(The RealReal : 9/16-9/17)

Intro’d technical design reviews : as part of initiative kick-offs towards improving scoping and architecture earlier in the product lifecycle.

Intro’d heart-beat deploys and a release calendar : for mitigating release risk while shepherding cultural shift towards feature deploys.

Integrated Zendesk, Pivotal, and Pager Duty : for improving escalation process.

Automated creation of Release Notes.

Coordinated development efforts with Marketing to facilitate Optimizely/OptimizelyX-powered third-party A/B Testing.

Increased velocity 13 to 30pts/sprint (Q4/2017.)

Decreased sprint Volatility by 62% (to 11%) and Standard Deviation by 15.5pts (to 4.8pts.)

Achieved improved productivity/engineer of 4.47 to 6.54pts/sprint (H1/2017.)

Intro’d idea of managing issues by severity (minor, major, critical.)

Established gold and silver tier browsers for effective due-diligence around ensuring quality desktop and mobile web experiences based on usage data from Google Analytics.

Templatized (and socialized) bug and feature story creation to improve information collection, team coordination, and hand-off of stories.

Mentored junior and Lead QA Engineers.

Reduced 35% of JS errors logged in Bugsnag (by updating config to not report 3rd party errs.)

Results

  • Quantitatively and qualitatively improved performance around people, quality, and process.
Categories
Integration Process

Planning @ TRR

(The RealReal : 9/16-9/17)

Upon learning of a shift in business logic potentially adding $500K to the bottom line, worked with a junior engineer to apply an Occam’s Razor approach for planning necessary system changes; empowering said engineer to run point, taking the rest of the team with, delivering functionality without bugs and well ahead of project schedule.

Lacking a company-adopted product management tool, built spreadsheet for tracking engineering efforts as they facilitated delivery against business initiatives and key product priorities (against milestones tracked in Pivotal.)

Regarding Engineering org’s movement towards an Elixir-based SOA:

  • Scoped 50K-ft-view project plan towards porting all functionality
  • Coordinated efforts of local and remote engineers for prioritized, accelerated port of supply-side acquisition funnel from Rails to Phoenix

Provided high-level technical scoping for company’s best-performing (2017) lead-acquisition features:

  • friend referral (via Friendbuy) and
  • reconsignment (e.g. demand-side users selling items they previously bought)

Facilitated logistical and technical scoping around periodic (~2x/year) commission rule changes affecting key business metric : cost-of-consignment.

Led engineering effort around integration of third-party referral program (Friendbuy,) providing guidance that we could deliver in six weeks, then leading post-mortem around process inefficiencies preventing us from delivering before eight weeks.

Led representation around quality initiatives while interfacing with 3rd-party provider (Rainforest QA.)

Results

  • Contributed strategically and tactically towards planning and executing work.
Categories
crm documenting eCommerce Innovation Leadership supply-side

Increased Leads

(The RealReal : 11/16-9/17)

Late Q3/2016

Upon joining, I inherited a lead-gen project that had gone deeply awry. Earlier in the year (March,) Product and Design had come up with an alternative lead-gen flow. An offshore company was procured to follow-through with implementation. The consultancy tackled the project but their implementation sat on a feature branch gathering dust (six months!) and lacking documentation until I arrived.

In order to get the feature into production, I tasked a Senior Engineer with soup-to-nuts verifying the feature branch. When he failed, I marshalled other engineers (at yet another near-shore company) to do the verification. They succeeded and we were able to roll out the new user experience, meeting a company objective to have it in production by the end of the year.

Mid-Summer 2017

Another executive decision was made to revisit the (same) flow and try yet another alternative, this time, in the new Phoenix environment. I spent time running point to assess the basics of the necessary (information) architecture in the new framework and then forumulating a project plan to implement. In October, the new user experience went live.

Results

  • Championed way-over-schedule experimental lead-gen flow into production, improving quantity/quality of sales leads.
Categories
Hiring Management

Attracting Talent

(The RealReal : 9/16-9/17)

In the absence of a dedicated internal HR resource for technical recruiting, I led the initiative to attract Senior and Lead full-stack software engineers while carrying my multiple other responsbilities.

I turned to Hired, Indeed Prime, Hacker News, LinkedIn, Workable and third-party recruiters to source 100s of candidates. Given the sheer volume, I developed a keen eye to quickly screen and asess candidates for possible tech and culture fit (e.g. current/former titles, size of current org, number of years of experience, tech stack, etc.)

I developed code challenges for the roles, emphasizing frontend or full-stack skills as appropriate, and performed the initial phone screen (partly cultural fit, partly technical.) I then handed off to a Senior engineer for a further technical phone screen and if the candidate passed that, s/he was brought in for a full-day onsite with the team.

I coordinated the day’s pre-brief (who would ask about which topic area) and the de-brief (where the team would vote to move forward or not.) If there was consenus, I would begin the background check process while also working with HR and the CTO to determine the apporopriate amount of compensation and equity and get an offer letter drafted.

Lastly, I faciliated the team’s continual improvement around the interview process.

Results

  • Morphed generic job reqs into team-specific roles to attract candidates fitting tech stack and company culture; got to offer with six, closed one Sr. and one Lead Rails engineer, and kept team’s morale high when candidates declined.
Categories
APIs Collaboration Emails Management

Improving Deliverability

(The RealReal : 3/17-9/17)

In a bid to

  1. improve deliverability of our email campaigns (by sending from same IP) and
  2. free Engineering resources (by shifting email template management to Marketing)

… a(n under-resourced) team1 I was head of was tasked with further migrating from SendGrid templates to ExactTarget.

Given competing priorities, resource availability, and trying to support the engineer’s professional development around further full-stack experience, I tasked the Sr. Frontend Engineer (newest member of the team and who had never done email marketing before) with the port.

For some further context, by the time I had arrived in Q3/16, approximately 10% of system-generated transactional emails had already been ported (such as the demand-side signup confirmation email,) so there was already some precedent and knowledge in the team on how to do such ports.

Scope Change

Working with Product and Marketing, we identified the accounting email sent monthly to supply-side users (30K recipients, arguably the most important email in the system) as the next candidate for porting. According to what we could deduce from the documentation and making certain assumptions about implementation based on similar (previous) endeavors, it seemed like the port would be a slam-dunk in two weeks.

As the engineer got into implementation, I realized that the scope was much larger than originally anticipated. Instead of a one-off API call like had previously been the case (e.g. for the demand-side signup confirmation email,) we were looking at a fundamentally different business process – not of a one-off send but a batch send of 30K emails as part of the monthly payout managed by the Director of Accounting (as kicked-off by a single admin button-push.)

Furthermore: if a demand-side signup confirmation email did not land in a user’s inbox, certainly that was problematic, but if a supply-side user’s monthly accounting email (or, worst case, multiple 1000s of them) did not arrive, that would cause an exponential increase in Customer Service requests and – much worse – violate the company’s contractual SLA with supply-side customers around informing them what their monthly payout would be.

We (all of us – me, the engineer, Marketing, Design, the Product Manager) had wandered into uncharted territory by tackling a template that was blasted out at such volume. We had to revisit our assumptions about how to build out the feature.

Feature Diligence

To emulate a send at a user level was fairly trivial; simply invoke a method call from a console. To truly emulate the batch blast on staging proved much more complicated, as two conditions were necessary: a block of 30K test users and integration with (and kick-off of) the monthly payout (which took four hours to finish.)

Though I assumed the engineer would be able to navigate an unfamiliar domain because he had some full-stack abilities and had been able to reason systematically about architecture in other circumstances, he had difficulties iterating at a unit and functional level to get a local (development) email send working. I coached him on the first tactic – providing guidance to test code at various levels (unit, integration) to mitigate risk – focusing on a method call as it would SMTP email from a local dev environment and then the invoke the ExactTarget API. Then, I coached him to deploy a feature branch integrating with the payout onto staging (where users had already been anonymized) and setup a test blast of 200.

With that blast, we ran into a race-condition around data extensions – which no one in either Engineering or Marketing had complete mastery of – where emails were being delivered empty (simply explained: because no sequential dependency existed between data population and emailing.) Over the following weeks, we tried to determine the best way forward while interacting with our ExactTarget sales representative and then their engineers. We experienced suboptimal support/delays in her getting back with answers to our questions.

Result

After two months of development effort, back-and-forths with Product and Marketing, and several back-and-forths with ExactTarget sales reps and engineers, in a meeting shortly before production go-live of the port (involving the VP PROD, CTO, and VP Marketing,) given the potential risk to the business of such important emails not being delivered, an executive decision was made to abandon the port.

Takeaways

If I had the opportunity to manage it again, I would have:

  1. found a way to free up time for the more experienced Full-stack engineer – who had had some experience with ExactTarget but was overcommitted at that point on other priorities – to initially pair with the Sr. Frontend Engineer. That would have exposed the initial underestimation in scope earlier, leading to a better cost-benefit analysis (for all stakeholders) given the information we had.
  2. advocated for refactoring, given what I learned about the state of the code, architecture, and process, and how tightly-coupled the mailing code was with the payout code (making even a semblance of proxy integration testing arduous.) Refactoring would have allowed us the opportunity to identify business critical functions and ensure we had reliable automated testing around them.

In reflecting on what we could take away around process improvements, I have learned to leverage these ideas:

  1. kick off any new project with a technical design review
  2. understand the typical load of a feature before making a change
  3. identify system changes affecting user experience as one-off or batch (which impacts scope accordingly)
  4. for anything involving a 3rd party, scope work at 3X as a rule-of-thumb (this heuristic is informed not only by this project but by others that involved 3rd party APIs)

I hope that one further follow-on highlighted by the experience for Product and Engineering executives was that, given not only the difficulties in this project but others involving Salesforce/ExactTarget, smaller vendors with less confusing/better/easier technical documentation could be more cost-effective in the long run.

[1] : a Jr. Full-stack Engineer (2 yrs. exp.,) a Full-stack Engineer (7 yrs. exp.,) and a Sr. Frontend Engineer (7 yrs. exp.)

Results

  • Led engineering effort to improve email deliverability (which we ultimately had to abandon.)