KINSEY ANN DURHAM: OK, I'm gonna go ahead
and start.
How's everybody doing today?
AUDIENCE: We're good.
K.A.D.: Good? Having a good conference? Thank
you all
for coming. I'm Kinsey. I'm an apprentice
at ThoughtBot
in the new Denver office, and today I'm going
to be talking about becoming a software engineer:
inspiring
a new generation of developers.
So if you were to tell me even a
year ago that I would be standing up here
speaking at RubyConf, I would have told you
that
you were crazy. I never dreamt or even thought
it was possible to find such a yearning passion
for writing code. I thought I wasn't smart
enough,
and I honestly build up building ba- grew
up
building Barbie's dreamhouse and not computers.
I have been working in ad agencies since I
was sixteen. I was an advertising major and
I
was good at it. And the thought of being
a software engineer never crossed my mind.
It honestly
looked really boring and intimidating. My
step-brother is a
really awesome developer, and any time I heard
him
talk, it sounded like he was talking in an
alien language. I never understood anything
that he was
saying.
People are shocked and sometimes even blatantly
negative when
they hear about my new dreams of becoming
a
developer. Friends' jaws literally dropped
when I told them
that I was learning how to write code. I've
also received comments that I'm too sociable
and I'm
the last person on Earth they thought would
want
to write code. That I should be in sales
and also I don't think in a way that
a developer should.
I don't ever want to let these comments discourage
me, although it's definitely easier said than
done. There
are definitely times when I want to give up
and throw my computer out the door and go
back to some of the mindless work I did
in advertising.
So the path to becoming a software engineer,
in
my mind, was straightforward and well-defined.
You needed a
computer, you needed a computer science degree,
to have
dropped out of your computer science degree
to work
for a company writing code, or have been a
self-taught programmer who loon- learned to
code at a
very young age.
Recently, the community has seen a rise in
non-traditional
paths to becoming a software engineer. These
paths are
the future to building a diverse community
and training
the next generation of developers. So today
I'm here
to argue that outreach programs, mentorship
and apprentice programs
are legitimate paths to becoming a software
engineer.
This path is begin, has been the beginning
of
my journey, making me see that what I thought
was impossible was actually possible. So I
first want
to talk about outreach programs. Railsbridge
is a great
example of an outreach program that is working.
So how many people have heard of Railsbridge?
Wow.
That's a lot. A lot. Awesome. How many people
have volunteered, sponsored, or participated
in a Railsbridge? Awesome.
I can honestly tell you that a Railsbridge
workshop
changed my life. Railsbridge, for those of
you who
don't know even though most of you raised
your
hands, is an outreach program that puts on
free
weekend workshops where people learn from
experienced Rails volunteers.
So these workshop attract, workshops attract
a lot of
beginners, and in one day you get to build
a basic Rails app and deploy it on Heroku.
It planted a seed to a career that I
had always dreamed of but hadn't yet realized.
I
not only met Jesse McAdam who would become
one
of my greatest mentors and influencers, but
discovered a
passion for writing Rails that I never would
have
discovered on my own.
This is a Tweet that I Tweeted when I
was at Railsbridge. I was so excited.
Railsbridge taught me that writing code wasn't
scary and
in a few hours I deployed my first application
to Heroku. I literally remember it like it
was
yesterday. I was yelling at my best friend
who
also was in the workshop at the top of
my lungs that I was going to write code
from now on. And Railsbridge was the beginning
of
my journey, where I learned that I could actually
have a passion for writing code.
So SarahMay and Sarah Allen started Railsbridge
in 2009
when the San Francisco Ruby community was
98% male
and 2% female. Since the program lowered the
barrier
to entry, they saw an increase of women attending
the workshops. In one year, the Sarahs saw
the
female ratio increase from 2 to 18% thanks
to
Railsbridge efforts.
And I am - yeah.
So I am definitely not the only one who
has pursued a career in web development thanks
to
Railsbridge. I want to share with you guys
a
few of the testimonials from various women
who have
attended the workshop and who are now full-time
software
engineers.
So Rachel Meyers who is now a developer at
GitHub said this about her experience at Railsbridge.
I'm
gonna let you guys read this, cause I don't
want to just read off the slide.
Laura Steadman, who is now a developer at
QuickLab,
said that attending Railsbridge was inspiring
because of what
she built that day. Or not because of what
she built that day, but rather the sincere
enthusiasm
of the volunteers. She was amazed that people
were
giving up their weekends to volunteer at a
workshop.
Rita Vatshi who is now a developer outright
stated
this.
So Railsbridge is not the only outreach program
that
is out there that has been successful. Rails
Girls,
Women who Code, Black Girls who Code are other
great programs, all of which need sponsors,
teachers, and
volunteers on an ongoing basis. I'm currently
the coordinator
for the Denver women who code group, and it
is truly amazing to see the impact that the
group has had in the community in one year.
The most popular meetups are typically ones
that are
geared towards beginners, so in them we have
more
experienced females develop- female developers
come in to speak
about how they got into programming, what
resources are
out there and advice to becoming a developer.
So now that I've talked about outreach programs,
I
want to talk about mentorship. Mentorship
is another important
aspect to train the next generation of developers.
Mentorship
is beneficial to me because I look to my
mentors not only for technical skills but
for soft
skills and support. Because, to go from attending
a
Railsbridge workshop to becoming a full-time
software engineer is
way more work than I ever expected.
There are days when I come home in tears
and I feel stupid and frustrated for not understanding
basic concepts still. I'm not only learning
how to
write Ruby, Rails, testing frameworks, use
get, but a
completely new way of thinking.
So Jesse who I mentioned earlier is one of
my greatest mentors has opened doors to me
that
I didn't even know existed. She's truly humble
about
all the work that she's doing and bringing
diversity
into the industry, but she really is making
a
difference. She works tirelessly on top of
her job
and managing her family to reach out through
organizations.
It's like Dev Chicks and Railsbridge.
And I even hear her talking about how she
wants to open a beginning to code school in
her house on the weekend. Jesse and one other
mentor in particular have been there for me,
to
pick me back up when I'm feeling frustrated
and
that I cannot continue, and they remind me
of
how far I've come in a year and how
hard it truly is to understand this stuff.
no matter how busy they are, they are always
there to listen to me and help me when
I get stuck on a problem and am floundering.
So they give me the encouragement that I sometimes
desperately need.
So mentoring is also beneficial to my mentors.
My
mentors constantly tell me how mentoring ultimately
makes them
a better developer, because it solidifies
an understanding of
the content being taught. John Fully, who's
a developer
at Pivotal Labs told me that mentoring elevates
you
from thinking you know to actually knowing
you know
or not knowing at all.
Mentoring not only provides countless and
necessary benefits to
the mentee, but to the mentor perspectively.
So even
advanced developers can learn new things by
having to
explain it in a way that a beginner can
understand it.
So I recently came for- full-circle in the
Railsbridge
community and was a TA for one of the
workshops in Colorado, and teaching basic
Ruby conference- concepts
was really frightening because I kept questioning
myself, and
I went back, you know, and did more research
and made sure that I actually understood what
I
was telling people.
So I really did learn a lot that day.
Maybe even more than when I was doing the
Railsbridge workshop.
So I really think that mentorship is worth
your
time. How many people here have been mentored
by
somebody?
Quite a few. And did it help you in
advancing your career? Yes. Cool.
And how many people here have been a mentor
to somebody? Wow. That's a lot of hands. That's
awesome. I want to encourage everyone to be
a
mentor if you have time, resources, and the
patience
to do so. Mentoring is a really hard thing
to do and it definitely isn't for everyone.
It
requires a lot of time and patience.
I'm really inspired because I've met a lot
of
people here this weekend who are mentors and,
or,
or making the effort to become a great mentor.
So thanks to all of you who I've talked
to you about this and your efforts are truly
making a difference.
Now I want to switch gears and talk about
what it means to be a great mentor. I've
had so many great mentors this past year and
would love to share with you some of the
qualities that I thought they all shared.
Ally talked
about this in her lightning talk yesterday
and she
gave a lot of great advice as well.
So if you were gifted in explaining concepts,
complex
concepts simply, you would be a great mentor.
The
greatest mentors that I have had were able
to
take an abstract concept and make it really
concrete
to me. Emily Saffo, who presented yesterday,
she gave
an awesome talk in Paris at a conference about
concurrency in Ruby. And she gave a really
simple
analogy to explain threading, and it, she
compared it
with an orchestra, and I thought it was a
really awesome metaphor, and she took this
complex thing
and really broke it down into something simple
that
I could understand.
Last night, Steve Harms who presented here
at RubyConf
yesterday gave us a Star Wars example that
was,
that made it easy for us to understand the
topic he was talking about in regards to object-oriented
programming.
It's really important to try and explain these
things
in a simple manner that anyone can understand,
at
least at first, to get the concept through.
And
you know some con- some concepts are complex
and
can't really be boiled down to something simple.
But one technique that one of my mentors does
with me is ask me, if I had no
idea what any of this was, how would you
explain to me what I was doing? It was
really challenging and hard for me to do that.
It is, once again, beneficial to the mentor
to
have to explain things in a simple way.
Awareness. Awareness of both yourself and
your mentee. Mentors
who are unaware of the fact that they are
coming off as discouraging could ruin or completely
dissuade
a beginners' passion for the craft. It is
important
to be aware of signs of frustration, language
that
is discouraging, and body language when mentoring
an apprentice
developer.
Great mentors that I have had have also been
very aware of my learning styles. The same
mentor
that would, that would ask me to explain things
back to him asked me on the first day
of being my mentor what my learning style
was.
I wasn't even aware of the best ways that
I learned, but we were able to up, discover
that together, and use those, and practice
how I
learned best.
I really excelled during my apprenticeship
with this mentor
because we were both aware of my learning
habits,
my way of thinking and learning. I learned
that
drawing things on the white board, drawing
them out
was really helpful to me. And I also discovered
a lot of the time I need to sle-
I needed to sleep on what I had learned.
Then the next day I was able to get
it.
Also on this note, getting to know your mentee
is invaluable. Knowing what makes them tick,
how they
learn, how they think, and how they approach
problems
can make for a more productive mentorship.
Patience is also very important. It's also,
it's important
for the mentor and the mentee. If you're an
impatient person, it might not be best for
you
to be a mentor. When a beginner is learning
to code, you may have to explain things multiple
times until they get it. Things move at a
slow pace, and it is important to make sure
that you're being patient and understanding
when working with
your mentee.
Patience is also a skill that I have to
learn. One of the things that I struggle with
is when I see an error message or there's
a bug, I angrily switch from the failing test
back to them without taking my time to read
the error message. So writing code and mentoring
are
similar. Heh. I see people nodding.
Writing code and mentoring are similar in
that it
ta- requires a lot of patience. So I've learned
a lot in that aspect as well.
Weekly retrospectives are also very important
in a formal
mentorship. Once a week, take time and sit
down
with your mentee. Discuss what went well,
what didn't
go well, and what to improve on. These meetings
were invaluable to me because I was able to
focus on softer skills as well, and overall
skills.
I became aware of my impatience habit and
areas
that I needed to focus on the most, so
that really helped me out.
Pairing. I think pairing with my mentors has
been
the best thing for me from a technical standpoint.
So it was definitely where I learned the most.
Pairing on actual client projects and even
on my
own breakable toy was extremely helpful. Pairing
is also
great because you can speak remotely with
a mentor.
I was able to learn so much fun, more
in a pairing situation than when trying to
read
the Ruby pickaxe book. I was able to constantly
ask questions, drive, and really dive into
learning the
Ruby language and Rails framework.
But the most important piece of advice that
I
can give to mentors is to have empathy. It
is extremely discouraging to be told that
this is
easy and you should be getting this. It's
really
not easy, especially for someone who has never
done
this before. You know, how long have you been
writing code? Something that was easy, that
is easy
to you now, is not gonna be easy for
a beginner.
Also, remember that your mentee might have
a completely
different way of thinking. It's important
to put yourself
in their shoes and remember what it was like
to learn how to write code.
So my incredible mentors and my experience
Railsbridge has
not only changed my life, but changed others
around
me in an almost verbal effect. These are my
two best friends at another Railsbridge event
that we
did in Denver. We were all three advertising
majors
at CU.
Emma, the blond one, she's now doing front-end
development
in San Francisco, and Terra, just, got accepted
into
an intense Ruby on Rails program in New York
City. So Terra had a really great job and
decided to quit her career to pursue a career
as a developer, which I think is really cool.
So intense Ruby on Rails training programs
like GSchool,
Dev BootCamp, are other great examples of
alternative education
options that I unfortunately don't have a
lot of
time to discuss today. I get to spend a
lot of time around the G Schoolers and Galvanized
because we work in the same place. It's amazing
to see the applications that they build in
a
short amount of time.
We can also relate to the struggles of learning
Ruby together. I've also gotten to meet a,
so
many wonderful developers this weekend, who
have come out
programs like Flat Iron School, Bit Maker
and Dev
Boot Camp.
Talking with all of them about their experiences
has
made me realize how these programs can really
open
doors for people who never thought it was
possible
to become a developer. And it is truly inspiring
to see how passionate they are about the community
and the craft of writing code.
So now that I've talked about outreach programs
and
mentorship I want to talk about apprentice
programs. Apprentice
programs are intense training that you would
not receive
at a university, and apprentice programs can
take a
passionate learner and turn them into competent,
reliable software
engineers.
I'm really, really fortunate because ThoughtBot
accepted me into
their apprentice program this past year. It
is one
of the most challenging things that I've ever
done,
but the amount that I have learned during
my
apprenticeship has been incredible.
For those of you who don't know what ThoughtBot
is, it's a consulting company that builds
and designs
web and mobile application. And they have
a program
specifically for apprentices called apprentice
io. ThoughtBot's really passionate
about the learning space and has a learn program
where workshops are frequently taught. And
twenty-five percent of
the employees at ThoughtBot were apprentices
at one time
in the company. So a quarter of the company
actually came through the apprentice program.
And it is proved to, to be a great
way for ThoughtBot to train and maintain budding
talent.
So Dan the CMO describes why the program was
created in this quote, and once again I'm
gonna
let you guys read this.
Chad, the CEO, stated, that everyone in the
program
who has been eligible to get a job afterward
has gotten a job, with ThoughtBot or another
employer.
That's pretty impressive. ThoughtBot's apprentice
program has given me
the biggest push in achieving my dream. They
believe
that I can do it, they support me, and
even are taking the time and money that it
takes to train me.
ThoughtBot rewards and supports its employees
for engaging in
mentoring programs and for participating in
programs like Railsbridge.
This is something that I think all companies
should
be doing.
So the U.S. Department of Labor did a study
on apprentice programs in the U.S., and apprentice
program
graduates have much higher earnings than those
who did
not. The study also showed that the social
and
overall benefits to the company that maintain
these programs
appear to be much larger than the cost. So
over the career of an apprentice, the estimated
benefits
to the company exceeded the initial cost by
more
than $49,000.
So apprentice programs are not only a legitimate
path
to becoming a developer, but it's a bridge
for
people coming out of these outreach programs
that I
spoke about earlier. Even after doing multiple
Railsbridges and
working tirelessly with many mentors, I wasn't
ready to
become a full-time software engineer managing
large web applications.
I needed something like the apprentice program
to really
jump off the deep-end into writing code. And
apprentice
programs create a structured environment where
I can continue
to learn best practices and become a developer
that
produces reliable and maintainable software.
So there are many benefits to companies creating
a
formal or mentorship, formal apprentice or
mentorship program. So
if companies invest in apprentice and mentorship
programs, there
will be more highly-trained and prepared candidates
out there.
These companies can help other companies find,
et cetera,
find highly, find high quality candidates.
CSR is also really important in our society.
A
study showed that 94% of consumers would be
more
loyal to the company if they have CSR initiative.
96% of people said that they would have a
more positive image of the company. So CSR
is
clearly important and an all-around great
way to give
back to the community.
So this is more specific to consulting companies,
but
a lot of times projects are lost due to
a large price tag, and if companies take in
an apprentices, they will be able to bill
them
at lower rates to projects that have a strict
budget and not so much of a strict timeline.
So there are also a lot of engineers that
I have met that are out there who would
love the opportunity to become a mentor and
are
not sure the right way to get involved. This
would create an opportunity for interested
parties to teach
and mentor in a more formal environment.
So, I mean, look at me. I'm up here
genuinely talking about ThoughtBot and, because
they took a
risk on me. SO the message and good will
of your company will spread throughout the
students that
you take risks on and train.
But why is all of this important? Why is
it important to have educational alternatives
to training the
next generation of developers? I have three
reasons.
Diversity, a massive lack of, of supply of
engineer,
and traditional education that isn't providing
with the amount
of people that we need. So mentorship Railsbridge
programs
and apprentice programs are absolutely key
in getting more
diversity into not only the web development
world but
the tech world as a whole.
As you can see, NCWiT thinks it's crucial
for
advancing underrepresented employees.
So access to the internet is a privilege.
White
males specifically have access at an earlier
age and
a much higher rate than females. And people
of
different ethnic backgrounds. Statistics show
that boys get their
first computers at fourteen, while girls at
age eleven.
It's even later for people of color, who tend
to have a much higher adoption rate of smart
phones, and I can't imagine trying to write
code
in a smart phone.
So females make up more than half of undergrad
graduates but only 18% of computer science
graduates. There's
a really high barrier via the traditional
computer science
route in university.
Financial access, discrimination, lack of
role models, lack of
encouragement in general are creating this
large gap of
the lack of diversity. These are all barriers
that
are hard to overcome. So we want to create
diversity within the industry, education has
to come from
elsewhere.
outreach programs, mentorship and apprentice
programs are all alternatives
to a traditional education that lower these
barriers. This
is key in creating a diverse community. And
I
really want to emphasize that this is lowering
the
barriers and not the standards.
Alternative education needs to be high quality
in caliber
in order to maintain the standard in the industry.
So we all know that diversity is important.
Not
only does it drive economic growth, it's been
scientifically
proven that diversity fosters innovation and
enhances abilities to
solve problems. And approaching tricky programming
problems from many
perspectives proves to be successful in this
industry.
So another thing to be aware of is a
lot of these outreach programs and alternative
paths are
in predominately white areas for people of
average or
even high socioeconomic statuses. So it would
be awesome
to see mentorship apprentice programs and
outreach programs happening
in rural areas that have a low socioeconomic
status
and ethnic diversity.
So secondly, there's a massive lack of quality
engineers.
How many people here, or their company, is
hiring
on an ongoing basis? Yeah, and is it hard
to find quality engineers? Yeah.
So companies continually struggle with this.
According to NCWIT
research, if current trends continue by 2018,
the information
technology industry will only be able to fill
half
of its available jobs. There are people who
never
considered software engineering as a viable
career option because
they were discouraged from it, never thought
they were
smart enough, never grew up with a computer
or
were intimidated by people who had been programming
for
most of their lives.
These people can discover their passion and
take an
alternative approach such as the ones I discussed
earlier
and programs like GSchool and Flat Iron School.
So thirdly, the traditional science, computer
science degree isn't
providing the industry with the developers
that it needs.
Most people coming out of college are not
ready
for full-time engineering jobs. It takes four
or more
years to recieve a degree and not to mention
the hefty price tag.
So thanks to programs like Railsbridge, my
amazing mentors,
and ThoughtBot's apprentice program, I am
here today to
speak about the importance of alternative
education paths in
software development. I am almost done with
my apprenticeship
and I'm excited for what my next step will
be on this path, and I would be lying
if I told you that the path, my path
to becoming a software engineer has been easy
and
constantly rewarding.
There are times when I'm really close to quitting
and there are times when I cry from feeling
so frustrated and incompetent when the test
suite won't
turn green. But I know that I love what
I'm doing and I won't quit and I know
that it's because sometimes I literally get
chills when
I manage to get through it, refactor it, and
produce some beautiful code.
It literally moves me and makes me feel like
I can do anything. My goal is that other
people who never thought that becoming a software
engineer
was possible will become inspired by one of
these
alternative education programs or by an influential
mentor and
discover that they not only can be a great
developer but find a passion for it.
Thank you for your time today and you can
contact me through email or Twitter if you
have
any questions. And here are some of my works'
cited.