Book: Working Effectively with Legacy Code

Reading Working Effectively with Legacy Code (Amazon) made me really want to get into something and write some tests. It’s a really actionable book, and I liked how pragmatic it was – focusing on being able to create incremental progress, but balancing that with what you’re aiming towards. I think a sign of a foundational programming […]

Read More

Estimations and Orders of Magnitude

Call me a cynic, but I don’t expect software estimations to be accurate. Because software is built by humans – and they take sick days, and vacations, time to help their colleagues (hopefully), have off days as well as good ones. But I still think estimations are worth doing. Firstly, because if we don’t have […]

Read More

Towards Productive Technical Discussions

Note: I wrote this post for an internal team blog, but thought it was worth sharing more widely. Part of getting to good code reviews is some up front discussion about trade-offs and implications for bigger architectural changes. I think of code review as when “my” code becomes “our” code – for architecture, those conversations […]

Read More

Why Do Standup

Share work before it happens – prevent overlap, raise gotchas. Foster communication and collaboration – offer help rather than waiting for someone to ask. Start the day with intention. Turns out, status updates are not the most useful aspect of standup.

Read More

Creating a Randomized Emoji String in Python

You might have noticed this part of the 2016 Emoji Report – part of the graphic features an emoji for each of our subscribers. It’s a randomized ordering of all the different skin tones of the 👩‍💻 and 👨‍💻 emoji, repeated [number of subscribers] / 12. Our subscriber count wasn’t exactly divisible by 12, so I […]

Read More

We Hire The Best

The tech industry prides itself on its rationality, and yet is filled with trite slogans that are demonstrably untrue… and further, harmful. Originally published in Model View Culture, November 2014. “We hire the best.” It’s a slogan we can rally around in company meetings, a tagline to put on the jobs page… a shoring up […]

Read More

All the Leaves are Brown and the Sky is Gray

It’s a weird thing to reflect on my career and realize that very little of the code I wrote is still in production – because very few of the things I worked on are still in production. Most of the products I have worked on have failed. We build with bits not bricks. Architects and […]

Read More

Android: Testing an Intent Service

Note: The ServiceTestRule class does not support testing of IntentService objects. If you need to test a IntentService object, you should encapsulate the logic in a separate class and create a corresponding unit test instead.

There’s a handy thing in Espresso called the ServiceTestRule, which is for testing Services. Yay. I thought it was just what I needed until I read this bit of the documentation… OK, first up – refactoring my IntentService. This class already did very little, poking something else depending on the kind of Intent it received, and […]

Read More

Creative Coding Podcast

creative coding podcast

I was on another podcast! This time, creative coding with @seb_ly [listen]. We talked about managing coders, color theory, side projects, lasers, being homeless, interviewing (and applied humaning). It was really fun (but cold!) to record, and I hope you enjoy it.

Read More

4 Situations Where Managers Write Code

P vs NP

The two hardest things about becoming a manager have been: 1) the emotional exhaustion, and 2) letting go of the part of my identity that was tied up in writing code. I accepted that writing code wasn’t the best thing I could do reasonably quickly, but it took longer to finally stop saying I was […]

Read More