The Importance of Developer Communities
The impact they have, and how to build them
Jennifer Wadella |
Girls in STEM/Technology Education Advocate
Founder of Kansas City Women in Technology
Organizer behind CoderDojoKC
So, why are developer communities important?
So... why are developer communities important?
Just a heads up - I'm going to use programmer and developer interchangably throughout this presentation,
there are differences, but not as it relates to this talk about communities.
So, let's talk more specifically about why communities are important.
Open source work?
Time for R&D?
Full stack development?
There's a reason companys have started to pay attention to the culture they create. There's a reason we see
google leading the charge in innovation, and I think it has something to do with the people they employ,
and the way they interact.
And Google is just my quick out-of-the-hat example that is likely to be known by everyone
in the room, there are so many companies investing in creating a culture that attracts and retains developers.
Let's talk about culture. As much as our jobs are about tech, they're about people. We're creating software
for people. We work with people. It's our interst in technology that brings us together.
So it's obvious we have our own culture. We're a different breed. Like the comic shows, we have a laziness
that leads to brilliance, which typically wasn't recognized in school thanks to our abhorence of busy work.
Is there anyone in here who didn't annoy their teacher by refusing to do busy work, yet aced every test?
We share similar traits like curiostity, higher intelligence, quick witted, fast reading comprehension
(yet we're not so big on spelling), fast learning, self-teaching, passion, adaptability, indepence and
self-motivation, and we tend to be realists. And we tend to laugh hysterically at most XKCD comics.
What are things you look for in the culture of a company? And I'm not talking Star Trek posters and nerf wars,
those things are fun, but don't make a culture. Do you want a company that is growth-oriented?
New technology? Innovative projects. Contributions to open source projects? Time for R&D? Google’s
“20 percent time policy” is an example of time for developers to work on projects that interested them.
Gmail was one particuluarly popular product that came from this culture choice. Full stack development?
Dev ops? No micro-management? Project manager ratios? -Facebook's PM to dev is said to be in the range
of 1 to 7 or 1 to 10.
I will talk later about how culture doesn't have to be implemented from top-down and how you can create
these culture changes from the ground level-up, but right now let's explore why our culture creates the
need for a community. Because a community gives you ... acceptance.
Acceptance. Maslow's freaking heirarchy.
If you've never taken a psych class, I'll give you a crash course.
In 1943 Maslow stated that people are motivated to achieve certain needs. When one need is
fulfilled a person seeks to fullfil the next one, and so on. So he created this pyramid model
- splitting needs into 5 levels.
The most basic is physiological - health, food, sleep... the most rudimentary things
we need to survive. Once those needs are satisfied, we move on to safety.
We search for shelter, removal from danger, stability, freedom from fear. Fortunalely for us,
this is already taken care of, at least until the impending zombie apocalypse occurs. In that
case, I'm sure most people watch enough Walking Dead to know what NOT to do to survive.
So once we're fed, on a diet of Mountain Dew and Dortios, of course, and safe, the next thing
we look for is acceptance. There really is a biological reason behind needing to feel as though
you belong to a group.
In early days of humanity, being a part of a group was necessary to survive. We were hunters
and gatherers that shared food and cared for offspring in groups. We created and shared tools.
If you were different in any way, or stood out, you would be cast from the group, and die on
your own. That's why we're programmed to fear rejection - it's biological.
So we've established it is as simple as just a human need to feel accepted and to be part
of a community. The next thing we strive for is self-esteem, confidence, achievement - respect from ourself and others.
If you don't have a community that can relate to your achievements, you may have a hard time
fulfilling this need. At my first job, I was the only designer/developer. There was no basis
for my level of achievement. As far as the client managers were concerned, I sat in my cube doing
magic having graduated from the university of Hogwarts School of Webery. When I accomplished
anything, there was nothing to compare it to, therefor no sense of achievement or self worth.
Granted this was also before twitter took off and my only connection to anything relevant in
the web industry was reading SmashingMagazine.com.
Developer Communities are important in that they fill a need for acceptance, and give us a sense
of belonging to others who understand what we do, and why it's so awesome. Let's be real - I love
being a developer, and I'm sure you do too, that's why you're here. Being a part of a community
who understands what you do can help you access your validity and skill level.
The very top level is self-actualization - achieving your potential. According to Maslow,
a person is always “becoming” and never remains static in these terms. In self-actualization a
person comes to find a meaning to life that is important to them. I don't run into many developers
who are happy with how they are now; they're always looking to learn, grow, and improve. This may
explain the discontent you feel when you're doing maintenance, or on a project that doesn't require
any learning or growth.
Surround yourself with greatness.
This goes back a little bit to how communities help at a personal level. Birds of a feather flock together.
You are who your friends are. There are a lot of sayings revolving around this concept. By creating a
community in which you're surrounded by passionate, talented developers, you'll be giving yourself a
direction to grow in, and motivation to become a 'rockstar'.
We've discussed why communities are important at the individual level. Now let's look at how communities
benfit the environment outside them.
No man(woman) is an island.
Discussion of new technologies, ways to solve common problems, and sharing tools and frameworks to help our workflow are all great outcomes of developer communities.
I'm going to use my current workplace as an example: being a marketing agency, we're very client driven, and we have a wide variety of clients, but not necessarily with a wide variety of needs. Teams are created per client, and tunnel-vision is a serious side-effect.
There are many times where teams will be attempting to solve a similar problem, and because of lack of communication - knowledge sharing - a lot of time is spent trying to find a solution another team has already reached. I'll talk more about how we solved this problem later, but it DID include creating a developer community.
Having a community is also monumental in helping you solve problems. Having someone to talk through an issue with is a proven way troubleshoot. Have a problem? Explain it out loud to a rubber duck, or your community member. In getting out of your head, you'll figure out what your issue is 9 times out of 10.
A while ago, developers had a reputation for being like mushrooms - they preferred to sit alone in a dark room and code.
While there still be a few of these fungi left, a growing number of developers actually enjoy - and benefit -from interaction.
And by interaction, I mean with other developers, not the project manager who's infamous line 'is it done yet?' has been
repeated enough to make you want to crawl into that previously mentioned dark room.
Point being, developers are more collaborative than ever. We have our own social media platforms. We share expertise. We create open source software. We maintain projects as a community. And the web moves forward because of it.
a social, religious, occupational, or other group sharing common characteristics or interests and perceived or perceiving itself as distinct in some respect from the larger society within which it exists
Community is defined as "a social, religious, occupational, or other group sharing common characteristics or interests and perceived or perceiving itself as distinct in some respect from the larger society within which it exists".
So we are an occupationals group with common characteristics, and in all likelyhood shared interests.
Let's now talk about existing communities you may or may not be aware of. We're first going to look inside the workplace, as you probably spend a minimum of 40 hours a week there.
Teams are a perfect example of communities. They may not be ones you made, but instead were hired onto. But your team still has it's own structure and dynamic, and possibly inside jokes.
Workplace User Groups
Other Workplace Communities
Thought Leadership Groups
Centers of Excellence
Lunch & Learns
A few other examples inside the workplace would be thought leadership groups, centers of excellence.
Sometimes I feel like I spend half my life on stack overflow. In college I definitely spent half my life on reddit. Just another community.
KC Geek Night
Girl Develop It!
Kansas City Code for America Brigade
Lambda Lounge KC
Kansas City Women in Technology
Greater Kansas City Drupal User Group
Kansas City Mobile App Developers Group
I'm a native, so the tech landscape I speak to is that of Kansas City. I love living in this happy little bubble with a 10 mile radius full of everything I love. Food, drinks, dance, and developer user groups. Here are just a few:
KC Geek Night
NodeKC - devoted to Node.js featuring talks, lean coffee discussions, and group hacking
Girl Develop It!
Kansas City Code for America Brigade
Lambda Lounge KC - they talk functional programming theory
Kansas City Women in Technology
Greater Kansas City Drupal User Group
Kansas City Mobile App Developers Group
Did you know all these existed?
How to Build a Community
Active vs. Passive ways
Passive Community Building
tending not to take an active or dominant part
Passive - defined as tending not to take an active or dominant part. In a crowd full of intorverts, not everyone may want to take a very active stance in building communities, but may still want to be supportive. So I'm going to help you out.
There are many things you can do that aren't necessarily active, but still are still tangible in how they create a sense of community. Many subtle things go into the creating and maintaining of a one, and aren't difficult to do.
"Networking for developers"
It may seem like a simple concept, but I feel it's one we tend to forget. Introduce developers to each other. Someone has a question? Match them with someone you know who has experience. If you work somewhere that isn't very organic, it's really important to help that process along. When you're at lunch, or happy hour, or a meetup, be sure to introduce people!
This is my first time speaking at a conference. I walked into the speakers lounge - and people who knew eachother were talking, they looked at me, and resumed talking. No "hi, nice to meet you, no what's your talk on?". There was no malice behind it, they just didn't think to include me in their community. Little things to think about ...
Lunch it Up.
BE SURE TO INVITE THE NEW GUY.
Getting away for lunch is a great way to build a sense of community. Let off some steam about projects, talk through a problem you can't solve, banter about which MV* framework you prefer. And always invite the new guy!
There's been more than once that someone new has been on the team, quietly sitting in the corner until someone had the though to invite them out to lunch. It's suprising how something so simple can be incredibly inclusive, and even more exclusive, which is something you may not even realize.
Evangelize Your Workplace
Love your job? Preach!
Word of mouth has a huge impact in a company's reputation. People want to be around positive, happy people. And don't you want to have great people to work around? Not to mention you'll like get a referal bonus, if you don't believe me, just ask the nearest recruiter.
Talking highly of your company will also make your area look better. People are attracted to areas with desirable employers - talk yours up. I'm of course saying this with Kansas City in mind, cause we really do have it all. Small town community, low cost of living, great food, great bars, the MLS Cup, Google Fiber, not too many corrupt CEOs, and a technology scene that is still growing, and that we can contribute to in valuable and monumental ways.
Actually Go to Stuff
I know a lot of companies put a lot of effort into providing great activities that are completely unrelated to work. Perceptive Software has a dodgeball court. Cerner brings in professionals to teach dance classes.So actually particpate, and have a good time! At a marketing agency where developers don't make up the majority, we frequently band together to attend company events. And we tend to have fun.
Hackathons are another great event to attend, you can go in with a team, or find one there. It's pretty easy to just show up to an event with your laptop and write code - you do that every other day, right?
Attend conferences. You're here, so you can check that off. Who went to the after-party yesterday? Who was hung over? It may seem simple, but casual networking events like that are great ways to build a community, and all you have to do is talk about what you love - programming.
Champion Developers Around You.
When someone does something fantastic, help them get recognition for it.
Mentor vs. Champion.Traditionally, this role works top down, but you can champion for your peers.
I know a lot of brilliant devs who don't parade their brilliance. And while that makes them fantastic to work with and great to learn from, they don't get the recognition they deserve. There are a lot of ways you can highlight their successes, simply talk about great libraries they've built that have sped up the team's workflow, link to their post they wrote about tips and tricks for sublime text 2, tweet their handle when someone mentions something related to their expertise. And be a champion.
Help the contractors
If you're thinking, why would I help someone else show off, what about me? Social Karma. It's a thing. Do something that won't directly benefit you, it will still come back. By supporting each other, you lift the group up. Kind of like that stupid sitdown game they make you play during team building exercise.
But do it right:
"I think this problem might be solving by xyz" vs. "This sucks."
Let's talk about your workplace. It's easy enough to give your company valuable feedback, and you may see problems they're not aware of. Make your feedback constructive, and it will be received well. Want to do it anonymously? There are sites like glassdoor.com.
Active Community Building
We've talked so far about passive, easy things to do that help with community building. I'm going to talk about more active efforts, things that will take more than just showing up, but give you power in creating what you want to see.
You'd be suprised how easy it is to get upper management on board if you've already done the heavy lifting in creating something. It can be a user group, it can be a lunch and learn, or any of the concepts I mentioned earlier. In most cases if you get the ball rolling, and you'll get the support you need. And when you begin making impacts, people begin to notice. Again, social karma - it always comes back.
Start a Group.
Pretty basic right? Have an interest? Other people probably do too. There's this nifty website you can use to recruit people, plan events, and even advertise! It's called meetup.com.
Start a Chat Group.
Even easier! You don't even have to put on pants for this one. This is a screencap of midwest dev chat - a slack room for any midwest dev, with channels from language to specfic library to, hey, community organizing.
Start authoring content. Whether it's on your blog or somewhere else, creating content and establishing yourself as a thought leader will make you a lightning rod for community engagement. People with shared interests will seek you out. This was an unintenional side-effect of launching Kansas City Women in Technology. All of the sudden people I had never met were reaching out to me about all sorts of things related to my project. It helped unify efforts, and in turn I've been able to connect people to make things happen.
Speaking is another way to establish yourself as a thought leader, and connect with others who share your interest. The reason I'm speaking here today is because speakers are a visual representation of the population. If I want more women getting into technology, that means I need to be showing that there are women currently in the industry, and ones that are thought leaders.
(shameless plug for CoderDojoKC)
I'm going to take some time to talk about mentoring and the impact it has. So think back to your K-12 days. How many people had a computer in their school? How many had a computer related class in their school? How many had a compentent computer teacher? How many people learned ANY programming before college in school.
Schools today ARE making an effort. They are aware that there is a huge gap in what they're teaching and what the industry actually required. But you all are aware of how quickly the technology we use progresses, and schools can't keep up with building curriculum as needs change.
Queue CoderDojo. CoderDojo is a global non-profit that was founded in Ireland, where it started as an after school coding club. Mentors came in to help kids learn to code. Note how I say 'help kids learn' vs. 'teach kids'. At the Dojo I run in Kansas City, I tell the mentors not to give the kids the answers they ask. Instead we tell them what to google, or what resources to use to discover the answer for themselves. I'm a huge advocate of after-school programming for technology education, bringing industry professionals to the classroom to talk to kids about what they do. Most developers love talking about what they do, and sharing knowledge. That's why this model is so effective - you have people who love what they do, and love talking about what they do, to inspire and coach kids.
Let's tie this back to communities and how it effects our landscape. By engaging with kids and mentoring, you are building your future employees. You are creating the next generation of technologists. You can help create devs who don't have those bad habits that annoy you, and help them learn to be self-suffucient problem solvers who can tackle any problem, and still want more.
Plan an event
Hackathons, Conferences, Bootcamp, Civic Hacks
Last, one of the most impactful ways to help build a community is to actual coordinate events like the one we're at. Is it just me, or is KCDC once a year not enough? One hackathon a year might be enough, unfortunately I'm getting old and can't stay up all night like I used to at LAN parties.
Back to my point, these events are rallying points for communities. They bring people together to do great things. I'm not going to go into how to plan one of these events because I hate event planning and am terrible at it. But these events go a long way to support communities and create prestige for them, and draw new interested parties in.
Things that can DESTROY a community
The 'Gray' Area
The goal is to create communities that feel incusive, not exclusive.
But there's always "that guy". What then?
There's this murky place all community leaders go through. I call it "the grey area".
You're trying to build an inclusive community that will flourish and prosper. But a communities
strength is it's members, so how can you be completely inclusive, but keep the bad apples out.
It's tough. Those bad apples can be like cancer, slowing killing off the good cells, the good members.
So where do you draw the line?
The needs of the many outweigh the needs of the few
For me, personally, I tend to go with the words of a Vulcan.
Engineers are smart. It's why we're good at our jobs. But a certain level of arrogance comes with that. The trick is to know where to draw the the line. We've all probably made those snide remarks in code reviews, feeling smug and vastly superior, but who is that helping? It's like the equivalent of bullying, only geek-style.
Cycle of Competence.
On the other end of the spectrum, we have the know-nothing who wastes your precious time with inane questions. They're not motivated to learn on their own, don't even attempt to solve problems, and are
happy just being told what to do.
Beware of "FNG" mentality
I'm a big fan of the miniseries Band of Brothers. It follows the story of Easy company, on of the best known companies of world war ii. These guys went through training together, were the first airborne troops, and went through hell in that war. You'd think they'd be relieved to get a fresh wave of troops to help them, but that wasn't the case. They didn't trust these FNGs, which led to problems for both the veteran company and the noobs.
Thankfully, we're just writing code. We're not at war. No one is going to
So we've covered what communities are, why they are important, highlighted ones in the Kansas City area, and talked about both passive and active ways to build then. We've also talked about how all these are things you can do no matter who you are, or what your job title is. You can create these things to make your company the kind of place you want to work. You can make your city a technology hub. Connect with people. Create programs. Share your passion. Create communities. Code on.