There is a cost to organization change. As a concrete example it costs $900 to physically move a computer to the desk next to me at my current client engagement. The greater that cost the more difficult it will be to get together and effective team and deliver working software if the internal structures don’t support pragmatic software development practices. Some of the things that come to mind when thinking about rigid organization structures are:
- heavy, cumbersome tools and processes for interacting with other teams, for example using Remedy to get a small database change to happen
- opaque and deeply nested reporting structures
- workers that are not empowered to challenge or change business processes
- no sense of personal responsibility for the success or failure of the project
- stake holders that are not actually affected by the software in any way, they are there only to satisfy some sort of reporting structure in the enterprise – this leads to bloated ineffective meetings
- no clearly defined success criteria (note that this is different from changing requirements for which we have a variety of tools to deal with)
These types of challenges can create significant drag on your development process and can turn even the smallest development project into a Herculean task.
SAP is probably the greatest evil to permeate corporate fabric to date. It promotes rigid, difficult to change processes. It promotes management to the end as opposed to the means of achieving corporate objectives. This seems a bit more prevalent in Canadian corporate doctrine – with it’s over bloated middle management ranks. I’ve witnessed everything from meeting held only to discuss and plan the next meeting to weekly recurring meetings where nothing is accomplished other than assigning work that is completely disconnected from the daily challenges facing development teams.
How do you fix these issues? It the end is quite simple I think: you empower the right people to make decisions and effectively change their environment to help get things done. Who is ultimately responsible for delivering your software project? Developers, QAs and low level managers that are embedded in the team. What is the measure of success? Working software.