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.