Last week I participated in a software architecture workshop organized by ILTAM. The workshop was in continuation with the workgroup I belong to introduce the concept of software architecture in the industry. You can read more in my previous posts: here, here and here.
Any nontrivial programming solution is a group effort, divided into tasks that can be done (eventually) individually. In other words, task division and keeping track of work accomplishment is a major requirement for making successful software. Normally the responsible for managing the tasks and for managing the work plan is the project manager / development manager. In contrast, the system engineer is responsible for the architecture, the requirements and the quality of the solution. This causes conflicts of interest.
Source control is a great invention, a great tool for keeping track and documenting changes in a development project. The basics of source control are well documented elsewhere (see here and here
I keep sharing my knowledge, making it available to anyone because, to my opinion, keeping valuable information is not a good source of power
While studying my MBA I took a course in management of human resources. This course was very enlightening because it connected pieces of experience and little knowledge I had, and merged it into real methodical information that could be used for analysis.