About this talk
Forget ninja developers and rockstar developers. What Melinda is more interested in is the superhero developer: these are the developers that do their best to help others, that try to give back to their community, and generally make the world a better place. So how can we all strive to be superhero developers? This talk will look at the lessons we can learn from Marvel superheroes on being better developers.
Who here doesn't like superheroes? So sorry, but this talk might not be quite for you. So, a long time ago back in 2007, there was a girl. Me. And I had just moved to London, and since I didn't know anyone there, I started attending loads of events. So, meetups, conferences, hack days, BarCamps. Basically every single week, there'd be something to do. And while I loved doing all this, there was just one problem. Well, two problems actually. Fear and imposter syndrome. So, I was scared of talking to new people and kind of speaking in front of lots of people even though I'm doing that now. But I also had lots of doubts about myself. Feeling as if I didn't belong, that I wasn't good enough. At the time, I was studying computer science and suddenly I was around all these developers who I felt were way better than me. And I now know that this is what is called imposter syndrome. But at the time, I thought I was the only one that was dealing with this type of stuff. And it already had started kind of earlier back when I started university, but it was now way more apparent when I was around people that I didn't know and it was becoming much more annoying for me. And I didn't really know how to deal with it. Well, that year, I started a blog, missgeeky.com. And I didn't really start it with the idea of kind of battling those villains but it helped me a lot. So, having this alter ego, it basically meant that I had this character that I could be. That I could kind of play when I was at events and when I was talking to new people. And having this persona basically meant that I could be more confident or act more confident and less scared than I actually was. And it soon gave me also confidence to do more stuff. So, kind of by faking the confidence, I kind of made the confidence. So, eventually, I lost that fear of doing all those things, but the imposter syndrome still remained a problem. And it only really disappeared when I joined a company that I'm at now, FutureLearn, mainly because of how supportive and great the team is. And having the right people and the right culture and the right behaviors around you makes a huge, huge difference when dealing with imposter syndrome. So, hi, I'm Melinda and I do lots of different things. So first, I'll explain a little bit about my background. So, I'm a speaker. I've been speaking at these types of events now for two years about. As I said earlier, since 2007, I've been a blogger, writing about all things geeky and girly. I also am an event organizer running hack days and BarCamps and lightning talk meetups. And I'm a back-end developer and line manager. And as I mentioned before, I work for... words. I work for a company called FutureLearn and we're basically a social learning platform. So, we work with universities, museums, and cultural institutions all over the world to create free online courses. And I started out here as mainly a developer. But as our company has grown, I started using all my other skills much more. So, speaking at events more, getting our entire team blogging more, organizing all sorts of internal events. So using the skills that I already had but just applying them in slightly different ways. And as our team is growing more, I've started thinking not just about how do we create a good team, but thinking about, what does it actually mean to be a good developer? And how can we highlight all these other skills that people might have or that they might want to develop? And when we talk about good developers, we often hear terms like "Rockstar Developer." Or "Unicorn Developers." Or "Ninja Developers." And most often, these are terms that are used for those developers that are brilliant at coding. To be a ninja developer or a rockstar developer, it means that you're brilliant at writing code. Which, I know, is fine, but what I'm much more interested in is this, the superhero developer. So, for me, these are the developers that do their best to help others. That try to give back to their community. And generally just try to make the world a better place. So, these are the developers that amplify others. And they're the type of people that I want working with me and the type of developer that I want to be myself. So, how do we become superhero developers? So, I did what I always do when I'm researching a new topic and looked it up in a dictionary. So, "Superhero is a benevolent fictional character with superhuman powers such as Superman." So, I think that's a bit of a rubbish description because, well, there are superheroes with superhuman powers. I don't necessarily think all of them do. So, I much prefer this definition from Wikipedia. So, "Modern popular fiction. A superhero is a type of heroic character possessing extraordinary talents, supernatural phenomena, or superhuman powers and is dedicated to a moral goal or protecting the public." And if you look further on Wikipedia, we find that a superhero has the following traits. Extraordinary powers or abilities, a strong moral code, a motivation and...yeah, I think we can leave the bottom two out. Even though having a cool costume would be kind of cool but we don't really need that as developers unless you count jeans and a hoodie and a t-shirt. Yeah, I missed up there. Anyway. So, if we look at the remaining three, I think these are all things that developers should have and know about themselves. So, how do we define these? So we don't have to really look that far for inspiration because we can look at actual superheroes. So we're going to have a look at 10 different superheroes and the lessons that we can learn from each of them. So, I'll be specifically looking at Marvel superheroes just because I'm a little bit more familiar with them. And they're slightly cooler than DC. So, first up is Iron Man. Now, I thought I'd start with Iron Man because even though most of us aren't genius millionaire playboy philanthropists, just like Stark, we're all engineers. So, Tony's the type of guy that I could imagine bumping into at a hack day. Chances are he's the one that might accidentally be burning down the venue because he left a soldering iron unattended. But he'd be there tinkering away just like all of us. And when we think about Iron Man, most often, everyone immediately thinks of this version. So, the shiny red-gold suit that gives Tony superhuman strength, flights, and a ton of weapons. And it's very, very easy to forget that it started out like this. So, after being captured by a terrorist group, Tony builds this suit of armor to help him escape. And, in fact, we've seen a ton of different Iron Man suits since then. So, this overview shows 42 versions of the Iron Man suits and it's already out of date because it's not... actually missing the last two movies, maybe even the last three movies. And it's only the suits that have been shown in the movies. It's not even covering any of the comics or other literature. So, if there's one thing that we can learn from Tony Stark it's "Iterate and Reflect." And I'm not just talking here about iterating and improving a product. I mean, constantly reflect on what you're doing and iterate on that. So, make improvements to yourself and how you do things. So, one of the things I try to do is a personal retrospective. So, every two weeks, I'll look back at the last two weeks and think of, what are the things that I could have done better? What are the things that I've learned? And keeping track of these and writing them down, it also means that you actually have a tangible record of your own progress. So, next up is Daredevil. Now, Daredevil is a lawyer by day, a superhero at nights and he fights crime on the streets of Hell's Kitchen in New York. And as a kid, he's blinded by a radioactive substance. And while he can't see in the typical way anymore, the radioactive exposure heightens all his other senses. So, making him far more perceptive than anyone else. So, he can hear a person's heartbeat and tell when or not they're lying based on it. He can read a book from feeling the ink of the letters. And he can pick up on conversations that are a few blocks away. So, he's aware of so much that's happening all around him. So, Daredevil teaches us something. Teaches us that sometimes we need to just shut up and listen. So, there's a great article by Rands called <i>You're Not Listening</i>. And it's all about how you can be a better listener. So, rather than just hearing the words that people are saying, you need to actively listen to the conversations that you're having. And the second thing is, "Pay Attention To Your Environment." So, think about the effect that your words have on others. Pay attention to the mood of your team and think about what you can do to influence it. Don't just live in your own little bubble. Think about how your bubble affects other peoples' bubbles. Third is the Hulk. So, the Hulk is very much the Mr. Hyde of the Marvel universe. Which basically makes Bruce Banner our lovely Dr. Jekyll. So, after being exposed to gamma radiation, the scientist, Bruce, becomes basically a ticking time bomb. So, whenever his emotions get too high just like through anger or stress, he kind of explodes and transforms into the Hulk. And as the Hulk, Bruce Banner is one of the most physically strong superheroes. And the madder Hulk gets, the stronger he gets, capable of destroying and breaking a billion things. And sometimes I think we all need a little Hulk Smash in our lives. So, once in a while, just like Hulk, we need to give in and just break things. So, every mistake, every failure, it's part of learning something new. So, this shouldn't be a surprise to those of you that do TDD or BDD because you don't just want to make your tests pass, you need to see them failing as well. So, this isn't just about embracing failure, it's about actively seeking out and breaking things. And this is a quote from Ed Catmull who's one of the founders of Pixar and is basically now the president of both Pixar's and Disney's Animation Studios. And his book, <i>Creativity Inc,</i> is all about how they created their culture at Pixar. It's a great book with a lot of interesting anecdotes and examples and I love this quote about embracing failure from him. "So, many people think it means accept failure with dignity and move on. The better, more subtle interpretation is that failure is a manifestation of learning and exploration. If you aren't experiencing failure, then you are making a far worse mistake. You are being driven by the desire to avoid it." So, making mistakes, breaking things, it's part of being a developer and we all need to accept that. So, our fourth superhero is Spider-Man. So, Spider-Man is obviously quite web-savvy... sorry. But I always loved his story while growing up because he was basically a teenager that gained all these super powers and was able to do all these incredible things. And, you know, maybe one day, I'd be bitten by a spider as well and also gain super powers. Except that I'm scared for spiders. So, this quote that tends to get used quite a lot but is right. So, "With great power comes great responsibility." So, as developers, we are constantly learning new skills and new ways of doing things. And as our knowledge grows, as our power grows, we have a responsibility to give back to the community. So, share your knowledge. So being a good developer means that you help others learn what you know. So, this can be on a local scale so within your own team or company, or it can be on a community or global scale by talking at events like this or writing blog posts as long as you share what you have learned in some way or form. So, our fifth superhero is Agent Carter. So, unlike most of the other superhero stories, Agent Carter's is set in the 1950s. And she originally works as a British liaison for the U.S. army and teams up with Captain America. But after he disappears, and after the second world war ends, she decides to join the SSR, the Strategic Scientific Reserve which later on becomes part of S.H.I.E.L.D. And despite the fact that Carter is a trained spy and soldier, she is initially relegated to doing coffee runs and typing up notes and is completely underestimated by her team. So, she knows what she's good at, though, and despite her team not understanding, she ends up succeeding and completing the missions that she goes on. So, know your own value. So, understand what skills you are good at and how your team can benefit from them. And they might not necessarily be the skills that you got hired for or that other people are aware of. And you need to be the one to champion your own skills when you think it might help your team. So, our wonderful sixth superhero is Thor. So, based on the Norse mythological god of the same name, Thor is part of the alien as guardian race. And like all...as guardians, Thor is incredibly long-lived. He's immune to conventional disease, highly resistant to injury, and, well, to the point that compared to humans, he seems like a god. And because he's the Norse god of thunder, Thor can also summon the elements of the storms like lightning, rain, wind, and snow. And as the son of Odin, Thor is set to inherit his father's throne in Asgard, but basically after being an absolute ass and defying Odin's orders, he gets banished by his father to earth, mainly to teach him humility. So, don't be arrogant. So don't assume you know better than everyone else and always consider other points of views and perspectives. And I love this quote, "Every question is a cry to understand the world." So, never look down at questions that people have. Don't assume that things that seem obvious to you are going to be obvious to other people because most likely they aren't. So, help others learn the things that you know. But also, the flip side of this is admitting that you don't know something. And this is something that I struggled a lot with, so I thought that asking questions and admitting that I don't know something was a sign of defeat. A sign that I was a fake, that I didn't belong. But good developers know when to ask questions and when to ask for help. So, number seven, Guardians of the Galaxy. Now, I have to admit that I didn't know much about Guardians of the Galaxy until the movie came out. And from an outsider's perspective, they're quite a weird team. So, Star-Lord is reasonably normal, but then we have Gamora who's a green alien assassin. We've got Drax the Destroyer who's a warrior that doesn't understand sarcasm. We've got Groot who's a tree and Rocket who's a genetically engineered raccoon. So, what I like, though, is that they are basically a group of misfits. They're not your typical group of superheroes. Looking at them, you don't necessarily go, "Hey, that's gonna be the group that's gonna save our universe." And they are each so different, though, that they bring unique skills to the team. So, another quote I love, "No one can whistle a symphony. It takes an orchestra to play it." And you want the same thing when building a team of developers because having a bunch of people that all look and act just like you is only useful if you're starting a rubbish boy band. So, to create truly awesome teams, you need a diverse set of people. So, eighth, X-Men. So the X-Men are mutants, a sub-species of humans who are born with superhuman abilities. Led by Charles Xavier, also known as Professor X, the X-Men fight for peace and equality between normal humans and mutants. At a certain point, though, a human senator introduces the Mutant Registration Act. A law that requires every mutant to be identified in an official census documenting their numbers, abilities, and whereabouts. And basically restricting the rights and permissions of every single mutant. And rather than being restrictive and putting rules and restrictions in place, as developers, we should be treating people like grown ups. So, let people decide for themselves what they should be doing. So, one example of this in our team is how we deal with pool requests. So, we don't require them for every bit of code committed. It's up to each developer themselves to decide whether or not a commit needs it. Nine, Fantastic Four. So, I'm not a huge fan of the Fantastic Four. I still haven't really seen their latest movie and...yeah, exactly. I haven't heard many good things about it at all. But I do like their origin story. So, there're always slight variations of the exact how, but all four basically gained their superpowers after exposure to cosmic rays during a scientific mission to outer space. And what I liked was that their powers are basically mirrors of their weaknesses. So, Mr. Fantastic is always being pulled in different directions trying to do a million and one things. And his power allows him to actually stretch his body into whatever shape he wants. The Thing's shell comes from not letting others see his true self. The Invisible Woman's invisibility comes from wanting to hide away and not being noticed. The Human Torch is pretty much a hot-head with a massive temper and he gains the ability to turn into fire. So, each of their powers are based on their weaknesses. So, turn your weakness into strength. So, the obvious way of looking at this is, "Just get better at the things that you're not good at." But I'm actually more interested in the actual traits of yourself that sometimes aren't considered as good or things that you consider your weakness. So, think about the annoying things that you do and how you might flip it around to use it in a good situation. For instance, I used to be really, really quiet and not say a lot during meetings. Which is not handy for big meetings that you're in, but knowing how to use silence when you're on one-on-ones with people is actually really valuable. So, the final group of superheroes that I want to look at are the Avengers. So, we already covered a couple of them, Iron Man, the Hulk, Thor, and with the Avengers, we have standalone superheroes who are all awesome doing their superhero thing all by themself. Well, when things get really messy and when problems become really large, they rally together and fight together. Each of them bringing their powers and their strengths to the entire team. And the same is true for development teams. So, you can be an awesome developer, but sometimes when things get really messy and when problems become really large, you need to rally together and solve these problems together. So, these are 10 things that we can learn from superheroes. And all of them are different. All of them have their own origin stories, their own experiences, and their own strengths and weaknesses. And in the same way, everyone in our community has their own origin stories, their own experiences, and their own strengths and weaknesses. So think about, who do you want to be? For me, being a developer is more about just the code. It's about seeing that penny drop when someone grasps a new or difficult subject. It's about pairing with someone for a full day and feeling that together you've managed to accomplish something that you wouldn't have by yourselves. It's about teaching someone who's never coded before all the things that they could do and build with it. So, be a superhero developer. Be the type of developer that does their best to help others, that gives back to their community and generally just tries to make the world a better place. So, thanks for listening.