I need some advice, or maybe links to some resources, on the best practices for developing software in a team environment where multiple people are working on the same application.
In the past, I've mostly developed things from scratch - working solo - or I have taken over a project when someone else left.
In my current job, thats the way things have sort have been as well. I spent half a year building an application and someone else spent time building another application and then we sort of hacked them together when finished.
It turns out, i've now learned, that this is a horrible way to develop a project. All the eggs of an entire product are in one basket (me) and since I developed my application to my own specifications, it doesn't easily flow into other projects being developed by my co-workers.
Also, My boss (who is a horrible manager) hasn't looked at any of my code in the past 10 months. Same for my other coworker. Now all of a sudden, he needs to use our code for a project he's working on and is all pissy that the code for our applications is not to his liking (even though he's never given us any direction).
Anyway, I've been reading a pretty good book lately called
The Art of Project Management which has really put into perspective a LOT of things we are doing wrong in my organization. (like not planning projects out before we start them) I really want to step up to the plate and start implementing some new methods so we can work
more efficiently.
One obvious major step is that we all need to be involved in big projects throughout their development. But this is kind of a new concept for me, hence the reason for this thread. When you build a car, you can have a bunch of people working on it because everyone does their specific job and all the parts get pieced together into a car. But creating software isn't like that, its more like writing a novel. You can't just tell a hundred people to write a chapter each and then put them all together into a book.
So how does this work? This should be a pretty easy answer for those of you who work in large development teams. When Microsoft creates something like "Internet Explorer 7" its not just one guy in a cubical building it. Its dozens (or maybe hundreds) of developers. But how does each person know what they should be working on and how do they get their code to fit into what the rest of the group is doing?