A Recipe For A Happy Software Development Team


I am happy and proud to be a part of a wonderful team at the moment which was formed in only couple of months. I wanted to share some ideas and practices which made us more happy as developers.

I came up with this recipe:

Ingredients:

  • 6 motivated and knowledgeable developers
  • interesting project
  • one room

Prep: 7 months

Difficulty: Medium

Serves: 6 developers, Product Owners and Developers’ World

Method:

  1. Peel developers from their shells, boil them in uncertainty for a short while. Prepare for a future feedback marinade.
  2. Use fork to shred developers into a green field project without too much control. Leave ‘how to proceed’ for them to figure out.
  3. Heat the atmosphere to 200C by asking tricky questions and waiting for an explanation of their decisions. Constantly question everything.
  4. When developers are really tender - put them in a saucepan and mix project work with knowledge sharing on many fields - work, universities, meetups and conferences.
  5. Pull from the saucepan, dry, cover tightly with foil to protect from too much enterprise and bake for another month or two.
  6. Top with a spoonful of team initiatives and team building exercises.
  7. Serve developers to Product Owners for successful projects and fruitful cooperation.

This recipe worked for our team. This means - some of this may work for you. Let me get down to details of what we’re doing and what has made us quite happy.

Knowledge

We’re definitely a knowledge oriented team - everyone wants to know the newest, shiniest thing but also get better in languages, frameworks and tools we’re using at the moment. I don’t know if this comes from attitude or whether it can be taught but if you have it - there are obvious ways to sharpen your saw:

  • having a pet project
  • reading programming books
  • reading blogs and writing your own blog
  • taking online courses
  • taking traditional classes
  • attending meetups
  • attending conferences

If you use some of the above to improve your skills you’ll have fun learning and you will be proud of getting better. We’ve tried everything from this list in varying amounts and it definitely made us happier!

Part of the fun is also sharing your knowledge inside the team as often as possible. It can be 15 minutes session on a tiny topic, full hour or half a day workshop. It’s important to make a room for it and promote it. Even the smallest form of knowledge sharing is beneficial.

One step further is also leaving the comfort of your own office and talking at meetups, conferences, universities. That also gives you another boost of motivation to understand the topic better, deeper and makes you happier because you share your knowledge with someone. Our team members are speaking at many events and they find it very exciting and valuable.

Initiative

Initiative is both having an idea and motivation to make it happen. If your organization doesn’t interrupt or (if you’re lucky) even helps you along the way - you can do a lot! Here’s couple of ideas we had:

  • WebDev Guild

    Inspired by Spotify culture, one of our team mates started this internal, but cross-team group to share knowledge about web development on a regular basis.

  • dev@LDZ

    We started a meetup group in Łódź just because we wanted to have a broader discussion about software development, not necessarily bounded to one language or platform. Also because we love the dev community and wanted to meet, discuss and share opinions with like-minded people.

  • Dashboard

    There is this big screen in our kitchen. How can we use it? Let’s try Dashing! It’s in Ruby on Rails and CoffeeScript, so what a great opportunity to leave our comfort zone and try something else. This project started as part of the WebDev Guild initiative.

Those initiatives were all born inside our team and we’re happy to do them because they bring an excitement of creating.

Agility

Not only Agile methodologies kind of worked for us when it comes to project work (we’re mostly a Scrum organization with clear time frames and delivering working software all the time) but also technology agility - this team is working with C#, VB.NET, Javascript (AngularJS and other libraries), iOS (Objective-C with a bit of Swift) and even some PHP/MySQL lately (who would have thought?). Learning new things is part of the process, part of the game and it gives us fun as well.

Feedback

This one is embedded into the culture of the team and helped us the most I think. We are giving, humbly receiving and asking for feedback almost every day - be it about the sprint we finished, code we written, presentation we prepared or conducted or just about the way we work and cooperate with other people. Anything we do, we look for opportunities to exchange feedback with others.

In a more structured way we use it for:

  • code reviews

    Sometimes we have couple of code reviews a day touching different parts of the system, various tasks and code snippets. Everyone from the team is involved in either having his code reviewed or reviewing somebody else’s code, often at the same time. That gave us more confidence in the quality of our code but also had an amazing team building effect - oftentimes we were complimenting somebody’s work - what a motivational effect!

  • design reviews

    Every now and then we ask ourselves about design decision we’re about to make. Not only does it raise awareness of how we’re structuring our project but it also gives everyone a chance to contribute ideas. Granted, it sometimes leads to a long debate on how to implement something but it hasn’t been counter-productive at any time. Usually we agree to disagree and choose a pragmatic approach to push the project forward.

  • quality of work we do

    The end of each sprint is an opportunity to carry out a retrospective and to talk about good and bad things that happened. If the team feels secure enough and is open this is a perfect time to exchange feedback about the way we do things and an opportunity to develop ourselves. It may be obvious, but teams can benefit a lot from these retrospectives if conducted properly. We used this chance a number of times to make ourselves more efficient and effective.

We started using feedback extensively after internal training sessions we had at our company. Being skeptical about such initiatives I have to say - they gave us a lot. Feedback is like other things - if you want to get better at it you have to practice. Training gave us insight on how we were doing it and how we want to do it. Practice after it taught us also how much we can benefit from it.

Practices & Small Habits

We have a few practices & small habits which we’re trying to cultivate because they either bring joy or remove friction in the team.

We are fans of async standups as explained by Andrzej Krzywda in his blog post. We use HipChat for this and for other daily communication. We have separate rooms for #standups, #rsvp (where we simply ask for opinion/help), #resources (for sharing interesting stuff), #feedback (for asking and giving feedback - yes!), #nsfw (which is actually the most boring one) and a couple of others.

This means we can read what people are/were working on even if we’re working from home, different location or catching up after vacation. We don’t do it at the same time so everyone can choose his time when not in the flow. Additionally, written form provides benefits of structuring our thoughts in a better way.

No, this does not mean we’re not talking to each other - we talk a lot in a synchronous way but we mix it with asynchronous communication where appropriate.

Every now and then we have a video lunch - we simply watch videos from conferences after or during lunch. The important part is that we can discuss the session with other members of the team - this is definitely added value over watching videos alone.

We started Friday-treat-yourself initiative - one person of the team is preparing something to eat for the rest of the team. Now that is nice - having sushi prepared by one team member or a tart prepared by (fiancé of) another one - perfect!

We’ve recently set up a Sound System in our room. We have also collaboratively created a playlist of music we listen to while coding. Recently we’ve been obliged by other teams to play Metallica on Fridays - can be done. Yes, this makes us happier as well.

We also try take lunch together as often as possible. There is one hip place near our office - a milk bar called Teofilanka with reasonably good food. Going there (it’s about a five minute walk) and sitting there together has a really nice effect on a team. And you won’t guess what they serve on Wednesdays for dessert…

We aren’t going out together that often just because it’s difficult to find a suitable time for 6 people. However, we’ve been going out in smaller groups a few times and I don’t think I have to convince you that this is a great way to get to know each other and build another level of relationship in a team.

Future ideas

We have a couple of other ideas which can make us even more happy.

Lazy Mondays is kind of home office for everyone - Monday could be the best because it’s harder to come to work after a nicely spent weekend.

Developer Day is an idea to dedicate one day, let’s say - a month, to learn new things and present it the same day to other members of the team. I’ve seen similar idea in our organization in the past but this time I think it can actually work.

MVP of the Sprint - an idea to highlight someone’s special contribution to the sprint. You can imagine that there are many ways of giving praise to such a person. It has to come from the team though.

There are of course things not necessarily dependent on us but nice to have like shower in the office (for bikers mostly) and sleeping space to have power-nap during a day. This would definitely make us even more happy. But I would put those quite high on Maslow’s Hierarchy of Programmers Needs therefore not needed so badly.

There are even more ideas than those above and new ones come up quite often. Once you’re on the track of making your work enjoyable - it’s really hard to stop.

2014 was a great start for this team and created nice momentum. I feel like we can achieve a lot together. There are already ideas of starting a project together after hours. What else can I wish for myself? We just need to use this motivation as soon as possible not to disperse it - I would recommend the same to any team at such a point in time.


Who are we by the way? Go and check yourself those great guys I love working with:

Being a part of this team is a dream come true. I always felt better as a part of a bigger group sharing same interests if not values. If you happen to be a part of a team - enjoy this moment, enjoy every minute spent on discussing common problems - you may find yourself alone with a problem in the future and you’re going to miss those people wanting to help you.

Enjoy your team and use plenty of ideas out there to have fun and learn at the same time! Good luck with implementing them!

Thank you My Team! It’s a pleasure working with you!