A podcast about software development and developing ourselves as software engineers. Hosted by CJ Avilla and Colin Loretz.
Welcome to Build and Learn.
My name is cj.
And I'm Colin, and today we
are talking with Dave Paola
about the Agency of Learning.
Dave, welcome.
Hello?
Yeah, hi.
How's it going?
Good to be here.
Appreciate you.
It's going great.
Yeah, life is good.
Work is good.
we're in the beginnings of spring,
or I guess beginnings of summer here.
I'm calling in, calling
from rural Ohio today.
so there's a lot of
green, things are good.
Life is good.
Are you on starlink or what's
your internet out there?
funny enough, good question.
I investigated starlink and, I
haven't pulled the trigger yet.
Basically, I'm living in a family
cabin right now, that has been in my
family since I was born, basically.
and I was able to finally get internet
access here in, I think in late February.
For the first time in, it's 30
years of existing, and the internet
is faster here than it is at my
parents' house, in northeast Ohio.
It's faster than the internet I had
in San Francisco in the Mission, and
it's faster than the internet I had
in Tahoe and it's half the price.
it's fiber internet.
Yeah, it's great.
Kinda surprising.
I'm excited to try out starlink, but
I don't know, I'm not very optimistic
that it would work well for a Zoom
call or like a remote podcast recording
like this, just given the latency.
But, yeah.
I had to ask, given you're
out in some rural spots, I do
know that it's available here.
There's like a small lake here and
somebody acrossed the lake told
me that they had, star, Lincoln
had only recently gotten it, and
that they were raving fans of it.
So who knows?
Maybe it's in my future.
Nice.
Yeah, it's, it's big in the van life
community already, especially for nomads
and being able to still be connected.
Cause I think the joke has always
been that like, digital nomads
are probably gonna be like the
least dependable contractors.
You got a lot of like software developers
to try to travel and then you're just
like, they're never able to follow up on,
they're like, oh yeah, my internet's bad.
I'll sync up later.
And.
Push up your code when I'm do surfing.
Yeah.
Yes.
Let my people go surfing.
I got some friends who are, who are
van lifers and, it's interesting,
as part of that appeals to me, I've
heard their stories about, going
to Thailand for a year or whatever
and saving cash and surfing.
But I also remember hearing a story
of, I, I don't remember if it was them
or if it was somebody else about, they
would basically pull up to the beach.
They would work, off of a charged
car battery, and as soon as the car
battery died, they would go surfing
while the car battery charged.
And so the thing that would
dictate their hours, the flex,
the flexibility of their hours was
actually the car battery capacity.
Not, time zones or, their mental,
load or how much sleep they got
that day or anything like that.
I always thought that was
a, it was a funny story.
It's a forced break.
I think that's good.
But, yeah.
Yeah.
Yeah.
So I think today we're gonna be talking
a little bit about, helping early career
developers grow into more mid-level
senior level developers one day.
And, before we jump into that, we'd
love to hear a little bit about
your background, Dave, and just
how we got to where we're at today.
Sure.
I'll try to be brief.
Let's see.
So right now I'm founder of the
Agency of Learning, as you mentioned.
the Agency of Learning is basically
a community of early career
developers who, are either bootcamp
grads or self-taught, or otherwise.
I've described it in a variety of ways.
And the way that is most resonant with
developers is that it's a community to
help you get job ready for that first job.
being a junior developer is pretty lonely.
You're often working on.
Your own solo side projects, and you've
selected those side projects so that you
can potentially learn a new technology
because you think that's gonna make
you more attractive to employers.
the employer pitch is
a little bit different.
the employer pitches, we're essentially
a finishing school for bootcamp grads,
and I find that most employers nod
their heads at that description with
very little other detail required.
Right now we're pretty
focused on Ruby, on Rails.
I'm growing it very slowly and exclusively
so like I interview every single person
that joins before they're, before
they receive their link to Discord.
we run it like, like a real team.
It is a real team.
we contribute to open source projects.
We have daily standups.
We have a couple folks who are more
senior that help with all the code review
and, we do design documents for all
of our high level technical decisions.
We follow a pretty,
structured agile process.
And so forth.
My background comes from
the bootcamp industry.
I won't go into too much detail,
but, basically a buddy of mine back
in 2012, co-founded block with B
L O C, which was, to my knowledge,
the first online developer bootcamp.
I.
We were involved with Dev
Bootcamp extremely early on
during their first cohort or two.
and we worked with, the founder there,
for a short time and decided, Hey,
we should try to do this online.
It eventually evolved away from the
online classroom model, towards one
of a, towards more of a one-on-one
model where we would pair bootcamp,
attendees with experienced practitioners.
We pioneered a lot of the, a lot
of what you see now in the online
developer communities where you have
a developer boot camps where you have
the income sharing agreement and, we
have lots of thoughts and opinions
based on the experience there.
And eventually what we landed
on was, I was the C T O.
And so I was responsible towards
the end of my tenure there.
I was there for six years,
responsible for the longest and
most intense product, which was
the software engineering program.
Went to hiring managers and
basically heard from hiring
managers, Hey, 12 weeks isn't enough.
you have all these gaps
in all these students.
And so we put together a longer, more
intense program, to get them job ready.
and eventually we had this thing called
the tuition reimbursement guarantee, which
was basically like, you know, uh, get,
get a job where you get your money back.
a lot of my experience since then, and
certainly what I'm doing now is based
on my, my experience at Block and.
It was a really wonderful place and we
had some really great people working
there throughout the organization.
and I think we were like one of the
last programs that was based on Ruby
on Rails and I, can talk a lot about
that, when you're, when you're
talking about like this finishing
school for bootcamp grads, like what
are the main gaps that you're seeing?
is it how to work?
In an engineering organization
instead of independently?
Or is it more like computer
science fundamentals?
what is going into sort
of the finishing pieces?
Yeah, that's a great question.
the, it's, I am still iterating
and honing the way I describe this.
Probably every time I talk about it, I
talk about it a little bit differently
because we're learning so much, so fast.
But, Most, it's probably 50%
technical and 50% non-technical.
the technical stuff is, it's really just
like when you come out of a bootcamp.
you've learned the fundamentals,
in theory, and you've maybe worked
on some, some greenfield projects,
but here's what you have not done.
You have not been assigned a, a small task
and an existing code base that is running,
Ruby two seven and Rails, five oh that has
nine GitHub actions associated with it.
Two of them are flaky and, you have to
get this up and running on your machine,
and you have to do so in your first week.
And you have to manage the expectations
of your employer along the way.
You wanna be able to
communicate effectively.
So it's basically like a whole big
mess of okay, technical skills.
How do you get your environment set up?
How do you get unstuck when you
inevitably get stuck setting up
your environment like we all do.
how do you do so without
overburdening your employer?
How do you do so without being
overcome with imposter syndrome?
How do you, communicate?
What you need and when to your
colleagues, if you have colleagues
and a whole bunch of stuff.
it's hard to articulate like line by
line what it is, but what we've found
is that basically doing a simulated
team environment with open source,
like ticks most of the boxes, uh, it's
very obvious, you know, for example,
do you wait to be asked for an update
before you give an update on your work?
Or do you proactively provide
the update at a, a, a.
Same time every week to your employer.
how do you.
Infer tone from pull request feedback.
what does a nitpick mean?
Is a nitpick a nice to have or is it
a need to have, like all these things
that, that we know about as developers
every day, if you've never worked
on a real team, like you have to
learn all of this in your first job.
And so by providing what is essentially
a volunteer job experience upfront and
by, honestly like selecting the best
people I can find, like the idea is
that, the agency of learning becomes a
place where employers can go to find the
very best junior de developer talent.
Yeah, it's really interesting.
We, we, we did this at the collective,
so at the, our co-working space, we
worked with the university to hire
a software developer kind of intern.
So it was, this is really cool
program that the students voted on
where they're, they're, I forgot what
they're called, but they pay into
their tuition to create this program.
So the program then pays the students
so that we didn't have to pay them,
but it ended up being a really cool
program where we get the grant to
pay the student to work with us.
And we were building, you'll love
this, but we're building a co-working
software, management system.
Oh.
And the funny thing was like, you
could see as they were, this was
someone coming outta computer science
and they were, very good technically.
but there was that piece that you're
talking about, like working with a team.
In the real world.
And there were all these, very
senior Ruby on Rails developers who
just were too busy to be honest.
Like we were like, okay, we want,
they're gonna be here to help you.
And so when we started working
on the project with these
developers and our intern.
And at the beginning it was a lot of
them, you could tell they were looking
for permission to do a lot of stuff.
am I allowed to give feedback?
Can I ask for this?
To, by the end of their semester,
they were in GitHub being
like, Hey, where's your pr?
Hey, can we close this?
What's going on?
Like it was, I.
I, I don't care how many
lines of code were written.
I was like, you have
reached the next stage.
Like you have to get stuff done sometimes.
And it was just like, that is the one
thing I took away from that was so like,
I don't know, just filled up my cup kind
of thing, where it was like, I think we
succeeded here and I can, I reproduce
that with every individual person.
I don't know.
There's a little bit of, personality
and like you said, imposter syndrome
and all these different things, but
I didn't intend to teach that, but
she was like, my semester's ending.
We have to get this project done.
Where's your code?
Why is this still open?
I was like, you might have a future
in product and project management.
That's awesome.
you say it fills your cup like it does.
It does with mine too, and I dunno
if you remember this or if you
ever watched this talk, but what
you've just described reminds me
of way, way back, like maybe 2011.
Or so, Sal Khan, when he launched
the Khan Academy gave a talk, I think
it was a TED Talk where he talked, I
think it was about mastery learning,
and it was a TED talk about mastery
learning, where you don't let each
student proceed until they've mastered
the topic at hand, which is, I dunno
about either of you, but very different
than my public, school education.
and he talked, he had a graph that
he showed of each individual student.
It was like a scatter plot with
a vector attached to each point.
And you could visualize each line
was a student, and you could see as
time went on, So the x axis is time,
and the Y axis is like competency.
And most students were
roughly in the middle.
It was like this linear progression in the
middle somewhere, not perfectly linear.
but then there was this one at the
very bottom that for long, took a
long time, whatever the topic was,
algebra or something took a long time.
But as soon as they hit it, they
spiked and outperformed everybody else.
And his point was, in the traditional
education system, that person would've
been labeled learning disabled and.
Their whole life trajectory
would've been different.
And so that was, that's the whole
Khan Academy Mastery Learning thing.
And I find that very, fulfilling,
fascinating, intellectually interesting.
especially because education
is so important in society.
But, in a more micro level, maybe like
watching the less experienced developers.
If you give them a chance and you
give them the right environment, like
they can do amazing things, way better
things than at least 50% of the senior
people I've ever worked with, which is
uncomfortable to talk about sometimes
when you're talking to senior people.
But, but man, it's awesome.
I can give you three people right now that
come to mind, like very similar stories.
It's really cool.
So could you help explain a
little bit about the model?
Like how does the agency
of learning make money?
Are the junior devs paid?
Are they unpaid?
Is it all open source?
Is it like, are you taking
projects for clients?
Are you building your own stuff?
what does that look like?
it's been changing a lot.
In the recent past, and it will
probably change a lot, in the
immediate future as we learn more.
I'm definitely taking like the lean
startup approach to this, where I'm
like, try trying every different model
and seeing which one is a good fit.
And honestly, I'm not sure
we found the right model yet.
So I can tell you what we're doing now.
I have a very small for-profit
agency that is becoming more of a
side agency to be honest with you.
And the agency is like, the
naming is very confusing here.
My actual for-profit agency
is called Sierra Rails.
It's been around for a
year and a half or so.
the Agency of Learning is, as you
mentioned, it's totally volunteer based
right now, or I should say it is a freak.
It's free to join.
there's no compensation involved
today for, I, for myself or for the,
For the members and the way that one
business model I've been investigating
with, I would say it's very early.
the results seem promising, but I
don't know if it's where we'll land,
basically like I become a little bit
of like a staffing model where, on the
strength of the technical assessments
and the experience and the candidates,
we place these folks on a contract
a higher basis inside companies.
I have.
Three candidates right now.
they're not candidates anymore.
They've been placed.
So I have three eight junior devs
right now that are on that model.
And, it's I don't know the jargon cuz
I'm new to the staffing industry,
but, I have some friends that have
basically contracted through an
agency like this where the agency
takes a cut for placing them.
So that's one early experiment that I
would say is like modestly successful.
it could be that we evolve more towards
a model where employers pay to get
access to a profile system or something.
I think we're a long way off from that.
although who knows?
But basically like the model is,
Dave identifies like the best
people that apply, makes sure they
are good, and then gives 'em a
bunch of volunteer experience for.
Three months, six months.
And it's not just, it's not just Dave.
It's like I have a team of people
working with me, so I don't wanna
take all the credit, but essentially
it's, building a brand for employers
that employers can trust us to
give them really good candidates.
and trusting that at some point
we'll be able to make money off that.
I don't know when that will happen.
so I still have a day job,
but, yeah, that's how it works.
It'll be exciting to see.
I think we're seeing this in the rails
world with the Rails Foundation and
things too, where they're wanting
to focus on education, and how does
Rails show up to that conversation?
And you mentioned like having a
curriculum, in the boot camps that
you've worked with in the past.
And there's the gaps and there's no
replacement for real world experience.
Either.
So getting a blend of that, and it'll
be interesting to see how Agency of
Learning fits in with things that exist,
boot camps that exist, go Rails, rails,
foundation, whatever comes from that.
and yeah, I was going somewhere with
that, but We'll, I'll turn it over to cj.
Yeah, no, I was just reflecting on.
my experience too, teaching at a bootcamp
and then at the end having a group of
students that all knew the same stuff.
They all knew the same stack.
They all knew the same at the time.
We were using like rails in the back
end and backbone on the front end.
And so it was fun to see okay, they did
their final project and now like maybe
they're working on some extracurricular
stuff to polish up their resume
and get ready to go look for jobs.
But at that time, like right after
they came out, it was cool to see
many of, the students work together
because they could pair and build
stuff really quickly because they
all had this common language about.
Okay.
I know exactly what, my model's
gonna look like, my controller's
gonna look like, and you know what?
My front end is probably like the
conventions that I will likely follow.
so that was really exciting to see.
And then, I remember.
watching a lot of those students go
on to work at, at agencies and for
companies like Thoughtbot and Pivotal
Labs and, in those environments where they
continued the pair programming like, like
really immersive and like intentional.
Learning process, and many of those
engineers are now like the best
engineers that I know in industry.
And I think the pattern totally works
and, yeah, I'm, interested to watch
as you figure out the business model.
But I definitely have seen
and experienced, some juniors.
Being really effective.
And also the pair programming
model working really well.
is pairing something that's part of
your process or is it mostly solo,
you're gonna get a task and we expect
you to go execute on that or, yeah.
What is the, like the day-to-day
for one of the juniors look like?
Yeah.
so first off, I couldn't
agree with you more.
my, the experience I had lines up.
Perfectly with what you just described,
to the point where I now have, one
of the, one of the challenges we'll
say that I face an obstacle going
forward is in communicating to
employers the story that you just told.
This is a story that I tell all the
time, nearly verbatim to what you
just said, so I won't rehash it.
But the idea that you can hire
two developers instead of one.
It feels like educating the market kind
of a challenge, because over and over
again, the opposite story happens, right?
It's oh, yeah, I don't have the
budget to hire two juniors, so
I'm only gonna hire one junior.
it'll be fine, right?
And no, it's not fine.
it's so significantly different
and we all know how that goes too.
Like we know when you hire a junior and
you don't set expectations properly, you
don't communicate with them effectively.
They get imposter syndrome.
They feel guilty for asking
their colleagues for help.
I had a candidate recently who, was
told that they were not allowed to
ask their senior colleagues for help.
And if there's not a faster way to
destroy, the potential in a junior
engineer, I don't know what it is, that's
gotta be the one that does it the fastest.
you're not allowed to ask for
help from your, so nonetheless,
th that mindset is still pervasive
in the, in the market right now.
And I don't know how to fix it,
beyond just keep talking about it,
keep evangelizing and so forth.
but yeah, basically to answer
your question, Yes, pairing is a
significant part of the experience.
Basically, we follow what, used to be
a pretty normal agile process of you
go, get acquainted with a feature.
Either you pull it off of the work board
or you talk to your manager about it or
your product manager and, you spike on it.
Say, okay, let's go take a couple
hours and write some throwaway code.
And you write the throwaway code, and
then you come back and you talk about it.
You have a conversation.
You use the code as an artifact.
In that conversation, you say, this is the
part that's gonna be really easy and fast.
In fact, it's already done.
This is the part over here that.
We tried it this way and
this is not the right way.
We're gonna have to try a different way.
Or you say this way worked, but we
have to change 30% of it, or whatever.
And then you go on and build it again.
And when you build it again, it goes
four or five times faster because you've
already done the majority of the research.
And I don't know why maybe someone
more experienced can fill me in, but
this is way more effective at avoiding
the gigantic PR problem where you
have this huge PR at the very end and
people are just like throwing feedback
into that PR willy-nilly, senior
people, junior people, nice to have,
need to have nitpicks, style, choice,
who it is impossible as we know to
get like an architectural overview.
How does this thing work when you
have a 4,000 line pull request?
You have to review.
But we've all been on
teams like that I'm sure.
yeah.
Repairing is a big part of it.
Pair we pair on the spike aspect, and
sometimes they pair the whole time.
Sometimes they stop halfway through
and it becomes very obvious that the
seams, the seams are obvious and clear
and they can just, come together.
But it's very rare that there's
no pairing happening at all.
You didn't specifically mention it,
but , having two juniors, instead
of one, allows those two to pair
with each other as well, right?
So that they don't, they're working.
Someone might have a slightly different
background, they might be a little bit
ahead, a little bit behind, technically
and They hopefully will still get to talk
to their senior engineers, but having
the two means that it's not this lonely,
existence on the team where they're
like, okay, we were brought on, I've
been on many teams where they'll hire
a junior, but then they don't set the
expectations with the senior people that.
Or even giving the senior
people the right training.
I would say mentoring is not a
given, like most people have not been
taught how to teach or how to mentor.
And it's a chicken and egg there
too, where you do have to develop it.
Like in my roles, I do see,
helping my team as part of my job.
It's not just to produce my own
artifacts, to produce my own code.
I've also been a senior engineer who's
guilty of making the too big of a PR
that's got way too much stuff in it too.
Because we've just been jamming
on one idea or one concept, but
that makes it harder for juniors
to learn from as well because now
they, are they gonna emulate that?
Are they thinking this is what
being a senior engineer looks like,
that you have to have these huge,
massive, like too big to fail prs?
No, it's not.
So there's a little bit of
modeling that has to happen.
Role models.
a little bit of training.
I don't think, I don't know Sure.
If you've heard of anything.
Is there any formal programs for
teaching seniors on how to do
mentorship and things like that?
I'm sure there are, the only
one I am aware of that's top of
mind is one from Engineer Kit.
And I think it's pretty new.
I talked to Gavin, at Engineer
Kit a little while ago about this
that's the only one I'm familiar
with off the top of my head.
I do think you're right though.
And I think one of the, one of the
things that I've stumbled upon here is
that if you're already on an engineering
team, That has a great culture in
terms of, egoless leadership and people
are able to give candid feedback and
revisit decisions along the way and
you have a culture of helpfulness and
openness and, no such thing as a stupid
question, those kinds of cultures.
Then you can add juniors to that
environment and they'll do fine
even if you hire them one at a time.
It's the other cultures that you
need to send these squads of juniors
into to, in a sense, be a version of
it's like you're implanting a seed
of a new environment into a team and
you do it with these two juniors and
it can work really well actually.
It's very, it's harder, but
I think it can work well.
but I do think, basically
I agree with you like the.
The idea of being a good role model
is like half the battle, if not more.
Sandy Metz, I'm sure we all
love and admire Sandy Metz.
I certainly do.
she had a gr, I forget which talk it
was in, but she, hammered the point
home somewhere that when you have,
especially newer engineers, but all
engineers I think are guilty of this,
you go into a new code base and.
You're tasked with writing
some code or building a feature
or changing something, right?
Most code is not written new.
It's changed.
And when you need to make a
change, you try to adhere to
the patterns you see already.
And if the patterns that you see already
are, subpar, if you add juniors to them,
they're gonna copy subpar patterns.
It's not necessarily cause of stupid,
it's because that's what we all do.
And so I find a lot of my work at
the agency now has become, Try to
make sure the guardrails are good.
Try to make sure the
patterns that are there.
it's actually more, it's actually a
little bit like an architect role, but
it's not about the architect of the code.
It's about architect the code that
people are going to live in and habit.
So that like when you add more people
to them, they don't just duplicate bad
patterns, they duplicate good patterns
or arrange things in such a way that.
The patterns emerge or
there are no patterns.
Like you, you organize the mess first and
then you separate the messes first and
then it's kinda refactoring a little bit.
But anyway, yeah, being a good role
model and like making good technical
decisions, I find is half the battle.
and to your point about new engineers
joining a team and having those 2000
line PO requests, like everybody
is guilty of this, myself included.
And one of the meta lessons that
I've watched some of these folks
learn is, oh yeah, okay, this
is far messier than I expected.
Like we have a big project and it's not
this perfect harmony of beautiful code.
And the process rained perfectly.
It's like there's some stuff
that went in at the last
moment that is not good, right?
And we just have to suck
it up and deal with it.
And that's gonna be a reality too.
I think that's an important lesson to
learn, that you're not gonna learn on
your own, on your solo side projects.
you gotta learn that in a real team.
What I like about this too is most times
when someone comes from a bootcamp, they
have, a set of kind of personal portfolio
projects that they've worked on, but
they're solving a problem for themselves.
It might be a portfolio website.
It might be.
a to-do app, Pinterest
clone, things like that.
But they're not necessarily, they've
nev never talked to a customer.
They, and in some cases, I don't
think that's necessarily an
expectation of a junior either.
But like you, you're just coming up
with a thing on your own to do it.
And it's greenfield like you
mentioned, but you don't get
that world real world experience.
And I would actually say like open source.
Feels like jumping into the deep end.
what sorts of projects are we talking
about when we talk about open source
that folks are contributing to?
that's an excellent point.
we even had at Block, we had, as part
of our longer track, We had something
called the open source apprenticeship.
It was like that last
after the capstone project.
You would go, ostensibly
work on real code.
It didn't work very well.
it didn't work very well
because it wasn't real.
It, even though it was open source,
it wasn't a real simulated team.
It was like, go hunt and find issues that,
people need help with out on your favorite
library and try to contribute to them.
And it did a good job of instilling the
experience of getting acquainted with a
new code base, cloning the app, getting
it running, and like trying to understand
what's what and how it all works.
But that still wasn't real.
and so that's part of the, reason we're
doing it this way at the agency, but,
right now we have two projects and we're
about to have a third that I'm very
excited about that I can't talk about yet.
and maybe we'll have announced it by the
time this airs, but the two that we work
on right now and I'm very grateful for the
ability to contribute to Ruby for good.
so Ruby for Good.
If you're not, I'm sure the two of you
are, but for the listeners that aren't
familiar, it's it's this great group
of people that donates their time,
and energy to work, to basically build
out open source rails applications
for charitable organizations.
So the first one that we're working
on is called casa, which is Core
appointed Special Advocates.
It's a system that, nonprofit, pasa
organizations use to manage their.
Foster youth.
Not just the foster youth, but the
volunteers, the cases, they go to
court, they have to go report to
courts and give updates and so forth.
They have to keep track of their
volunteers and whether or not
their volunteers are commuting to
meet with their CASA youth or not.
And different organizations have
reimbursement schedules and it's a
real product in use by real people.
It just happens to be an open source.
It has all the warts and skeletons
and cobwebs that a real app
has because they've had to
make trade-offs over the years.
And so far that's the one that, I would
say has been the most realistic and given
people, I think, the best approximation
of what it's like to work on a real team.
in fact, I feel comfortable enough
with that fact that I encourage our
folks to add to LinkedIn the fact
that they have worked in a volunteer
capacity on this real product.
Because that's what it is.
Talk.
There's a stakeholder meeting every Friday
that we go talk to the users who use it
and hear the bug reports and that's the
kind of thing as another representative
example is if you're an engineer working
on this app, you get to go every Friday
to hear about this repeated bug report.
You have a disgruntled user sometimes that
says, Hey, this bug still isn't fixed.
Why isn't this bug fixed?
And if there isn't a more
representative example of what
it's like to be an engineer on a
real team, like that's it, right?
yep.
Now we're working on it, right?
so the second one is an app that
we're building for ourselves.
Actually, it's an open source as well.
It's the app that we're gonna
be using to basically manage
the experience of the agency.
Know, profiles, login, wait list,
onboarding, FAQ Pattern Library.
we have a lot, we have big plans for it.
We're starting very small with a feature
called pair requests where if you are
open to working and you want to pair
with somebody, then you send up a little
pair request and it'll notify people.
And a little bit like Calendly
actually, but specific for
developers who want a pair program.
so that's another
project we're working on.
And as I mentioned, we
have more on the way.
If anybody has ideas, if any, if either
of you or you, your listeners have
an open source project that you would
like some help on, that you think
would be a good fit, please email
me or text me or DM me or whatever
and I'll try to make it happen.
Cuz right now that is actually the
bottleneck is, getting ahead of the work,
making sure it's scoped, making sure it's
prioritized, just like a real organization
that's actually now the bottleneck.
We have plenty of developers trying
to get in, Thank you in advance.
Yeah.
How do you balance the demand?
Like how are you balancing supply
and demand, like the projects you're
working on versus how many devs
want to participate in the program
and I assume that once someone has
volunteered for six months or so,
they like spin off and go get a job.
and so you're constantly
trying through people or Yeah.
how does that look?
Yeah, I think one thing that's
very important to me is that once
you get a job, you don't leave.
I remember back in the bootcamp
days, there, there were some
call them optical challenges.
there was one big bootcamp that
we've all heard of that would
hire their own grads to teach.
And this got a very bad reputation.
And I, there's other things as
bootcamp did that were, not great.
but I do think there is a lot of merit,
and I think lots of educators would tell
you that there is a lot of merit to the
best person to explain something to you
as someone who just learned it themselves.
Because when you're really experienced
and I remember mentoring the first,
some of the first block students back
in 2012, and we made a mistake together,
pair programming, and they said, oh,
don't worry, but just get checkout.
And they're like, what's get oh
my God, we need to add version
control to our curriculum.
I.
And so those experiences of forgetting
you forget what you know already.
And I think it's very powerful to
have, somebody who, anyway, so to feed
this back in to the question is, we
care very much that the people who
get work through us, stick around and
help their fellow community members.
It's so at that point it kind of
transitions from, become job ready to
like, Newly employed mastermind group or
mastermind community where, you know, next
Wednesday, we're having a roll call, we
call it, where if you're on a contract,
then we just get together on Zoom and talk
about the challenges we face and, whether
or not it's like, how do I communicate
this tricky situation to my employer?
they said, I'm only allowed
to have X hours a week.
I wanna work more than that.
Do I build them?
How do I think about that?
Is it okay to go over
some of these questions?
you don't really encounter
until you get your first job.
so yeah, it becomes a little more like
a mastermind group in that regard.
I.
I imagine that some of those folks
are also then able to be more like
the quote unquote senior engineers
for the new juniors, right?
For pairing partners, stuff like that.
So they, I.
Their alumni of a sort that can contribute
in other ways, help, agency of learning
become a little bit more sustainable.
So it's not just Dave and
a few other people who are
keeping the lights on there.
Does that play into it at all?
Yeah, you nailed it.
it's like the value of the community.
It's one of the reasons when, you try
to pitch a, this is not a venture backed
thing, and I'm, I have no intention of
making it that, but if you pitch to a
vc, you go on Andrews and Horowitz's
website and read about the kind of
pitches that they fund, it's okay.
Network effects.
network effects.
There's a reason.
It's every time you add a new
great person to a network, it
increases the value of the network.
And that's true here.
That's true in every community I've
ever been a part of, is like the value
of the community is the other people.
And so if you have people that you
know, they come in, they work for
a little while, and open source,
they get some great experience.
They get their first job, they get their
second job, they come back and they
share that wealth with the community.
It makes everything better.
It makes everything more valuable.
It makes the community more valuable.
It gives them that experience of coaching
the juniors, which we just talked about
is really valuable, for their career.
Yeah.
I wouldn't call them senior right away,
but I would definitely say like we want
them around because more experience.
Imagine you're a bright isle, bushy
tail, bright eyed, bushy tail junior
developer looking for your first job.
If you're in a member of a community
where someone just like you, like just
got that first job and they're coming
back, you get to listen to all the
challenges that they're facing and the
challenges that you never would've.
Thought of.
It's just a really cool
experience, you know?
I think the brand that you're
talking about there is important.
Cause there's definitely some boot camps
where when we would get applications
from that bootcamp, we would take it.
They would go to the top, like we're
like, okay, of all the candidates,
like we really enjoy talking to and
know, we know the level of curriculum
and everything that comes outta that.
We've had people on the team
who've come from that bootcamp.
and then there's definitely been other
ones where, okay, we're gonna have
to go really like in the take home
tests or whatever, figure out what
might be missing, things like that.
And so having a strong brand with agency
of learning and keeping, I would say
Keeping that high is important there so
that when I see Agency of Learning, I
get excited that someone from Agency of
Learning is hoping to work at my company.
And I think you've talked about this on
other podcasts that kind of became similar
with Pivotal Labs was very much like this.
It's like someone would go from
a bootcamp, go work at Pivotal,
and suddenly everyone's oh.
I want a Pivotal alum on my team.
When they move on to their
next thing, usually they would
go on from agency to product.
And you end up with all these people
at Airbnb and all these companies
that came from Pivotal, which I
don't think is pivotal, still around.
I don't think it is.
Yeah.
So we've got today it's probably more
like the Planet Argon, the evil Martians,
sorry for all my agency friends.
Sierra Rails.
Not Bot.
Not bot.
There we go.
Not bot.
Yeah, you're right.
it is brand building.
There's a lot about this that's
not only is it not new or
innovative, it's actually very old.
we used to talk a lot about this.
At Block we had this problem where,
The whole industry decided on the
placement rate as a metric that
prospective students should use when
deciding which boot camp to attend.
And like on its face, if you're
looking at applying to in-person
boot camps, it makes sense.
It's not a crazy concept.
It's yeah.
How many people, went through the
program as the denominator, and how
many people got jobs as the numerator?
And when you're dealing in, 10, 20, 30
people in a cohort and you only have four
co, four cohorts a year, yeah, that's less
than 200 people, less than 300 people.
that's not crazy.
What it means is, first of all,
geolocation, depending on where
you're at, San Francisco, la, New
York, Houston, Dallas, whatever.
That bootcamp.
it's the same thing as college admissions.
It's literally the same thing.
you're identifying the best people and
you're bringing them in, and you're doing
it so you can get a good placement rate.
so that you can build that brand.
Block.
Block was different.
Man block was much harder.
we had an admissions process,
but it wasn't that competitive.
and the whole point of doing
it online was the scale.
We wanted the scale of
impact to be much larger.
And that's one of the reasons it
ended up looking very different
than an online classroom.
when I left we had 3,500
concurrently enrolled students and.
If all you're looking at is a placement
rate with numbers at that scale, you
have to have five asterisks after your
placement rate because you know a lot.
What about dropouts?
What about people that don't want a job?
We wanted to accommodate all of
those people, but in order to meet
the market, the optical market needs
anyway, it, it was a big challenge.
and I think, this model is simpler.
I remember.
hack Reactor.
I am, I'm unplugged in the boot camp world
now, but I remember Hack Reactor used to
call themselves the Harvard of boot camps.
I don't know if they still call
themselves that, but for a while
at least that was their brand and
I think they did a really good job.
I think that, I think they nailed that
branding because that's what this is.
it's about branding, it's about building
a brand that people trust and you
need to invest in that reputation.
And I'll say right away, I don't think
we did a great job of that at Block.
we did not appreciate
how important that was.
And then we also did not appreciate
how old of a problem this is.
anyway, so I agree with you.
When people are considering hiring
junior engineers, one thing that
often comes up is who is gonna manage
them or mentor them or lead them?
And I think.
In one of the posts on the Agency of
Learning site, you talk about like
wiggle room in management practices
and having a little bit more margin
to make mistakes in turn of management
when you hire a senior person.
And I'm curious what your take is on
maybe minimum level of experience for an
engineering manager or the other engineers
on the team to successfully integrate.
Junior or two to their team?
I think it's like there's more than
one dimension to mentorship, right?
there's like technical coaching, hey, You
shouldn't use loops, you should use map,
or you shouldn't use polymorphism here,
you should use composition or whatever.
this approach doesn't
follow solid principles.
Duplication is better than the wrong
abstraction, those types of things.
But then there's also hey, There's
also like pulling the, there's like
the managerial duties of pulling
aside the engineer and saying,
Hey, I get what you're going for in
that meeting, this kind of a thing.
Got in your way there.
Next time, maybe try this approach.
Or, Hey, uh, you know, I, I have a really
high bar for you and you didn't meet that.
Here.
Is everything okay?
so I think technically
obviously you need to have.
Significant experience to be able
to coach a junior from a technical
perspective, you want to definitely
avoid the blind leading the blind.
and I honestly, again, an unpopular
thing, like I see that a lot, I
see a lot of the blind leading the
blind and it doesn't keep me up at
night, but it makes me concerned for
specific organizations and teams.
I don't think you need a lot of technical
experience to do the other stuff at all.
in fact, I think very junior, technically
junior engineers can be significantly
superior managers and leaders.
I.
Because of their background, because
of their, maybe their communication
skills or their interpersonal skills.
Sometimes they're just like the
diamond in the rough and they turn
out to be really good leaders.
That's one person in particular at the
agency right now that I know of that's
like that, that I feel very fortunate.
Basically like Pluto and Saturn lined
up and beamed a good luck Ray into
us and we got this awesome person.
they're very junior technically.
So would they make a good mentor?
Like they make a good engineering leader?
they probably need some help
making technical decisions.
But, yeah, I don't know.
That's a very good question.
I don't have a totally
solid answer for Colin.
what is your sort of like experience
to being maybe like being managed or
managing other people or whatever?
Cuz I think, yeah, I've got,
My own takes about managing
people or like mentoring people.
And it's tough.
It's super tough to do it right and bring
them along and, yeah, I think, yeah.
I'm curious your experience too.
The wiggle room really resonates with
me is that you do have to have the
space for it, and you have to give
yourself, if you're the one mentoring
and helping, that is part of the job.
It may not feel like, oh,
I'm a software engineer.
My job is to write code.
as you get more senior, and I think we
haven't done an episode on this, but
we'll share a link to the engineering
ladders as you get more senior, your.
locus of control, if you will,
gets more from, goes from
more internal to externally.
You start working more on how as a
junior I have my tickets and I'm working
on my things and I'm learning myself.
You're not so much worried about
what other people are working on.
you might start to think about how your
ticket fits into the greater scope of
things, and then you get to the next level
and you start to work with other people.
I like the idea of pulling, pairing
down so that you are working with other
people on more earlier in your career.
But starting, you're not having
to worry about the business goals
as a junior engineer, Versus as
you get more and more senior and
you're getting towards that senior.
Level engineer, you're actually more
concerned about what the whole department
is working on or what your team is
working on and how it fits into the
greater goal and things like that.
And so I would say like all of that is
part of the work and I really enjoy for
developing like your own, whether or not
you're an IC or aspire to be a manager.
There's a really good podcast
called Developing Leadership
from Jason Warner and ISO Kent.
and then there's also a really good
book called Engineering Management
for the Rest of Us from Sarah Dresner.
And both of those are really good
at just if you don't want to be an
engineering manager, they're useful
to listen to, to learn how to work
with your managers to learn like
what is even engineering management.
sometimes that person was an engineer.
Sometimes they're not.
It really depends on the organization.
and.
It's also a very big decision people have
to make is a lot of people will stick to
the IC track and some people will choose
to go to the people management side.
and so I think if you're out there
and you're thinking about bringing
on a junior, like you gotta give
yourself the space and time to make
sure that you can do the mentorship
and that remember it's part of the job.
You might not feel like you did the
same amount of work as you did yesterday
because you had to do some work with your.
You're Junior and it's great,
that's part of the job.
that's going to, you're gonna
see that payoff in spade.
Like you could have done the work
yourself, but now they're gonna
learn how to do that work and they're
gonna be able to develop themselves,
which is, goes a lot farther.
Totally.
On one of the teams that I was on, we.
Worked really well as a
small engineering team.
And we had some, I would say like we were
pretty functional, like high functioning
in terms of using Jira really well.
We had our velocity was
like really locked in.
We could estimate really well,
and one of the things I remember.
When we brought on a junior to that
team was like, okay, everyone, we all
expect velocity to plummet for the
next six to nine months because we all
wanna bring this junior along with us.
And so like it is a fully understood
thing going into this that we're
gonna lose a little bit of speed.
And that's intentional because we want to
yeah, eventually get that back in spades.
I think, one interesting experience I
had was managing a couple of interns.
and that's when I started to recognize
there's so many different behaviors
as an engineering manager, that
can make it so that the junior is
more successful or less successful.
It's like you gotta, you do have to
be explicit about those communication
touchpoints and about holding certain
bars and being really clear about
the expectations and making sure
that they understand how to achieve
those and all the steps in between.
And the more and more that you
build that trust, the more you can
let go of the reins a little bit.
But I think, yeah, in my
experience holding those, I.
Controls really tightly with a
junior actually makes you move faster
because you can get to know what's
expected sooner and then the junior
kinda picks up and runs with it.
but yeah, I think, I don't know.
Engineering management is very hard.
So anyone who's out there who's doing
engineering management, I, yeah.
Kudos to you cuz it's, it is,
it's tricky to be both technical.
And be able to work with people.
And, yeah, bringing
juniors along is tough.
preach, that's all.
I'll, that's not all I will say
to that, cj, but I'll say preach.
I think the best environments that
I've ever seen or been a part of to
learn the craft of, of engineering
management have been, a weird mix of
both supportive and warm, but also,
The higher up you get, the more brutal
the consequences are when you fail.
and for me, just looking out my own
eyes, the experience of block for me was
fascinating and it, I feel very lucky
to have been a part of it because it
was, it's four of us at the beginning.
And then we started hiring
engineers and hiring a designer.
And then we had hired a second designer
and we hired an office manager.
We hired a director of marketing,
then we hired a SA salesperson,
then second salesperson and support.
Before you know it, I used to joke
my job changed every four to six
months and what I learned real fast
was that like, you gotta get your
ego out of the way because if the
ego's in your way, you're gonna fail.
And basic basically, cuz it's, for
me it was this like, Crazy recursive,
meta hyperdimensional experience of
like e every four months you'd have
a new mirror held up to you that
showed you all your flaws, right?
Yeah.
Because the team be beneath you
began to manifest those flaws.
It's okay, the next team, they
better be better at receiving
feedback than I was, installing that.
And the last thing, it's it's
a very humbling experience.
I couldn't agree with you more.
That goes both ways.
you don't want this culture of your
company to be that people who are new
to the team, whether they're junior
or not, to have this experience of
having to go visit the wizard on the
mountain to go ask a question, right?
It's like you gotta check
the ego at the door.
No matter what level you're at, you're on
the same team, you're on the same side.
Like the goal is not that I know
more, this is a very much a scarcity
mindset that sometimes happens.
And I'd be curious to end this,
this episode on this topic of
right now in the market, there are.
Quite a few engineering jobs.
There's also quite a few engineering
layoffs happening, but almost
all the jobs are senior and staff
engineers right now that I'm seeing.
And I'd be curious to get
your take on why that is.
Why when we see these little ripples in
the economy, do we see a retraction in.
Early career jobs, and we don't
have to solve this problem if we
don't know the answer to it, but
I'd just be curious to get your
take on why do we think we see that?
Like why wouldn't this be an opportunity
to invest in early career devs?
When you know, senior staff engineers,
they come with ego, they come
with really expensive salaries.
Why is that still being hired
for when we have other options?
I'm not gonna pretend to like.
be the oracle that knows why.
Cause I don't, my experience
is not at big companies.
I don't, I've, we did do a layoff at
Block in 2016, which was very tough.
so but I am of the opinion
that it is an opportunity.
I find myself in this weird.
This weird spot personally, where
it's I know, I feel like I now know,
especially after the last few months,
I know how to hire pairs of junior
devs with the right amount of senior
coaching, the right product management,
the right types of projects, and they
produce superior results to a team
of, three senior engineers and it's
cheaper and they have better retention
and they have better job satisfaction.
So what am I missing?
Like I do think that, And, I'm doing my
best to educate the market and manifest
it, but I think at the end of the day,
every team and culture is different.
to your point, CJ earlier about like
the balance of like holding that control
very tightly produces better results.
I'm a big fan of, David Marque, who wrote
this great book, turned the ship around.
I am not an affiliate or anything.
I've never met the guy, just,
I'm big fan of his work.
and he, there's this idea of in the
spirit of not ha not building a cult of
personality into your organization, he
has a line about every organization knows,
e everybody knows of an organization
where people will just follow the leader
off of the cliff, Instead, if you push
the authority down to the information
rather than the information up to some
decision making authority, then you
just get a healthier organization.
And if you think at it from a
systems perspective like that, tuning
the control that you give to the
competency level, and so you can
ratchet it up, is the key, right?
And so in this world of layoffs
where it seems like nobody's hiring
juniors like Zig, when everybody else
is zagging, turn everybody else's
deadly risk into your superpower.
that's what I would say.
find the playbook, execute the playbook.
It is not that hard.
What's hard is you, it's, it you,
it will feel unnatural to you.
it's the engineering management problem
that we've just been talking about is
it's much easier to hire the egotistical,
expensive senior engineer and deal
with their baggage, sorry to say.
Than it is to hire a pair of juniors
and go through that discomfort and
incur the management overhead and try
to figure out how to run an effective
organization when you've really been just
leaning on really experienced people.
Nothing wrong with that.
That's the kinda organization being it's
fine, but, I perceive this as a potential
superpower and I see it in my team.
I've seen it on other teams and I can't
figure out why more people don't do it.
So if you can crack that
code, you'd be in the top 1%.
All right.
I think that's a great
place to end, this episode.
Thank you so much for joining us, Dave.
And yeah, this is something, it's giving
me a lot of things to think about too.
In terms of like, how best I can think
of this in my own roles and how to
empower early career devs, and if you're
interested in getting involved, where can
people find all the things about agency of
learning, all things Dave Sierra Rails.
Where can, where should we send people?
Yeah, I should send people to agency of
learning.com or follow me on Twitter,
which I'm too, still trying to figure
out like the branding between myself and
the Agency of Learning Twitter account.
it's a weird hybrid, but yeah.
I appreciate you guys bringing me
on and it was fun chatting and,
yeah, let's catch up again soon.
Thanks a ton.
as always, you can head over to build
and learn.dev to check out all the
links and resources in the show notes.
That's all for this episode,
and we will, see you next time.
Bye folks.
Thanks again, Dave.
See ya.