Learning to Learn: Software Teams
Outside of school very seldom in software development will you completely work alone on a project. Leading and being an effective member of a software team will be critical to your success in this field. However each team and project is different. Some projects have a high iteration cost because testing could cause people to die (e.g. bugs in rocket guidance systems in manned space flight), testing could be lengthy (e.g. if you need to manufacture a physical thing), or expensive resources are consumed (e.g. issues that only manifest when using 1000 nodes) and have to be more planning focused. Other line of business or research applications can afford to be more iterative. Knowing which situation you are in is key to crafting your process to be more effective. Regardless, there are some timeless principles of teams which are important to consider when working in or leading a team. In this post, I will highlight what research says makes effective teams and highlight how one popular approach implements these principles.