I enjoy working independently–listening to music and chugging along with a problem. But working on the same problem with others, even if you already know the solution, is one of the best ways to grow as a developer.

Problem Analysis

Tossing ideas back and forth, working towards a solution, is beneficial to each collaborator involved. There may be different scenarios or technologies that nobody else would have considered. Each new idea that’s introduced to the team adds to this brewing pot of even more great (or not so great) ideas!

Even the bad ideas can be beneficial to the team. I mean, think about something that seemed like a bad idea at the time, but ended up changing the world–like steak for example.

Billy: Look at all them cows...
Fred:  They are quite magnificent, aren't they?
Billy: Well, yeah... but what if we ate them?

This probably goes without saying, but collaborating on a problem will result a better product in the end. Sure, it was Billy who suggested we eat the cow, but it was Fred who recommended it be cooked first.

Pair Programming

This leads into pair programming. Each person has their own tricks and techniques that they use, but certain things are only shared among team members during pairing sessions.

For example, you may see a great function name or a well-organized module here and there, but now you get to see how the developer came up with it and the reasoning behind making those decisions.

In addition to this, you’ll may also learn about things you’re doing wrong in your own coding. Maybe you’re making certain decisions a little too early. Maybe you’re not testing things in the right order. Working with others and seeing how they do things is an important part of being a developer.