anthony galvin

TAGGED: WORK

I'm a technolgist at TodayTix, the posts below are about work, but probably don't reflect my employers opinions. If you want to connect about work related topics, then this is probably the best place to do it. Work related tweets @workoworko

Dear Legacy Code Creator...

I’m sure you didn’t mean to create this problem. It probably seemed to make a lot of sense at the time. The client was a pain, you were under pressure to deliver - producer over your shoulder, asking “is it done yet”. As for that Tech Lead, he couldn’t code review his way out of a paper bag.

A project that nobody cared about. Ship it. Move on.

And it shows. Because 2 years later we are staring at the code. Trying to fix up some problem or other. It’s hard to know where to start because, well, there’s not many comments, the commit messages are garbage and the little documentation that there is makes no sense.

I understand that you didn’t think anyone would download that app, but people have. And the client, despite what you thought, thinks this is quite a good product and would like to promote it, if only it wasn’t so buggy. So now it’s over to us.

It’s OK for you, and the rest of the team. You left. A contractor. Got fired. Who knows, but you’re not here now as a couple of us go toe-to-toe with your lack of error handling and crazy re-invention of the most common design patterns.

And you know what, I know that we could all write better code, that I don’t have the context of those meetings and planning session when it all made sense. I wasn’t there.

But next time just write a few bloody comments and maybe some documentation that doesn’t assume you know the app inside out already. And think about those of us who have to up pick your pieces…

#work #code #legacy #frustration

2013-10-15 11:18:03 GMT permalink

What we talk about when we talk about planning poker

How sizing stories (points, t-shirt sizes, days & hours) is more than just Numberwang.

For (digital) agencies who use agile techniques for managing the design and development process there are some added complexities hidden in the abstractions of the story sizing.

Depending on the nature of the development project, a typical agency team might run the gamut of disciplines, from Interaction & Visual Designers, working in Illustrator and Photoshop through to Python engineers coding in Vim and living in the command line. And each with a (subtly) different understanding of the complexities involved.

Planning poker is the technique of getting multiple people on the team to independently size user stories, whilst trying to avoid the risks of ‘anchoring’. It’s a great method for driving cross discipline understanding of those tiny assumptions that can threaten to derail a project further down the line.

Which looks something like this:  Sat in a circle, post-it notes scattered across the floor and walls, someone is describing a level understanding of a particular user story — it’s pretty simple on the surface “As a user I can sign-in to the platform, so I can register to use the service”. People scribble on the post it notes, using the Fibonacci sequence to size stories based on the relative complexity involved for the UX (interaction and visual design) and technology teams. After a few seconds everyone stops writing and holds up their post-it notes. It’s near the start of the meeting so people are still getting a little warmed up, even so the variance in the numbers is quite high. Not just between disciplines but also between team members who work in the same area. This is where the interesting bit starts.

The discussion that follows is the bit I find fascinating. The cases where someone in tech misunderstands the complexity of a design challenge or someone missing the difficulty of integrating with a third-party (“it’s just an API call”) is understandable — that’s why we are doing this as a cross disciplinary group. These are easy to flush out and correct.

The real area of interest is where people explain the assumptions behind the scores they’ve given. At this point we are into the details, and it’s great for the momentum of the project. Weeks of thinking, sketching and notes come tumbling out in the conversation — no amount of ‘annotated wires’ can accomplish the benefit of someone challenging why “that’s only a 3".

Capturing these assumptions is key — they make up the real scope and difficulty of a story. Often it’s also the risk factor that you’re gathering “I gave it a 21 because we just don’t know exactly how that’s going to work”. Whilst all forms of planning and project management are probably inherently flawed, you’re unlikely to get this level of collaboration and discussion whilst scoping out a typical waterfall build.

Agencies running agile are usually working with more constraints than a development shop. The client will probably have a fixed budget and timeline, so the only area of flexibility is scope. Whilst the aims of the project are (hopefully) going to be clearly documented and contractually agreed, these small instances of scope and the relationship between a ‘must’ and ‘could’ are the area of flex that teams are going to need deal with the reality of ‘unpacking a story’ and finding it’s more of a nightmare than a fairy tale. But that’s probably something to add to the backlog for another post…

#work #agile #planning #process

2013-09-30 11:39:00 GMT permalink

Nearly 15 years ago I got my first ‘digital agency’ job in an old warehouse conversion just off Upper Street. The commercial web was still pretty new (we also did interactive CD ROMs, remember them) and Angel wasn’t quite the urban trend fest it is now. There wasn’t too much to do over lunch so a few days a week a couple of us would head to Vegas and play time-crisis or CrazyTaxi. The industry, games and Angel have changed almost beyond all recognition in that time. Today I went for a stroll round some of those old places and amazingly Vegas is still there.

#work #angel #london #games

2013-09-27 17:38:32 GMT permalink

The R/GA Make Day 2 video, possibly featuring a little bit too much of me.

#work #rga #makeday #video

2013-02-08 11:33:33 GMT permalink

The marginal gains of innovation.

Innovation in digital advertising. 
Innovation in advertising. 
Innovation.

How do you create an environment and attitude that allows people to innovate on a daily basis? Is it possible to create a culture of innovation?

There’s an increasing tension pulling at the commercial web. The commercial web being that part of the internet that’s trying to sell you something - even if that something is as intangible as brand or an idea or maybe even an emotion. This commercial web is becoming ever more formulaic and codified. Measured in an analytic sense, but also in a careful way. There’s a pattern to campaigns, to exploiting social media with the big players. Facebook, Google and Twitter drawing more and more users and therefore advertisers into their orbit. 

Pulling against that is something that dates from the old web. The web of the 1990s. A culture of the new, the different - embodied by the continued evolution of the semantic web, the constant pushing and poking at the boundaries of the browser by people trying to maximise what can be achieved with JavaScript, HTML(5) and a good idea. Creating the expectation, the necessity, that the web must continue to evolve and innovate. It’s a long time since advertising was just a great 30 second TVC or even a nice and shiny corporate web site, it’s the way you do business, how you answer tweets and how customers feel about you and your product. Everything is marketing

If you believe this to be true, that innovation is the key to stepping beyond the confines of the formulaic web, and therefore, standing out and being noticed, then how as an organisation do you make this one of your goals. Can you codify innovation? Make it reproducible? Isn’t that just like planning to be spontaneous. For teams involved in creating for the commercial web, innovation can not be something that happens in a vacuum, away from results - the formulaic, measured web has seen to that. This isn’t a story about “being brave enough to fail”. Client success isn’t a nice to have. 

We seem to wrestle with this most days at work. I certainly don’t have all that many answers. Yet. But I’ve noticed that the most innovative projects I’m involved in have thse ingredients.

1. Be a team
Not just a group of people who happen to be free at the same time and who the resource manager and producer have cobbled together. That might be how the team gets selected, but it needs to evolve quickly into a genuine team.

2. Iterate 
The big idea is great. Someone probably needs to have one at some point in the process, but that’s really just a beginning. Innovation isn’t the eureka moment. Or rather it’s not one big eureka moment, but normally hundreds of tiny innovations, back to back to back. Build something, make it better, change it, test it. Improve it. Some of the most innovative projects I’ve worked on recently haven’t really worked all that well right up until the last minute. There’s no such thing as getting it right - it’s a case of keep making it a little less wrong. 

3. Be open to the marginal gains of innovation
There are opportunities to innovate across a whole spectrum of disciplines. The most effective innovation might come from the way you change the hosting, deploy your code, manage your daily scrum or prototype the user interactions. Nobody knows where this is going to come from, but it’s important to recognise any opportunity for innovation and grab it.

#work #innovation #thoughts #culture #commercial web

2013-01-19 00:44:17 GMT permalink

A few weeks ago I was part of a panel discussion hosted by Getty Images at the Hospital Club in Covent Garden, “Show, don’t tell: the rise of visual social media”. There’s a nice edit of the presentations that preceded the discussion.

#discussion #gettyimages #panel #rga #social media #talk #work #video

2012-12-02 20:32:00 GMT permalink

8 tips for working with remote software teams

I’d started drafting these tips for the R/GA tech blog when Bobby Schultz beat me to it with his post “The 5 pillars of remote collaboration”. Despite this I thought I’d post my thoughts here anyway.

It is certainly not a recent trend for organisations to be looking to work with remote software teams. Whilst previously this was primarily motivated by a move to reduce costs and offshore development, increasingly there’s also a desire to harness technical talent irrespective of location. The growing R/GA network means that we are often reaching across offices to staff projects teams and leverage talented technologists. 

Here are a few tips that help those projects along.

1. Daily stand-up has to run like clockwork
Even if you’re not running an agile or adaptive planning process it’s important that everyone is committed to making ‘the daily’ a success. This is your most important meeting of the day. It needs to be professional, effective and run to time. Time is important, on projects with a wide geographical span as someone is going to be getting up early or staying late to contribute to the daily, so everyone needs to respect that.

2. Keep an open line of communication for all developers
Informal communication is essential between the development team, what my colleague @philhawksworth calls a 'back channel’ for open discussion, questions and banter. This is where 'the culture’ of your team is going to be fostered.

3. Use video
Make all calls video calls, even though we can get by over the phone the psychology of video calls helps to re-enforce relationships. Where there are a group of people in a single location use a dedicated meeting room computer and gather round a single large screen so that remote workers take up a disproportionate amount of space in the meeting room.

4. Have a robust, repeatable build and deploy process
Whilst continuous integration and continuous deployment may not be appropriate for all projects, when working with remote and distributed teams a bullet proof build and deploy process is essential. If you’re running a semi-automated build system everyone should be able to run a build regardless of location - without this you’re going to start having bottle necks and some users are going to be more equal than others. With an automated build process all developers are have equal ability to break and fix the build. 

5. Be location agnostic
If at any point the team start thinking about people who are 'offshore’ or 'in New York’ then that’s the start of a problem. Everyone on the project may not be equal, but the source of the inequality should not be location. 

This doesn’t mean that you shouldn’t  be sensitive to different locations and cultures - if it’s a public holiday in London, then it’s a public holiday in London. These things tend to equal themselves out and there are no surprises - you don’t often get short notice public holidays. The key thing is that you’re being equally sensitive to location and culture regardless of location.

6. Let remote people lead parts of the project
This sounds slightly counter intuitive when working with a group of remote developers or a distributed team, but if you want to embed a location agnostic culture don’t be precious about having all parts of the project led from the largest or main location. If you’ve got a fantastically talented front end tech lead on the project who is based in South America and you’re in Chicago, then there’s few reasons not to let that person lead the front end development.

7. Make time for a 1:1 
If you’re leading a project and you have remote developers, make some extra time to have a one-to-one session with each individual. You won’t be to recreate that hallway conversation you might have if you were on the same corridor, but once you get a cadence to these conversations, it’s amazing how productive they can be.

8. Face to face buys you time
There’s an internal saying @RGA “that face time buys you 6 weeks”. Whatever the number for your team take advantage of any face time you can get, both from a work perspective but also from a social “let’s go to the pub point” of view. It’s worth it’s weight in something heavy and valuable.

#work #development #rga #coding #technology #management #teamtheory

2012-05-30 23:23:00 GMT permalink

<< previous next >>