00:00:00.000
hi everyone I am doing a mini version of
00:00:04.020
my talk I've done this at Sin City Ruby
00:00:06.600
and rubyconf mini and I was really
00:00:08.460
thrilled to be asked to do this at
00:00:10.080
wnb.rb
00:00:12.420
um so the title of the talk is we need
00:00:13.980
someone technical on McCall and I am the
00:00:17.340
host of this talk Brittany Martin so a
00:00:19.380
little bit about me I actually just
00:00:21.660
switched jobs so I now work as an
00:00:24.180
engineering manager at Shogun which is a
00:00:27.000
page builder on top of Shopify and
00:00:29.760
Bigcommerce you might also know me as
00:00:32.820
one of the co-hosts of the Ruby on Rails
00:00:34.920
podcast I've been doing that since
00:00:36.600
September 2018. Gemma isroth one of your
00:00:40.020
lovely founders of wnb is also one of my
00:00:42.899
co-hosts as well I took the podcast
00:00:45.360
independent in 2021 I have Gemma Brian
00:00:48.960
and Nick as co-hosts this podcast is my
00:00:53.100
contribution the community and I'm
00:00:54.840
really thrilled to see more Ruby
00:00:56.520
podcasts starting up
00:00:58.500
and I also am known as merge conflict
00:01:02.640
that is my roller derby name I took a
00:01:05.640
couple years off from doing roller derby
00:01:07.860
and just returned now my number in
00:01:11.159
roller derby is 200 and the reason for
00:01:13.799
that is when you hit me uh I get back up
00:01:17.159
status code okay the irony in that is
00:01:20.400
that I currently have a broken ankle
00:01:22.080
because I did get it a couple weeks ago
00:01:24.540
and said I did not get back up 200 so
00:01:27.540
feel free to use the Q a feature to come
00:01:29.939
up with a new number for me I love my
00:01:32.220
number 200 but um that that story not
00:01:35.400
great so we'll get uh more into my
00:01:38.460
background so this is my pitch to you
00:01:40.200
for why I'm qualified to give this talk
00:01:43.860
um so some would say that I have had a
00:01:45.900
varied career and these people would
00:01:47.700
absolutely correct but there is a common
00:01:49.740
theme my specialty is to be the grease
00:01:52.560
that keeps the gears turning within my
00:01:54.420
rolls just along the way I happen to
00:01:56.399
learn how to code I'm a very loud and
00:01:58.560
proud rubius I am the queen of setting
00:02:01.320
barriers my goal is to reduce chaos and
00:02:03.600
keep Focus within the teams that I work
00:02:05.520
with and my goal as well is to connect
00:02:07.619
people together
00:02:09.239
so before we get into this what does it
00:02:11.580
mean to be technical this is something
00:02:13.260
I've seen a lot of people debate over
00:02:15.599
time
00:02:16.500
as defined by dictionary.com technical
00:02:19.800
is defined as belonging or pertaining to
00:02:22.080
an art science or the like it means to
00:02:25.080
be skilled or familiar in a practical
00:02:27.120
way with a particular art and trade
00:02:29.879
what does that even mean
00:02:31.980
well technical reverse non-technical is
00:02:34.680
a really hard line to Define
00:02:36.200
non-technical skills technically tend to
00:02:39.540
be interpersonal skills which include
00:02:41.819
communication leadership teamwork
00:02:44.400
decision making and situation awareness
00:02:46.700
and really in the end those skills could
00:02:49.620
actually be highly technical but facts
00:02:52.440
are facts if you work in the tech
00:02:53.819
industry you should be considered
00:02:55.560
technical however for the purpose of
00:02:58.019
this talk a person with technical
00:03:00.000
abilities is someone who has unique
00:03:01.920
knowledge on how a system or process
00:03:03.959
works internally I'm aiming this talk
00:03:06.599
for software Engineers but it applies to
00:03:08.760
anybody who is technical
00:03:10.800
and one last note I will keep referring
00:03:13.680
to phone calls now me I actually I
00:03:16.140
absolutely love getting on the phone I
00:03:17.879
had two very long phone conversations
00:03:19.739
with friends just yesterday but for this
00:03:23.280
purpose calls can be phone calls but
00:03:25.200
they're likely to be video conferences
00:03:28.680
so the situation you get a DM the
00:03:31.860
dreaded message they want someone
00:03:33.720
technical on the call and if that
00:03:35.879
statement is terrifying never fear but
00:03:38.760
how did we end up in this situation
00:03:41.819
there is a Wall of Resistance when it
00:03:43.739
comes to developers talking to customers
00:03:45.720
this is a typical conversation where
00:03:48.120
products say developers can't talk to
00:03:50.760
clients A salesperson within your
00:03:52.980
organization says if you talk to a huge
00:03:55.080
client they will ask you for features
00:03:56.580
they haven't purchased and Engineering
00:03:59.220
managers will say it's marketing's
00:04:01.080
responsibility to Define needs we
00:04:03.239
estimate the effort they decide
00:04:06.180
but why is it this way in the beginning
00:04:09.120
you have a small team a couple of
00:04:11.220
Technical and non-technical Founders
00:04:13.080
they can all meet customers together
00:04:15.360
they all find Solutions together it's
00:04:17.579
magical things go well the team expands
00:04:20.220
more engineers get hired more sales
00:04:22.079
people join now more distance is being
00:04:25.139
made from the developers and customers
00:04:27.479
prospects and vendors
00:04:29.759
but what's the best way to handle being
00:04:31.500
the technical contact on a call well
00:04:34.080
it's about taking some steps to avoid it
00:04:36.180
at first it sounds really obvious but
00:04:38.580
there's actually an art to dodging a
00:04:40.500
call
00:04:41.699
this is actually one of my favorite
00:04:43.860
memes and truthfully it inspired this
00:04:46.440
talk we brace ourselves from calls
00:04:48.840
because they can be terrible time
00:04:50.400
wasters we are scared to be tasked with
00:04:52.500
real-time support debug in real time and
00:04:54.900
make unreasonable promises it often
00:04:57.780
costs you more flow time which is
00:04:59.280
something that is so important to us
00:05:01.139
we're being paid to write code not to be
00:05:03.660
in meetings right well let's get out of
00:05:06.240
it
00:05:07.320
part of this is writing really really
00:05:09.720
great support tickets and this is a
00:05:11.880
skill that I have spent many years
00:05:13.560
trying to develop you always want to
00:05:16.440
write well-written support emails and
00:05:19.320
you might get the response that you need
00:05:20.880
so first of all always make sure that
00:05:23.520
you're using a really clear title a lot
00:05:25.740
of email providers Will Group title
00:05:27.720
emails so it needs to be unique and
00:05:29.160
clear the second and be very clear about
00:05:31.680
who you are
00:05:33.300
third what did you try already do you
00:05:36.120
have links nothing is worse than saying
00:05:38.400
did you try the obvious from the support
00:05:40.139
team
00:05:41.100
give them a very clear directive on what
00:05:43.320
action they need to take and lastly
00:05:45.900
we're Technical and with the data as
00:05:48.600
needed or as an attachment don't dilute
00:05:51.120
the message in the Middle with the data
00:05:52.979
that the person needs to be able to help
00:05:54.660
you
00:05:55.380
for them to be able to help you
00:05:57.419
stuck in clear API documentation think
00:06:00.240
of API documentation as a reference
00:06:02.160
panel that has all the information you
00:06:04.320
need to work with the API it tells the
00:06:07.440
partner everything you need to get out
00:06:09.240
of that API so that way they don't need
00:06:11.100
to get on a call with you unordered
00:06:12.780
debug
00:06:14.460
and this is a controversial one and that
00:06:16.860
I'm happy to debate again I am the queen
00:06:19.680
of barriers
00:06:21.060
if I'm asking to be the technical person
00:06:23.220
on the call and they are neither a
00:06:25.020
customer partner or vendor my first
00:06:26.819
entering is to deny it needing a sales
00:06:29.580
engineer is one thing but that signals
00:06:31.500
we need to equip the sales team with
00:06:32.940
better tooling and a roadmap
00:06:35.220
however there are some signs where you
00:06:37.319
should accept joining the call
00:06:39.960
if you are extremely vested and yes I am
00:06:42.419
proud of this this uh image there are
00:06:45.000
definitely times you should accept the
00:06:46.199
call if asynchronous communication is
00:06:48.660
not working for you so far the
00:06:50.580
relationship is incredibly important
00:06:52.139
within your company and you suspect this
00:06:54.360
could be an issue with something that
00:06:55.680
you were responsible for
00:06:57.360
taking a call can result in a net
00:06:59.340
positive gain when you calculate the
00:07:01.199
cost of the call literally factoring
00:07:03.539
your salary into an hourly rate you need
00:07:06.240
to calculate if it will end up being a
00:07:07.919
net positive for you to take that call
00:07:09.419
if losing the MRI of this customer or
00:07:11.880
partner is high and will take up more
00:07:13.680
engineering resources to figure it out
00:07:15.419
take the call
00:07:16.919
and like a good test it is all about the
00:07:19.199
setup before you execute the call
00:07:21.539
so let's start off with an example
00:07:23.400
scenario you are deprecating your public
00:07:26.039
API at your company the deprecation is
00:07:28.680
scheduled and you are absolutely eager
00:07:30.479
to retire the services and of course you
00:07:32.819
know delete the code except your chart
00:07:35.039
partner just alerted you that they are
00:07:37.020
blocked on pivoting from your version
00:07:38.400
one endpoint to version two so you're
00:07:40.740
going to take a call to identify the
00:07:42.360
blockers so you want to identify the
00:07:44.819
right people for the call you do not
00:07:46.500
want a committee for people and most on
00:07:49.020
the call to stay effective you your
00:07:51.479
second in command their technical
00:07:53.099
contact and their Advocate to get the
00:07:55.380
API transition complete
00:07:57.780
ahead of the call make sure the advocate
00:07:59.819
of the call includes a concise agenda
00:08:02.160
this keeps everyone on point prepared
00:08:04.560
and you will not drift into somewhere I
00:08:06.539
like to call feature request Fantasyland
00:08:09.240
if it is not on the agenda the answer is
00:08:11.280
I don't know but I will get back to you
00:08:13.319
and in this case the API deadline needs
00:08:16.080
to be at the very top of that agenda
00:08:18.300
make sure that you sync internally
00:08:20.039
schedule a quick meeting to confirm
00:08:21.900
goals and get a feel for known
00:08:23.520
personalities and I think you all know
00:08:25.259
what I mean by known personalities
00:08:26.960
perhaps include some secret cues to keep
00:08:29.580
the conversation on Pace and we want to
00:08:32.279
make sure that we connect on whether or
00:08:33.659
not we knew that this customer was
00:08:35.279
struggling with making this API
00:08:36.839
transition
00:08:38.279
the day has arrived it's now time to
00:08:40.500
execute the call
00:08:41.880
this might seem really obvious but bear
00:08:44.039
with me it's really easy as technical
00:08:46.380
people to want to grab the keyboard and
00:08:48.480
start driving but step back and listen
00:08:50.880
and make sure you know exactly what the
00:08:52.620
other participants are experiencing and
00:08:54.720
why the more they talk the likely they
00:08:57.480
are to admit the real problem they
00:08:59.700
forgot to make the API transition or
00:09:01.980
someone who departed who is in charge of
00:09:03.720
this has gone
00:09:05.820
it's incredibly frustrating to find out
00:09:07.800
that there was important information on
00:09:09.300
a call that was not shared with
00:09:10.680
everybody within the company this often
00:09:12.839
leads to why these calls happen to begin
00:09:14.399
with so make sure you designate someone
00:09:16.620
to take notes and get permission to
00:09:18.360
record the call
00:09:20.040
and remember no live debugging if you
00:09:23.040
find yourself opening a rails console or
00:09:25.019
your logging tool stop right now it's
00:09:27.660
not the best use of your time or your
00:09:29.399
partners rather if they have
00:09:31.019
reproduction steps that need to be
00:09:32.519
inspected you can get that after the
00:09:34.440
call
00:09:35.880
it is totally okay to have some small
00:09:38.100
talk about your favorite show anybody
00:09:39.839
else Watching Ted lasso right now or you
00:09:41.820
know maybe CrossFit but once the call
00:09:44.220
has started stay on topic Envision you
00:09:47.220
are actively throwing in callbacks to
00:09:48.959
get your to get the conversation back to
00:09:51.000
that API transition
00:09:52.980
and this is probably most my most
00:09:54.839
important slide in the entire the entire
00:09:57.180
presentation is elevate your second in
00:09:59.339
command while you are considered the
00:10:01.440
most technical person on the call it is
00:10:03.480
your job to elevate your second in
00:10:05.100
command this might be reiterating that
00:10:07.260
they can get you the answers that they
00:10:08.820
have or they have dealt with this
00:10:10.140
situation before and they know what
00:10:11.760
they're doing the goal is to lessen the
00:10:14.700
per the customer the partner vendors
00:10:16.680
dependency on you and they see your
00:10:19.080
second in command as truly competent
00:10:22.140
and remember make sure that you're
00:10:24.480
translating during the call it is
00:10:26.339
incredibly rude to not remember that at
00:10:28.920
one point in our lives we were not
00:10:30.480
technical don't forget that it is rude
00:10:33.060
using exclusively technical language in
00:10:35.279
front of non-technical stakeholders
00:10:36.899
without offering a translation so here's
00:10:39.660
an example so you could have said I see
00:10:42.540
so the issue that you're having is that
00:10:44.040
you were expecting an XML payload from
00:10:45.779
V1 but the V2 API only offers Json you
00:10:49.079
will need to migrate to Json or find a
00:10:51.360
library that will help you translate
00:10:53.120
instead you can say that but then
00:10:55.680
afterwards you say the data format that
00:10:58.620
your team is expecting from us is
00:11:00.180
different than what we are sending your
00:11:02.160
team is going to look into solutions to
00:11:03.899
accept that
00:11:05.640
if you get an agenda of the call done
00:11:07.740
early end it early we need to make it
00:11:10.200
clear that your time and their time is
00:11:12.180
valuable repeat the conclusions made the
00:11:15.420
partners committing to moving your V2
00:11:17.160
API by April 30th agree to the handoff
00:11:20.100
that your second will complete within 24
00:11:22.620
hours of the call
00:11:24.660
of course the follow-through as I've
00:11:26.579
mentioned all good calls have followed
00:11:28.320
through so you don't have to schedule
00:11:29.399
another
00:11:30.540
make sure to tag your tickets if you
00:11:32.700
discover it's an issue on your side you
00:11:34.440
write those tickets immediately and tag
00:11:36.000
your engineering manager to get them
00:11:38.100
prioritized ASAP tag your second in
00:11:40.980
command so they can see the work that
00:11:42.360
you are doing to help support their
00:11:44.160
message their mission
00:11:46.200
which leads to being an email Whisperer
00:11:48.720
remember how I said you need to empower
00:11:50.519
your second in command it continues here
00:11:52.760
internally you need to feed them
00:11:54.720
technical details so they can they can
00:11:56.579
send the most brilliant follow-up
00:11:57.899
afterwards this further instills that
00:12:00.240
they are the lead here not here
00:12:03.000
now once the version one API is
00:12:05.339
deprecated likely behind schedule you
00:12:07.620
want to have an internal retro as to why
00:12:09.899
technical intervention was needed in the
00:12:12.420
first place
00:12:14.760
in the end there are some actual
00:12:16.680
positive things that come from being
00:12:18.300
able to do technical calls well
00:12:21.360
you can have a fantastic career as an IC
00:12:24.120
as a manager as a Founder however
00:12:26.640
there's no way to progress in your
00:12:28.200
career without getting good at dealing
00:12:29.640
with other people you can be a hero by
00:12:32.279
helping others get other things done the
00:12:35.220
game is to do it with the least amount
00:12:36.839
of effort as possible
00:12:39.420
In The End by taking these technical
00:12:41.519
calls you learn about trust developers
00:12:44.100
can hear feedback from the source and
00:12:46.260
get to trust the existing requirement
00:12:48.060
management process
00:12:49.860
you can get Innovation from it the
00:12:52.440
developer can notice client problems
00:12:54.300
that can be addressed by new technology
00:12:55.920
that they are evaluating
00:12:58.560
motivation developers are motivated by
00:13:01.320
meeting clients who like whose life is
00:13:03.420
impacted by the products they deliver
00:13:05.760
and time developers can ask
00:13:07.860
clarification problem or
00:13:10.500
time developers can ask clarification
00:13:12.540
questions that would take days or weeks
00:13:14.459
to go back and forth through all the
00:13:15.839
intermediaries so in the end maybe next
00:13:19.260
time you pick up the phone
00:13:21.959
oh and Maybe Call Me Maybe I can't
00:13:25.139
imagine a lot of questions will come
00:13:26.700
from this but if you have a funny or a
00:13:28.680
tragic technical story to share please
00:13:31.380
find me posted in the chat I would love
00:13:33.720
to hear it and thank you all so much