“Nate, we won’t be having your code review this morning.”
“Oh. Is someone out?”
“No, there’s a problem with your code”
With that, Roger handed me a few sheets of paper that had a lot of red ink all over them. I had been out of college about 14 or 15 months, and had joined this team about 2 months prior.
I was assigned some small feature, I don’t remember the details. But we were writing a Windows app in C++. By the time I joined the project the program was about 8 years old, and was a rather mature architecture. They had structured the code into a state-machine that talked to our engine controllers. On top of the state-machine, we had some agents that worked as controllers, and areas that were essentially views.
The “problem” was that while my code worked, I had agent code in the area, and area code in the agent.
When I left that company, I gave Roger some flack over all the red marks on my code review. But the fact that I went through this experience helped shape my development future.
Working on a team of developers provides a few advantages. There are some obvious features of working on a team, you’re able to spread the work out among more developers. If you have a program that has 4 or 5 areas, you can split the tasks among 4 or 5 developers and work in parallel.
Chance for Learning
However, the ability to split work isn’t the primary reason for working on a team, it’s really more of an added bonus. One major feature of working on a team is the learning opportunity. On most teams you’ll have someone who has been coding for years, someone who has recently gotten out of college, and a few others mixed in. Obviously, the youngster stands to learn a great deal from those who have gone before him. However, it’s not just a one-way street.
Often the younger developers will have a better grasp of modern technology. They tend to have more time outside of work hours, as well as a thirst for knowledge that will have them researching, developing and experimenting with new ideas. This gives a nice opportunity for both sides to come together and build off of each other, inspiring each other to grow.
Challenge the Way You Think
In addition to learning, one more benefit of working on a team is the ability to challenge your thoughts. No two developers develop exactly the same. If you develop a library, feature, or even just a block of code that you submit to a code review, you’ll most likely get some decent feedback on other ways you could have developed it. While it might be possible that your way is best, even having the conversation will allow you to debate trade-offs, and have a better understanding of the language you used.
However, the advantage for the developer is even greater than the advantage of the application. If your knowledge is a mile wide an inch deep, you’re really no different than every other developer on your team. When it comes to crunch time what is there to separate yourself from Bob or Jim? Yet, if you’re the expert on browser technologies, or the expert on databases, it’s going to be a lot harder to replace you.
To put it bluntly, developing on a team gives you a lot of opportunities for personal growth and development.