Reflections on my last gig…

I have just rolled off of my project of the last 8/9 months, and thought it was a good point to reflect on my time there.

Once again I had an awesome time. I learnt a lot, met some great people, made some good friends, watched people grow, and most importantly contributed to a great product. There were a lot of highlights, too many to name them all, but here are 5 I picked out.

Non-hostile atmosphere.

The whole team was respectful of each others ideas and skills, open to change and new ideas and a lot of fun. One of the first projects where change has not been outright resisted and refused. As consultants I can see that it’s natural that our presence on a team can cause hostility, but we’re here to help, honest! This lead to a much more productive and more pleasant working environment, allowing people to try new things and bring their ideas to the table.

From the moment that I got there I felt like there was space for my ideas and people were ready to listen to them and give them a go. Wonderful feeling.

It sounds like a small thing but its really not. When a team is willing to change the way it thinks and embrace new ideas, everyone can contribute to that success, it’s not just the persistent, rebellious people (which is often the role that ThoughtWorkers have to take) who can make change happen but there is space and support for everyone to have ideas and change the way things happen.

Feature Leading. Our tech lead was comfortable letting some of us lead a few of the features, which was great. I got to look after the online sales feature we added and an emailing piece. It wasn’t so much as an official thing but more an organic thing. As well as being involved in writing the code, I helped with analysis, spent a lot of time talking to the teams that we were integrating with, kept an eye on and helped out with testing and deployment and generally provided a consistent technical vision for the whole feature. It’s great experience for people who are moving towards becoming a tech lead, without the pressure and responsibility for being the actual tech lead. I found it really energising to have such focus on one feature.

Coaching / Mentoring.

I went to a leadership academy event recently where one of the speakers said that you are not a great leader unless you have pulled people up with you. That has really stuck with me. What kind of leader can you claim to be, if you haven’t helped other people learn and grow?

The client had a female developer on their team who had never met another female developer before she met me. She is also very talented and passionate about technology with some great potential. I spent a lot of time with her coaching and mentoring, and this relationship will outlast the client engagement. I get a massive amount of satisfaction helping others reach their goals and look at the world in different ways. Also being able to provide the support that people need to grow.

I also tried quite hard to make sure that I was giving “in place feedback” i.e. immediate feedback in a situation, mostly whilst pairing etc. One of the other TW Developers on the team commented that he heard me doing this often and learnt a lot from just listening. Need to do this more though. Especially when there are more “heated” pairing situations.

A positive attitude can go a long way.

Generally I’m a pretty positive person, and I got a lot of feedback about how this changed the whole atmosphere of the team. It only takes one consistently negative person on the team to start bringing the entire mood down. Remember this and try and look at situations positively and with energy.

There is more to being a developer than just writing code for the story you’ve been given.

As a developer, you are responsible for getting features that help the people using them into the hands of the people using them. It is your job to push back if you think requirements don’t make sense. It is your job to ensure that the software you are producing is of a good quality. You should not just be coding whatever you are told to without questioning anything. So as well as writing code, be part of the requirements definition, the testing, the conversations with stakeholders, with the people that are deploying your code if it isn’t you. Software that is not in the hands of the users and being used is useless.

As well as advocating the above, I spent some of my time on the team championing and facilitating the retrospectives, launching lunch and learns, being part of the inception, and countless other things that weren’t strictly in the remit of a typical “developer”. For me this is normal as they are things that I enjoy, but I don’t think this was the kind of developer that many of the client devs had met before! I hope that it has influenced them a bit.

Technical highlights

No-SQL datastores (Dynamo DB)

JavaScript testing (Jasmine)

JavaScript frameworks (KnockoutJS)

E-Commerce

In process browser testing (Plasma)

Feature driven development (Starting with high level feature tests and build down)

Analysis of logs (Stash)

Releases every week with blue/green deployments

Our tech stack:

Written in:

C# .Net, Javascript (KnockoutJS, JQuery), Razor, MVC4

Dependancy Injected with:

Unity

Package Managed by:

NuGet

Tested with:

Moq, Plasma, Selenium Webdriver, NUnit, JMeter

Data Stored in:

SQL Server 2012, Dynamo DB

Deployed on:

Amazon EC2, IIS,

ORM Layer:

Linq to SQL, Dapper

Deployed and Built using:

DBDeploy, MSBuild, Team City

Monitored with:

Stash

Coded using:

Resharper, Visual Studio 2012

…..and probably others that I can’t remember off the top of my head.

Group Feedback Sessions

It’s that time of year again… Spring reviews.

Now I have been on teams that are great at giving and receiving feedback, it’s adhoc, it’s frequent, and often immediately following the event that you are getting feedback about. I have also been on teams where this wasn’t the case. I think that unless you have that culture of continuous feedback on your team from the start, it’s quite hard to break that mental barrier, and can feel like getting blood from a stone. It can be a daunting and intimidating prospect to even ASK for feedback let alone give it.

Last week I rolled off a client that I had been at for just over a year, and this was one of those teams that we were pretty terrible at giving each other feedback. As the spring reviews were looming, and providing the kick that we needed, as well as my roll off and a couple of other impending staffing changes, we thought let’s just do a group session and ‘get it over with’.

A couple of people on the team had done group feedback sessions before. I was new to this. I felt a mixture of excitement and fear at the prospect of sitting in a room while everyone tells you what they think of you…. The team has been together for a long time now though and we are all quite comfortable with each other. We were also a reasonably small group of 8, so that made it seem much more manageable.

Our new PM Eric, carefully crafted a format for us to follow and he roped in a couple of our ‘people people’ (HR) to facilitate.

To keep the sessions constructive and focused, there was prep work for each of us before the session. We would each spend time self-reflecting on

  • What I bring to a project
  • What are the greatest challenges I face in the performance of my job.
  • What specific actions I am taking or plan to take to overcome my challenges.
  • What are my goals for the next year

Putting our thoughts into a Google Doc that we would then share with all of the team. It’s a fascinating learning experience to see what is on each person’s radar. Each of us would then add points for each person that we felt weren’t already covered, especially focusing on what they bring to the team. The focus here is that it’s easy to know what you are not so good at, but not always easy to be able to reflect on what you are great at, and what others think you are great at. If someone has identified something that they think they should work on, there is no need for the other 12 people on the team to point it out too. Also gives everyone a chance to process their feedback in their own way before talking through it, and saves you trying to collect feedback while people are talking to you. (because who can ever remember!)

Now to the actual session. We allowed 3 hours, after work, offsite, with pizza and a couple of beers. It was exhausting but well worth it. There were 4 parts to the session.

  • Icebreaker – Everyone taking turn to tell a funny story, either from the project or within the company.
  • What are you great at? – Each person take turns to talk about the 3 things that they are proud of/have done well. With everyone else adding points to it. For me it was actually the most uncomfortable part! Turned into an hour long love fest but well worth it.
  • How can you get better? Speed dating style. Everyone pairs off and spends 3/4 minutes each talking through the feedback that they got from that person and any other questions/clarifications that have come up from talking to others. Until everyone has spoken to everyone.
A MAJOR benefit for me of choosing to do it speed dating style and not round table, is that you have broken the barrier of one on one feedback. Now that you’ve talked together in this setting, conversations will happen naturally during pairing, coffee breaks etc.
If people know what you are working on when it comes to your personal development, they will be able to provide much better and more useful feedback when they see something happening, and encouragement when they see you getting better.
It was a great session that I’m really glad that we did. In a couple of evening’s work, all the feedback we needed for our reviews was collected, and we learnt a lot about each other and ourselves. The team committed to doing one of these more formal sessions every quarter, with the one and one stuff more often. I’m not sure how well it will be kept up, will have to ask them in 6 months or so!
Some lessons:
  1. Think about the format that you want to use beforehand, and prepare. Communicate this plan with the team beforehand so that they can prepare themselves.
  2. Fill in your own feedback and other’s BEFORE the session
  3. Talk about any hopes and/or concerns that the team has beforehand so that they can be addressed and built into the format.
  4. Get someone NOT on the team to facilitate the session.
  5. Hold the session offsite (Incase client discussions come up, also to provide  ‘safer’ environment).
  6. It is the facilitator’s job to ensure that session stays focused and constructive. Push where necessary.

Give it a try and let me know how it goes!

 

GHC 2011: Feedback from “What if we could alter the perception of the Software Developer”

Giving and receiving feedback is something that I think is so important if you want to improve and get better. I am also a bit of a positive affirmation person. I can be so critical at myself that sometimes I lose sight of what is going well. I have to make a real effort to remember what i’m doing well as well as what I can do better.

One of the great/scary aspects of being a presenter at a conference, is Twitter. Getting live feedback (or looking at it after the fact) is so powerful. I asked for feedback at the beginning of my talk and was so happy to see some of the responses. Here’s an example of some that I saved.

Twitter Feedback

I also just spotted the impact report compiled from the survey’s taken by attendees of The Grace Hopper Celebration of Women in Computing 2011.

You can find it here: http://anitaborg.org/files/GHC_2011_REPORT.pdf

I was really chuffed to get a couple of mentions in highlights sections.

First one up was from the lady that I mentioned in my post http://annejsimmons.com/2011/11/16/being-a-speaker-at-the-grace-hopper-celebration-of-women-in-computing/. I literally hunted down this woman during the party on the last night to thank her for what she did for me without even realizing. Always let people know and thank them if they make an affect on you.

Tell people that you appreciate them

The next great bit of information was the ranking that people gave about the sessions they attended. Mine got a 4.30 which I’m pretty pleased with. The  lowest of the “top six” sessions was 4.48 so not too far off at all.

Ranking from my session

The last mention was of the format that I used for my panel. There was lots of great feedback on it from Twitter and also it seems it left an impact in the survey findings too. If only we’d had more than an hour. Definitely will have to repeat the format for next year!

Presentation Format