I've learned that there is no end to the things I can learn when it comes to software development skills. Learning is just a part of the software industry and if you're not learning something new every day then you're doing it wrong. I've started to learn more about software development teams. The team dynamic is something I've never really focused that hard on. I have always been an independent developer, never really needing to work together with anyone on anything. Now that I work a full time job with a team of developers I've had to adapt to some changes.
I feel lucky to have found the job I did and to be able to work with the people I work with. I have had the opportunity to undergo a slow transition between independent development and team development. As I've gotten used to it I've become more and more interested in how to increase the efficiency of the team. Now I'm learning about team concepts and different ways to go about development. I discovered that there is a rather large controversy in the industry surrounding documentation, modeling, and planning in software development.
It seems the old way of doing things in the world of software was ripped directly from the construction industry. They spent a lot of time planning, documenting, and modeling the project before they even typed one line of code. Now a new kid has appeared on the block and is reminding everyone that applications aren't houses. You can't start building a house immediately because you will inevitably build it wrong and make mistakes that cannot be cheaply corrected. With software you can start building immediately and adjust your strategies as you go along. It is that practice combined with good communication and good coding standards that makes up what is known as Agile software development. The old way of doing things is known as Waterfall.
Currently there seems to be a holy war between hardcore waterfall proponents and agile proponents. There are a lot of methodologies that seem to fall on the half-way point between the two, but it's these two that seem to butt heads more often. Waterfall technique does seem to be a bit outdated. The world today seems to revolve more and more around building better relationships with our fellow humans; we always seem to do our best work when we can master this relationship-building skill. Agile development seems to be the "in a perfect world" methodology. I could see Agile working out really well for smaller development teams, but at first glance it might actually hurt larger teams. The modeling and design process is designed to make sure everyone is on the same page. Working close together and learning to communicate well accomplishes this on a small team, but on a large team I would still think some heavy documentation would be required.
I found this little Youtube video that was both amusing and informative. It doesn't go into any details about Agile development but it does, in a round about way, demonstrate the benefits received by putting it into practice.