How To Be A Great Developer - php[tek] 2014

On Social Justice Movements in Tech

Angel and Devils

Tyne & Wear Archives & Museums

This is from a series of posts I made on Twitter today. The fact that I’m having an anxiety attack while I type this probably tells you how scared I am about the reaction. While I’ve for the most part kept quiet about this stuff for the last several months, I felt like I should post this. If it rings true for you, great. If not, that’s fine too.

So I’m going to post some things now. They’re probably going to make some people hate me (more). But I feel a need to say it.

I’ve been really conflicted about how much of the social justice in tech stuff has been going.

To be clear, I was an advocate and donor to many causes related to gender diversity in tech. That’s not to brag, just to give background information.

I’ve been concerned about some stuff I’ve been seeing, so I talked some to friends. One was very active in feminism online. She told me lots of things that rang true to me. Maybe they will to you too. If not, that’s cool. So I’m going to quote a few things.

My choice was to drop out of the community and do something less soul killing.

The focus turned on me – I have folks out there on tumblr who, five years later, still call me out by name as being a travesty to feminism.

So consider whether the most vocal among you are dealing with this in a maladaptive way, and if they are, my advice is to not engage them.

There’s no one right path to liberation and anyone who tells you that is selling you something.

I’m not saying they’re all wrong or should be ignored, but I do take all the “my way or the highway” talk with a grain of salt.

I’ve seen this over and over and over and over again.

My folks who have been involved since the BBS days, and even the brick & mortar activist days say that this is just part of the landscape. Liberal movements eat themselves.

So, that’s why I don’t really talk about it anymore, and that’s why I don’t participate in it anymore. Where I feel I can address these issues in my daily life, I will. But I’m done with gender diversity advocacy work in tech for the forseeable future. It is, in its current form, unsustainable for me. More power to those who have the strength and energy I do not.

I believe in the ends. I don’t believe in using bullying language and ignoring empathy to get there. I won’t support organizations or individuals who advocate it.

And that’s that.

Community vs Tribalism: Let's Stop Being Dicks To Each Other

Two women boxing

This post originally appeared on The Pastry Box Project

One of the most enjoyable aspects of my career as a web developer has been participating in various communities. I think you could safely say I have a foot in several, although the one I identify with the most is the PHP Community. It’s the one I know the best, and the one that has blessed me with so much friendship and opportunity.

Communities centered around a particular technology are fabulous ways to learn more about it, improve your skills, and help others do the same. Communities are great at fostering excitement and joy of learning, and I think for many web developers that’s really what keeps us interested in the field.

At the same time, there’s an aspect of communities — tribalism — that introduces several problems.

The first time I was really aware of tribalism was when I got really into video game consoles as a kid. I was enamored with the advent of 16-bit gaming hardware in America, and still remember very well how heated and vitrolic the debates would be between advocates of Sega, Nintendo, and NEC — even before any of those machines launched in the US. Each of the systems had different hardware attributes and different games (cross-platform releases were far less common then), so you really only had access to them if you owned the system. Kids were still the target audience at the time, and parents weren’t going to buy you TWO game systems — that’s ridiculous! So you lobbied hard for what you thought was The True Console. This was, as a preteen, Serious Business.

There was collective experience that went along with owning the same console. You could go to school and talk about games with your friends, or play them together at each other’s houses. If you weren’t part of that group, the experiences weren’t available to you. You were an outsider. God forbid you owned a Sega Master System in 1987. That kid couldn’t sit around a desk with his friends, huddled over the newest issue of Nintendo Power. He’d never play Castlevania. He’d try to tell people the 3D glasses were REAL 3D on the SMS, but nobody cared.

Owning a console meant, for most kids, being an advocate for that console. You had to justify why you (or more likely your parents) made The Right Choice. If someone else made a different choice, then clearly they were K-RAZY because you just KNEW why yours was the best. Their choice called into question your choice, and that shit is just not acceptable.

Perhaps of note, I now own about 30 different game consoles and vintage computers. They’re all fun and the arguments were stupid.

People who study anthropology and such (at least on the sites I found via Google) say that tribalism shows up everywhere throughout the history of man, so it’s likely a genetic human trait and not just a cultural thing. Observationally, I’d say they’re right.

There’s a bunch of anthropology and crap about tribalism as part of human evolution, the idea generally being that tribalism keeps people safe because they’re more likely to stick together and not get eaten by lions. Makes sense.

Tribalism leads us to make choices for less than rational reasons, though. Given a particular set of circumstances, our tendency to be loyal to a group can lead us to make decisions that either

  1. harm the group
  2. harm ourselves, or
  3. miss out on opportunities and advantages offered by alternate approaches.

Douglas Cooke Dobbins writes about this in a way that sounds much smarter than me:

It is a mark of wisdom, due to the above considerations, to be suspicious of ourselves, especially our predisposition to root for the home tribe. Though there is arguably an objective human dignity that attaches to each person, it is also the case (or there is at least good reason to think) that we are animals with a faulty nature — a nature that is not always ordered to truth.

This is really the key to combating the negatives of tribalism: balancing it against the knowledge that each of us are fallible. There is no shame in this, as it’s a defining trait of human beings, and makes it possible for us to always be learning and growing. If we’ve already come up with the Best Way, why bother trying to do better? That’s at least half the fun of being a developer: learning new stuff and better ways.

Simon Critchley writes in the New York Times:

The pursuit of scientific knowledge is as personal an act as lifting a paintbrush or writing a poem, and they are both profoundly human. If the human condition is defined by limitedness, then this is a glorious fact because it is a moral limitedness rooted in a faith in the power of the imagination, our sense of responsibility and our acceptance of our fallibility. We always have to acknowledge that we might be mistaken. When we forget that, then we forget ourselves and the worst can happen.

In that case “the worst” is the Holocaust, but thankfully we’re just dealing with web developers being dicks to each other. DHH is not Hitler. Really.

The important bit here is this: “We always have to acknowledge that we might be mistaken.” That’s an inclusive we, meaning me as an individual, you as an individual, and what we come up with collectively. We make mistakes, and we have limitations. Our brains can only handle so much stuff before we cut corners and simplify to reduce complexity. Thankfully we are aware of this, and can try to compensate for it.

It’s possible for the person who wrote our current favorite framework to be wrong about some things. Maybe many things. Maybe even the whole framework is riddled with flaws we don’t notice in our experience. That’s okay.

And it is also okay just to like something different. As my friend Paddy told me, some people like hot chocolate, and some people like milkshakes. They’re both good. Sometimes certain things are just more appealing to one person than another. With tools, it’s all about how productive you are, so if something makes you more productive because it jives with you, that’s a totally valid reason to choose it — for you.

In general, I try to do the following things to avoid the negatives of tribalism, both on an individual and community level:

  1. Base your tech choices on multiple sources and personal experience
  2. Know that what works for you may not work as well for others
  3. Anticipate that others may have useful techniques you don’t yet know or understand fully
  4. Study different technologies — even “competing” ones.
  5. Invite advocates of other technologies into your community. Understand their motivations. Practice empathy with them.
  6. When sharing your own tools of choice, explain why you use them. Demonstrate how they help you solve your problems. Address where they might not work as well. Help others empathize with you.
  7. If members of your community are behaving in a tribalistic way, it must be addressed. Doing this effectively without escalating the aggression can be very challenging, but it’s extremely important.
  8. Be deeply suspicious of tech advocacy based on moral or aesthetic superiority.

Doing those things helps me keep the awesome stuff that communities give me, while avoiding tribalism. That’s what we industry folks call a “win-win.”

Note: Updated Thursday; February 6, 2014 1:54 PM EST to add point about addressing tribalistic behavior in your community, based on a suggestion by Anne Gibson

How To Be A Great Developer

Developer developers developers developers!

This was originally posted on The Pastry Box Project

  • Empathy is your most important skill. Practice it with everyone you interact with, and everyone who interacts with your work.

  • Humility goes hand in hand with empathy. Be open to the possibility (likelihood, even) that you are wrong. Know that you will always be learning and improving. Accept and own up to mistakes immediately.

  • The less you fear being wrong, the more confident you can be. You are wrong about many things. You know very little about most things. Everyone else is exactly the same way. Embrace it. Always learn, always question, always adapt and grow.

  • Understand what you do well, and what you don’t.

  • If you have a job you enjoy that pays pretty well, know how lucky you are. We live at a time where the demand for developers exceeds the supply. Not everyone is so lucky.

  • Refuse to participate in tribalism. We are social animals, and being part of a group gives us confidence, but warring over technology choices distracts us from doing good work and practicing empathy. Build communities with what we have in common, and embrace the diversity that makes each of us unique. Make them safe places for anyone who is interested in participating.

  • Make people’s lives better with your skills.

  • Don’t worry about how many people use what you make. Empowering 5 people is incredibly special. They will remember what you did for them.

  • Make the community around you better. You don’t need to go to some Magic City of Tech Genius to do important work. It doesn’t matter where you are – what matters is the difference you make in the lives around you. And this is the Internet, so the people “around you” could be on the other side of the world.

  • Share what you learn with the people around you. Ask them to share what they have learned with you.

  • Your choices of technology and technique matter, but only so far as they serve what you make with them. As a musician, I ran into tons of people who had great gear and loved to argue about equipment, but barely ever finished a song.

  • View absolute statements with extreme skepticism.

  • Dismissing a technology without a sound, reasonable argument is lazy and prone to error.

  • Be extremely careful about participating in X vs Y arguments. They are rarely worth your time.

  • Be liberal in learning about new technologies and approaches. Be conservative in using them.

  • Set aside a little time each week to learn about new tech. Even just subscribing to a weekly aggregation newsletter (like PHP/Python/JavaScript Weekly) can bring up cool new things to explore.

  • If you go to conferences (and you should if you can), try to catch one or two talks about technologies you have no experience with. Look for beginner/intro level presentations about a language you’ve never learned, or a platform you have no experience with. Even if you never use it in production, exposure to different approaches and techniques will make you a better developer.

  • Any technology can be the right choice depending on the needs of the project and strengths of the team.

  • Never assume you know why a decision was made unless you were in the room when it was made.

  • Always keep two groups in mind: the users and the rest of your team. They are the ones affected by the decisions you make.

  • Poor communication will kill the effectiveness of the most talented team. Work hard at effective, structured communication and documentation.

  • Reserve your loyalty for people. Not brands. Not companies. Not technologies.

Privilege and Perspective

Monument of grant privileges of Düsseldorf - Détail

Some off-the-cuff thoughts, originally posted on Twitter:

I have something to say about the use of the term “privilege.”

One thing that kinda bugs me is when folks will talk about “privileged people,” with the implication that they themselves are not privileged.

And while I acknowledge that there are many, many types of privilege, and so much of it is varies from culture to culture, I think that they fact that you (probably) don’t have to live in North Korea, and have access to the Internet, and maybe own a smart phone, are all privileges that you have too. And that’s fine. We have what we have and we are where we are. What we do in that position matters.

I think it’s important to keep our concerns and complaints in perspective. That doesn’t mean not trying to make things better.

But I do think that it means losing your shit in a righteous ragefest may not be appropriate or constructive. It’s something I’ve been guilty of myself.

That’s why I’ve said that you should save aggressive tactics as a last resort, and never dismiss others’ concerns as invalid.

Because frankly, your concerns and worries probably seem pretty lightweight to somebody.

More posts