Powered by Django

A Quick Look At Programmer Productivity Pitfalls

Date: Feb 23, 2016

I tweeted a couple of things within a few hours of each other this past weekend. It wasn't until Monday morning that I realized how connected they are:

Play the animation. At first glance, it seems like utter chaos doesn't it?

But in fact it is controlled - every part interacts with every other part, and that is where the comparison to object oriented programming comes from.

Spend a few minutes watching it. See if you can get a handle on how all the actions affect each other.

If you had to make a change to any one part of the sequence, do you know how it would impact the animation as a whole?

What if every third figure coming out of the castle on the upper right had to be blue instead of yellow? It seems like a small change, but how would it affect the rest of the sequence? Does this change touch only a small part of the animation? Where would its impact be felt? Those little figures all persist into the rest of the animation. Some are carried away and dropped back into the castle tower, some cross the river and walk back into the castle, some head off-screen (and probably come back in at another side).

You almost need to memorize the entire sequence as you're making your small change, to keep tabs on the impact you're going to have as you switch animated people from yellow to blue.

Let's say you've been watching the animation for a while, and you've got a pretty good idea of what's happening. Maybe you could even describe it in detail if you watched a little longer and took a few notes.

What if someone were to walk in right now and ask you a question? What if you had to get on a phone call and were forced to focus on something else for five minutes? How much of the precise sequence of events in this animation would you remember when you came back? How long do you think it would take you to watch the animation and get familiar with its actions again?

That's analagous to the experience of working on object-oriented software. A programmer must be mindful of the impact of their code changes as they're working, and that often means remembering a complex set of interactions, carrying those interactions around in their head until the work is done.

This illustrates why even small interruptions can be a disaster to a developer. A clear calendar is a programmer's best friend, and day strewn with meetings an hour apart can guarantee that nothing useful will be accomplished in between (what's the point of immersing yourself in a program when the next interruption is just around the corner?). Schedule your standups for early in the morning or late in the day, keep all of your agile planning to one day of the week, and use email instead of IMs whenever you can. Your team will thank you.

Powered by Django

Our Massive Halloween Trick-or-Treat Blowout

Date: Nov 02, 2015

I think we might have out-nerded ourselves this Halloween.

Our neighborhood does Halloween big. Almost every house has been decorated since the first week of October. A block over, they close off the street for a street party, and one of the houses hosts a family-friendly band that plays until around 10pm. People sit out on their lawns and grill while they're handing out candy. And we've got four churches within a two-block radius - all four of them hosted parties on Halloween afternoon, so afterwards all the kids spilled out into the surrounding neighborhood.

Photo: Andrew Dupont

A post on the local community forum warned that we should expect more than 100 kids. I got at least 15 pounds of candy, and we went through all of it.

But Andrew really took it up a notch. While I was handing out candy, he kept count and showed the results on a scrolling display.

This project was all him, I had nothing to do with it - I just wanted to brag about him a little. He wrote a quick Ruby app and put it up on Heroku.

As the kids came by, we used a browser interface with a few simple buttons to keep a count. And as we updated the total, the display sitting in the window updated with just a few seconds' delay.

The code is all up on GitHub, with a detailed README, if you want to check it out:


Our final tally was 250 trick-or-treaters. At that point we ran out of candy, but the neighborhood had gotten pretty quiet by then anyway.

On a side note, Avengers seemed to be the popular costumes for the night (for both boys AND girls). We also had 11 Elsas, which we counted in a more conventional way.

Powered by Django

What I Learned From DjangoGirls

Date: Oct 13, 2015

In September of this year, in conjunction with DjangoCon 2015, I helped to organize a DjangoGirls event in Austin, TX.

This isn't meant to be a comprehensive overview of the class - many other organizers in other cities have done just that already, and summed up the joys and triumphs of the day better than I could:

I just wanted to talk about a few of the things I learned from running this event.

The first thing I discovered was that the corporate/sponsoring members of our community are very generous. What they get out of it: exposure, and more new developers coming down the pipeline some time in the future. What we get out of it: The chance to support beginning developers on their journey not just once, but twice!

I also learned to appreciate this class for what it is.

When I first heard about DjangoGirls last year, I was skeptical. I've taught beginner Python classes for many years and I know that there's only so much you can impart to a student in a day. Too much, too quickly, can intimidate and send prospective new developers running.

But what you'll see when you host (or coach) one of these events is that finishing is not the point. Some students will walk out with a completed Django app, but not everyone. It is, I still believe, a very ambitious curriculum for a beginner to take on in one day. But finishing the app is not the point.

The point is to start. The point is to dip your toes in, to get familiar with the tools and vocabulary. It's to begin to build something, struggle with wrapping your head around new concepts, encounter and solve some bugs. And to realize that these struggles are normal and surmountable, that bumping up against a problem isn't a disaster - it's an opportunity to learn more.

The women leaving our class back in September all left knowing that they can do it, that they're no more impostors than any of us are.

And thanks to the generous sponsors mentioned above, we'll be giving 40 more students the opportunity to accomplish something new.

On December 12, DjangoGirls ATX will host its second event:

If you're interested in learning (or teaching) and you can be in Austin that weekend, applications are open now:

And if you're not in Austin, get involved wherever you are. Django is being taught to women around the world, and if there's not a class in your area, what are you waiting for?

Powered by Django

Coming Back From Burnout: Video

Date: Sep 20, 2015

Powered by Django

Coming Back From Burnout

Date: Sep 03, 2015

Coming Back From Burnout

I have some bad news. I'm not a self-help guru or a motivational speaker. I don't have any magical solutions. All you're going to hear from me is plain common sense. But if you're here and you're identifying as suffering from burnout, you probably already know what you need to do for yourself. Sometimes you just need to hear it from someone else.

So you're active in a thriving open source community. By definition, you've gotten accustomed to giving your time and energy pretty freely.

Maybe you want to improve your programming skills. Or maybe you want to make new friends. Maybe you're also driven creatively, you're excited about what you're making and all the knowledge we share.

The reasons why we give so much of our time in open source have been dissected and discussed ad nauseum, and that's a topic for another talk, another time. One thing I do know is that everyone I've met in open source is passionate about giving of themselves.

But that passion has to have limits.

What Burnout Looks Like

A few years ago, I had just moved to Austin, started a new job, started a new relationship. I had just begun the Young Coders program (the kids' class we teach at PyCon). I was teaching a lot of beginner Python classes here. I got involved with the local CSTA chapter (Computer Science Teachers of America). I volunteered with a program here through UT Austin that brings technology professionals into public schools to speak and teach. I was doing technical reviewing for some friends who had written Python/Django books. And I had founded the PyLadies chapter here in Austin and was doing a lot of meetups and classes to help that group grow.

So I was stretched to my limits. My relationships were suffering. I started having health problems. I was getting to travel, sure, but only for conferences - I was seeing the world one PyCon or DjangoCon at a time. I was taking time away from my actual job, the one that pays my bills. I wasn't getting to do any of the things I loved outside of programming. And I was starting to dread every meetup and every class. In short, I was hating my big open source life.

It took a couple of years of this before I realized that I had to scale back. I handed PyLadies over to some other very capable women. I cut my teaching schedule dramatically. I stepped back from the organizations I volunteered with. I started saying no to requests for my time. And gradually, things got sane again.

Why Burnout Is Bad For You

Burnout is a result of long-term exhaustion. Most people can handle a busy day once in a while. But when those days turn into weeks and months and years of constantly being spread too thin, the result can feel a lot like depression - you start dreading what you're doing. It becomes hard to get out of bed.

It should surprise no one that burnout leads to terrible performance, but it also takes a serious physical toll. Every time I open up a browser I see a new story about the effects of overwork on the human brain and body. These are just a few I've saved from the past year. (btw, when I post these slides, there will be links, so you can read about these studies more in-depth)

Long work hours linked to 33 percent increase in stroke risk

Long working hours and risk of coronary heart disease and stroke: a systematic review and meta-analysis of published and unpublished data for 603 838 individuals

Chronic Stress Can Damage Brain Structure and Connectivity

Scientists say chronic stress can actually change your brain

The subtext to that Amazon story: We're afraid our work is killing us, and we are right

And when we're trying to juggle our everday jobs, our open source work, and our personal lives, one of the first things that gets sacrificed is sleep. And lack of sleep contributes to even more health issues.

What Sleep Deprivation Does to Your Brain, in One Stunning Infographic

This one from SFist actually refers to a UC Berkeley study, I just loved this sensationalist headline. It got me thinking: is this where flame wars come from? And you all know that XKCD cartoon - "I can't go to sleep! Someone is wrong on the internet!". What if that someone isn't actually wrong ... you just think they are because you haven't gotten any sleep?

UC Berkeley Sleep Study: You Perceive Friends As Enemies When You're Tired

One particular story that caught my eye while I was researching for this talk was this one that NPR did back in May. It's about another recent study conducted by the University of Washington, but one of the examples they cite in the article is the Exxon Valdez crash.

Short On Sleep? You Could Be A Disaster Waiting To Happen

This happened back in 1989, so some of you might not even remember what a huge environmental disaster this was. An oil tanker ran aground off Prince William Sound in Alaska. Some estimates say as many as 38 million gallions of oil were spilled. Hundreds of thousands of animals were killed, including birds, seals, orcas, and sea otters. 26 years later, there are still thousands of gallons of oil in the water and sand, and many of the animal populations still haven't recovered.

The story going around at the time was that the ship's captain was drunk and ran the ship aground. It came out later that the captain was not even at the helm - it was the third mate, and he had been up for almost 24 hours prior to the accident.

How many of you have stayed up that long hacking on a project?

Now imagine your open source project taking a header like that. Giving your most tired self to a project is not good for that project at all. It's the opposite of good. Sometimes you need to step back, refresh your passion for coding, then return when you can give your best energy - everyone will be better off for it.

If you can't do it for you, do it for the sea otters.

How To Step Back and Recover

The easy answer? Start saying 'NO' to things.

If you want to simplify your life, first you'll have to give some careful thought to where you give your energy. What's really important to you? What makes you feel good? What brings you joy? What's actually contributing to your growth?

When I was feeling burned out, I realized that I wanted my time back for doing some of the other things that make my life rich. It took a little soul searching, and in the end the only thing I held onto was Young Coders and teaching kids, because that is what I love best. These days, I limit myself to a focus on teaching, developing curriculum.

Whatever you do, don't compare yourself to other people. We all know someone who seems to have a hand in every project, but you can't judge your own life by what you imagine theirs to be. You don't know how they may be scrambling behind the scenes, or whether or not they're even fulfilled. Keep your focus on what's important to YOU.

Then get ready to practice saying No.

If you're already overloaded and:

Worried that someone might be upset if you say no? Well, they might be, but your self-care is more important. Anyone who doesn't understand that is not worth your time. Trust me. Your mom would agree with me.

And sometimes saying 'NO' just means ... not saying 'YES'.

You don't have to answer every email, you don't have to answer every tweet. Just because you're invited to the conversation doesn't mean you have to contribute to it - sometimes listening in is enough.

This is something I feel really strongly about. An unsolicited email is an ask for a piece of your time that you didn't agree to give. It takes time to craft a considerate answer, and I know it can be a hard thing to get used to, but the truth is that you don't owe anyone anything.

Note that I said "unsolicited" email. If you're leading a project or have agreed to organize an event, then you have implicitly agreed to deal with all those asks. That's something to keep in mind before you commit yourself.

This is not a license to flake - do the things you say you'll do. Just promise less.

And those people who all seem to be doing ALL THE THINGS? One of the things they are really good at is delegating. And that brings me to another point.

Replace Yourself

As a member of an open source community, you are going to be exposed every day to new ideas and projects. And you're going to want to work on all of them.

My best advice to you is to be judicious with your commitments and guard your time carefully.

You don't necessarily have to say NO to all those things.

But you might have to relieve yourself of some other responsibilities BEFORE you accept new ones.

Over the past year, I've talked to a lot of other women who are also tech speakers, found that some are doing as many as 10-15 conferences a year. We're in pretty high demand right now. I get that as a community we're working on diversity and trying to increase the visibility of women programmers, but those women need a break. The same women can't carry the load for all of open source. So MENTOR new women. The first step towards giving yourself a break might be by mentoring and bringing in someone new.

The same thing applies to that code library you've been maintaining for ... how many years? You've been doing it for so long that it's starting to make you hate the language, but you've convinced yourself that no one else can do the job as well as you can.

Well, I have some news for you.

There are lots of developers in our community who want a chance to stretch and grow. And what's become old hat and mechanical to you will be new and exciting for them. Reach out to mailing lists and user groups, find someone you can mentor, then take a deep breath and hand the job over. It'll feel so good.

When you ask for help:

Over the summer, I was at a party, talking with some people who are highly sought-after speakers in a different community, different language altogether. They told me stories of having to lie to organizers about having personal commitments because simply saying 'no thank you' to an invitation to speak was not enough. I've heard stories of organizers getting downright hostile - "Oh, you did X's conference, but not mine?!?"

So if you're organizing a conference or leading a project, don't be that person. Don't lean so hard that you cross that line from 'welcoming and encouraging' into 'pressuring and bullying'. And please, please, don't be mean.

And if you are feeling pressured to participate by someone in the community, push back, politely but firmly. People may not know they've crossed that line unless you tell them.

Say 'YES' To Things

Go outside once in a while - your inbox can wait!

Let go of the things that are weighing you down, and do the things you love.

Finally ...


Yes, I know this is one of the most annoying acronyms in the history of humankind, and it's been used to justify a lot of obnoxious behavior. But there's a kernel of truth in there. You only get one life. You owe it to yourself to make the best of it.

Powered by Django

A Quick Look At Programmer Productivity Pitfalls

Date: Feb 23, 2016 | Category: Tools

I tweeted a couple of things within a few hours of each other this past weekend. It wasn't until Monday morning that I realized how connected they are: