These are some observations of mine of various software development teams that I've been in or seen working over the past 18 or so years.
- Opportunity cost of doing the current best practice well, prevents us from moving quickly to a newer, better practice. Mastery vs agility.
- Existing culture is the prevailing limiter of change in mindset.
- The tax for using the construction industry model for software development, while useful for scaling, makes it harder to get value from software in the short and medium term.
- We are teaching programming by getting people to write code, instead of learning to read code. This is the inverse of other languages.
- Our industry lacks a great "masterpiece" of design and code. Design patterns are a start, but not comprehensive enough.
- When groups and organisations are transforming their ways of working and they fail, instead of correcting the failure, they fall back on what worked from their old way of working even if that prevents the transformation from completing.
- Engineers will change tools more quickly, than change behaviour with the tool. In fact they will carry existing "mastery" into the new tool, unless the new tool explicitly prohibits it somehow.