Codemania 2016

When my awesome and generous employers at Rabid Technologies approved my request to go to Codemania and Codemania Conversations, I had no idea what to expect. I mean, I’ve been to tech conferences before, so I had a pretty clear idea of what the formal conference part of Codemania might be like, but the unconference Conversations was a new and mysterious unknown. And now that I’m sitting down a week later to write a post about my experience, I’m at a loss for how to break it all down and share it in a coherent fashion!

codemania tweet

I’ll start by saying that the weekend was a fantastic event, and I highly recommend it to all who code. It started with the official Codemania conference on the Friday, a one-day event (although expanding to two days next year!) jam-packed with speakers from leading tech companies and academic organisations telling us about all of the awesome things. The speakers and their topics were so good, it was hard to choose which to go to when there was more than one on at a time. Not a bad problem for a conference to have.

codemania fomo tweet

The Codemania Agenda.

I enjoyed and learned from all of the talks that I went to, but in the interest of (attempted) brevity, will only talk about a few of them here.

One of the two keynote speakers was Katherine Daniels, Senior Operations Engineer for Etsy and co-author of Effective DevOps, who gave a talk called “Putting the Dev in DevOps”. I really didn’t know much about DevOps other than the term itself and a vague idea of what it meant – in case you’re unsure too, here’s the definition according to Wikipedia:

“DevOps (a clipped compound of “development” and “operations”) is a culture, movement or practice that emphasizes the collaboration and communication of both software developers and other information-technology (IT) professionals while automating the process of software delivery and infrastructure changes. It aims at establishing a culture and environment where building, testing, and releasing software, can happen rapidly, frequently, and more reliably.”

So it was interesting to hear from Katherine all about how Etsy does their DevOps and the tools they’ve created – called Project Indigo – to streamline their DevOps processes. The Indigo suite’s tools – all named in some way after Peter Gabriel, an homage to Tumblr’s Phil Collins infrastructure management system – take care of installation, decommissioning, disk partitioning, and a variety of other ops tasks. It all sounded pretty ingenious and magical, to my newbie ears. What was most interesting to hear, though, was how they refactored the tools; once they were created and in use, they realised that the tools were quite fragile due to being unmaintainable and untested, and had to be improved in order to be viable long term solutions. I find it really interesting to learn about how other teams approach problems of technical debt and what means they take to improve on their codebases, so Katherine sharing the process and its takeaways with us was invaluable. All in all, it was a great talk and I learned a lot. AND, I now have a much better understanding of DevOps.

codemania tweet

Later in the day, Duretti Hirpa, front end developer at Slack, gave her talk, “Good APIs make good UIs.” There was so much awesome in this talk: empathy driven development, “docs or it didn’t happen”, cute SOAP pizzas and Princess Bride memes. The TL;DR was the reinforcement that the most important part of software engineering is people – from the developer to the user, and everyone in between. We should put as much thought into the design of APIs as we do for UIs, because the DX (developer experience) is as important as the UX (user experience). Her discussion about the importance of docs in particular was especially relevant to me as it is something we are starting to put focus on in the project I am currently a part of and already I can attest to how vital they are when building an app.

codemania tweet

The need for empathy in development – which would become somewhat of a theme of the day – was a high point of Duretti’s talk for me, as it’s something I also believe is really important. It is a movement that has been a long time coming for the tech industry and I feel (hope!) it’s gaining more and more steam, particularly as the industry becomes more diverse. It kind of goes hand in hand – the need for it and the presence of it will increase as diversity in tech increases.

At Dev Academy, we spent a lot of time on engineering empathy, “the human side of software development”, focussing on ‘soft skills’: being able to relate to one another, keeping the work environment a safe space for all people, communicating and giving feedback, etc. I really appreciate bringing this human side to programming, as it moves away from the ‘rockstar’ developer trope, a stereotype created by an industry known for being inaccessible and lacking in diversity. Tides are turning and the industry is starting to realise that in order to build the best tools for the wider public, we need teams of people from all different backgrounds who can communicate with and respect each other, and empathy is the key to achieving that.

codemania tweet

I’ve seen Sarah Mei speak at a conference before (last year at WDCNZ), and was really happy to have the chance again at Codemania. I’m a big fan of Sarah and the things she has to say, and knew I would get a lot from her talk, “Factory, Workshop, Stage”. Sarah delved further into the importance of people in software development – going so far as to say explicitly “Software is people and only incidentally computers.” She explained that software development has evolved over time to become more team (people) centric, and that the best software is produced by high functioning teams – teams that are collaborative, thoughtful, communicative, respectful, solve real problems and get stuff done.

sarah mei talk at codemania

So how do we get one? What are the barriers? Sarah covered four challenges that need to be considered: hiring (getting the right people – because if the team has even one wrong member it could fall apart or not function well), turnover (how to handle losing the knowledge of a team member), growth (how to expand the team and avoid growing pains), and productivity (how to set realistic goals for productivity). The models we have used to describe software development – the factory and the workshop – have become outdated, as they don’t consider all of these challenges. They put the focus on products, rather than on people, and therefore no longer fully encapsulate the work and process of a modern dev team. They are holding us back.

Sarah then proposed a new model: the theatre. This spoke to me especially after spending 7 years working in professional theatre as a marketing/publicity person (during my first career, more here if interested) – it struck me right away how good this analogy is for a dev team. A theatre company is nothing if not collaborative; a production does not happen without all members – from the director and actors to the designers, technicians and stage managers – doing their part. The theatre model answers all of the challenges that Sarah outlined – hiring, turnover, growth and productivity are just as important in this model as they are to a dev team. And this model adds something to the discussion that wasn’t present in the other models: creativity. Software development in a high functioning team is an inherently creative process. It’s something that is often left out of discussions of software development but really shouldn’t be, and this model allows us to keep it at the forefront. I really like that. This talk was one of my favourites of the day.

codemania team tweet

The final speaker for the day was Suz Hinton, software engineer for Kickstarter, and her talk was “Refactoring the Dinosaur”. Suz talked about working with the ‘dinosaur’ that was AVRDUDE on a hardware project – a 16 year old “utility to download/upload/manipulate the ROM and EEPROM contents of AVR microcontrollers using the in-system programming technique (ISP)”. The limitations of this dated program led her to create avrgirl, “a NodeJS alternative to interacting with Atmel® AVR microchip.” I don’t know much – anything? – about hardware programming, but I found Suz’s talk really interesting nonetheless. I especially liked how she got people to do manual testing; by creating a sense of community and offering incentives, she gamified it and made it fun. Hardware programming can often seem inaccessible for newbies in particular, because it can be hard to find answers or assistance. Suz is turning that on its head; her whole approach to development is about making it fun, making it accessible, and encouraging inclusiveness. She also spoke about the need for empathy – I told you it was a bit of a theme of the day! – and cautioned that communities that are patronising to and dismissive of newbies will become stagnant and get left behind. This was a fantastic end to what was a really great day filled with so much learning. I am so glad people like Suz are out there helping to make the industry a better place for the rest of us, and I hope some day to be able to do some of that myself.

codemania tweet

One of my favourite parts of Codemania was the fact that women speakers outnumbered the men – 7 of the 13 were women. This, in my limited experience, is nearly unheard of in a tech conference and I was really impressed to see it. I definitely felt underrepresented in the audience (it was a large crowd, and women attendees were probably outnumbered by men 30:1, I would guess), so it was nice to see that wasn’t carried through to the stage. It was so inspiring to see so many women at the top of their profession – at the top of my profession – talking about empathy and accessibility and all of the things I think are important.

codemania women tweet

After such a full first day, I wasn’t sure I would have the stamina for the unconference weekend, and I was a bit nervous from not knowing what to expect. But the end result was so much better than I could have hoped, fully living up to the name “Conversations”. That said, because it was so much about conversations, it is hard to break it down the way I did above for the formal conference. The unconference was immersive and participatory, less about taking notes and more about engaging. So rather than trying to dissect it too much, I’ll talk about the big picture.

First of all, it was a great opportunity to get to know people. I talked to the conference speakers and attendees from all across the tech industry in New Zealand. I formed acquaintances and friendships and just generally had a lovely time with a whole bunch of great people.

There were some fantastic sessions: some expanded on topics from the conference, like Sarah’s theatre model and Duretti’s emphasis on the importance of docs; others covered topics like imposter syndrome, how to train juniors, and the importance of language; while still others delved into more technical subjects like microservices, AWS, DevOps and Agile development. There were walks in the bush, sits by the pool, trips to the beach and games of Werewolf. It was truly an excellent two days.

“Current #codemania session: cold feet a metaphor for software bugs? https://t.co/bUK3UQStO1nzben (@nzben) April 2, 2016

Some learnings:

  • Everyone is in the same boat. People have the same insecurities, have been through similar things, are looking for similar things. This includes people who speak at conferences. It was nice to have that reinforcement, to talk openly about feelings in relation to this industry and hear others do the same.
  • I have stuff to contribute, and am capable of contributing despite fear of speaking in front of a bunch of people who know way more about this stuff than I do.
  • I hosted a couple of sessions! Sure, they were the bush walk/pool sitting sessions, but we had some great conversations while sitting around that pool, and after all, conversations were the point of the weekend, right?
  • It is so helpful when experienced, senior developers acknowledge when they don’t know something. It takes some of the pressure off, makes them human and approachable for us juniors. It means we’re not the only ones who are vulnerable and unsure and creates camaraderie between us.
  • Juniors should work on hard stuff – it’s the best way to learn and it frees the senior up to help them when needed.
  • Werewolf is fun. I had never played before, and I loved it! (we need to have games during Rabid’s Friday drinks, I think!)
  • Unconferences are great. I was unsure about them and hesitant about going, but after Conversations, I will enthusiastically attend more in the future.

codemania tweet

So, that was my breakdown of Codemania 2016. Thank you to the organisers for putting on such a great event. I hope I can go again next year! (<— subtle hint for my boss)